词性标注和实体识别 - python

时间:2015-09-06 10:36:34

标签: python azure named-entity-recognition part-of-speech azure-machine-learning-studio

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

1 个答案:

答案 0 :(得分:3)

查看NTLK book,分类和标记字段。

简单的例子,它使用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})