Nlp 使用空格将主动句转换为被动句

Nlp 使用空格将主动句转换为被动句,nlp,spacy,Nlp,Spacy,希望在nlp中使用spacy将主动语态转换为被动语态。有人能帮我吗 我把主语换成宾语,把宾语换成主语,但我不能根据需要换动词 例如: 他们在底特律生产汽车 汽车是底特律制造的 玛丽每天打扫这个房间 玛丽每天都打扫房间 import spacy nlp = spacy.load('en_core_web_sm') doc = nlp("They make cars in Detroit") s = list(doc) tmp,temp,sub = "","",-1 for i in doc:

希望在nlp中使用spacy将主动语态转换为被动语态。有人能帮我吗

我把主语换成宾语,把宾语换成主语,但我不能根据需要换动词

例如:

他们在底特律生产汽车
汽车是底特律制造的

玛丽每天打扫这个房间
玛丽每天都打扫房间

import spacy
nlp = spacy.load('en_core_web_sm')
doc = nlp("They make cars in Detroit")
s = list(doc)
tmp,temp,sub = "","",-1
for i in doc:
    if i.pos_ == 'VERB':
        s[i.i] = i
    elif i.dep_ == 'nsubj':
        sub = i.i
        temp = i
    elif i.dep_ == 'dobj':
        tmp = i.text.capitalize()
        s[i.i] = temp
        s.insert(i.i,"by")

s[sub] = tmp
print(' '.join(str(e) for e in s))

为了修改动词形式,您需要一个词形分析器(
make
基本形式->
make
)和一个词形生成器(基本形式
make
作为过去分词->
make
,作为现在分词->
making
)。Spacy可以完成英语的分析步骤,但不能完成生成步骤,因此您需要寻找其他工具