问题描述
我想在 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',('different','JJ')]
但是,我想将 POS 作为节点类变量(即句子)的属性输出。 例如,我想让我的输出像“james ate ...”这样的句子
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 ...
使用这种方法,您的句子中不能有多个动词。
根据您的目标,您可以检查 spacy,它提供对字符串的高级处理(例如,您可以访问命名实体和 noun_phrases)。或者,也许您可以检查依赖解析的任务(例如 here),您可以从中提取短语以及哪个动词与哪个主题相关等...