如何从句子中删除不带有积极或消极情绪的单词?

问题描述 投票:0回答:3

我正在尝试对 YouTube 评论进行基于情感分析的方法,但评论中很多时候都有诸如 mrbeast、tiger/'s、lion/'s、pewdiepie、james 等词,这些词不会在句子中添加任何感觉。我已经浏览过nltk的average_perception_tagger,但它效果不佳,因为它给出的结果为

我的输入:

"mrbeast james lion tigers bad sad clickbait fight nice good"

我的句子中需要的单词:

"bad sad clickbait fight nice good"

我使用average_perception_tagger得到了什么:

[('mrbeast', 'NN'),
 ('james', 'NNS'),
 ('lion', 'JJ'),
 ('tigers', 'NNS'),
 ('bad', 'JJ'),
 ('sad', 'JJ'),
 ('clickbait', 'NN'),
 ('fight', 'NN'),
 ('nice', 'RB'),
 ('good', 'JJ')]

所以你可以看到,如果我删除 mrbeast,即 NN 像 clickbait、fight 这样的词也会被删除,这最终会从该句子中删除表达式。

python machine-learning nlp sentiment-analysis
3个回答
0
投票

有多种方法可以做到这一点,例如

  1. 您可以创建一组积极和消极的单词,对于语法中的每个单词,您可以检查它是否存在于您的集合中,如果存在,您应该保留该单词,否则将其删除。然而,这首先需要所有正面和负面的单词数据集。

  2. 您可以使用诸如textblob之类的东西,它可以为您提供单词或句子的情感分数。因此,通过截止情感分数,您可以过滤掉不需要的单词。


0
投票

好吧,这就是我为在伦敦证券交易所报告的公司所做的事情。你也可以用你的话来做类似的事情。

# define what you consider to be positive, negative or neutral keywords
posKeyWords = ['profit', 'increase', 'pleased', 'excellent', 'good', 'solid financial', 'robust', 'significantly improved', 'improve']
negKeyWords = ['loss', 'decrease', 'dissapoint', 'poor', 'bad','decline', 'negative', 'bad', 'weather', 'covid' ]
neutralKeyWords = ['financial']
keyWords = posKeyWords + neutralKeyWords + negKeyWords

接下来,您将获取文本形式的数据(从您选择的任何来源)。将数据(单词)放入列表(数组)中。

dataTest = []
dataText = resp.text # or whatever source you are reading from

我的是来自网络查询的响应,但你的可能来自文本文件或其他来源。

接下来创建一个空字典,将关键词计数到字典中(散列很快)。

keyWordSummary = {} # dictionary of keywords & values

最后,循环遍历关键字并将其放入字典中。

# look for some keywords
for kw in keyWords:
    kwVal = re.findall(kw, dataText)
    #print('keyword count:', kw, len(kwVal))
    # put into a dict
    keyWordSummary[kw] = len(kwVal)

您现在有了一个词频列表,您可以在数据框中进行分析(例如,这超出了这个特定问题的范围)。


0
投票

klick Gadgets 24 杯拔罐治疗套装,专业中医穴位拔罐治疗套装,带真空泵,手动身体按摩拔罐套装,止痛,物理治疗,透明

© www.soinside.com 2019 - 2024. All rights reserved.