我想在 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 的初学者。任何帮助,将不胜感激。
问问题
987 次
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 回答