Как я могу удалить английские стоп-слова, используя NLTK корпус из текстового столбца Pandas? - PullRequest
0 голосов
/ 12 июня 2019

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

stop_words = set(stopwords.words('english'))
data['text'] = data['text'].apply(lambda text:  " ".join(w) for w in text.lower().split() if w not in stop_words)

Спасибо и ценим, если кто-то может ответить.

1 Ответ

0 голосов
/ 12 июня 2019

Вы можете разбить ваш текстовый столбец (или просто разбить его на список слов), а затем удалить стоп-слова, используя метод map или apply.

Например:

data = pd.DataFrame({'text': ['a sentence can have stop words', 'stop words are common words like if, I, you, a, etc...']})
data
                                                text
0                     a sentence can have stop words
1  stop words are common words like if, I, you, a...

from nltk.corpus import stopwords
from nltk.tokenize import RegexpTokenizer

tokenizer = RegexpTokenizer('\w+')
stop_words = stopwords.words('english')

def clean(x):
    doc = tokenizer.tokenize(x.lower())
    return [w for w in doc if w in stop_words]

data.text.map(clean)
0                    [sentence, stop, words]
1    [stop, words, common, words, like, etc]
Name: text, dtype: object
...