如何使用python中的spacy库将句子转换成疑问句[请参阅下面的代码进行更正]

2024-04-26 07:53:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在python中使用spacy将任何句子转换成疑问句。在

我下面的代码太长了,我需要做更多的工作来完成任何句子的疑问格式。现在在这段代码中,我通过检查过去时态和现在时态,基于be form,need form,have form,do form。在

输入:尼娜拉小提琴。在

输出:尼娜会拉小提琴吗?在

输入:芭芭拉给了我巧克力。在

输出:谁给你巧克力的?在

输入:他明天要见乔。在

输出:他明天要见谁?在

输入:她来自马德里。在

输出:她来自哪里?在

任何人都可以帮我!想为所有类型的句子组成疑问句吗?

 from textacy.spacier import utils
    import spacy
    nlp = spacy.load("en_core_web_sm")
    inp = input()                       
    doc = nlp(inp)                      
    string,label = [],""

    for sentence in doc.sents:
        root = sentence.root
        for i in sentence.ents:
            if len(utils.get_subjects_of_verb(root)) or len(utils.get_objects_of_verb(root)) > 0:
                label = i.label_
        print(root.tag_)
        print(root.lemma_)
        print(label)
        if len(utils.get_subjects_of_verb(root)) > 0:
            if root.lemma_ == 'be':
                if label == "PERSON" :
                    ques = 'Who ' + str(root)+" "+ str(utils.get_subjects_of_verb(root)[0]) +' ?'
                elif label == "QUANTITY":
                    ques = 'How ' + str(root)+" "+ str(utils.get_subjects_of_verb(root)[0]) +' ?'
                elif label == "MONEY":
                    ques = 'How much ' + str(root) + " " + str(utils.get_subjects_of_verb(root)[0]) + ' ?'
                elif label == "TIME":
                    ques = 'When ' + str(root)+" "+ str(utils.get_subjects_of_verb(root)[0]) +' ?'
                elif label == "GPE":
                    ques = 'Where ' + str(root)+" "+ str(utils.get_subjects_of_verb(root)[0]) +' ?'
                elif label == 'PRODUCT':
                    ques = 'What ' + str(root)+" "+ str(utils.get_subjects_of_verb(root)[0]) +' ?'

            string.append(ques)

    print(string)

或以其他方式

适用于以下类型的格式:

这是给约翰的-这是给谁的?在

他在看电影-他在看什么?在

萨姆星期五回来-萨姆什么时候回来?在

他们走得很快-他们走得怎么样?在

她离开是因为太晚了-她为什么离开?在

^{pr2}$

如何利用PYTHON中的SPACY库实现句子的疑问转换?


Tags: offormgetifspacyutilsrootlabel