Конвертировать нграммы в частотный словарь в Python - PullRequest
0 голосов
/ 04 февраля 2020

Может кто-нибудь помочь с функцией, чтобы преобразовать следующую ngram в результат ниже? Возвращение должно объединить первые N-1 элементов ngram и посчитать, как часто встречаются различные преемники (N-й элемент). Я думал о некоторых вложенных циклах, но я изо всех сил пытаюсь построить структуру. Большое спасибо !!

ngrams = [['will', 'leave', 'florida'], ['will', 'leave', 'nyc'], ['will', 'leave', 'florida'],['wont', 'leave', 'florida']]

Возвращение должно быть:

{'will leave': {'florida': 2, 'nyc': 1}, 'wont leave': {'florida': 1}}

1 Ответ

0 голосов
/ 04 февраля 2020

Вот один подход

ngrams = [['will', 'leave', 'florida'], ['will', 'leave', 'nyc'], ['will', 'leave', 'florida'],['wont', 'leave', 'florida']]

dct = {'will leave': {}, 'wont leave': {}}

for i in ngrams:
    a, b, c = i
    if c in dct[a + ' ' + b]:
        dct[a+' '+b][c] += 1
    else:
        dct[a+' '+b].update({c: 1})

print(dct)

{'will leave': {'florida': 2, 'nyc': 1}, 'wont leave': {'florida': 1}}

...