【问题标题】:How to remove words from a sentence that carry no positive or negative sentiment?如何从没有积极或消极情绪的句子中删除单词?
【发布时间】:2022-08-08 14:47:13
【问题描述】:

我在 youtube cmets 上尝试了一种基于情感分析的方法,但是 cmets 很多时候都有 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 也将被删除,而不是最终从该句子中删除表达式。

  • 我不是文学专家。但我相信,作为一个多愁善感的词是一个相对的概念。例如,像老虎这样的一些词可能会让我感到恐惧,而另一些则不会。我认为最好提供有关情感表达的更多细节。
  • 请问实际的问题是什么?请提供您正在寻找的输出示例。
  • 看看我试图做的是根据用户 cmet 将 youtube 视频分类为好或坏,所以很明显,像好、战斗、点击诱饵、错误、惊人、不、不等这样的词会有所帮助我们这样做。然而,像 mrbeast、james、lion 这样的词只会给我们的模型增加噪音。我的最终目标是为每个 youtube 视频评分,该评分将基于该视频上的用户 cmets。我是初学者,所以如果我走错了路,请纠正我。

标签: python machine-learning nlp sentiment-analysis


【解决方案1】:

好的,这就是我为报告 LSE 的公司所做的。你可以用你的话做类似的事情。

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

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

【讨论】:

  • 看到可以有数以万计的单词可以给一个句子添加感觉,比如 bad、sad、fight、mad、fu##、......我如何获得这些预定义单词的列表,不是吗除了手动创建列表还有其他方法吗?
  • 可能有包含此类的预设库,但您现在正在进入一个人解释英语的领域。但是,我不知道这些,字典需要非常大(字典中所有可能的单词)。
【解决方案2】:

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

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

  2. 你可以使用像 textblob 这样的东西,它可以给你一个单词或一个句子的情绪分数。因此,使用截止情绪分数,您可以过滤掉不需要的单词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2016-08-12
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    相关资源
    最近更新 更多