Python, 将二元组字典与文本匹配
我在处理一个问题,想把一个由三个词组成的句子和一个包含两个词的词典进行匹配。这个词典会记录每对词出现的次数,比如(第一个词和第二个词)以及(第二个词和第三个词)。我想知道的是,如何判断这个字符串(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"
当然,你可以做其他事情,而不仅仅是返回一个字符串,这只是为了演示基本的思路。
代码中重要的部分是元组切片,它生成了 left
和 right
这两个二元组,然后可以用它们去查字典。