Python TextBlob NaiveBayesAnalyzer非常慢(与模式相比)
我正在使用TextBlob for python对推特进行情绪分析。TextBlob中的默认分析器是PatternAnalyzer,它工作得非常好,速度也相当快Python TextBlob NaiveBayesAnalyzer非常慢(与模式相比),python,naivebayes,textblob,Python,Naivebayes,Textblob,我正在使用TextBlob for python对推特进行情绪分析。TextBlob中的默认分析器是PatternAnalyzer,它工作得非常好,速度也相当快 sent = TextBlob(tweet.decode('utf-8')).sentiment 我现在尝试切换到NaiveBayesAnalyzer,发现运行时不适合我的需要。(每条推文接近5秒。) 我以前使用过NaiveBayes分类器的scikit learn实现,但没有发现它这么慢,所以我想知道在这种情况下是否正确使用了它 我
sent = TextBlob(tweet.decode('utf-8')).sentiment
我现在尝试切换到NaiveBayesAnalyzer,发现运行时不适合我的需要。(每条推文接近5秒。)
我以前使用过NaiveBayes分类器的scikit learn实现,但没有发现它这么慢,所以我想知道在这种情况下是否正确使用了它
我假设分析器是预训练的,至少说明“在电影评论数据集上训练的朴素贝叶斯分析器”。但它还有一个函数train(),它被描述为“在电影评论语料库上训练朴素贝叶斯分类器”。它在每次运行之前是否对分析器进行内部训练?我希望不是
有人知道加快速度的方法吗?是的,Textblob将在每次运行前对分析仪进行培训。您可以使用以下代码来避免每次训练分析器
from textblob import Blobber
from textblob.sentiments import NaiveBayesAnalyzer
tb = Blobber(analyzer=NaiveBayesAnalyzer())
print tb("sentence you want to test")
如果您在数据框中有表数据,并且希望使用textblob的NaiveBayesAnalyzer,那么这将是Alan非常有用的答案。只需更改相关字符串序列的
word\u列表
import textblob
import pandas as pd
tb = textblob.Blobber(analyzer=NaiveBayesAnalyzer())
for index, row in df.iterrows():
sent = tb(row['word_list']).sentiment
df.loc[index, 'classification'] = sent[0]
df.loc[index, 'p_pos'] = sent[1]
df.loc[index, 'p_neg'] = sent[2]
上面将情绪
返回的元组拆分为三个独立的序列
如果序列都是字符串,但它有混合的数据类型,这一点很有效,因为对象
数据类型可能存在问题,那么您可能需要在其周围放置try/except块来捕获异常
在我的测试中,它在大约4.7秒内完成了1000行
希望这有帮助。这太棒了!我的测试文件的运行时间从5个多小时降到了7秒以下@马特姆。您发现哪种分析仪更好?模式库或nltk?@soham.m17中的NaiveBayes我没有对它们进行广泛的比较,但我似乎记得(至少出于我的目的)它们的性能相当。我正在使用PatternAnalyzer,但这需要很多时间。有没有办法加快速度?@Alan,我正在用你的代码测试这个精确的东西,似乎需要一段时间?我大概需要多少钱?
import textblob
import pandas as pd
tb = textblob.Blobber(analyzer=NaiveBayesAnalyzer())
for index, row in df.iterrows():
sent = tb(row['word_list']).sentiment
df.loc[index, 'classification'] = sent[0]
df.loc[index, 'p_pos'] = sent[1]
df.loc[index, 'p_neg'] = sent[2]