У меня есть пандас DataFrame со столбцом, который включает в каждую строку список слов-токенов.Вот пример данных:
import pandas as pd
df = pd.DataFrame({'example' : pd.Series([
['limited', 'edition', 'vinyl', 'disk'],
['continental', 'breakfast', 'music', 'table'],
['limited', 'time', 'order']])})
Затем я хотел применить простой счетчик , чтобы проверить частоту слов .
Вариант 1:
import nltk
from nltk.probability import FreqDist
word_dist = nltk.FreqDist(str(df.example))
rslt = pd.DataFrame(word_dist.most_common(10), columns=['Word', 'Frequency'])
rslt
Word Frequency
0 46
1 e 13
2 i 11
3 t 10
...
После того, как это не сработало должным образом, я справился так:
Вариант 2:
from collections import defaultdict
for source in sources:
word_freq = defaultdict(int)
for text in df.example:
for word in text:
word_freq[word] += 1
pd.DataFrame.from_dict(word_freq, orient='index').sort_values(0, ascending=False).rename(columns={0: 'Frequency'})
Frequency
limited 2
vinyl 1
continental 1
music 1
...
Интересно, существуют ли более эффективные методы подсчета предварительно токенизированного контента или Вариант 1 можно исправить?Будем признательны за решения, основанные на чистом Python или scikit-learn.