0

我想在 python 中执行部分语音标记和实体识别,类似于 R 中 openNLP 的 Maxent_POS_Tag_Annotator 和 Maxent_Entity_Annotator 函数。我更喜欢 python 中的代码,它将输入作为文本句子并将输出作为不同的特征 - 比如“CC”的数量、“CD”的数量、“DT”的数量等。CC、CD、DT 是 Penn Treebank 中使用的 POS 标签。因此,与Penn Treebank POS中的 36 个 POS 标签相对应的 POS 标签应该有 36 个列/特征。我想在 Azure ML“执行 Python 脚本”模块上实现这个,Azure ML 支持 python 2.7.7。我听说 python 中的 nltk 可以完成这项工作,但我是 python 的初学者。任何帮助,将不胜感激。

4

1 回答 1

3

看看NTLK 书,Categorizing and Tagging Words 部分。

简单的例子,它使用 Penn Treebank 标签集:

from nltk.tag import pos_tag
from nltk.tokenize import word_tokenize
pos_tag(word_tokenize("John's big idea isn't all that bad.")) 

[('John', 'NNP'),
("'s", 'POS'),
 ('big', 'JJ'),
 ('idea', 'NN'),
 ('is', 'VBZ'),
 ("n't", 'RB'),
 ('all', 'DT'),
 ('that', 'DT'),
 ('bad', 'JJ'),
 ('.', '.')]

然后你可以使用

from collections import defaultdict
counts = defaultdict(int)
for (word, tag) in pos_tag(word_tokenize("John's big idea isn't all that bad.")):
    counts[tag] += 1

获得频率:

defaultdict(<type 'int'>, {'JJ': 2, 'NN': 1, 'POS': 1, '.': 1, 'RB': 1, 'VBZ': 1, 'DT': 2, 'NNP': 1})
于 2015-09-06T11:39:08.050 回答