Есть ли более быстрая альтернатива этому коду для удаления стоп-слов и знаков препинания в Pandas? - PullRequest
2 голосов
/ 13 апреля 2019

код, который я использую, кажется слишком медленным, возможно, есть альтернатива.

в Pandas Я токенизировал столбец dataframe 'description' и создал список стоп-слов + пунктуации, которые нужно удалить, а затем попытался удалитьбесполезные слова.

import numpy as np
import pandas as pd
import nltk
import string
nltk.download("stopwords")
nltk.download('punkt')

df2 = pd.read_csv('xxx')

после очистки и т. д. в результате получают около 135 000 строк и не содержат нулей

description points  price
0   This tremendous 100% varietal wine hails from ...   96  235.0
1   Ripe aromas of fig, blackberry and cassis are ...   96  110.0
2   Mac Watson honors the memory of a wine once ma...   96  90.0
3   This spent 20 months in 30% new French oak, an...   96  65.0
4   This is the top wine from La Bégude, named aft...   95  66.0

, затем токенизация

df2['description'] = df2.apply(lambda row: 
nltk.word_tokenize(row['description']), axis=1)
df2.head()

токенизация прошла довольно быстро,теперь определяя бесполезные слова:

useless_words = nltk.corpus.stopwords.words("english") + 
list(string.punctuation)

и теперь пытаясь использовать тот же трюк для удаления ненужных слов из df2['description']

df2['description'] = df2.apply(lambda row: [word for word in 
df2['description'] if not word in useless_words], axis=1)

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

1 Ответ

1 голос
/ 13 апреля 2019

Вы пробовали это?

df2["description"] = df2["description"].str.lower()
df2["description"] = df2["description"].str.replace("|".join(useless_words), "")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...