我正在尝试对 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 这样的词也会被删除,这最终会从该句子中删除表达式。
有多种方法可以做到这一点,例如
您可以创建一组积极和消极的单词,对于语法中的每个单词,您可以检查它是否存在于您的集合中,如果存在,您应该保留该单词,否则将其删除。然而,这首先需要所有正面和负面的单词数据集。
您可以使用诸如textblob之类的东西,它可以为您提供单词或句子的情感分数。因此,通过截止情感分数,您可以过滤掉不需要的单词。
好吧,这就是我为在伦敦证券交易所报告的公司所做的事情。你也可以用你的话来做类似的事情。
# 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)
您现在有了一个词频列表,您可以在数据框中进行分析(例如,这超出了这个特定问题的范围)。
klick Gadgets 24 杯拔罐治疗套装,专业中医穴位拔罐治疗套装,带真空泵,手动身体按摩拔罐套装,止痛,物理治疗,透明