挑选NLTK词性标注器来报告复数专有名词

时间:2015-07-10 20:34:49

标签: python-2.7 nlp nltk part-of-speech

让我们在nltk包中试用Python的renouned词性标注器。

import nltk
# You might also need to run nltk.download('maxent_treebank_pos_tagger') 
#  even after installing nltk

string = 'Buddy Billy went to the moon and came Back with several Vikings.'
nltk.pos_tag(nltk.word_tokenize(string))

这给了我

  

[(' Buddy',' NNP'),(' Billy' NNP'),'去了& #39;,' VBD'),(' to',' TO'),   (''' DT'),('月亮' NN'),('和', ' CC'),('来了',' VBD'),   ('返回' NNP'),('',' IN'),('几个', ' JJ'),(' Vikings',   ' NNS'),('。','。')]

您可以解释代码here。我很失望' Back'被归类为专有名词(NNP),虽然混淆是可以理解的。我更不高兴“维京人”和#39;被称为简单复数名词(NNS)而不是复数专有名词(NNPS)。任何人都可以提出一个简短输入的例子,它会导致至少一个NNPS标签吗?

1 个答案:

答案 0 :(得分:0)

NLTK棕色语料库中的标签似乎存在一些问题,将NNPS标记为NPS(可能NLTK标记集是与https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html不同的更新/过时标记)

以下是plural proper nouns

的示例
>>> from nltk.corpus import brown
>>> for sent in brown.tagged_sents():
...     if any(pos for word, pos in sent if pos == 'NPS'):
...             print sent
...             break
... 
[(u'Georgia', u'NP'), (u'Republicans', u'NPS'), (u'are', u'BER'), (u'getting', u'VBG'), (u'strong', u'JJ'), (u'encouragement', u'NN'), (u'to', u'TO'), (u'enter', u'VB'), (u'a', u'AT'), (u'candidate', u'NN'), (u'in', u'IN'), (u'the', u'AT'), (u'1962', u'CD'), (u"governor's", u'NN$'), (u'race', u'NN'), (u',', u','), (u'a', u'AT'), (u'top', u'JJS'), (u'official', u'NN'), (u'said', u'VBD'), (u'Wednesday', u'NR'), (u'.', u'.')]

但如果您使用nltk.pos_tag进行标记,则会获得NNPS

>>> for sent in brown.tagged_sents():
...     if any(pos for word, pos in sent if pos == 'NPS'):
...             print " ".join([word for word, pos in sent])
...             break
... 
Georgia Republicans are getting strong encouragement to enter a candidate in the 1962 governor's race , a top official said Wednesday .
>>> from nltk import pos_tag
>>> pos_tag("Georgia Republicans are getting strong encouragement to enter a candidate in the 1962 governor's race , a top official said Wednesday .".split())
[('Georgia', 'NNP'), ('Republicans', 'NNPS'), ('are', 'VBP'), ('getting', 'VBG'), ('strong', 'JJ'), ('encouragement', 'NN'), ('to', 'TO'), ('enter', 'VB'), ('a', 'DT'), ('candidate', 'NN'), ('in', 'IN'), ('the', 'DT'), ('1962', 'CD'), ("governor's", 'NNS'), ('race', 'NN'), (',', ','), ('a', 'DT'), ('top', 'JJ'), ('official', 'NN'), ('said', 'VBD'), ('Wednesday', 'NNP'), ('.', '.')]