【问题标题】:TextBlob NaiveBayesAnalyzer extremely slow (compared to Pattern)TextBlob NaiveBayesAnalyzer 极慢(与 Pattern 相比)
【发布时间】:2016-01-19 10:03:22
【问题描述】:

我正在使用 TextBlob for python 对推文进行一些情绪分析。 TextBlob 中的默认分析器是 PatternAnalyzer,它运行良好且速度非常快。

sent = TextBlob(tweet.decode('utf-8')).sentiment

我现在尝试切换到 NaiveBayesAnalyzer,但发现运行时无法满足我的需求。 (每条推文接近 5 秒。)

sent = TextBlob(tweet.decode('utf-8'), analyzer=NaiveBayesAnalyzer()).sentiment

我之前使用过朴素贝叶斯分类器的 scikit learn 实现,并没有发现它这么慢,所以我想知道在这种情况下我是否正确使用它。

我假设分析器是预训练的,至少 the documentation 声明“在电影评论数据集上训练的朴素贝叶斯分析器”。但它也有一个函数 train(),被描述为“在电影评论语料库上训练朴素贝叶斯分类器”。它是否在每次运行之前在内部训练分析器?我希望不会。

有人知道加快速度的方法吗?

【问题讨论】:

    标签: python naivebayes textblob


    【解决方案1】:

    如果您在数据框中有表数据并且想要使用 textblob 的 NaiveBayesAnalyzer,那么添加到 Alan 的非常有用的答案中就可以了。只需将 word_list 更改为您的相关字符串系列即可。

    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]
    

    上面将sentiment返回的元组分成三个独立的系列。

    如果系列都是字符串,但如果它具有混合数据类型,则此方法有效,这在具有 object 数据类型的 pandas 中可能是一个问题,那么您可能需要在其周围放置一个 try/except 块以捕获异常。

    在我的测试中,它准时在 4.7 秒内完成 1000 行。

    希望这有帮助。

    【讨论】:

      【解决方案2】:

      是的,Textblob 将在每次运行前训练分析器。您可以使用以下代码来避免每次都训练分析器。

      from textblob import Blobber
      from textblob.sentiments import NaiveBayesAnalyzer
      tb = Blobber(analyzer=NaiveBayesAnalyzer())
      
      print tb("sentence you want to test")
      

      【讨论】:

      • 这太棒了!我的测试文件的运行时间从超过 5 小时缩短到不到 7 秒!
      • @MattM。你觉得哪款分析仪更好?来自 nltk 的模式库或 NaiveBayes?
      • @soham.m17 我没有对它们进行广泛的比较,但我似乎记得(至少出于我的目的)它们的表现相当。
      • 我正在使用 PatternAnalyzer 但它需要很多时间。有什么办法可以加快速度?
      • @Alan,我现在正在用你的代码测试这个确切的东西,它似乎需要一段时间?我预计大概需要多少?
      猜你喜欢
      • 2012-12-03
      • 2017-10-24
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多