Python 3.x 如何在python中从amazon_baby.csv中删除stopwords

Python 3.x 如何在python中从amazon_baby.csv中删除stopwords,python-3.x,scikit-learn,nltk,Python 3.x,Scikit Learn,Nltk,我想删除Amazon\u baby.csv中的停止词和标点符号 import pandas as pd data=pd.read_csv('amazon_baby.csv) data.fillna(value='',inplace=True) data.head() 如果在整个数据集内核上应用,则此代码最多执行10k行,并且始终显示为繁忙,并且单元未执行 请帮忙 查找数据集。您正在逐字符处理数据,这非常慢 这是因为数据量很大(~183531行),我们必须单独处理每一行,这使得复杂性达到O(

我想删除
Amazon\u baby.csv
中的停止词和标点符号

import pandas as pd
data=pd.read_csv('amazon_baby.csv)
data.fillna(value='',inplace=True)
data.head()

如果在整个数据集内核上应用,则此代码最多执行10k行,并且始终显示为繁忙,并且单元未执行

请帮忙


查找数据集。

您正在逐字符处理数据,这非常慢

这是因为数据量很大(~183531行),我们必须单独处理每一行,这使得复杂性达到O(n2)。 我在下面使用word_tokenize实现了一种稍微不同的方法:

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

def remove_punction_and_stopwords(msg):
   stop_words = set(stopwords.words('english'))
   word_tokens = word_tokenize(msg)
   filtered_words = [w for w in msg if w not in word_tokens and w not in string.punctuation]
   new_sentence = ''.join(filtered_words)
   return new_sentence

我试着运行了6分钟,它处理了136322行。我敢肯定,如果我运行它10分钟,它会成功地完成执行。

您正在逐字符处理数据,速度非常慢

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

def text_clean(msg):

tokens=word_tokenize(msg)
tokens=[w.lower() for w in tokens]
import string
stop_words=set(stopwords.words('english))
no_punc_and_stop_words=[w for w in tokens if w not in string.punctuation and w not in stop_words]  

return words
这是因为数据量很大(~183531行),我们必须单独处理每一行,这使得复杂性达到O(n2)。 我在下面使用word_tokenize实现了一种稍微不同的方法:

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

def remove_punction_and_stopwords(msg):
   stop_words = set(stopwords.words('english'))
   word_tokens = word_tokenize(msg)
   filtered_words = [w for w in msg if w not in word_tokens and w not in string.punctuation]
   new_sentence = ''.join(filtered_words)
   return new_sentence

我试着运行了6分钟,它处理了136322行。我敢肯定,如果我运行它10分钟,它会成功完成执行。

Hi Vivek,正如您所说,代码在10分钟内执行,但输出略有不同。我对它做了一些小改动。现在它工作了。谢谢@VivekPlease别这样,太慢了。。。您好,Vivek,正如您所说,代码在10分钟内执行,但输出略有不同。我对它做了一些小改动。现在它可以工作了。谢谢@VivekPlease别这样,太慢了。。。看,请不要这样做,它也很慢。。。看,请不要这样做,它也很慢。。。看见
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

def text_clean(msg):

tokens=word_tokenize(msg)
tokens=[w.lower() for w in tokens]
import string
stop_words=set(stopwords.words('english))
no_punc_and_stop_words=[w for w in tokens if w not in string.punctuation and w not in stop_words]  

return words