我在匹配词性pos模式时遇到了问题。 我们有一个介词短语模式的规则,如NN + IN + NN,VBG + IN + NN或ADJ + IN + NN。
这个想法是从任何给定的句子中提取模式并与上面的定义规则匹配,如果匹配则返回True。
从句子中提取的示例: sent_pos = [('正在','VBG'),(''','IN'),('变异','NN')] 与之匹配 rules1 = [('','VBG'),('','IN'),('','NN')] 要么 rule2 = [('','NN'),('','IN'),('','NN')] 要么 [('','ADJ'),('','IN'),('','NN')]
结果返回True。
有可能在python代码中吗?
感谢您的回复。
答案 0 :(得分:1)
我不确定这是否是您正在寻找的内容,因为我不知道在rule1,rule2和rule3中模式的顺序是否始终相同,但请尝试:
def function():
sent_pos = [('increasing', 'VBG'), ('of', 'IN'), ('mutation', 'NN')]
rule1 = [('', 'VBG'), ('', 'IN'), ('', 'NN')]
rule2 = [('', 'NN'), ('', 'IN'), ('', 'NN')]
rule3 = [('', 'ADJ'), ('', 'IN'), ('', 'NN')]
rules = [rule1, rule2, rule3]
for element in rules:
counter = 0
for i in range(len(sent_pos)):
if sent_pos[i][1] == element[i][1]:
counter += 1
if counter == len(sent_pos):
return True
return False