使用python'计算动词、名词和其他词类;s NLTK

使用python'计算动词、名词和其他词类;s NLTK,python,nlp,tagging,nltk,part-of-speech,Python,Nlp,Tagging,Nltk,Part Of Speech,我有多个文本,我想根据它们对不同词类的使用情况,比如名词和动词,创建它们的简介。基本上,我需要计算每个词性的使用次数 我已经标记了文本,但不确定如何进一步: tokens = nltk.word_tokenize(text.lower()) text = nltk.Text(tokens) tags = nltk.pos_tag(text) 如何将每个语音部分的计数保存到一个变量中?使用pos\u-tag方法返回(令牌、标记)对的列表: 如果您使用的是Python 2.7或更高版本,则只需使用

我有多个文本,我想根据它们对不同词类的使用情况,比如名词和动词,创建它们的简介。基本上,我需要计算每个词性的使用次数

我已经标记了文本,但不确定如何进一步:

tokens = nltk.word_tokenize(text.lower())
text = nltk.Text(tokens)
tags = nltk.pos_tag(text)

如何将每个语音部分的计数保存到一个变量中?

使用
pos\u-tag
方法返回(令牌、标记)对的列表:

如果您使用的是Python 2.7或更高版本,则只需使用以下工具即可:

>>> from collections import Counter
>>> counts = Counter(tag for word,tag in tagged)
>>> counts
Counter({'DT': 2, 'NN': 2, 'VB': 1})
要使计数正常化(给出每个计数的比例),请执行以下操作:

请注意,在较旧版本的Python中,您必须自己实现
计数器

>>> from collections import defaultdict
>>> counts = defaultdict(int)
>>> for word, tag in tagged:
...  counts[tag] += 1

>>> counts
defaultdict(<type 'int'>, {'DT': 2, 'VB': 1, 'NN': 2})
>>从集合导入defaultdict
>>>计数=defaultdict(int)
>>>对于word,在标记中标记:
...  计数[标记]+=1
>>>计数
defaultdict(,{'DT':2,'VB':1,'NN':2})

你有没有遇到过
系列。柜台
?太棒了,谢谢。我正在使用Python 2.7。有没有一种方法,我现在可以计算出标记文本使用每个词性的比例?例如,将名词的数量除以标记总数,再乘以100(得到百分比)。。。但是为了所有的事情都这么做?所以得到的结果是:23%的名词,14%的动词等等?@Zach,我为您添加了一些关于规范化计数的内容。@dgh,谢谢,效果很好。最后一个问题,您知道nltk.pos_tag()使用哪个标记集吗?e、 g.Brown、Penn树库等?nltk.pos_tag()使用Penn树库
>>> total = sum(counts.values())
>>> dict((word, float(count)/total) for word,count in counts.items())
{'DT': 0.4, 'VB': 0.2, 'NN': 0.4}
>>> from collections import defaultdict
>>> counts = defaultdict(int)
>>> for word, tag in tagged:
...  counts[tag] += 1

>>> counts
defaultdict(<type 'int'>, {'DT': 2, 'VB': 1, 'NN': 2})