1
У меня возникла проблема с попыткой запуска функции извлечения сущности. Я считаю, что это разница в версиях. Следующий рабочий пример работает в версии 2.0.4, но не работает в версии 3.0. Я сделал один вызов функции: batch_ne_chunk: nltk.ne_chunk_sents, чтобы предотвратить ошибку, возникающую в 3.0.NLTK Отвлечение сущности от NLTK 2.0.4 до NLTK 3.0
def package_get_entities(self,text):
#text = text[0:300]
entity_names = []
chunked = self.get_chunked_sentences(text)
for tree in chunked:
entity_names.extend(self.extract_entity_names(tree))
entity_names = list(set(entity_names))
return entity_names
def get_chunked_sentences(self,text):
sentences = nltk.sent_tokenize(text)
tokenized_sentences = [nltk.word_tokenize(sentence) for sentence in sentences]
tagged_sentences = [nltk.pos_tag(sentence) for sentence in tokenized_sentences]
chunked_sentences = nltk.ne_chunk_sents(tagged_sentences, binary=True)
return chunked_sentences
def extract_entity_names(self,t):
entity_names = []
if hasattr(t, 'node') and t.node:
if t.node == 'NE':
entity_names.append(' '.join([child[0] for child in t]))
else:
for child in t:
entity_names.extend(self.extract_entity_names(child))
return entity_names
Запуск FUNC:
str = 'this is some text about a man named Abraham Lincoln'
entArray = package_get_entities(str)
В 2.0.4 выходов [Abraham Lincoln] В 3.0 выходы []
Но Im получаю ошибку запуска кода :::::: ул = «это какой-то текст о человеке по имени Авраам Линкольн» entArray = package_get_entities (ул) TypeError: package_get_entities() занимает ровно 2 аргумента (1 данный) – rzach
@rzach, мой пример находится в контексте класса. если вы удалите «self» из списка параметров функции, вы должны быть в порядке. –