Вам нужно split
строк, чтобы превратить strings
в list
.В противном случае ngrams
будет использовать входную строку в качестве итерируемой, чтобы найти 3 грамма:
s.apply(lambda x: Counter(ngrams(x.split(), 3)).most_common())
Из этого примера игрушки:
0 [((Text, from, page), 1), ((from, page, 1), 1)]
1 [((Text, from, page), 1), ((from, page, 2), 1)]
2 [((Text, from, page), 1), ((from, page, 3), 1)]
3 [((Text, from, page), 1), ((from, page, 1), 1)]
4 [((Text, from, page), 1), ((from, page, 2), 1)]
Name: Page, dtype: object
Обновление
Чтобы найти наиболее распространенные 3 грамма во всем столбце, вы можете использовать:
from itertools import chain
out = s.apply(lambda x: Counter(ngrams(x.split(), 3)).most_common(1))
Counter(chain.from_iterable(out)).most_common(1)