我有一个句子是用句法来分析的。例如,“我妈妈想做饭”。解析是('My',1),(‘妈妈’,2),(‘欲望’,-1),('to',2),(‘厨师’,3)。数字表示单词所依赖的项的索引:“妈妈”取决于“想要”,而“想要”是数组的第二个元素(与往常一样,从零开始)。‘'Wants’有'-1‘,因为这是句子的核心,它不依赖于其他任何东西。,我需要把“我妈妈”这个话题放在这里。,我该怎么做?
到目前为止,我只试着写循环,而不是在每一种情况下都起作用。协议是,主题可能包含两个以上的词,而这个数字是没有定义的。就像这样..。
“价值”是(‘我的’,1),(‘妈妈’,2),(‘想’,-1),('to',2),(‘库克’,3)
for indx, value in enumerate(values):
m = morph.parse(value[0])
if isinstance(m, list):
m = m[0]
if 'NOUN' in m.tag:
if value[1] == str(index[0]): #it checks if the word (part of the subject) depends on the verb
terms.append([value[0], indx])
if len(terms) > 0:
term = terms[0][0]
t = []
for indx, value in enumerate(values):
if value[1] == str(terms[0][1]): #it checks if the word depend on the found part of the subject
m = morph.parse(value[0])
if isinstance(m, list):
m = m[0]
if 'NOUN' in m.tag:
t.append([value[0], terms[0][0]])算法应该这样工作:遍历整个数组并在找到给定单词的所有依赖项和这些依赖项的所有依赖项时停止。(在本例中,“妈妈”的所有依赖项)。求你了救命!
发布于 2019-09-28 20:07:59
考虑到您已经准备好的数组,这非常容易:
values = [('My', 1), ('mom', 2), ('wants', -1), ('to', 2), ('cook', 3)]
def parseFrom(n, data):
if values[n][1] != -1:
#print('Stepping (%s,%d)' % (values[n][0], values[n][1]))
data.append(values[n][0])
return parseFrom(values[n][1], data)
else:
#print('At verb')
return data
subject = ' '.join(parseFrom(0, []))
print('Sentence has subject:', subject)如果当前单词不是动词,则函数是递归的,否则将主题作为数组返回。对不起,如果它不适用于所有的句子
https://stackoverflow.com/questions/58149365
复制相似问题