假设我对以下顾客进行了评论,并且想了解有关酒店和食物的感想:
“我们得到的房间很好,但是食物很一般”
如果这是在评论数据框中,则分析结果将如下所示:
Reviews Hotel Food
The room was ... Pos Neg
我在Kaggle和Medium上遇到了多个教程,这些教程教授情感分析,但是他们总是寻找整体情感。
如果您知道方法,或者知道任何教程,或者知道谷歌用什么术语来解决此问题,请帮帮我。谢谢!
编辑:请参考以下内容: http://sentic.net/sentire2011ott.pdf 他们似乎是讲义。有谁知道相同的python实现?谢谢!
编辑:该问题与ABSA(基于方面的情感分析)有关
答案 0 :(得分:2)
假设客户评论的长度为1-to-N句,其中一部分评论了多个项目(例如,房间很棒,但是员工很粗鲁),则您可能想要执行单个文本片段(由标点符号和连词分隔)的情感分析。
这将需要一种预处理技术的组合,这些技术将对句子和连词(例如,但是,如此等等)的评论文本进行分段。
示例代码
首先,句子标记化
假设评论文字为“ 不错的中央酒店”。房间很棒,但是工作人员很粗鲁。从中央车站很容易到达”
>>> from nltk.tokenize import sent_tokenize
>>> sentences = sent_tokenize(review_text)
>>> sentences
[“Nice central hotel.”,
“Room was great but the staff were rude.”,
“Very easy to reach from the central station.”]
接下来,分割几个连词,
import re
def split_conj(text):
return map(str.strip, re.sub('(but|yet)', "|", text).split('|'))
segments = []
for sent in sentences:
segments.extend(split_conj(sent))
请注意,您需要对segments
做一些进一步的预处理(基于示例评论文本)
['Nice central hotel.',
'Room was great',
'the staff were rude.',
'Very easy to reach from the central station.']
接下来,创建将评论ID链接到各个细分ID的数据集。因此,您的数据框列为:
review ID | segment ID | segment text | label
# label could be a numerical value
# (range -1 to +1) instead of -1 and +1
接下来,对各个细分受众群进行情感分析,然后将它们结合起来以获取每个评论的总体情感-基于与每个细分受众群ID关联的评论ID。
综合得分(非详尽列表)的几种选择:
希望对您有帮助。
答案 1 :(得分:0)
例如,您不能只在“组合”单词列表上拆分句子,例如“和,但是,而且...”,然后对拆分的每个部分进行标准分析吗? />
假设/检查它们仍然构成完整的句子,因为您当然也可能遇到更困难的情况,例如“房间和我们得到的食物都很好”,您需要复制句子的结尾部分或得到一部分“两个房间都没有意义了。
但是无论如何,这句话只有一种情感……