Как запустить функции токенизатора в списках - объект модуля не вызывается? - PullRequest
0 голосов
/ 23 ноября 2018

Задача: В ячейке кода ниже напишите код для запуска и функции NLTK_Tokenise, и своей собственной функции Tokenise на выборке из 10 предложений из корпуса Reuters.

Я написал следующий код:

import pandas as pd
sample_size=10
r_list=[]

for sentence in rcr.sample_raw_sents(sample_size):
    r_list.append(sentence)

my_list = r_list

????
my_list=[i.split(tokenise) for i in my_list]
r_list=[i.split(nltk.tokenize) for i in r_list]    

pd.DataFrame(list(zip(my_list,r_list)),columns=["MINE","NLTK"])  

Я также учел (из только что прошедшего "????"):

my_list = [i.split() for i in my_list]
r_list = [i.split() for i in r_list]

tok = tokenise(my_list)
cortok = nltk.tokenize(r_list)

pd.DataFrame(list(zip(tok,cortok)),columns=["MINE","NLTK"])

Теперь у меня есть 2 списка с одинаковой информацией о корпусе, и я хочуприменять мои функции к указанным спискам, хотя я не могу найти какой-либо способ, который позволяет мне применять функции, а не строки и т. д. Если я просто скопирую и вставлю свои токенизаторы в виде строк, я уверен, что будет лучший способ сделать этоэтот.Для второго варианта я сомневаюсь, что мне понадобятся два отдельных списка, и я могу разбить один список на части и прикрепить его к новым переменным.

Дальнейшее продвижение, если кто-нибудь поможет:

import pandas as pd
sample_size=10
r_list=[]

for sentence in rcr.sample_raw_sents(sample_size):
    r_list.append(sentence)

new_list = [i.split()[0] for i in r_list]

tok = tokenise(new_list)
cortok = nltk.tokenize(new_list)

pd.DataFrame(list(zip(tok,cortok)),columns=["MINE","NLTK"])  

Я думаю, что я хочу сделать, это разделить список на разные переменные, чтобы затем создать DataFrame размером 10 (sample_size).Хотя я понятия не имею, как разделить список длины на разные переменные, если я буквально не выберусь 1,2,3,4, ..., 10 независимо.

Так что я достиг еще большего прогресса, я понял, что мне придется использовать map ():

import pandas as pd
sample_size=10
r_list=[]

for sentence in rcr.sample_raw_sents(sample_size):
    r_list.append(sentence)

tok = map(tokenise,r_list)
cortok = map(nltk.tokenize,r_list)

pd.DataFrame(list(zip(tok,cortok)),columns=["MINE","NLTK"])

Хотя что-то не так с моей последней строкой.TypeError: объект 'module' не вызывается.Я гуглил это, хотя все еще не совсем уверен, в чем проблема.панды уже были импортированы?

Теперь я понял, что у меня возникла глупая ошибка, когда я вводил nltk.tokenize, а не word_tokenize.

1 Ответ

0 голосов
/ 24 ноября 2018

Воспользуйтесь картой ():

from nltk.tokenize import word_tokenize
import pandas as pd
sample_size=10
r_list=[]

for sentence in rcr.sample_raw_sents(sample_size):
    r_list.append(sentence)

tok = map(tokenise,r_list)
cortok = map(word_tokenize,r_list)

pd.DataFrame(list(zip_longest(tok,cortok)),columns=["MINE", "NLTK"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...