Как распознать Named Entity из списка Python, используя Stanford NERTagger - PullRequest
0 голосов
/ 09 ноября 2018

Я новичок в НЛП и впервые использую StanfordNERTagger. В целях обучения я играю со Стэнфордом NERTagger. У меня есть список названий стран на Питоне

['France', 'India', 'Bangladesh', 'England', 'Germany', 'Brazil', 'Egypt', 'Bhutan', 'Srilanka']

Я хочу получить объект 'location', который принадлежит NERTagger, но я получаю объект 'Organization'

[(«Франция», «ОРГАНИЗАЦИЯ»), («Индия», «ОРГАНИЗАЦИЯ»), («Бангладеш», «ОРГАНИЗАЦИЯ»), («Англия», «ОРГАНИЗАЦИЯ»), («Германия», «ОРГАНИЗАЦИЯ»), («Бразилия», «ОРГАНИЗАЦИЯ»), («Египет», «ОРГАНИЗАЦИЯ»), («Бутан», «ОРГАНИЗАЦИЯ»), («Шриланка», «ОРГАНИЗАЦИЯ»)]

Может быть, я что-то здесь упускаю

1 Ответ

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

Во-первых, вам нужно установить Stanford NER на свой компьютер. В зависимости от ОС, обе процедуры как настроить Stanford ner tagger

Теперь взгляните на этот пример кода

import nltk
from nltk.tokenize.toktok import ToktokTokenizer
from nltk.tag import StanfordNERTagger
stanford_classifier = os.environ.get('STANFORD_MODELS').split(':')[0]
stanford_ner_path = os.environ.get('CLASSPATH').split(':')[0]
st = StanfordNERTagger(stanford_classifier, stanford_ner_path, encoding='utf-8')

Чек st

<nltk.tag.stanford.StanfordNERTagger at 0x7f897c44e6d8>

Моя отправка

sentence = u'France is the biggest county in EU'
words = nltk.word_tokenize(sentence)
st.tag(words)

Результат

[('France', 'LOCATION'),
 ('is', 'O'),
 ('the', 'O'),
 ('biggest', 'O'),
 ('county', 'O'),
 ('in', 'O'),
 ('EU', 'LOCATION')]
...