2016-11-23 6 views
0

파이썬 nltk StanfordNERTAgger와 함께 스탠포드 coreNLP [stanford-ner-2015-12-09]를 사용하고 있지만 온라인 데모와 다른 결과가 있습니다.Python StanfordNerTagger coreNLP 출력이 스탠포드너 태그 지정자의 온라인 데모와 다릅니다.

나는이 스레드 "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

CoreNLP가 "시러큐스"를 위치로 지정하지 않았다는 사실이나 표현의 차이점에 대한 것입니까? – lenz

+0

@lenz CoreNLP는 "Syracuse"를 위치로 지정하지 않았습니다! – Anish

답변

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 

이 위치로 시러큐스에 태그를하지 않습니다

(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')