Подсчитайте частоту слов всех слов в файле - PullRequest
1 голос
/ 27 мая 2019

У меня есть текстовый файл, из которого я удалил символы и стоп-слова.

Я также разложил его по токенам (разбил его на список всех слов) на случай, если со списком операции проще.

Я хотел бы создать файл .csv с частотами всех слов (длинный формат) в порядке убывания.Как я могу это сделать?

Я думал о циклическом просмотре списка таким образом:

longData = pandas.DataFrame([], index=[], columns=['Frequency'])
for word in tokenizedFile:
    if word in longData.index:
         longData.loc[word]=longData.loc[word]+1
    else:
         wordFrame = pandas.DataFrame([1], index=[word])
         longData.append(wordFrame)

, но это кажется довольно неэффективным и расточительным.

Ответы [ 3 ]

1 голос
/ 27 мая 2019

Счетчик был бы хорош здесь:

    from collections import Counter
    c = Counter(tokenizedFile)
    longData = pd.DataFrame(c.values(), index = c.keys(), columns=['Frequency'])
0 голосов
/ 28 мая 2019

Вы можете использовать Series.str.extractall () и Series.value_counts () .Предположим, file.txt - это путь к файлу с удаленными текстами, символами и стоп-словами:

# read file into one column dataframe, the default column name is '0'
df = pd.read_csv('file.txt', sep='\n', header=None)

# extract words into rows and then do value_counts()
words_count = df[0].str.extractall(r'(\w+)')[0].value_counts()

Приведенный выше результат words_count - это серия, которую можно преобразовать в фрейм данных:

df_new = words_count.to_frame('words_count')
0 голосов
/ 27 мая 2019

если ваш текст представляет собой список строк, подобных приведенным выше:

from sklearn.feature_extraction import text


texts = [
        'this is the first text',
        'this is the secound text',
        'and this is the last text the have two word text'


        ]


#istantiate.
cv = text.CountVectorizer()



cv.fit(texts)


vectors = cv.transform(texts).toarray()

, вам потребуется изучить больше параметров.

...