Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使Python NLTK预处理代码更高效?_Python_Text_Nltk - Fatal编程技术网

如何使Python NLTK预处理代码更高效?

如何使Python NLTK预处理代码更高效?,python,text,nltk,Python,Text,Nltk,我正在尝试导入Yelp评论,并使用Python预处理文本数据,以便在评论中找到最常用的名词,进而提取信息方面。我提出了以下代码,希望有人告诉我是否有更有效的方法来编写此代码: 作为pd进口熊猫 导入nltk 导入操作系统 导入数据文件 路径=“~\Revsfile” filename='blrevs.csv' os.chdirpath df1=pd.read\u csvfilename,encoding=utf-8设置编码以帮助稍后发送\u令牌化命令 df2=df1[['id'、'brand'

我正在尝试导入Yelp评论,并使用Python预处理文本数据,以便在评论中找到最常用的名词,进而提取信息方面。我提出了以下代码,希望有人告诉我是否有更有效的方法来编写此代码:

作为pd进口熊猫 导入nltk 导入操作系统 导入数据文件 路径=“~\Revsfile” filename='blrevs.csv' os.chdirpath df1=pd.read\u csvfilename,encoding=utf-8设置编码以帮助稍后发送\u令牌化命令 df2=df1[['id'、'brand'、'Rating'、'Description']]说明包括评审文本 删除缺少的字符 df2['Description']=df2['Description'].fillna 预处理文本数据并标记单词 导入字符串 导入nltk 从nltk.tokenize导入RegexpTokenizer 从nltk.corpus导入停止词 进口稀土 stops=setstopwords.words英语 第一句: 句子 标记器=regexptokenizer'\w+' tokens=tokenizer.tokenizecontence 过滤的单词=[w表示令牌中的w,如果不是停止中的w] return.joinu单词
df2['tokenized_words']=df2['Description'].applypreprocess当您使用数据帧时,您看到的消息经常出现。这意味着熊猫不确定你的操作是否安全,但也不确定这是否是一个问题。找出一个安全的解决方法,但这不是性能问题的根源

我没有分析你的代码,但是你的清理功能特别糟糕。你为什么一直在拆分、处理和重新加入?标记化一次,过滤标记,然后在必要时加入最终结果

除了冗余的拆分联接之外,通过不必要地构建一个传递给联接的临时数组,也会降低效率。改用生成器,即不使用方括号,您的性能将显著提高。例如,您可以编写以下内容,而不是.join[singularizeplural For复数形式为s]:

s = ''.join(singularize(plural) for plural in s)

我不能说得更详细,因为坦率地说,你的标记化是一团糟。删除标点符号后,何时以及如何应用sent_标记化?另外,如果我没有弄错的话,我在上面重写的那行是,并且是,试图将独立字母单数化。仔细想想你正在做什么,用我推荐的令牌来工作,考虑使用NLTK.WorddToKeTime-但是它没有一个分裂快,检查中间步骤。

当代码正确处理时,在运行这个代码后,我得到以下消息。会有问题吗?SettingWithCopyWarning:试图在数据帧切片的副本上设置值。请尝试使用.loc[row\u indexer,col\u indexer]=value,而不要查看文档中的警告:。感谢您坦率的反馈。我已经根据您的指导更新了我的代码,希望这是一种更好的预处理文本数据的方法。