Stanford Entity Recognizer (без учета регистра) в Python Nltk

Я пытаюсь выяснить, как использовать версию регистратора сущностей из NLTK без регистра. Я скачал http://nlp.stanford.edu/software/stanford-ner-2015-04-20.zip и поместил его в папку site-packages на python. Затем я скачал http://nlp.stanford.edu/software/stanford-corenlp-caseless-2015-04-20-models.jar и поместил его в папку. Затем я запустил этот код в NLTK

from nltk.tag.stanford import NERTagger
english_nertagger = NERTagger(‘/home/anaconda/lib/python2.7/site-packages/stanford-ner-2015-04-20/classifiers/english.conll.4class.distsim.crf.ser.gz’, ‘/home/anaconda/lib/python2.7/site-packages/stanford-ner-2015-04-20/stanford-corenlp-caseless-2015-04-20-models.jar’)

Но когда я запускаю это:

english_nertagger.tag(‘Rami Eid is studying at stony brook university in NY’.split())

Я получаю ошибку:

Error: Could not find or load main class edu.stanford.nlp.ie.crf.CRFClassifier

Любая помощь, если у вас есть опыт, ценится!

PS Я могу сделать так, чтобы версия без учета регистра работала нормально, но я обнаружила, что при анализе поисковых запросов пользователи почти не пишут слова с большой буквы, и версия без учета регистра полностью пропускает слова, если они не пишутся с большой буквы.

1 ответ

Решение

Второй параметр StanfordNERTagger это путь к файлу jar Стэнфордского тегера, а не путь к модели. Итак, измените его на stanford-ner.jar (и поместите это там, конечно).

Также кажется, что вы должны выбрать english.conll.4class.caseless.distsim.crf.ser.gz (из stanford-corenlp-caseless-2015-04-20-models.jar) вместо english.conll.4class.distsim.crf.ser.gz

Таким образом попробуйте следующее:

 english_nertagger = StanfordNERTagger(‘/home/anaconda/lib/python2.7/site-packages/stanford-ner-2015-04-20/classifiers/english.conll.4class.caseless.distsim.crf.ser.gz’, ‘/home/anaconda/lib/python2.7/site-packages/stanford-ner-2015-04-20/stanford-ner.jar’)

Upd. NERTagger был переименован в StanfordNERTagger

Другие вопросы по тегам