Удалить наиболее часто встречающиеся слова из набора данных

Я пытаюсь работать с текстом, в котором много повторений. Раньше я использовал векторизатор tf-idf от SKLearn, и у него есть параметр max_df=0.5. Это означает, что если слово присутствует более чем в 50% ввода, оно не используется. Я хотел бы знать, есть ли аналогичная функция в Python вообще, или в Doc2Vec, или в NLTK: я хотел бы удалить слова, которые присутствуют в более чем 50% набора данных, без их векторизации.

Например, я хотел бы сделать из кадра данных, например:

0 | This is new: A puppy ate cheese! See?
1 | This is new: A cat was found. See?
2 | This is new: Problems arise. See?

Такой вывод:

0 | puppy ate cheese
1 | cat was found
2 | problems arise

Я уже сделал декапитализацию и удаление стоп-слов, теперь я просто хотел бы удалить наиболее часто встречающиеся слова. Я также хотел бы сохранить эту информацию, так как могут поступать новые данные, и я хотел бы удалить те же самые частые слова из нового ввода, которые я нашел частыми в исходном корпусе.


person lte__    schedule 05.11.2017    source источник


Ответы (1)


ты мог бы сделать

import nltk 
allWords = nltk.tokenize.word_tokenize(text)
allWordDist = nltk.FreqDist(w.lower() for w in allWords) 

с последующим

mostCommon= allWordDist.most_common(10).keys()

в предварительной обработке?

если вы посмотрите в

allWordDist .items()

Я думаю, вы найдете все, что вам нужно.

person 00__00__00    schedule 05.11.2017