Добавить список стоп-слов Coustome в countvectorizer - PullRequest
1 голос
/ 19 марта 2020

Я учу Python и пытаюсь использовать CountVectorizer, чтобы удалить некоторые слова. Я хочу заменить count_vectorizer = CountVectorizer(stop_words='english') и прочитать стоп-слова из файла.

Вот мой код:

# Load the library with the CountVectorizer method
from sklearn.feature_extraction.text import CountVectorizer
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline

# Helper function
def plot_10_most_common_words(count_data, count_vectorizer):
    import matplotlib.pyplot as plt
    words = count_vectorizer.get_feature_names()
    total_counts = np.zeros(len(words))
    for t in count_data:
        total_counts+=t.toarray()[0]

    count_dict = (zip(words, total_counts))
    count_dict = sorted(count_dict, key=lambda x:x[1], reverse=True)[0:10]
    words = [w[0] for w in count_dict]
    counts = [w[1] for w in count_dict]
    x_pos = np.arange(len(words)) 

    plt.figure(2, figsize=(15, 15/1.6180))
    plt.subplot(title='10 most common words')
    sns.set_context("notebook", font_scale=1.25, rc={"lines.linewidth": 2.5})
    sns.barplot(x_pos, counts, palette='husl')
    plt.xticks(x_pos, words, rotation=90) 
    plt.xlabel('words')
    plt.ylabel('counts')
    plt.show()

# Initialise the count vectorizer with the English stop words
count_vectorizer = CountVectorizer(stop_words='english')

# Fit and transform the processed titles
count_data = count_vectorizer.fit_transform(papers['Abstract'])

# Visualise the 10 most common words
plot_10_most_common_words(count_data, count_vectorizer)

Спасибо.

1 Ответ

0 голосов
/ 19 марта 2020

Сначала прочитайте стоп-слова из файла, составив их список, используя метод .split():

with open("name_of_your_stop_words_file") as stop_words:
    your_stop_words_list = stop_words.read().split()

Затем используйте этот список вместо строки 'english':

count_vectorizer = CountVectorizer(stop_words=your_stop_words_list)

(Предполагается, что в вашем файле стоп-слов содержатся стоп-слова, разделенные только пробельными символами (например, пробелами или табуляцией), если в строке их больше 1).

...