如何从句子中删除没有正面或负面情绪的词?

How to remove words from a sentence that carry no positive or negative sentiment?

我正在尝试对 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 等词也会被删除,而不是最终从该句子中删除表达式。

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

# 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

最后循环遍历关键字放入dict

# 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)

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