我正在使用stanford coreNLP [stanford-ner-2015-12-09]和python nltk StanfordNERTAgger,但它的结果与在线演示的结果不同。
我通过了这个帖子" https://mailman.stanford.edu/pipermail/java-nlp-user/2011-August/001283.html"其中说"他们使用相同的模型,但CoreNLP首先POS标记数据,然后解析它。这会导致不同的结果。"
有没有办法根据在线演示调整结果,因为我发现它比coreNLP更适合我尝试的大部分示例。
CoreNLP
[(u'Tom', u'PERSON'), (u'Cruise', u'PERSON'), (u'was', u'O'), (u'born', u'O'), (u'on', u'O'), (u'July', u'O'), (u'3,', u'O'), (u'1962,', u'O'), (u'in', u'O'), (u'Syracuse,', u'O'), (u'New', u'LOCATION'), (u'York', u'LOCATION')]
OnlineDEMO
Tom Cruise was born on July 3, 1962, in Syracuse, New York.
Person Location Location
答案 0 :(得分:0)
这是由于标记化:
st = StanfordNERTagger(model_path, stanford_tagger_jar, encoding='utf8')
r=st.tag("Tom Cruise was born on July 3, 1962, in Syracuse, New York.".split())
for e in r:
print e
这不会将Syracuse标记为位置:
(u'Tom', u'PERSON')
(u'Cruise', u'PERSON')
(u'was', u'O')
(u'born', u'O')
(u'on', u'O')
(u'July', u'O')
(u'3,', u'O')
(u'1962,', u'O')
(u'in', u'O')
(u'Syracuse,', u'O')
(u'New', u'LOCATION')
(u'York.', u'LOCATION')
但这样做:
from nltk import word_tokenize
st = StanfordNERTagger(model_path, stanford_tagger_jar, encoding='utf8')
r=st.tag(word_tokenize("Tom Cruise was born on July 3, 1962, in Syracuse, New York."))
for e in r:
print e
(u'Tom', u'PERSON')
(u'Cruise', u'PERSON')
(u'was', u'O')
(u'born', u'O')
(u'on', u'O')
(u'July', u'O')
(u'3', u'O')
(u',', u'O')
(u'1962', u'O')
(u',', u'O')
(u'in', u'O')
(u'Syracuse', u'LOCATION')
(u',', u'O')
(u'New', u'LOCATION')
(u'York', u'LOCATION')
(u'.', u'O')