我想在 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 = “ … “
知道我的代码应该如何更改吗?
答案 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),您可以从中提取短语以及哪个动词与哪个主题相关等...