我试图弄清楚如何使用NLTK的实体识别器的无壳版本。我下载了http://nlp.stanford.edu/software/stanford-ner-2015-04-20.zip并将其放在python的site-packages文件夹中。然后我下载了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
如果您有经验,任何帮助都表示赞赏!
P.S。我可以让非caseless版本工作正常,但我发现在分析搜索查询时,用户几乎不会大写单词,而非caseless版本似乎完全错过了单词,如果它们没有大写。
答案 0 :(得分:9)
StanfordNERTagger
的第二个参数是stanford tagger 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