НЛП - когда я «опускаю» свой текст, некоторые слова теряют свою частоту вместо того, чтобы добавлять больше

1

Я тренирую себя с некоторыми текстовыми данными, пытаясь сделать некоторые простые действия над ним. Сначала слово "данные" было с частотой 7, но затем я нашел в том же тексте больше слов, связанных с ним "данные", поэтому я опустил весь текст, чтобы получить недостающие слова. окончательная частота для "данных" - только 3. Может кто-то попытается мне помочь?

## First Word Frequency calculation:

from nltk.corpus import stopwords

import string

stop_list = stopwords.words('english') + list(string.punctuation)

tokens_no_stop = [token for token in tokens if token not in stop_list]

word_frequency_no_stop = Counter(tokens_no_stop)

for word, freq in word_frequency_no_stop.most_common(20):
     print(word, freq)

Данные 7

проекты 5

Люди 4

систем 4

Высокий 4

## Second Word Frequency calc:

all_tokens_lower = [t.lower() for t in word_frequency_no_stop] 

total_term_frequency_normalised = Counter(all_tokens_lower )

for word, freq in total_term_frequency_normalised.most_common(20):
    print(word, freq)

данные 2

проект 2

управление 2

навыки 2

Кто-нибудь может объяснить, почему?

Теги:
nlp
nltk

1 ответ

1
Лучший ответ

Что не так с вашим кодом

all_tokens_lower = [t.lower() for t in word_frequency_no_stop]

В приведенной выше строке используйте токены вместо word_frequency_no_stop.

Вы получили значение word_frequency_no_stop из

word_frequency_no_stop = Counter(tokens_no_stop)

которые возвращают dict, который будет иметь каждое слово только один раз.

В вашем случае это дает вам счет как 2 coz, у него будет слово "Заглавие" и "нижнее".

например. word_frequency_no_stop = { 'Project': 7, 'project': 2}

поэтому он вернет счет как 2 для других слов

Используйте ниже код

stop_list = stopwords.words('english') + list(string.punctuation)

tokens_no_stop = [token.lower() for token in tokens if token not in stop_list]

word_frequency_no_stop = Counter(tokens_no_stop)

for word, freq in word_frequency_no_stop.most_common(20):
     print(word, freq) 
  • 1
    большое спасибо!!!! работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню