Python, 将二元组字典与文本匹配

0 投票
1 回答
1238 浏览
提问于 2025-04-17 18:33

我在处理一个问题,想把一个由三个词组成的句子和一个包含两个词的词典进行匹配。这个词典会记录每对词出现的次数,比如(第一个词和第二个词)以及(第二个词和第三个词)。我想知道的是,如何判断这个字符串(AAA BBB CCC)在这个二元组中,并且(AAA BBB)和(BBB CCC)都有出现次数,然后我们再取最大的那个次数?

Counter({
('BBB', 'DDD'): 3, 
('AAA', 'BBB'): 2, 
('DDD', 'XXX'): 1, 
('DDD', 'YYY'): 1,
('YYY', 'BBB'): 1, 
('BBB', 'CCC'): 1, 
('CCC', 'AAA'): 1, 
('XXX', 'BBB'): 1})

1 个回答

0

查询你的计数器,找出构成你三词句子的两个二元组(bigrams),然后进行比较,这个过程应该很简单。这里有一种方法:

def find_sentence_bracketing(sentence, bigram_dict):
    left = sentence[0:2]
    right = sentence[1:3]
    if bigram_dict[left] > bigram_dict[right]:
        return "left bracketing"
    else:
        return "right bracketing"

当然,你可以做其他事情,而不仅仅是返回一个字符串,这只是为了演示基本的思路。

代码中重要的部分是元组切片,它生成了 leftright 这两个二元组,然后可以用它们去查字典。

撰写回答