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