我正在尝试使用斯坦福大学的名为Entity Recognizer。我想使用7类分类器,因为我甚至想要检测句子中的时间(或日期)和其他东西。输入句子时:
"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)的在线演示中,正确分类,如图所示(斯坦福网站上面的演示):
但是,当我尝试使用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
任何人都可以告诉我正在做的错误(如果有的话)或任何其他方式来确定句子中的位置和时间吗?我是NLP的初学者,对此有任何帮助将不胜感激。
答案 0 :(得分:0)
我尝试运行您的代码,并发现了word_tokenize的一些问题。
试试这段代码:
[(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')]
这是我的输出:
$('#selectBox').on('change', function()
{
value= this.value;
if(value==0)
{
//code
}
else if(value==1)
{
//code
}
...
else
{
//code
}
});