0

我正在努力将 3 个单词的句子与两个单词的 digram 字典匹配,该字典计算(第 1 个单词和第 2 个单词)和(第 2 个单词和第 3 个单词)的频率。我想要的是如何匹配字符串(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})
4

1 回答 1

0

向您的计数器查询构成您的三词句子的两个二元组并比较它们应该非常简单。这是一种方法:

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二元组元组的元组切片,然后可以将其用于索引到字典中。

于 2013-03-10T03:37:45.973 回答