【发布时间】:2019-07-04 13:04:15
【问题描述】:
我有一个相当大的数据集,我正在尝试计算每个文档的情绪。我正在使用 Vader 通过以下代码计算情绪,但此过程需要 6 多个小时才能运行。我正在寻找任何方法来加快这个过程。
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
analyzer = SentimentIntensityAnalyzer()
%time full_trans['bsent'] = full_trans['body_text'].apply(lambda row: analyzer.polarity_scores(row))
任何想法都会很棒,因为像这样循环遍历行非常低效。
例如,我在一个包含 100 个观察值的小样本上运行了我的代码。替代代码形式的结果如下。我的原始代码是第一,对列表理解的建议更改是第二。这两种方法之间的性能没有提高似乎很奇怪。
transtest = full_transx.copy(deep=True)
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
analyzer = SentimentIntensityAnalyzer()
%time transtest['bsent'] = [analyzer.polarity_scores(row) for row in transtest['body_text']]
%time full_transx['bsent'] = full_transx['body_text'].apply(lambda row: analyzer.polarity_scores(row))
挂墙时间:4分11秒
挂起时间:3 分 59 秒
【问题讨论】:
标签: python dataframe apply sentiment-analysis