Я пытаюсь использовать Стэнфордский распознаватель сущностей. Я хочу использовать классификатор 7 классов, потому что я даже хочу определить время (или дату) и другие вещи в предложении. При вводе предложения:
"He was born on October 15, 1931 at Dhanushkothi in the temple town Rameshwaram in Tamil Nadu."
в онлайн-демонстрации на сайте Stanford NLP (http://nlp.stanford.edu:8080/ner/process), он правильно классифицирует, как видно на этом изображении (демонстрация на сайте Стэнфорда для приведенной выше строки):
Но когда я пытаюсь запустить код в своей системе с помощью 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
Может ли кто-нибудь указать ошибку, которую я делаю (если есть), или какой-либо другой способ определить место и время в предложении? Я новичок в НЛП, и любая помощь в этом будет оценена по достоинству.