使用 NLTK 对句子进行 POS 标记

时间:2021-02-13 23:30:33

标签: nlp nltk part-of-speech

我想在 python 中使用 NLTK 库对句子进行 pos 标记。 我正在使用以下几行代码,它工作正常:

>>> text = word_tokenize("And now for something completely different")
>>> nltk.pos_tag(text)
[('And', 'CC'), ('now', 'RB'), ('for', 'IN'), ('something', 'NN'),
('completely', 'RB'), ('different', 'JJ')]

但是,我想将 POS 作为节点类变量(即句子)的属性输出。 例如,我想让我的输出像“james ate ...”这样的句子

sentence.noun = “james”
sentence.verb = “ate”
sentence.adjective = “ … “

知道我的代码应该如何更改吗?

1 个答案:

答案 0 :(得分:0)

为此,您需要创建一个具有属性的 Sentence 类。

class Sentence:
    def __init__(self, text):
        self.text = text
        self.noun = None
        self.verb = None
        self.adjective = None

text = "And now for something completely different"
tokens = word_tokenize(text)
s = Sentence(text)
for w, t in nltk.pos_tag(text):
    if t == 'NN':
        s.noun = w
    elif t == 'VB':
        s.verb = w
    # etc ...

使用这种方法,您的句子中不能有多个动词。

根据您的目标,您可以检查 spacy,它提供对字符串的高级处理(例如,您可以访问命名实体和 noun_phrases)。或者,也许您可​​以检查依赖解析的任务(例如 here),您可以从中提取短语以及哪个动词与哪个主题相关等...