поэтому у меня есть dict, который принимает строки в качестве ключей и сопоставляет их со счетчиками string->count
, что выглядит примерно так:
defaultdict(collections.Counter,
{'': Counter({'<S>': 2,
'=': 2,
'chronicles': 1,
'iii': 1,
'no': 1,
'senjō': 1,
'valkyria': 2}),
'<S>': Counter({'<S>': 1, '=': 1}),
'<S> <S>': Counter({'=': 1}),
Так что единственный способ, которым я могу это сделать, этовыполняя двойной цикл for доступа к строкам, а затем доступа к значениям счетчика и деления на сумму значений этого соответствующего счетчика. Пример: s
- это просто список всех строк в dict, и затем я нахожу сумму значений счетчика в этой строке, а затем снова делаю цикл по ключам, деля их на sum_val
.
for s in voc:
sum_val = sum(lm[s].values())
for k in lm[s].keys():
lm[s][k] = lm[s][k]/sum_val
Проблема этого подхода заключается в том, что он занимает слишком много времени (в действительности никогда не получалось выводить данные для большого набора данных);у кого-нибудь есть другой подход (может быть, понимание списка)? Я не совсем уверен, как понимание списка работает со счетчиками, так что если кто-то может помочь, это было бы здорово!