2017-01-06 13 views
0

Я пытаюсь использовать названный Entord Recognizer от Stanford. Я хочу использовать классификатор классов 7, потому что я даже хочу определить время (или дату) и другие вещи в предложении. При входе в предложение:Семь классификаторов классов не дает желаемых результатов в StanfordNLP python

"He was born on October 15, 1931 at Dhanushkothi in the temple town Rameshwaram in Tamil Nadu." 

в онлайн демо на сайте Стэнфордского NLP (http://nlp.stanford.edu:8080/ner/process) он правильно классифицируя, как можно видеть на этом снимке (демо в сайте Стэнфордского для вышеуказанной линии):

The demo in the stanford site for the above line

Но, когда я пытаюсь запустить код в своей системе, используя NLTL и StanfordTagger, я получаю неправильный результат. Я получаю выход как:

[(u'He', u'O'), (u'was', u'O'), (u'born', u'O'), (u'on', u'O'), (u'1931-10-15', u'O'), 
(u'at', u'O'), (u'Dhanushkothi', u'O'), (u'in', u'O'), (u'the', u'O'), 
(u'temple', u'O'), (u'town', u'O'), (u'Rameshwaram', u'O'), (u'in', u'O'), 
(u'Tamil', u'ORGANIZATION'), (u'Nadu', u'ORGANIZATION'), (u'.', u'O')] 

Он заключается в определении даты неправильно здесь как «другой» и даже Тамилнад в качестве организации, а не место. Код, который я использовал здесь ниже:

from nltk.tokenize import sent_tokenize, word_tokenize 
from nltk.tag import StanfordNERTagger 

st = StanfordNERTagger('english.muc.7class.distsim.crf.ser.gz','stanford-ner.jar') 

i= "He was born on October 15, 1931 at Dhanushkothi in the temple town Rameshwaram in Tamil Nadu." 

words = nltk.word_tokenize(i) 
namedEnt = st.tag(words) 

print namedEnt 

Может кто-нибудь пожалуйста, скажите ошибку я делаю (если таковые имеются) или какой-либо другой способ определения местоположения и времени в предложении? Я новичок в НЛП, и любая помощь в этом отношении будет оценена по достоинству.

ответ

0

Я попытался запустить ваш код и найти некоторые проблемы с word_tokenize.

Попробуйте этот код:

from nltk import sent_tokenize, word_tokenize 
from nltk.tag import StanfordNERTagger 

st = StanfordNERTagger('english.muc.7class.distsim.crf.ser.gz','stanford-ner.jar') 

i= "He was born on October 15, 1931 at Dhanushkothi in the temple town Rameshwaram in Tamil Nadu." 

words = word_tokenize(i) 
namedEnt = st.tag(words) 

print namedEnt 

Вот мой результат:

[(u'He', u'O'), (u'was', u'O'), (u'born', u'O'), (u'on', u'O'), (u'October', u'DATE'), (u'15', u'DATE'), (u',', u'DATE'), (u'1931', u'DATE'), (u'at', u'O'), (u'Dhanushkothi', u'O'), (u'in', u'O'), (u'the', u'O'), (u'temple', u'O'), (u'town', u'O'), (u'Rameshwaram', u'O'), (u'in', u'O'), (u'Tamil', u'ORGANIZATION'), (u'Nadu', u'ORGANIZATION'), (u'.', u'O')]