Удалить стоп-слова Python - PullRequest
       4

Удалить стоп-слова Python

0 голосов
/ 23 октября 2018

Итак, я читаю в CSV-файл и получаю слова в нем.Я пытаюсь удалить стоп-слова.Вот мой код

import pandas as pd
from nltk.corpus import stopwords as sw

def loadCsv(fileName):
    df = pd.read_csv(fileName, error_bad_lines=False)
    df.dropna(inplace = True)
    return df

def getWords(dataframe):
    words = []
    for tweet in dataframe['SentimentText'].tolist():
        for word in tweet.split():
            word = word.lower()

        words.append(word)

    return set(words) #Create a set from the words list

def removeStopWords(words):
    for word in words: # iterate over word_list
        if word in sw.words('english'): 
            words.remove(word) # remove word from filtered_word_list if it is a stopword

    return set(words)

df = loadCsv("train.csv")
words = getWords(df)
words = removeStopWords(words)

В этой строке

if word in sw.words('english'):

Я получаю следующую ошибку.

исключение: нет описания

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

РЕДАКТИРОВАТЬ

def removeStopWords(words):
    filtered_word_list = words #make a copy of the words
    for word in words: # iterate over words
        if word in sw.words('english'): 
            filtered_word_list.remove(word) # remove word from filtered_word_list if it is a stopword

    return set(filtered_word_list)

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Вот упрощенная версия задачи, без панды.Я полагаю, что проблема с исходным кодом заключается в изменении набора words при его повторении.Используя условное понимание списка, мы можем проверить каждое слово, создав новый список и, в конечном итоге, преобразовать его в набор в соответствии с исходным кодом.

from nltk.corpus import stopwords as sw

def removeStopWords(words):
    return set([w for w in words if not w in sw.words('english')])

sentence = 'this is a very common english sentence with a finite set of words from my imagination'
words = set(sentence.split())
print(removeStopWords(words))
0 голосов
/ 23 октября 2018

Измените функцию removeStopWords на следующую:

def getFilteredStopWords(words):
    list_stopWords=list(set(sw.words('english')))
    filtered_words=[w for w in words if not w in list_stopWords# remove word from filtered_words if it is a stopword
    return filtered_words
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...