Удаление стоп-слов;не может избавиться от некоторых стоп-слов, несмотря ни на что? - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь очистить набор новостей ( input newsarticles) Мой output вот 10 самых распространенных слов в статьях.

При использовании стоп-слов nltk некоторые слова все же проходили: ['the', 'will', 'сказали', 'one', 'также', 'like', 'Мог', 'он'] Поэтому я добавил их в стоп-слова сам.Я попробовал и метод дополнения и расширение, как показано в коде ниже.Но искомые стоп-слова (слова, которые будут выброшены) "the" , а "he" не удаляются.

Кто-нибудь знает почему?Или знаете, что я могу делать неправильно?

(And yes; Ive googled it ALOT)
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import nltk
from nltk.corpus import stopwords
import string
import re
from IPython.display import display
from sklearn.feature_extraction.text import CountVectorizer


#importing dataset and making a copy as string
data = pd.read_csv('train.csv', encoding="ISO-8859-1")

data1 = data.copy()
data1.text = data1.text.astype(str)
to_drop = ['id',
               'title',
               'author',]
data1.drop(to_drop, inplace=True, axis=1)


#cleaning text for punctuation, whitespace, splitting, and set to lower 
data1['text'] = data1['text'].str.strip().str.lower().str.replace('[^\w\s] ', '').str.split()


#removing stopwords
stopwords = nltk.corpus.stopwords.words('english')
custom_words = ['the','would','said','one','also','like','could','he']
stopwords.extend(custom_words)
data1['text'] = data1['text'].apply(lambda x: [item for item in x if item not in stopwords ])
data1['text']= data1['text'].apply(lambda x: " ".join(x))

vectorizer = CountVectorizer(max_features=1500, analyzer='word')
train_voc = vectorizer.fit_transform(data1['text'])
sum_words = train_voc.sum(axis=0)
words_freq = [(word, sum_words[0, idx]) for word, idx in vectorizer.vocabulary_.items()]
words_freq =sorted(words_freq, key = lambda x: x[1], reverse=True)



print (words_freq[:10])



display(data1.head())

Вывод:

[('the', 31138), ('people', 28975), ('new', 28495), ('trump', 24752), ('president', 18701), ('he', 17254), ('us', 16969), ('clinton', 16039), ('first', 15520), ('two', 15491)]

    text    label
0   house dem aidewe didnât even see comeyâs l...   1
1   ever get feeling life circles roundabout rathe...   0
2   truth might get fired october 292016 tension i...   1
3   videos 15 civilians killed single us airstrike...   1
4   print iranian woman sentenced six years prison...   1

Кто-то спросил пример. Это пример где вы можете увидеть 2 выхода;один до удаления стоп-слов, и один после их удаления.То же самое относится и к этим данным, только к тому, что это гораздо больший набор данных, а на выходе - самые распространенные слова.Пример вывода:

без стоп-слов: ['This', 'is', 'a', 'семпл', 'предложение', ',', 'показ', 'выкл', 'the', 'стоп ',' слова ',' фильтрация ','. ']

со стоп-словами [' This ',' sample ',' предложение ',', ',' показ ',' stop ',' words',' фильтрация ','. ']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...