Привет, я пытаюсь использовать этот код в NLTK3: - Как-то мне удалось исправить строку-6 для работы с версией NLTK версии 3. Но stil цикл for ничего не возвращает.проблемы с пересечением ne chunks в NLTK3
import nltk
sample = """ some random text content with names and countries etc"""
sentences = nltk.sent_tokenize(sample)
tokenized_sentences = [nltk.word_tokenize(sentence) for sentence in sentences]
tagged_sentences = [nltk.pos_tag(sentence) for sentence in tokenized_sentences]
chunked_sentences=nltk.chunk.ne_chunk_sents(tagged_sentences) #Managed to fix this to work with version_3
for i in chunked_sentences:
if hasattr(i,'label'):
if i.label()=='NE':
print i
Кроме того, если я пытаюсь отлаживать, я вижу этот вывод:
for i in chunked_sentences:
if hasattr(i,'label') and i.label:
print i.label
S
S
S
S
S
S
S
S
Тогда как я могу проверить его на «СВ». Theres что-то не так с NLTK-3, что Im действительно не в состоянии вычислить. Помогает
Спасибо, странно, мне пришлось заменить «NE» на «ЧЕЛОВЕК» для его вывода (в то время как многие многие упоминали «NE»). Любые причины? : if hasattr (токен, 'label') и token.label() == 'PERSON': – rzach
@rzach 'PERSON', как вы, наверное, знаете, является особым случаем «NE». Я просмотрел код для [ne_chunk_sents] (http://www.nltk.org/_modules/nltk/chunk.html#ne_chunk_sents). Если вы установите '' binary = True'', он скорее всего вернет 'NE'. По умолчанию используется '' binary = False'', и в этом случае используется более мелкозернистая модель. Эти модели обычно различают PERSON, LOCATION и т. Д. Однако я не уверен в конкретных классах в реализации NLTK. –
@rzach Также не стесняйтесь принимать мой ответ. –