1

我在匹配词性 pos 模式时遇到问题。我们有一个介词短语模式规则,例如 NN + IN + NN、VBG + IN + NN 或 ADJ + IN + NN。

这个想法是从任何给定的句子中提取模式并与上面定义的规则进行匹配,如果匹配则返回 True。

从句子中提取的示例: sent_pos = [('increasing', 'VBG'), ('of', 'IN'), ('mutation', 'NN')] 匹配任一规则1 = [('', 'VBG '), ('', 'IN'), ('', 'NN')] 或 rule2 = [('', 'NN'), ('', 'IN'), ('', 'NN' )] 或 [('', 'ADJ'), ('', 'IN'), ('', 'NN')]

结果返回真。

在python代码中可能吗?

感谢您的回复。

4

1 回答 1

1

我不确定这是否是您要查找的内容,因为我不知道规则 1、规则 2 和规则 3 中模式的顺序是否始终相同,但试试这个:

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
于 2015-01-04T17:21:59.767 回答