Я хотел бы перебрать список:
inc_list = ['one', 'two', 'one', 'three', 'two', 'one', 'three']
и создать словарь, в котором будут показаны все биграммы соседних слов и количество их вхождений, при этом подсчитанные комбинации обратного порядка равны, поэтому обратные комбинации исключены и исключены одни и те же словосочетания. Таким образом, ..'one', 'two'..
и ..'two', 'one'..
должны оба добавить к счету ('one', 'two')
в словаре.
ожидаемый результат:
{('one', 'two'): 3, ('one', 'three'): 2, ('two', 'three'): 1}
До сих пор я пробовал с:
import itertools
from collections import Counter
inc_list = ['one', 'two', 'one', 'three', 'two', 'one', 'three',]
coocurences = dict(Counter(itertools.combinations(inc_list, 2)))
print(coocurences)
Это, очевидно, учитывает все комбинации возможностей, включая и обратные, и одинаковые словосочетания, поэтому не то, что я ищу.
Есть ли в itertools инструмент, который делает что-то ближе к моему? желаемый вывод?
Я нашел много информации о матрицах совместного использования, но я бы предпочел словарь в качестве вывода.