5

所以,我想知道是否有人知道如何在NLTK 的标记器中组合多个术语以创建单个术语。.

例如,当我这样做时:

nltk.pos_tag(nltk.word_tokenize('Apple Incorporated is the largest company'))

它给了我:

[('Apple', 'NNP'), ('Incorporated', 'NNP'), ('is', 'VBZ'), ('the', 'DT'), ('largest', 'JJS'), ('company', 'NN')]

我如何使它将“Apple”和“Incorporated”放在一起('Apple Incorporated','NNP')

4

2 回答 2

1

您可以尝试查看nltk.RegexParser。它允许您根据正则表达式对词性标记的内容进行分块。在您的示例中,您可以执行类似的操作

pattern = "NP:{<NN|NNP|NNS|NNPS>+}"
c = nltk.RegexpParser(p)
t = c.parse(nltk.pos_tag(nltk.word_tokenize("Apple Incorporated is the largest company")))
print t

这会给你:

Tree('S', [Tree('NP', [('Apple', 'NNP'), ('Incorporated', 'NNP')]), ('is', 'VBZ'), ('the', 'DT'), ('largest', 'JJS'), Tree('NP', [('company', 'NN')])])
于 2013-06-10T12:25:55.897 回答
0

代码正在做它应该做的事情。它正在将词性标签添加到令牌中。“Apple Incorporated”不是一个单一的代币。它是两个独立的令牌,因此不能应用单个 POS 标签。这是正确的行为。

我想知道您是否尝试使用错误的工具来完成这项工作。你想做什么/你为什么要这样做?也许您对识别搭配而不是 POS 标记感兴趣?你可以看看这里: 搭配模块

于 2013-06-11T14:33:22.597 回答