我正在使用Vader SentimentAnalyzer获取极性分数.之前我使用了正/负/中性的概率分数,但我刚刚意识到"复合"分数,范围从-1(大多数负)到1(大多数pos)将提供单一的极性测量.我想知道如何计算"复合"分数.这是从[pos,neu,neg]向量计算的吗?
我想在中添加单词,vader_lexicon.txt以指定单词的极性得分。正确的做法是什么?
我在中看到了此文件AppData\Roaming\nltk_data\sentiment\vader_lexicon。该文件由单词,其极性,强度和“ 10个独立人类评分者”给出的10个强度得分组成。[1]但是,当我对其进行编辑时,以下代码的结果没有任何变化:
from nltk.sentiment.vader import SentimentIntensityAnalyzer
sia = SentimentIntensityAnalyzer()
s = sia.polarity_scores("my string here")
Run Code Online (Sandbox Code Playgroud)
我认为当我调用SentimentIntensityAnalyzer的构造函数时,我的代码可以访问此文本文件。[2]您对我如何编辑预制词典有任何想法吗?
资料来源:
我的文字来源于社交网络,所以你可以想象它的本质,我认为文字是我所能想象的干净和最小的;执行以下消毒后:
我认为运行时间是线性的,我不打算进行任何并行化,因为更改可用代码需要付出大量的努力,例如,对于大约 1000 个文本,范围从 ~50 kb 到 ~150 kb 字节,它需要大约
在我的机器上运行时间约为 10 分钟。
有没有更好的方法来输入算法以加快烹饪时间?代码就像 SentimentIntensityAnalyzer 的工作一样简单,这是主要部分
sid = SentimentIntensityAnalyzer()
c.execute("select body, creation_date, group_id from posts where (substring(lower(body) from (%s))=(%s)) and language=\'en\' order by creation _ date DESC (s,s,)")
conn.commit()
if(c.rowcount>0):
dump_fetched = c.fetchall()
textsSql=pd.DataFrame(dump_fetched,columns=['body','created_at', 'group_id'])
del dump_fetched
gc.collect()
texts = textsSql['body'].values
# here, some data manipulation: steps listed above
polarity_ = [sid.polarity_scores(s)['compound'] for s in texts]
Run Code Online (Sandbox Code Playgroud) python performance data-manipulation sentiment-analysis vader
我正在使用 Python nltk 库中的 VADER 情感词典来分析文本情感。这个词典不太适合我的领域,所以我想将我自己的情感分数添加到各种单词中。因此,我使用了词典文本文件 (vader_lexicon.txt) 来做到这一点。但是,我不太了解这个文件的架构。例如,像obliterate这样的单词将在文本文件中包含以下数据:obliterate -2.9 0.83066 [-3, -4, -3, -3, -3, -3, -2, -1, -4, - 3]
显然 -2.9 是列表中情绪分数的平均值。但 0.83066 代表什么?
谢谢!
我陷入了情绪分析,发现了Vader解决方案,这是迄今为止我能找到的最好的解决方案。我的问题是,我找不到任何有关如何用英语以外的其他语言来喂养它的文档。
我希望有人能纠正我对VADER如何评分文字的理解。我在这里已阅读了此过程的说明,但是在重新创建它描述的过程时,我无法将测试句子的综合得分与Vader的输出相匹配。假设我们有这样的句子:
"I like using VADER, its a fun tool to use"
Run Code Online (Sandbox Code Playgroud)
VADER拿起的单词是“喜欢”(+1.5分)和“有趣”(+2.3分)。根据文档,将这些值相加(等于+3.8),然后使用以下函数将其标准化为0到1之间的范围:
(alpha = 15)
x / x2 + alpha
Run Code Online (Sandbox Code Playgroud)
根据我们的数字,这应该变成:
3.8 / 14.44 + 15 = 0.1290
Run Code Online (Sandbox Code Playgroud)
但是,VADER输出的复合分数如下:
Scores: {'neg': 0.0, 'neu': 0.508, 'pos': 0.492, 'compound': 0.7003}
Run Code Online (Sandbox Code Playgroud)
我的推理哪里出错了?曾多次问过类似的问题,但是尚未提供VADER分类的实际示例。任何帮助,将不胜感激。
所以我使用 Vader Sentiment Analyzer 来分析某些客户的反馈。在评估输出时,我看到情绪分析器给了我混合的结果。
For eg: "Again, human interaction needs to have resolutions. Your reps
cannot BLAME the system and shrug off being able to help. Let
alone blame the system and not know WHY the system makes
indiscriminate decisions."
Output: compound: 0.2212 neg: 0.111 neu: 0.756, pos: 0.133
Run Code Online (Sandbox Code Playgroud)
在这种情况下,O/P 应该是负数,但它给出了一个更接近中性到正数的复合分数,这是没有意义的。
我在 AppData\Roaming\nltk_data\sentiment\vader_lexicon.txt 中看到了这个文件,其中包含大多数英语单词的情绪分数。
我只是想知道这些单个词是如何根据 pos neg neu 和复合词给出情感分数的?是否有任何算法/过程来评价它们?
最后,我正在考虑构建自己的情感分析词典以获得更好的结果,但为此我需要知道每个单词是如何分配情感分数的?
我有一个包含多行推文的数据框,我想使用 vader 情感分析根据每行的内容创建 4 列分数“积极”、“消极”、“中性”和“复合”。
我查阅了不同的帖子,但无法弄清楚我的具体情况。先感谢您!