首页 > 解决方案 > spacy/textacy: subject_verb_object_triples(doc) 不返回任何三元组

问题描述

好吧。我的目标是从简单的句子中提取 SVO-triplets。例如句子“一个人站在厨房里做三明治”。我想要输出<人,站立,厨房>和<人,制作,三明治>。因此,我尝试为此使用 spacy/textacy,但不知何故,它不会返回任何三元组(我尝试使用对其他人有用的其他例句,但对我也不起作用)。

这就是我在 Colab 中运行的代码:

!python -m spacy download en_core_web_sm

import spacy
import textacy

nlp = English()
nlp = spacy.load('en_core_web_sm')
nlp.add_pipe('sentencizer')

tuples_list = []   
def extract_SVO(text):
    doc = nlp(text)
    tuples = textacy.extract.subject_verb_object_triples(doc)
    tuples_to_list = list(tuples)
    if tuples_to_list != []:
        print("got at least one!")
        tuples_list.append(tuples_to_list)
    else:
        print("none!")
      
text = "A person is standing in a kitchen making a sandwich." 
extract_SVO(text)

print(tuples_list)

我究竟做错了什么?我很感激任何帮助。

如果您知道您喜欢的任何其他库并且也解决了此任务,请告诉我!

标签: nlpspacytextacy

解决方案


推荐阅读