我正在尝试弄清楚如何使用 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
如果您有经验,我们将不胜感激!
附言我可以让非大小写版本正常工作,但我发现在分析搜索查询时,用户几乎不会将单词大写,如果单词没有大写,非大小写版本似乎会完全错过单词。
最佳答案
StanfordNERTagger
的第二个参数是 stanford 标记器 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’)
更新。 NERTagger
已重命名为 StanfordNERTagger
关于python - Python Nltk 中的斯坦福实体识别器(无大小写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30745714/