使用NLTK对句子进行pos标记



我想使用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吃了……"就像

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

你知道我的代码应该怎么改吗?

为此,您需要创建一个具有属性的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 ...

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

根据你的目标,你可以检查提供高层次字符串处理的空间(例如,你可以访问命名实体和名词短语)。或者你可以检查依赖性解析的任务(这里的例子),从中你可以提取短语和哪个动词与哪个主题相关等等…

最新更新