精华内容
下载资源
问答
  • 细粒度情感分析
    千次阅读
    2020-12-22 04:08:59

    细粒度情感分析

    说细粒度情感分析,先说传统的情感分析(即粗粒度分析)。

    粗粒度情感分析只是简单的积极或消极情感的划分,并计算出情感的强度。但是情绪更细的维度层次,应该还可以对正负情绪进行划分。比如,积极情绪的期待、喜悦,负面情绪的愤怒、悲伤、害怕等,分析单位更小更精准。

    senticnet库

    Sentic API基于SenticNet4词典,可以对词语进行文本分析,得出每个词的语义和情感。这个库很有特点,

    优点在于可以进行细粒度情感分析,这一点很多库是做不到的。

    缺点是只是对每个词语进行分析,还无法做到句子层面的情感分析。

    但是以这个库为基础,我们还是可以做很多事情的。

    能对多少语言进行处理呢?

    语言

    语言代码

    Arabic

    ar

    Bosnian

    ba

    Bulgarian

    bg

    Catalan

    ca

    Chinese

    cn

    Croatian

    hr

    Czech

    cz

    Danish

    dk

    Dutch

    nl

    English

    en

    Estonian

    ee

    Finnish

    fi

    French

    fr

    German

    de

    Greek

    gr

    Haitian

    ht

    Hebrew

    he

    Hindi

    hi

    Hmong

    hm

    Hungarian

    hu

    Indonesian

    id

    Italian

    it

    Japanese

    jp

    Korean

    kr

    Latvian

    lv

    Lithuanian

    lt

    Malay

    my

    Maltese

    mt

    Portuguese

    pt

    Romanian

    ro

    Russian

    ru

    Serbian

    rs

    Singlish

    sg

    Slovak

    sk

    Slovenian

    si

    Spanish

    es

    Thai

    th

    Turkish

    tr

    Ukrainian

    ua

    Urdu

    ur

    一、官方示例

    from senticnet.senticnet import Senticnet

    #初始化Senticnet,参数为英文。中文'cn'sn = Senticnet('en')concept_info = sn.concept('love')print(concept_info)

    返回的是字典

    {'polarity_value': 'positive',

    'polarity_intense': '0.655',

    'moodtags': ['#joy', '#admiration'],'sentics': {'pleasantness': '0.703',

    'attention': '-0.60',

    'sensitivity': '0',

    'aptitude': '0.654'},'semantics': ['emotion',

    'conditioned_emotional_response',

    'conditioned_emotion',

    'fright',

    'reverence']}

    参数

    参数含义

    polarity_value

    积极或消极情绪

    polarity_intense

    情绪极性(强度)

    moodtags

    情绪标签

    sentics

    细粒度情感分析

    semantics

    语义

    还可以这样对每个参数单独调用

    from senticnet.senticnet import Senticnet

    sn = Senticnet('en')polarity_value = sn.polarity_value('love')polarity_intense = sn.polarity_intense('love')moodtags = sn.moodtags('love')semantics = sn.semantics('love')sentics = sn.sentics('love')

    二、中文的使用

    from senticnet.senticnet import Senticnet

    sn = Senticnet('cn')concept_info = sn.concept('难过')print(concept_info)

    返回

    {'polarity_value': -0.333,

    'polarity_intense': '难受',

    'moodtags': ['#难过', '#难过'],'sentics': {'pleasantness': -1,

    'attention': 0,

    'sensitivity': 0,

    'aptitude': 0},

    'semantics': ['悲伤', '痛苦', '悲痛欲绝', '流泪']}

    三、使用注意

    3.1 词典不全面

    不过奇葩的是

    from senticnet.senticnet import Senticnet

    sn = Senticnet('cn')concept_info = sn.concept('好的')print(concept_info)

    居然返回

    Traceback (most recent call last):

    File "/Users/suosuo/Desktop/句子情感分析函数.py", line 40, in

    concept_info = sn.concept('好的')

    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/senticnet/senticnet.py", line 20, in concept

    result["polarity_value"] = self.polarity_value(concept)

    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/senticnet/senticnet.py", line 56, in polarity_value

    concept_info = self.data[concept]KeyError: '好的'

    说明senticnet词典并不全面,随便输入了个词语就这样保存。英文也是这样,也就说词典只是对某些情感词进行了收录,但还不全面。

    3.2 词典不准确

    我随便试了试,一个中文“非常”、英文“very”,返回的数据超出了我的认知。

    from senticnet.senticnet import Senticnet

    sn = Senticnet('cn')concept_info = sn.concept('非常')print(concept_info)

    居然返回这个

    {'polarity_value': 0.03,

    'polarity_intense': '意大利餐厅',

    'moodtags': ['#快乐', '#有趣'],'sentics': {'pleasantness': 0.068,

    'attention': 0.066,

    'sensitivity': 0.011,

    'aptitude': -0.034},

    'semantics': ['吃披萨', '披萨店', '在餐馆吃饭', '餐馆']}

    说明senticnet词典中并不准确全面,需要使用的同学要合理衡量,设置一些规则才能避免掉坑。

    四、对句子进行情感分析

    现在nltk库的语料数据下载不了,导致无法使用nltk进行分词和词干化,这里就以空格为标志对英文句子进行分词,测度其情感。

    这里我要计算整个句子的情感,返回句子的词语数、正面词语数、负面词语数、正面得分、负面得分。

    from senticnet.senticnet import Senticnet

    def input_sentence(sentence):

    positive_score = 0

    positive_word_num = 0

    negative_score = 0

    negative_word_num = 0

    sn = Senticnet()

    wordlist = sentence.split(' ')

    word_num = len(wordlist)

    for word in wordlist:        #防止有的词不存在于senticnet词典,导致程序报错!

    try:

    concept_info = sn.concept(word)

    polarity_value = concept_info['polarity_value']

    polarity_intense = concept_info['polarity_intense']

    if polarity_value == 'positive':

    positive_score+=float(polarity_intense)

    positive_word_num+=1

    else:

    negative_score+=float(polarity_intense)

    negative_word_num+=1

    except:

    continue

    return {'word_num': word_num,

    'positive_word_num': positive_word_num,

    'positive_score': positive_score,

    'negative_word_num': negative_word_num,

    'negative_score': negative_score}print(input_sentence(sentence='Today is happy day'))

    返回情感

    {'word_num': 4,

    'positive_word_num': 2,

    'positive_score': 1.059,

    'negative_word_num': 0,

    'negative_score': 0}

    senticnet文档:http://sentic.net/api/

    更多相关内容
  • Al_challenger细粒度情感分析数据集,包含ai_challenger_sentiment_analysis_testa_20180816、ai_challenger_sentiment_analysis_trainingset_20180816、ai_challenger_sentiment_analysis_validationset_20180816
  • 2021泰迪杯C1-基于细粒度情感分析与迁移学习的游客目的地印象分析.pdf
  • 细粒度用户评论情感分析在线评论的细粒度情感分析对于深刻理解商家和用户,挖掘用户情感等方面有实质性的价值,并且在互联网行业有极其广泛的应用,主要用于个性化推荐,智能搜索,产品反馈,业务安全等。...
  • 面向产品评论的细粒度情感分析
  • 细粒度情感分析:了解文本情感的What、How、Why Knowing What,How and Way:A Near Complete Solution for Aspect-based Sentiment Analysis 论文地址:https://arxiv.org/pdf/1911.01616.pdf 一、细粒度情感分析 ​...
    细粒度情感分析:了解文本情感的What、How、Why
    Knowing What,How and Way:A Near Complete Solution for Aspect-based Sentiment Analysis

    论文地址:https://arxiv.org/pdf/1911.01616.pdf

    一、细粒度情感分析

    ​ 细粒度情感分析任务ABSA(Aspect Based Sentiment Analysis)的目标是解决各类情感分析任务,其包括任务ATE(Aspect Term Extraction)、OTE(Opinion Term Extraction)和ATC(Aspect Term Sentiment Classification)。举例说明一下这些任务。给定一个例句
    Waiters are very friendly and the pasta is simply average. \text{Waiters are very friendly and the pasta is simply average.} Waiters are very friendly and the pasta is simply average.
    ATE的目标是抽取 Waiters \text{Waiters} Waiters pasta \text{pasta} pasta,ATC的目标是为ATE抽取出的aspect进行情感分类,OTE是抽取导致情感极性的词 friendly \text{friendly} friendly average \text{average} average

    ​ 虽然这几个任务看起来容易混淆,但是任务边界其实十分清晰。如下图所示,顶上的三个正方形表示ABSA的三个目标,其中aspect term表示需要句子中要目前讨论的目标(waiter),opinion term表示评论观点的术语或者短语(friendly),aspect category表示将aspect分类到预先定义的类别,例如“服务”或者“食物”。

    ​ 中间层的圆圈表示具体的子任务。研究人员认为独立去解决这些子任务是不够的,提出了两两成对解决这些子任务。但是,这样仍然不足以完成的描绘出整个情感的状态。例如,先前的例子中,能够确定 waiters \text{waiters} waiters是正向情感,但是无法给出为什么是正向的线索,只有确定了 friendly \text{friendly} friendly,才能真正理解导致情感正向的原因。Fan等人提出给定aspect,抽取对应opinion term的任务,该任务并不会预测情感。联合抽取aspect和opinion的任务也并不能解决二者间配对的问题。aspect抽取和情感分类联合任务中不能为aspect抽取opinion term。综合分析这些子任务的缺陷,论文提出了新的子任务ASTE(Aspect Sentiment Triplet Extraction),其在所有子任务中的位置如下图中的实心圆。

    在这里插入图片描述

    二、方法简介

    ​ 新子任务ASTE,该任务的目标是从句子中抽取三元组(What,How,Why),其中What表示aspect,How表示情感极性,Why表示为什么具有这样的情感极性。例如从句子“Waiters are very friendly and the pasta is simply average”中抽取三元组(Waiters, positive, friendly)。

    ​ 论文针对任务ASTE,提出了一种两阶段框架的解决方案。第一阶段,提取aspect term、opinion term以及判断情感极性。这个阶段会将任务转换为两个序列标注任务,一个序列标注任务用来确定aspect term及其情感极性,另一个序列标注则是用来确定opinion term。第二阶段,将aspect和opinion进行配对。

    三、问题的形式化

    ​ 给定一个长度为 T T T的句子 X = { x 1 , … , x T } X=\{x_1,\dots,x_T\} X={x1,,xT},ASTE的任务是抽取情感三元组。

    ​ 首先,会将aspect抽取及情感极性判断转换为一个统一的序列标注任务,标注的标签为 Y T S = \mathcal{Y}^{\mathcal{TS}}= YTS={B-POS, I-POS, E-POS, S-POS, B-NEG, I-NEG, E-NEG, S-NEG, B-NEU, I-NEU, E-NEU, S-NEU, O}。句子 X X X在这个统一的序列标注任务中会得到预测标签 Y T S = { y 1 T S , … , y T T S } , y i T S ∈ Y T S Y^{\mathcal{TS}}=\{y_1^{\mathcal{TS}},\dots,y_T^{\mathcal{TS}}\},y_i^{\mathcal{TS}}\in\mathcal{Y}^{\mathcal{TS}} YTS={y1TS,,yTTS},yiTSYTS

    ​ 其次,opinion抽取也会转换为序列标注任务,标注标签为 Y O P T = { B,I,E,S } ∪ { O } \mathcal{Y}^{\mathcal{OPT}}=\{\text{B,I,E,S}\}\cup\{O\} YOPT={B,I,E,S}{O},对应于句子 X X X的预测标签为 Y O P T = { y 1 O P T , … , y T O P T } , y i O P T ∈ Y O P T Y^{\mathcal{OPT}}=\{y_1^{\mathcal{OPT}},\dots,y_T^{\mathcal{OPT}}\},y_i^{\mathcal{OPT}}\in\mathcal{Y}^{\mathcal{OPT}} YOPT={y1OPT,,yTOPT},yiOPTYOPT

    ​ 最后,前面2个序列标注任务会得到aspect集合 { T 1 , T 2 , … , T n } \{T_1,T_2,\dots,T_n\} {T1,T2,,Tn}和opinion集合 { O 1 , O 2 , . . . , O m } \{O_1,O_2,...,O_m\} {O1,O2,...,Om}。然后,两两配对得到aspect-opinion对集合 { ( T 1 , O 1 ) , ( T 1 , O 2 ) , . . . , ( T n , T m ) } \{(T_1,O_1),(T_1,O_2),...,(T_n,T_m)\} {(T1,O1),(T1,O2),...,(Tn,Tm)},然后从中选出正确的aspect-opinion对。

    1. 抽取apsect并判断情感;2. 抽opinion;3. 判断aspect-opinion对

    四、模型概览

    在这里插入图片描述

    ​ 上图是整个模型的结构,其是一个两阶段的框架。第一阶段会预测两种类型的标签,分别是apsect边界和情感极性的统一标签 Y T S \mathcal{Y}^{\mathcal{TS}} YTS和opinion边界标签 Y O P T \mathcal{Y}^{\mathcal{OPT}} YOPT。具体来说,左边的模型包含两个堆叠的BiLSTM,用于预测 Y T S \mathcal{Y}^{\mathcal{TS}} YTS。下面的BiLSTM用于执行一个预测apsect的辅助任务,并将产生的辅助信号传递给上面的BiLSTM,上面的BiLSTM用于保证情感的连接性,并最终使用BG组件将所有的信息进行汇合后来预测统一标签。第一阶段右边的模型用于预测opinion的边界,即 Y O P T \mathcal{Y}^{\mathcal{OPT}} YOPT。整个句子会输入至GCN中,并通过aspect和opinion的依赖关系进行学习。然后,学习到的向量分别被输入至2个不同的模块 TG \text{TG} TG BiLSTM O P T \text{BiLSTM}^{OPT} BiLSTMOPT,TG模块会结合aspect的边界信息来预测opinion的边界, BiLSTM O P T \text{BiLSTM}^{OPT} BiLSTMOPT则直接预测opinion的边界。

    ​ 第二阶段会基于第一阶段抽取的aspect和opinion来枚举所有可能的aspect-opinion对,然后基于apsect和opinion的相对距离来产生position embedding,利用BiLSTM编码后能够分别得到apsect和opinion的向量,将两者向量进行拼接后输入二分类器即可。

    五、第一阶段

    1. aspect抽取和情感极性判断

    ​ 在上面“问题的形式化”中,将aspect抽取和情感判断转换成了统一标签 Y T S \mathcal{Y}^{\mathcal{TS}} YTS并使用序列标注进行解决。论文认为预测aspect的边界有助于预测整个统一标签 Y T S \mathcal{Y}^{\mathcal{TS}} YTS,因此会使用一个称为 B i L S T M T BiLSTM^{\mathcal{T}} BiLSTMT的双向LSTM来预测apsect的边界,预测的结果 Y T \mathcal{Y}^\mathcal{T} YT { B , I , E , S , O } \{B,I,E,S,O\} {B,I,E,S,O},且模型 B i L S T M T BiLSTM^{\mathcal{T}} BiLSTMT隐藏层的输出表示为 h T = [ LSTM → T ( x ) ; LSTM ← T ( x ) ] h^{\mathcal{T}}=[\text{LSTM}_{\rightarrow}^{\mathcal{T}}(x);\text{LSTM}_{\leftarrow}^{\mathcal{T}}(x)] hT=[LSTMT(x);LSTMT(x)]。随后, h T h^{\mathcal{T}} hT会被输入着一个称为 BiLSTM S \text{BiLSTM}^S BiLSTMS的双向LSTM来预测标签 Y S \mathcal{Y}^{\mathcal{S}} YS,其隐藏层输出为 h s = [ LSTM → S ( x ) ; LSTM ← S ( x ) ] h^s=[\text{LSTM}_{\rightarrow}^{S}(x);\text{LSTM}_{\leftarrow}^{S}(x)] hs=[LSTMS(x);LSTMS(x)] Y S \mathcal{Y}^{\mathcal{S}} YS={B-POS, I-POS, E-POS, S-POS, B-NEG, I-NEG, E-NEG, S-NEG, B-NEU, I-NEU, E-NEU, S-NEU}。(简单总结,第一层BiLSTM预测边界 Y T \mathcal{Y}^\mathcal{T} YT,隐藏层输出 h T h^{\mathcal{T}} hT,第二层BiLSTM输入 h T h^{\mathcal{T}} hT来预测 Y S \mathcal{Y}^{\mathcal{S}} YS,隐藏层输出为 h s h^s hs。预测 Y T \mathcal{Y}^\mathcal{T} YT是为了让预测 Y S \mathcal{Y}^{\mathcal{S}} YS的边界时更加准确。)

    ​ 通常一个apsect是由多个token组成的,为了避免预测 Y S \mathcal{Y}^{\mathcal{S}} YS时,多个token的情感不一致。因此,这里会通过gate机制实现一个称为Sentiment Consistency(SC)模块(BiLSTM机制包含三个gate,这里的gate感觉上有点多余)
    g t = σ ( W g h t S + b ) h ~ t S = g t ⊙ h t S + ( 1 − g t ) ⊙ h ~ t − 1 S \begin{aligned} &g_t=\sigma(\textbf{W}^gh_t^{S}+\textbf{b})\\ &\tilde{h}_t^S=g_t\odot h_t^S+(1-g_t)\odot\tilde{h}_{t-1}^S \end{aligned} gt=σ(WghtS+b)h~tS=gthtS+(1gt)h~t1S
    其中, W g \textbf{W}^g Wg b g \textbf{b}^g bg是SC模块的模型参数, ⊙ \odot 是element-wise乘法, σ \sigma σ是sigmoid函数。通过该gate可以降低情绪标签剧烈变化的风险。

    ​ 前面的 B i L S T M T BiLSTM^{\mathcal{T}} BiLSTMT会预测aspect的边界 Y T \mathcal{Y}^\mathcal{T} YT并得到 h T h^{\mathcal{T}} hT,若希望基于 Y T \mathcal{Y}^\mathcal{T} YT来预测 Y S \mathcal{Y}^{\mathcal{S}} YS,那么 Y T \mathcal{Y}^\mathcal{T} YT中的标签会有三种转换情况。举例来说,若 B i L S T M T BiLSTM^{\mathcal{T}} BiLSTMT在某个位置预测的标签是B,那边该标签转换后的结果一定是B-POS、B-NEG、B-NEU中的一个。因此,这里使用一个基于转移矩阵实现的Boundary Guidance(BG)模块。该模块中存在一个可训练的转移矩阵 W t r ∈ R ∣ Y T ∣ × ∣ Y S ∣ \textbf{W}^{tr}\in\mathbb{R}^{|\mathcal{Y}^{\mathcal{T}}|\times |\mathcal{Y}^{\mathcal{S}}|} WtrRYT×YS,其中某一个具体取值 W i , j t r \textbf{W}_{i,j}^{tr} Wi,jtr表示从标签 Y T i \mathcal{Y}^{\mathcal{T}_i} YTi转移至标签 Y S j \mathcal{Y}^{\mathcal{S}_j} YSj的概率。具体的过程为
    z t T = p ( y t T ∣ x t ) = Softmax ( W T h t T ) z t S ′ = ( W t r ) ⊤ z t T \begin{aligned} & z_t^{\mathcal{T}}=\textbf{p}(y_t^{\mathcal{T}}|x_t)=\text{Softmax}(\textbf{W}^\mathcal{T}h_t^{\mathcal{T}})\\ & z_t^{S'}=(\textbf{W}^{tr})^\top z_t^{\mathcal{T}} \end{aligned} ztT=p(ytTxt)=Softmax(WThtT)ztS=(Wtr)ztT
    其中, W T \textbf{W}^{\mathcal{T}} WT是可训练参数, z t S ′ z_t^{S'} ztS是获得的统一标签概率分布。( z t S ′ z_t^{S'} ztS不是最终的统一标签概率,只是其中一部分,之后还会进行一个合并。)

    z t S ′ z_t^{S'} ztS在预测统一标签时并没有合并opinion的信息,显然opinion信息对于预测apsect的位置会有很大的帮助。因此这里会将带有opinion信息的向量 h O P T h^{\mathcal{OPT}} hOPT(后面会介绍怎么得到该向量)和 h ~ t S \tilde{h}_t^S h~tS进行拼接合并,得到一个更强大的向量 h U h^\mathcal{U} hU,然后基于 h U h^\mathcal{U} hU在预测一次统一标签的概率分布,
    z t S = p ( y t S ∣ x t ) = Softmax ( W S h t U ) z_t^S=\textbf{p}(y_t^S|x_t)=\text{Softmax}(\textbf{W}^Sh_t^{\mathcal{U}}) ztS=p(ytSxt)=Softmax(WShtU)
    现在,有两个统计标签的预测概率,分布是 z t S z_t^S ztS z t S ′ z_t^{S'} ztS,现在讨论怎么将两者结合在一起。这里希望学习到一个权重,两者按这个权重进行加权求和。

    ​ 这里的权重分 α t ∈ R \alpha_t\in\mathbb{R} αtR的计算是基于称为apsect边界集中度分 c t c_t ct,具体来说
    c t = ( z t T ) ⊤ z t T α t = ϵ c t \begin{aligned} c_t=(z_t^{\mathcal{T}})^{\top}z_t^{\mathcal{T}} \\ \alpha_t=\epsilon c_t \end{aligned} ct=(ztT)ztTαt=ϵct
    其中, c t c_t ct是一个0到1的值,其越大表示模型在预测边界时的置信度越高, ϵ \epsilon ϵ是一个超参数。

    ​ 最终预测统一标签的概率分布为
    z t T S = α t z t S ′ + ( 1 − α t ) z t S z_t^{\mathcal{TS}}=\alpha_t z_t^{\mathcal{S'}}+(1-\alpha_t)z_t^{\mathcal{S}} ztTS=αtztS+(1αt)ztS

    2. opinion 抽取

    ​ 前面介绍了aspect抽取和情感极性判断,这里会介绍opinion抽取的内容。此外,前面在预测 z t S z_t^S ztS时,使用了 h O P T h^{\mathcal{OPT}} hOPT,因此本部分也会介绍该向量的由来。

    ​ 先前的一些研究表明aspect抽取和opinion抽取是互利的,而且直观上也能够判断aspect和opinion是经常共现的。因此,这里希望利用apsect的信息来指导opinion的抽取。具体来说,这里会将句子进行embedding,然后输入至GCN中来学习不同词之间的依赖。GCN的邻接矩阵是基于句子的依赖解析构造的,称为 W G C N ∈ R ∣ L ∣ × ∣ L ∣ \textbf{W}^{GCN}\in\mathbb{R}^{|\mathcal{L}|\times |\mathcal{L}|} WGCNRL×L,其中 L \mathcal{L} L是句子的长度。例如,第 i i i个单词和第 j j j个单词具有依赖关系,那么 W i , j G C N \textbf{W}^{GCN}_{i,j} Wi,jGCN W j , i G C N \textbf{W}_{j,i}^{GCN} Wj,iGCN均有值1,否则为0。(GCN输出的向量表示为 h O h^{\mathcal{O}} hO)

    ​ 为了能够利用apsect信息来辅助opinion抽取,这里设计了一个辅助任务来集成aspect的边界信息和GCN的输出,称这部分为Target Guidance(TG)模块。具体来说,就是将apsect边界预测的隐向量 h T h^{\mathcal{T}} hT和GCN输出的向量 h O h^{\mathcal{O}} hO进行拼接,然后用于预测opinion的边界 Y T G = { B , I , E , S } ∪ { O } \mathcal{Y}^{\mathcal{TG}}=\{B,I,E,S\}\cup\{O\} YTG={B,I,E,S}{O}
    z t T G = p ( y t O P T ∣ x t ) = Softmax ( W T G [ h t T ; h t O ] ) z_t^{\mathcal{TG}}=\textbf{p}(y_t^{\mathcal{OPT}}|x_t)=\text{Softmax}(\textbf{W}^{\mathcal{TG}}[h_t^{\mathcal{T}};h_t^{\mathcal{O}}]) ztTG=p(ytOPTxt)=Softmax(WTG[htT;htO])
    ​ 除了将 h O h^{\mathcal{O}} hO h T h^{\mathcal{T}} hT合并外,另一部分是将 h O h^{\mathcal{O}} hO送入一个称为 B i L S T M OPT BiLSTM^{\text{OPT}} BiLSTMOPT的双向LSMT中,然后输出一个上下文编码向量 h O P T h^{OPT} hOPT(前面计算 h U h^\mathcal{U} hU会用到),然后利用其进行opinion边界预测
    z t O P T = p ( y t O P T ∣ x t ) = Softmax ( W O P T h t O P T ) z_t^{\mathcal{OPT}}=\textbf{p}(y_t^{\mathcal{OPT}}|x_t)=\text{Softmax}(\textbf{W}^{\mathcal{OPT}}h_t^{\mathcal{OPT}}) ztOPT=p(ytOPTxt)=Softmax(WOPThtOPT)

    3. 训练

    ​ 前面的过程会输出 z t T z_t^{\mathcal{T}} ztT z t T S z_t^{\mathcal{TS}} ztTS z t T G z_t^{\mathcal{TG}} ztTG z t O P T z_t^{\mathcal{OPT}} ztOPT,这里使用交叉熵计算损失函数
    L I = − 1 T ∑ t = 1 T I ( y t I , g ) ∘ l o g ( z t I ) \mathcal{L}^{\mathcal{I}}=-\frac{1}{T}\sum_{t=1}^T\mathbb{I}(y_t^{\mathcal{I,g}})\circ log(z_t^{\mathcal{I}}) LI=T1t=1TI(ytI,g)log(ztI)
    其中, I \mathcal{I} I是任务指示符和其可能的取值 T , T S , T G , O P T \mathcal{T,TS,TG,OPT} T,TS,TG,OPT I ( y ) \mathbb{I}(y) I(y)表示one-hot编码, y t I , g y_t^{\mathcal{I,g}} ytI,g表示任务 I \mathcal{I} I在时间步t处的标签。总的损失函数为所有损失函数之和
    J ( θ ) = L T + L T S + L T G + L O P T \mathcal{J}(\theta)=\mathcal{L}^{\mathcal{T}}+\mathcal{L}^{\mathcal{TS}}+\mathcal{L}^{\mathcal{TG}}+\mathcal{L}^{\mathcal{OPT}} J(θ)=LT+LTS+LTG+LOPT
    总结: L T \mathcal{L}^{\mathcal{T}} LT用于计算aspect的边界, L T S \mathcal{L}^{\mathcal{TS}} LTS用于结合opinion信息计算apsect边界和情感极性, L T G \mathcal{L}^{\mathcal{TG}} LTG用于结合apsect边界信息计算opinion的边界, L O P T \mathcal{L}^{\mathcal{OPT}} LOPT用于直接计算opinion的边界。

    六、第二阶段

    ​ 经过第一阶段后,每个句子都会输出两个标签集合,分别是apsect和opinion,记为 { T 1 , T 2 , … , T n } \{T_1,T_2,\dots,T_n\} {T1,T2,,Tn} { O 1 , O 2 , … , O m } \{O_1,O_2,\dots,O_m\} {O1,O2,,Om},其中 n n n m m m表示数量。枚举所有可能的aspect-opinion对来生成候选对池 { ( T 1 , O 1 ) , ( T 2 , O 2 ) , … , ( T n , O m ) } \{(T_1,O_1),(T_2,O_2),\dots,(T_n,O_m)\} {(T1,O1),(T2,O2),,(Tn,Om)},接下来就是判断每个aspect-opinion对是否有效。

    1. 位置嵌入(position embedding)

    ​ 为了能够利用aspect和opinion的位置关系,这里会计算aspect中心词至opinion中心词之间单词的数量,用于表示两者的距离。为了便于训练,将aspect和opinion间的距离当做其位置索引,从而创建出position embedding(位置嵌入)。索引为0表示该单词既不是apsect,也不是opinion。可以观察下表中的 ( W a i t e r , f r i e n d l y ) (Waiter,friendly) (Waiter,friendly) ( f u g u s a s h i m i , f r i e n d l y ) (fugu sashimi,friendly) (fugusashimi,friendly)的位置索引。

    在这里插入图片描述

    2. 成对编码与分类

    ​ 这里将Glove词向量和position embedding进行拼接,然后输入至BiLSTM层来编码aspect和opinion上下文信息。将aspect和opinion位置输出的词向量进行各自平均,并将得到的2个向量进行拼接。最后将拼接后的向量送至softmax层进行分类。

    ​ 训练时使用标注好的aspect-opinion对,测试时直接使用模型在候选对池上进行预测。

    展开全文
  • 每天给你送来NLP技术干货!来自:美团技术团队经典的细粒度情感分析(ABSA,Aspect-based Sentiment Analysis)主要包含三个子任务,分别为属性抽取、观点抽取以...

    每天给你送来NLP技术干货!


    来自:美团技术团队

    0daf213da8aa48f2050eb1c1416ced4d.png

    经典的细粒度情感分析(ABSA,Aspect-based Sentiment Analysis)主要包含三个子任务,分别为属性抽取、观点抽取以及属性-观点对的情感倾向判定三个级联任务。

    本文介绍了美团到店到餐应用算法团队通过结合学界最先进的阅读理解、注意力机制等方面的实体抽取、情感分析经验,解决到餐(菜品,属性,观点,情感)四元组抽取问题,并在多个业务场景应用落地,希望能对从事相关工作的同学有所帮助或启发。

    • 一、背景

    • 二、目标回顾

      • 2.1 业务问题

      • 2.2 技术调研

      • 2.3 技术目标

      • 2.4 主要挑战

    • 三、细粒度情感分析实践

      • 3.1 Pipeline方法

      • 3.2 联合学习

    • 四、在到餐业务中的应用

      • 4.1 模型效果对比

      • 4.2 业务应用场景

    • 五、未来展望

    一、背景

    作为一家生活服务在线电子商务平台,美团致力于通过科技链接消费者和商户,努力为消费者提供品质生活。到店餐饮(简称到餐)作为美团的核心业务之一,是满足用户堂食消费需求、赋能餐饮商户在线运营的重要平台,在服务百万级别的餐饮商户和亿级别C端用户的过程中,积累了海量的用户评论信息(User Generated Content, UGC),包含了用户到店消费体验之后的真情实感,如果能够有效提取其中的关键的情感极性、观点表达,不仅可以辅助更多用户做出消费决策,同时也可以帮助商户收集经营状况的用户反馈信息。

    近年来,大规模预训练模型(BERT)、提示学习(Prompt)等NLP技术飞速发展。文本分类、序列标注、文本生成各类自然语言处理任务的应用效果得到显著提升,情感分析便是其中最常见的应用形式之一。它的任务目标在于通过NLP技术手段对输入文本进行分析、处理、归纳、推理,给出文本情感极性判定的结果。

    按照情感极性判定粒度,可以细分为篇章/整句粒度情感分析、细粒度情感分析(ABSA, Aspect-based Sentiment Analysis)[1]。一般而言,细粒度情感分析的任务目标主要围绕属性(Aspect Term)、观点(Opinion Term)、情感(Sentiment Polarity)三要素展开,可以拆分为属性抽取、观点抽取以及属性-观点对的情感倾向判定三个级联任务[2-5]。例如,对于给定的用户评论“这家店环境不错,但服务很糟糕”,预期的输出结果为(环境,不错,正向)、(服务,糟糕,负向)。

    54d7037fa987849e5a0f5839ce1f6c74.png

    图1 ABSA子任务[5]

    到餐算法团队结合到餐业务供给侧、平台侧、需求侧的业务场景,为核心业务链路的智能化提供高效、优质的算法解决方案,通过算法能力辅助业务降本提效。本文结合到餐B/C端业务场景,探索细粒度情感分析技术在用户评价挖掘方向的应用实践。

    二、目标回顾

    2.1 业务问题

    秉承“帮大家吃得更好,生活更好”的使命,到餐面向消费者提供包括套餐、代金券、买单、预订等在内的丰富产品和服务,并通过黑珍珠餐厅指南、大众点评必吃榜等榜单,以及搜索、查询、评价等,帮助消费者更好地作出消费决策。同时,为商家提供一站式的营销服务,帮助餐饮商户沉淀口碑、获取用户、增加复购等,进而轻松管理餐厅。

    随着餐饮连锁化加速、行业竞争格局激烈,商户管理宽幅和难度逐步加大,商户的经营要求更加精细,数据管理意识更加迫切。用户历史评论中蕴含着大量用户消费后的反馈,是情感分析的重要组成部分,不仅能够描述消费感受,同时也能反映出就餐环境的好坏。因此,做好情感分析有利于帮助餐饮门店提升服务质量,也能够更好地促进消费体验。

    603bc5587f4dca19377f774bc1b81eac.png

    图2 评论示例:(a) 菜品评价,(b) 服务评价,(c) 食安评价

    UGC评价分析,主要是从评论文本中挖掘出菜品、服务、食品安全(简称食安)等方面相关信息,获取用户在各个维度的细粒度情感,细致刻画商家的服务现状,如上图2所示。对于餐饮商户,菜品、服务、食安评价分析问题可以拆解如下:

    1. 菜品评价,主要包括用户评论中的菜品识别、评价属性提取、菜品观点提取、观点情感分类;

    2. 服务评价,主要包括用户评论中评价属性提取、服务方面观点提取、观点情感分类;

    3. 食安评价,主要包括用户评论中评价属性提取、食安方面观点提取、观点情感分类。

    其中问题2和3是典型的三元组抽取任务,即识别服务或食安方面的(属性,观点,情感)。对于问题1,在服务、食安评价问题的基础上,菜品评价需要识别评论中提及的菜品,相比业界四元组(属性,观点,属性类别,情感)[6]抽取任务,到餐场景下主要为 (菜品,属性,观点,情感)四元组的识别。

    2.2 技术调研

    在美团内部,我们针对UGC评价分析问题,调研了相关工作成果,主要为基于MT-BERT预训练模型开发了多任务模型,试图解决情感分析中的ACSA (Aspect-Category Setiment Analysis) 问题以及(属性,观点,情感)三元组抽取问题,并实现了句子粒度的情感分类工具开发,同时开源了基于真实场景的中文属性级情感分析数据集ASAP[7-9]。但对于美团到餐业务来说,我们需要基于具体场景提出针对性的解决方案,如四元组抽取任务,不能直接复用其他团队的相关技术和工具,因此有必要建设服务于到餐业务场景的细粒度情感分析技术。

    在业界,我们也调研了行业其他团队如腾讯、阿里在细粒度情感分析方面的相关研究。2019年腾讯AI Lab和阿里达摩院合作[3],提出了基于两个堆叠的LSTM和三个组件 (边界引导、情感一致性和意见增强)的模型,将“BIOES”标注体系与情感正向 (Positive)、中性 (Neutral)、负向 (Negative) 结合形成统一标签,可以同时识别属性和情感。同年,阿里达摩院提出了BERT+E2E-ABSA模型结构,进一步解决属性和情感的联合抽取问题[10],同时提出(属性,观点,情感)[2]三元组抽取任务,并给出了两阶段解决框架,首先分别识别出属性(情感融合为统一标签)和观点,然后判断属性-观点是否配对。

    自此,业界后续研究开始向三元组联合抽取展开[11-14]。2021年2月,华为云[6]提出(属性,观点,属性类别,情感)四元组抽取多任务模型,其中一个任务识别属性和观点,另一个任务识别属性类别和情感。2021年4月,腾讯[15]引入Aspect-Sentiment-Opinion Triplet Extraction (ASOTE)任务,提出了一个位置感知的BERT三阶段模型,解决了(属性,观点,情感)三元组抽取问题。

    4896dfde0d3b0cc35ac4c5fe6eae05b0.png

    从学术界来看,更关注于如何更好地进行实体抽取、情感分类以及多任务的联合抽取,可能会忽略工业界落地更关注的计算时效性 (如多维度标注与情感维度整合,增加计算、存储资源消耗,在有限资源下时长延迟)、效果准确性 (如任务模块端到端开发,忽略业务的个性化,直接复用导致准确性降低)等方面要求,导致相关技术方法并不能直接应用于业务场景,需要进一步开发完善才能实现业务的落地。

    如上表所示,针对以上调研,我们借鉴了美团搜索与NLP部在三元组细粒度情感分析方面的经验,拆解到餐四元组抽取问题,并结合学界最先进的阅读理解、注意力机制等方面的实体抽取、情感分类经验,设计开发了应用于到餐业务的细粒度情感分析解决方案。

    2.3 技术目标

    如上文所述,菜品评价主要关注菜品、评价属性、菜品观点和观点情感,而服务、食安评价问题,主要关注服务或食安方面的评价属性、观点和情感。就细粒度情感分析任务而言,可以看出,前一个问题涉及四元组信息,而后两个问题仅涉及三元组信息。

    假设给定一个长度为的句子,令和,表示句子中标注的菜品实体、评价属性、观点和情感极性,其中情感包括 {正向,中性,负向,未提及}。表示句子中标注的服务或食安方面的评价属性、观点和情感。

    对于菜品评价,训练集为,似然函数为:

    进一步,对数似然函数为:

    其中,超参数。由公式可推测,四元组细粒度情感分析问题可以拆解为:给定文本的菜品实体抽取、描述菜品的评价属性抽取、评价属性对应的观点抽取以及情感分类。

    对于服务、食安评价,训练集为,似然函数为:

    进一步,对数似然函数为:

    其中,超参数。由公式可推测,三元组问题可以拆解为:给定文本的服务或食安属性抽取、评价属性对应的观点抽取以及情感分类。

    特别地,公式和最后一项成立的原因是给定属性条件下,与是条件独立的,即:

    目标是最大化对数似然函数。总而言之,基于联合概率分布拆解,能够将复杂问题拆分为多个简单问题建模。基于以上分析,建立菜品、服务、食安维度等细粒度情感分析模型。算法的目标就是通过菜品评价、服务评价以及食安评价的建模,从UGC文本中挖掘用户评论信息,如用户消费偏好、用户就餐环境以及场景反馈等。值得一提的是这里提到的四元组和三元组,不仅仅解决以上场景的问题,而是具有更强的泛化性,对于类似场景的细粒度情感分析也同样适用。

    在细粒度情感分析中,训练、测试数据主要来源于UGC标注数据。其中,假设UGC文本间标注是独立的,则任意取一定数据的UGC文本进行测试,其余标注为训练样本,进行模型训练。技术评估指标是任务的准确率、召回率以及多类别平均F1值。此外,业务层面主要依赖于文本抽取标签的Badcase率反映算法的准确性。

    2.4 主要挑战

    由于三元组问题可以看作是四元组问题的子问题,不失一般性,下文将重点阐述四元组相关技术挑战。

    b7ca3defea5e6a167c9f3e093e369bae.png

    图3 到餐细粒度情感分析中的UGC示例

    如图3的示例所示,提取的四元组为“鲜虾馅饺子-口味-特别好-正向”和“鲜虾馅饺子-(?)-有点贵-负向”。在到餐场景中,UGC文本细粒度情感分析较复杂,主要存在挑战:给定一条评论,可能包含多个四元组且存在实体间一对多或者多对一的关系,以及可能存在缺失情况;如何准确识别用户所有细粒度评论情感倾向?对于以上挑战,可以拆解为如下问题。

    问题1:如何准确识别可能存在的多个四元组?

    对于一条存在多个四元组的评论,通过序列标注,直接同时识别多个四元组是不现实的。为此,我们在标注数据预处理时,将评论中四元组分别抽取,各自组成一条独立样本,进行训练、预测。此外,如上文所述,四元组的实体间存在一对多或者多对一的关系,而且实体间的间距通常不固定,存在远程抽取的可能。针对这一问题,一个较有效的实践经验是进行分层分块抽取,即pipeline识别。基于pipeline的方法,如公式所示,则需要分别处理:给定文本,菜品实体抽取 ()、描述菜品的评价属性抽取 ()、评价属性对应的观点抽取 () 以及情感分类 ()。

    定义交叉熵损失函数为:

    其中,表示每个模块真实label分布,表示分类类别数。

    那么,当前问题的损失函数集合为:

    其中,目标,将分别针对每一个任务进行逐个最小化。

    问题2:如何解决aspect有缺失的四元组识别?

    如图3所示,真实场景可能存在四元组的评价属性缺失。针对这类问题,我们将问题拆解为三个任务:给定评价文本,菜品实体抽取 ()、评价观点抽取 () 以及观点和情感的分类 () ,其中是隐藏评价属性的类别。则损失函数为:

    同上,在pipeline方法下,目标函数最下化将分别对每一个任务进行最小化。值得一提,如果aspect不存在缺失,这个解决思路实际应用仍然可行。

    问题3:如何同时对四元组抽取、识别,减少pipeline方法的错误累计影响?

    减少pipeline方法的错误累计影响,典型的解决方案是提出同时处理信息抽取和分类任务,即多任务学习。传统的方法是直接尝试多任务学习的思路,但过程中忽略了实体间依赖的关系,甚至远程关联关系[2]。当前也在尝试直接将四元组转化成多任务学习过程,将来期望通过建立实体间pair或triplet关系,进行联合抽取、识别。

    综上,对于问题1问题2,我们会按照pipeline识别的结果,再利用策略进行抽取结果的优化;对于问题3,整合实体、关系及分类任务,进行联合学习,将有助于减少pipeline方法的错误累计影响。

    三、细粒度情感分析实践

    3.1 Pipeline方法

    如上文2.3的问题2所述,我们采用pipeline的方法,将四元组抽取问题拆解为三个任务,分为实体识别、观点抽取、观点类别和情感分类,如下图4所示:

    f6f3bfa4bab568e5a59f1c946e0c4a38.png
    图4 三阶段模型

    3.1.1 实体识别

    自2018年BERT[16]出现以后,NER模型由传统的LSTM+CRF替换为BERT+CRF(或者BERT+LSTM+CRF),一度是业界NER任务的SOTA模型,近两年来NER任务主要从以下两个方面进行改进:

    1. 加入额外的特征[17-19]:如字特征、词特征、词性特征、句法特征、知识图谱表征;

    2. 转换任务形式[20-21]:将NER任务转化为问答 (QA, Question Answering)任务或者机器翻译任务。

    考虑到引入额外特征需要构建人工词典,以及转化问答任务形式依赖于人工模板,成本较高,因此采用BERT+CRF模型。

    学习率调整,模型策略调优。在实验过程中,我们发现BERT+CRF相比简单的BERT+Softmax效果提升甚微,究其原因,由于预训练模型经过微调之后可以学习到具有明显区分度的特征,导致增加CRF层对实体识别结果几乎没有影响。然而,一个好的CRF转移矩阵显然对预测是有帮助的,可以为最后预测的标签添加约束来保证预测结果的合理性。进一步实验后发现,通过调整BERT和CRF层的学习率,如BERT使用较小的学习率而CRF层使用100倍于BERT的学习率 (即,如图5所示),最终BERT+CRF的效果相比BERT+Softmax有了较明显的提升。此外,在传统NER模型LSTM+CRF基础上,我们也实验了BERT+LSTM+CRF,但效果居然有些许下降,而且预测时间也增加了,因此最终没有引入LSTM层。

    3f535c868e23e8d7a0392fa49c218ca2.png

    图5 BERT+CRF(BIO标记)

    3.1.2 观点抽取

    观点抽取任务在业界也称为Target-oriented Opinion Words Extraction(TOWE),旨在从评论句子中抽取出给定目标对应的观点词。观点抽取也可以看作是一种NER任务,但若评论涉及多个实体和观点,如何准确抽取所有“实体-观点”关系是一个技术挑战。借鉴MRC(Machine Reading Comprehension)任务的思想,通过构建合理的Query引入先验知识,辅助观点抽取。

    QA任务形式,观点抽取建模。如图6所示,模型整体由预训练层和输出层两部分组成。输出层我们使用了常规QA任务输出,包括开始标签(Start Label)和结束标签(End Label),但需要人工设计Quey。参考论文[20]经验,以图3为例,实验发现Query设计为“找出鲜虾馅饺子口味、口感、分量、食材、卖相、价格、卫生以及整体评价”效果最好,可能融入了观点描述信息,更加有助于观点抽取。考虑到QA任务天然有类别不平衡的问题,因此损失函数引入针对类别不平衡的Focal Loss,用于提升观点抽取模型的效果。由于观点抽取也可以看作是NER任务,故我们尝试将输出层设计为CRF层,但实验效果并不理想,可能由于观点语句长度不一且比较个性化,影响模型识别。另一方面,考虑到Google中文预训练模型BERT是以字粒度为切分,没有考虑到传统NLP中的中文分词,在预训练层我们将BERT模型替换为哈工大开源的中文预训练模型,如BERT-wwm-ext、RoBERTa-wwm等,最终模型效果取得进一步提升。

    d030ce5d04e7d5f45f3415563a0ad36f.png
    图6 BERT+MRC(通过开始标签和结束标签,抽取出观点词:特别好、有点贵)

    3.1.3 观点类别和情感分类

    观点类别和情感分类可以看作两个分类任务,其中菜品评价四元组任务的观点类别包含口感、口味、分量、食材、卖相、价格、卫生、菜品整体等8个标签,而情感包含正向、中性、负向、未提及等4个标签,都是业务预定义好的。考虑到用户评论提及某个菜品的观点可能涉及多个维度,若每个维度单独建模,需要构建多个模型,较复杂且维护困难。结合ATAE-LSTM[22]和NLP中心[7-9]情感分析的经验和到餐业务特点,模型整体结构设计为多任务多分类学习框架。

    多任务多分类模型,联合建模观点类别和情感。如图7所示,模型整体分为两个部分,分别为BERT共享层和Attention独享层,其中BERT共享层学习观点Embedding表示,Attention独享层学习观点在各个观点类别的情感倾向。考虑到评论中各部分会聚焦不同的观点维度,通过引入Attention结构,使得模型更加关注特定维度相关的文本信息,进而提升整体效果。

    5bbe24833d331009ae1d643b74f09aa3.png

    图7 BERT+Attention

    3.2 联合学习

    pipeline方法的优点是将目标问题拆分为多个子模块问题,对子模块分别优化,通过后处理能在一定程度上解决实体间多对多关系的问题。然而,pipeline方法也会存在一些致命缺陷,主要包括:

    1. 误差传播,实体识别模块的错误会影响到观点抽取模型的性能;

    2. 忽略了任务之间的关联性,如实体和观点往往一起出现,如果可以知道观点,那么也能判断出所描述的实体,而pipeline方法显然不能利用这些信息;

    3. 信息冗余,由于需要对识别出来的实体都要进行观点抽取,以及提取出的观点都要进行分类,产生一些无效的匹配对,提升错误率。

    参考业界情感分析联合学习现状,主要为(属性,观点,情感)三元组联合抽取。结合到餐业务场景特点(如挑战2.3的问题2所述),整体设计为两阶段模型,第一阶段为对菜品实体、观点和情感联合训练,第二阶段为对观点进行分类,进而得到四元组识别的结果。

    3.2.1 三元组联合抽取

    目前在学术界,三元组(属性,观点,情感)联合抽取的方法主要包括序列标注方法[11]、QA方法[5,12]、生成式方法[13,14]等。结合菜品分析场景和pipeline方法中观点抽取模块的经验,我们采取了QA式的联合抽取方法,主要参考模型Dual-MRC[5]

    Dual-MRC模型的改进,三元组联合抽取建模。在模型设计过程中,由于Dual-MRC模型分类情感倾向是对某个属性的整体评价,即一个属性只对应一个情感。然而,在到餐业务场景中,新增了菜品实体的识别,同时UGC评论中存在对同一个菜品实体包含不同观点及情感倾向。如图3所示,“味道特别好”表达了对“鲜虾饺子”正向情感,而“有点贵”显然表达了负面情感。因此,我们对Dual-MRC模型进行了改造,将观点和情感标签整合成统一标签。如图8所示,到餐Dual-MRC整体结构基于双塔BERT模型,通过引入两个Query,左边负责抽取菜品实体,右边负责抽取观点和观点情感,从而实现三元组联合抽取。

    154244ef39e0774970f248b62fd282dd.png

    图8 结合到餐业务特点改进的Dual-MRC模型

    模型结构说明:

    1. 整体是由两个部分组成,左边BERT抽取菜品实体,右边BERT抽取观点和观点情感,将观点和情感构成统一标签B-{POS,NEU,NEG},I-{POS,NEU,NEG}以及O,其中未提及情感被整合到O标签中;

    2. 参考pipeline方法经验,构建两个Quey,左边Quey1构建为“找出评论中的菜品”,右边Quey2构建为“找出鲜虾馅饺子口味、口感、分量、食材、卖相、价格、卫生以及整体评价”;

    3. 训练阶段,对于左边标注的每个菜品实体,都需要重复右边流程,两边模型共享参数进行训练;预测阶段,由于实体不可知,采用pipeline方式,首先左边部分抽取出所有的菜品实体,然后对于每个实体输入到右边部分,抽取出观点和观点情感。

    在此基础上,我们也探索了四元组联合抽取的可能,具体操作为对右边Query2进行改造,如“找出鲜虾馅饺子口味评价”,对于每个观点类别都需要构建Query进行预测,从而实现四元组联合抽取。但考虑计算量级较大且耗时较长,最终将观点类别另做预测。

    3.2.2 观点类别分类

    d0c55aa8f3604363d5471f2ab615ba81.png

    图9 BERT+P-tuning

    观点类别分类,显然是一个文本分类问题,通常做法是基于BERT分类,取[CLS]位置的Embedding,接一个全连接层和Softmax层即可。在到餐业务场景中,主要面临少样本问题,参考业界NLP少样本解决方法,以基于对比学习的R-drop[23]方法和基于Prompt[24]的第四范式为代表。我们在BERT模型结构基础上,分别实验了Prompt模板方法(如图9所示)和R-drop数据增强 (如图10所示)。其中,Prompt模板主要借鉴P-tuning[25]的思想,采取自动化构建模板的方式,基于MLM任务解决问题。

    6a107d016c0e37de5c3869e6a23de383.png

    图10 BERT+R-drop

    图9中[u1]~[u6]代表BERT词表里边的[unused1]~[unused6],即使用未出现的Token构建模板,Token数目为超参数。实验结果发现,基于BERT的预训练模型,结合P-tuning或R-drop结构,分类效果都能得到一定的提升,且P-tuning的效果略优于R-drop,后续还会持续探索少样本解决方法。

    四、在到餐业务中的应用

    4.1 模型效果对比

    利用到餐的UGC标注数据,对于四元组识别进行了整体效果测评,最终以整体四元组的精确率和召回率计算F1值作为性能评估指标。如图11所示,采用经典的BERT+CRF模型进行实体抽取,在到餐评论标注数据仅达到0.61的F1,经过学习率等调参 (Baseline Tuning)优化之后,F1值提升2.61%。如上文所述,在观点抽取模块中,将序列标注问题转化成问答(QA)问题后,采用BERT+MRC模型,F1显著提升至0.64,提升了5.9%,表明问题转化获得较大收益。此外,采用哈工大中文预训练BERT仍取得一定幅度的提升,F1提升至0.65。注意,图11中的模型迭代表示四元组问题中重点优化模块的模型,最终评测四元组整体效果来进行对比分析。

    f34bd0dd47f110423aabed626c8066a3.png

    图11 在到餐场景细粒度情感分析效果演进

    4.2 业务应用场景

    11b9b3f133aec18c0d83b3ff49e857b7.png

    图12 到餐场景细粒度情感分析的应用:(a) 品牌仪表盘,(b) 到餐商户菜品信息优化,(c) 开店宝评价管理

    品牌仪表盘

    品牌仪表盘作为旗舰店能力的重要环节,提供品牌层面的数据服务,助力生意增长。产品定位为头部餐饮品牌的数据中心,具备基础的数据披露能力,通过量化业务效果,指导商户经营决策。由于大客在平台沉淀了丰富的线上信息(大量的交易/流量/评论数据),可挖掘分析空间较大。应用细粒度情感分析技术从评论数据中挖掘菜品维度、服务维度、食品安全维度相关信息,量化商户经营表现,指导经营动作。关于菜品的用户反馈监控,品牌商户更关注菜品、口味、口感等维度的用户反馈。如上文所述模型迭代后,菜品情感、口味情感、口感情感识别准确率都得到一定的提升。

    到餐商户菜品信息优化

    随着到餐加强了菜品信息建设,主要包括在生产层面上,整合了商户各来源菜品数据,建设了商户菜品中心,并优化了C端菜品UGC上传功能,有效补充UGC菜品生产;在消费层面上,整合了商户通菜品和网友推荐菜菜品,并基于菜品信息的完善,优化了C端菜品信息的内容聚合及展示消费。同时配合到餐业务,持续通过评价信息生产建设赋能,更多的引导用户从评价生产层面进行商户菜品的描述介绍。主要针对到餐商户菜品关联的评价信息,进行信息联动与展示层面的优化,相比迭代前,有评价菜品覆盖率得到较大的提升。

    开店宝评价管理

    商家通过提供餐饮服务来获取用户,用户消费后通过评价给商家以反馈,促使商家去不断优化,提供更好的服务,从而获取更多的用户,达到正向循环。评价分析的意义在于建立起评价和餐饮服务之间的通道,实现评价对服务的正向促进循环。通过分析评价内容,帮助商家发现餐厅在菜品、服务、环境等方面,做得好和做得不好的地方,进而针对性的改善。相比迭代前,菜品、服务、环境维度关联评论数得到很大的提升。

    五、未来展望

    经过近一年的建设,情感分析相关能力不但成功应用到到餐商户经营、供应链等业务,而且优化了多源菜品信息,辅助品牌商户进行用户反馈监控,提升商户服务能力。在联合学习探索上,目前主要将四元组问题转化为两阶段模型,如图11所示,F1值有所下降,仅达到0.63。究其原因,可能是在三元组联合抽取模型中,忽略了实体间的关系,尤其长程关系 (如上文2.4的问题3所述),导致性能不足预期。接下来,将进一步提升情感分析四元组抽取能力,挖掘UGC中用户的核心需求以及重要反馈。在技术方面,将持续进行模型迭代演进,主要涉及:

    1. 持续优化现有模型,保证质量的同时也要提升效率

      实验结果还有很大的改进空间,需要进一步探索模型优化方法,如优化预训练模型,使用MT-BERT等,以及在联合抽取中进一步引入实体间关系,来提升四元组抽取的性能。

    2. 深度探索情感分析领域,建设四元组联合抽取模型

      主要通过改造Query实现四元组抽取,但是计算量级较大,需要探索模型结构优化,减少冗余的计算量,使其满足四元组联合抽取。

    3. 建设细粒度情感分析通用框架

      到餐场景涉及多个情感分析场景,需要建设灵活方便的通用框架,有助于快速支持业务,以及减少资源消耗。

    未来,团队将持续优化应用技术,解决到餐业务场景中的情感分析需求。细粒度情感分析是具有挑战和前景的任务,到店餐饮算法团队将和各位读者共同持续探索和研究。

    六、参考文献

    [1] Liu, B. 2012. Sentiment analysis and opinion mining. Synthesis lectures on human language technologies 5(1):1–167.

    [2] Peng, H. Xu, L. Bing, L. Huang, F. Lu, W. and Si, L.2020. Knowing What, How and Why: A Near Complete Solution for Aspect-Based Sentiment Analysis. In AAAI, 8600–8607.

    [3] Li, X. Bing, L. Li, P. and Lam, W. 2019a. A unified model for opinion target extraction and target sentiment prediction. In AAAI, 6714–6721.

    [4] Zhao, H. Huang, L. Zhang, R. Lu, Q. and Xue, H. 2020. SpanMlt: A Span-based Multi-Task Learning Framework for Pair-wise Aspect and Opinion Terms Extraction. In ACL, 3239–3248.

    [5] Y. Mao, Y. Shen, C. Yu, and L. Cai. 2021. A joint training dual-mrc framework for aspect based sentiment analysis. arXiv preprint arXiv:2101.00816.

    [6] 华为云细粒度文本情感分析及应用.

    [7] 杨扬、佳昊等. 美团BERT的探索和实践.

    [8] 任磊,步佳昊等. 情感分析技术在美团的探索与应用.

    [9] Bu J, Ren L, Zheng S, et al. ASAP: A Chinese Review Dataset Towards Aspect Category Sentiment Analysis and Rating Prediction. In Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. 2021.

    [10] Xin Li, Lidong Bing, Wenxuan Zhang, and Wai Lam. Exploiting BERT for end-to-end aspect-based sentiment analysis. In W-NUT@EMNLP, 2019.

    [11] Xu, L. Li, H. Lu, W. and Bing, L. 2020. Position-Aware Tagging for Aspect Sentiment Triplet Extraction. In EMNLP, 2339–2349.

    [12] Chen, S. Wang, Y. Liu, J. and Wang, Y. 2021a. Bidirectional Machine Reading Comprehension for Aspect Sentiment Triplet Extraction. In AAAI.

    [13] Yan, H. Dai, J. Qiu, X. Zhang, Z. et al. 2021. A Unified Generative Framework for Aspect-Based Sentiment Analysis. arXiv preprint arXiv:2106.04300.

    [14] Wenxuan Zhang, Xin Li, Yang Deng, Lidong Bing, and Wai Lam. 2021. Towards Generative Aspect-Based Sentiment Analysis. In ACL/IJCNLP 2021, 504–510.

    [15] Li Yuncong, Fang Wang, Zhang Wenjun, Sheng-hua Zhong, Cunxiang Yin, & Yancheng He. 2021. A More Fine-Grained Aspect-Sentiment-Opinion Triplet Extraction Task. arXiv: Computation and Language.

    [16] Devlin, J. Chang, M.-W. Lee, K. and Toutanova, K. 2019. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. In NAACL-HLT, 4171–4186.

    [17] Yue Zhang and Jie Yang. 2018. Chinese ner using lattice lstm. arXiv preprint arXiv:1805.02023.

    [18] Li, X. Yan, H. Qiu, X. and Huang, X. 2020. FLAT: Chinese NER Using Flat-Lattice Transformer. arXiv preprint arXiv:2004.11795 .

    [19] Tareq Al-Moslmi, Marc Gallofré Ocaña, Andreas L. Opdahl, and Csaba Veres. 2020. Named entity extraction for knowledge graphs: A literature overview. IEEE Access 8 (2020), 32862– 32881.

    [20] X. Li, J. Feng, Y. Meng, Q. Han, F. Wu, and J. Li. 2020. A unified MRC framework for named entity recognition. In ACL, 5849–5859.

    [21] Jana Strakova, Milan Straka, and Jan Hajic. 2019. Neural architectures for nested ner through linearization. In Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics, 5326–5331.

    [22] Yequan Wang, Minlie Huang, Li Zhao, and Xiaoyan Zhu. 2016. Attention-based lstm for aspect-level sentiment classification. In Proceedings of the conference on empirical methods in natural language processing, 606–615.

    [23] Liang X, Wu L, Li J, et al. R-Drop: Regularized Dropout for Neural Networks[J]. arXiv preprint arXiv:2106.14448, 2021.

    [24] P. Liu, W. Yuan, J. Fu, Z. Jiang, H. Hayashi, and G. Neubig. 2021. Pre-train, prompt, and predict: A systematic survey of prompting methods in natural language processing. arXiv preprint arXiv:2107.13586.

    [25] X. Liu, Y. Zheng, Z. Du, M. Ding, Y. Qian, Z. Yang, and J. Tang. 2021. Gpt understands, too. arXiv preprint arXiv:2103.10385.

    七、术语解释

    3d9346fcee106e2ee46a31100047127e.png

    八、作者介绍

    储哲、王璐、润宇、马宁、建林、张琨、刘强,均来自美团到店事业群/平台技术部。


    投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

    方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

    0417ef13ef6e16f7f050dab3c75a4c22.png

    记得备注呦

    整理不易,还望给个在看!
    展开全文
  • 每天给你送来NLP技术干货!作者|周俊贤整理|NewBeeNLP最近在调研细粒度情感分析的论文,主要对一些深度学习方法进行调研,看论文的同时记录下自己的一些想法。首先,何为细...

    每天给你送来NLP技术干货!


    作者 | 周俊贤   

    整理 | NewBeeNLP

    最近在调研细粒度情感分析的论文,主要对一些深度学习方法进行调研,看论文的同时记录下自己的一些想法。

    首先,何为细粒度的情感分析?如下图,淘宝APP上某商品的买家评论。

    90133a0818995ab8bd91edf155746b71.png

    买家除了对这个商品进行整体打分外,还会针对一些商品aspect(属性)进行文字评价,例如某个评论『这条裤子的材质很好,但是拉链太拉跨了』。从find-grained(细粒度)评价角度来说,买家对商品的“材质”这一aspect的评价为Positive,对“拉链”这一aspect评价为Negative,但aspect和对应的情感是隐式地体现在评价中,需要我们利用模型抽取出来

    上面提到的细粒度情感分析,英文全称叫「Aspect Based Sentiment Analysis,简称ABSA」

    对细粒度的aspect进行分析,一方面,有助买的人从自己看重的特征方面决定是否购买;另一方面,让厂家能对自身的产品有更全面的认知,从而进行针对性的改进。

    End-to-End ABSA任务

    论文:《A Unified Model for Opinion Target Extraction and Target Sentiment Prediction》[1]

    ABSA主要有两个模式

    • Pipeline:两阶段建模,先抽取文本的aspect,再判断相应的情感倾向,即一个抽取任务和一个分类任务。

    • Joint:用同一个模型同时进行抽取aspect和判断情感倾向,如下图的Joint行,用一个模型完成aspect属性抽取任务和情感抽取任务。

    个人理解,大部分所谓的「joint方法(联合建模)」 其实就是用一个模型同时完成多个任务,「解节码阶段还是Pipeline的形式」

    f499707fcaf3685e30df1b6598948809.png

    论文里提出一个「Unified」方案,如上图的Unified行,通过巧妙的标签设计,同时把aspect属性抽取和情感倾向放到一个序列标注任务中。

    模型的架构如下图所示:

    d5670fac766ac7b4e3c87882a2c66bca.png

    模型由两层双向的LSTM组成,有三个主要思想:

    Target Boundary Guided TBSA

    1. 第一层的LSTM输出要做一个辅助任务,这个任务是捕捉aspect的边界信息,如上面提到的例子,这个辅助任务的label就为 【(The,O)、(AMD,B)、(Turin,I)、(Processor,E)、(seems,O)、(to,O)、(always,O)、(perform,O)、(much,O)、(better,O)、(than,O)、(Intel,S)】,标签只有 【、、、、】 五个。通过这个辅助训练,让底层的LSTM学习到边界信息;

    2. 同时,第一层的输出经过softmax后也会加入到第二层的输出里面一起预测最终的token标签,但是第一层的输出经过softmax只有5维,但是最终要预测的标签是13维的,包括 【B-POS, I-POS, E-POS, S-POS, B-NEG, I-NEG, E-NEG, S-NEG, B-NEU, I-NEU, E-NEU, S-NEU、O】共13个,因此通过一个转移矩阵 来进行映射,这个矩阵维度为 ,而且是一个「常数矩阵」,因为假如第一层预测出的标签是 ,则它映射到对应的标签只能是 、、 这三种。

    3. 第一层的输出经过softmax和转移后,得到上图左边的 ,和第二层的t输出 进行相加,但问题是怎么分配它们的权重呢?论文如提出一个小技巧,如计算得到的 是很平滑的话,证明第一层捕捉到的边界信息也不明确,这时就降低 的权重,假如是一个熵 值很低的,表示很明确的,这时就增大它的权重,这就是SG组件里干的内容,具体的可以看论文的做法。

    Maintaining Sentiment Consistency

    第二层的LSTM输出 ,通过一个门控机制,把上一个词的特征考虑进来,这就是SC组件干的事情。目的避免出现上一时刻是 ,这一时刻输出变成 的情况。不过个人感觉,这种也可以通过CRF来进行控制的吧。

    Auxiliary Target Word Detection

    论文里,提到”opinion targets are always collocated with opinion iword“,具体的上图的例子,”AMD Turin Processor”就是opinion target,“better”就为opinon word。

    只要某个word的上下文窗口中出现了opinion word,我们就把这word定义为target word。根据这个定义,组织训练集时,可以得到每个word是否是target word,这样第一层LSTM输出也有一个辅助任务,做判断当前word是否是target word的二分类任务,这就是OE组件做的事情。

    Aspect Sentiment Triplet Extraction (ASTE) 任务

    论文:《Knowing What, How and Why: A Near Complete Solution for Aspect-based Sentiment Analysis》[2]

    a998dd85081eea82b1ee00d50eff2b6f.png

    上面提的方法,通过巧妙的标签设计,提出一种unified方案,用一个序列标注任务,同时搞定aspect extraction和aspect sentiment classification,就是上图的红色框。这篇论文,更进一步,认为添加一个aspect sentiment triplet extraction(ASTE)任务(其实就是比unified方案多一个opinion term extraction的抽取任务以及多一个三元组判断任务),会让训练出来的模型更强大,就是上图的蓝色框。

    假如赋予含义的话,博文里提到

    aspect 给出了带有情感的评论目标,sentiment 给出了对目标的情感极性,opinion term 给出了情感的原因,这三者依次回答了What(对于什么),How(情感怎么样)以及 Why(为什么是这个情感)三个问题,对于评论目标构成更全面的分析。

    具体的,如论文中提到的一个例子,”Waiters are very friendly and the pasta is simply average.“,假如用unified方案,只需要一个序列标注任务得到 【(Waiters,S-POS)、(are,O)、(very,O)、(friendly,O)、(and,O)、(the,O)、(pasta、S-NEG)、(is,O)、(simply,O)、(average,O)】 就搞掂。但假如同时抽取opinion term(即”friendly“和“average”),并且判断(Waiters,Positive,friendly)是匹配关系,(Waiters,Positive,average)不是匹配关系,学习出来的模型效果可能会更佳。

    a6e7e68e7bb51a7d656b1bee221a64b9.png

    具体的模型架构如上图所示,分成了两个Stage,

    Stage one

    第一阶段做两个序列标注(SL) 任务,分别是抽取unified tag 【B-POS, I-POS, E-POS, S-POS, B-NEG, I-NEG,E-NEG, S-NEG, B-NEU, I-NEU, E-NEU, S-NEU,O】 和抽取opinion 【】。

    • 具体的,抽取unified tag由图中Stage one的左侧结构进行标注,与上一篇论文的方法不同的是,还融合了模型右侧图卷积网络(GCN)返回的情感词信息辅助进行输出;

    • 抽取opinion由图中stage one的右侧结构进行预测,把句子丢进一个GCN网络中,再放到双向LSTM中,最后对opinion进行序列抽取;

    • 除此之外,还多了一个Target Guidance(TG)模块,TG模块融合了aspect的边界信息和GCN的输出,做的任务是抽取ipinion term,「其实就是跟模型第一阶段右侧的任务一样的」!作者希望通过这样有监督地训练TG模块,让 和 都能得到收益,具体的,经过训练, 也融合进了opinion的信息, 也融合进了aspect的边界信息。

    Stage two

    将第一阶段抽取的aspect&aspect sentiment、opinion用笛卡尔积枚举所有候选的三元组列表。训练时,文本信息加上aspect与opinion的相对位置信息,训练它们的匹配关系。

    实验的结构这里就不post出来, 自然是比上一篇论文要好的,毕竟上一篇中的是2019 AAAI,这篇中的是2020 AAAI,这篇是前一篇的改造。

    用预训练模型BERT做unified方案

    论文:《Exploiting BERT for End-to-End Aspect-based Sentiment Analysis》[3]

    一篇简单的workshop论文,主要思想是「抛弃一切”花里胡哨“的启发式组件设计」,直接用BERT加具体的任务层(论文里采用了Linear、GRU、SAN、TFM、CRF五种)来做上文提到的unified方案。实验证明,预训练模型就是YYDS。

    具体看下图实验结果,红色框就是上面提到的第一种方法的实验结果,蓝色框就是本论文的实验结果。预训练模型再次打倒一切!

    b7a58057df732abb8f818e33f92553d1.png

    总结

    总体来说,在预训练模型之前,用了很多「启发式」的思想去改造模型,例如认为人在判断的时候,会依据什么角度去想,顺着这个思路,在神经网络的架构中就提出一些相对应的模块跟主任务一起做训练。

    更简单来说,就是各种改造,然后给出一些「合理漂亮的解释」,然后实验效果不错,就可以投会议了。但随着预训练模型的出现,发现预训练模型加简单的任务层,瞬间超过前面所有精心设计的模型架构,让人不禁感叹,预训练模型的威力是如此地强大。

    不过在看这些“复杂”架构的时候,尝试去理解作者的切入点,倒是挺有意思的事情。同时,除了关注模型架构,也要关注「把问题看作什么任务来进行解决」,如上面第一种方法提到的unified方案,就是把细粒度情感分析问题看作一个序列标注任务来进行解决。

    本文参考资料

    [1]

    《A Unified Model for Opinion Target Extraction and Target Sentiment Prediction》: https://ojs.aaai.org/index.php/AAAI/article/view/4643

    [2]

    《Knowing What, How and Why: A Near Complete Solution for Aspect-based Sentiment Analysis》: https://ojs.aaai.org/index.php/AAAI/article/view/6383

    [3]

    《Exploiting BERT for End-to-End Aspect-based Sentiment Analysis》: https://arxiv.org/abs/1910.00883


    投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

    方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

    2fa4fb15d2ba8855319ea678654700e0.png

    记得备注呦

    整理不易,还望给个在看!
    展开全文
  • 细粒度情感分析实战

    千次阅读 2022-04-21 14:29:32
    2细粒度,属性级情感分类 因为在人们进行评论的时候,往往针对某一产品或服务进行多个属性的评论,对每个属性的评论可能也会褒贬不一,因此针对属性级别的情感分析在真实的场景中会更加实用,同时更能给到企业用户或...
  • 在这里是自动实现的中文细粒度情感分析程序,能够表达文字,句子,大部分具体细节。 :robot_face:分词使用斯坦福CoreNLP相关项目: : :laptop_computer:应用现在用在歌词情感分析上,参考项目: : 。
  • 总第482篇2021年 第052篇经典的细粒度情感分析(ABSA,Aspect-based Sentiment Analysis)主要包含三个子任务,分别为属性抽取、观点抽取以及属性-观点...
  • 细粒度情感分析研究综述.pdf
  • 这是一个实时的,百度外卖评论的细粒度情感分析demo。所有网址仅适用于百度外卖店铺。 2,局限与不足 这个GUI应用程序只是展示基于HMM的细粒度分析可以完成什么效果,只是一个演示,还有很多没有完善的地方,需要...
  • 在线评论的细粒度情感分析对于深刻理解商家和用户、挖掘用户情感等方面有至关重要的价值,并且在互联网行业有极其广泛的应用,主要用于个性化推荐、智能搜索、产品反馈、业务安全等。本次比赛我们提供了一个高质量的...
  • 基于词典的细粒度情感分析

    千次阅读 2022-04-16 20:57:24
    1 细粒度情感分析 传统的情感分析大多是针对句子级的,即某条评论或某句话为积极或消极的概率。而往往一句话中包含着多个描述点,即方面级的述评,这时用一个模糊的概率或数字去评价整段文字或整句话势必是不准确和...
  • 人工智能-项目实践-情感分析-基于LSTM网络与自注意力机制对中文评论进行细粒度情感分析 题目介绍 该题目为《细粒度用户评论情感分析》,来源于“全球AI挑战赛”。https://challenger.ai/competition/fsauor2018 ...
  • 中国科技论文在线在线评论细粒度情感分析蓝天广,万岩**(北京邮电大学经济管理学院,北京100876 )5 摘要:在线评充满了大量决策信息使得消费者与制造商受益。然而,随着商品属性的多样化,只对评论整体分类的传统的...
  • AI Challenger 2018 细粒度用户评论情感分析数据集 训练集: sentiment_analysis_trainingset.csv 为训练集数据文件,共105000条评论数据 sentiment_analysis_trainingset_annotations.docx 为数据标注说明文件 ...
  • 自然语言处理前沿研究之情感分析 情感分析综述   文本情感分析:又称意见挖掘、倾向性分析等。...  从分析的粒度上,情感分析可以分为文章级(document level)、句子级(sentence level)和单词级(word l
  • Code for Fine-grained Sentiment Analysis of User Reviews of AI Challenger 2018
  • 隐式情感 针对第一个问题,我们在细粒度情感分析数据集 SemEval2014-Restaurant 中找到如下例子: 该评论中没有对于方面词“侍者”(waiter)的主观评价,但是对其行为的客观描述“将水泼在我的手上后走开了”,清楚...
  • 基于python的细粒度情感分析设计与实现
  • 共包含6大类20个细粒度要素的情感倾向.数据集分为训练、验证、测试A与测试B四部分。数据集中的评价对象按照粒度不同划分为两个层次,层次一为粗粒度的评价对象,例如评论文本中涉及的服务、位置等要素;层次二为...
  • 情感分析旨在让机器具备像人一样的情感理解和表达能力。 应用案例:国美评论智能分析平台 SKEP:情感知识增强的预训练模型,传统预训练主要适用事实型文本,倾向于捕捉事实性语义,情感分析更关注文本中蕴含的情感和...
  • 1. 细粒度情感分析(ABSA)案例背景 1.1 任务介绍 1.2 数据基本介绍 1.3 如何评估ABSA的结果 2. 任务一:Aspect Term Extraction 具体实现与代码 2.1 这个任务怎么做? 2.2 序列特征的构造 3. 任务二:Aspect...
  • 使用BERT的细粒度情感分类 此存储库包含用于获取的结果的代码。 用法 可以使用run.py运行各种配置的实验。 首先,安装python软件包(最好在一个干净的virtualenv中): pip install -r requirements.txt Usage: ...
  • 从一个评论句子中找出,用户评论了哪些方向、观点是什么、情感急性是什么。看起来是一个观点抽取+多分类的问题。 解决思路 解决这个问题主要有两大思路:1.联合模型一步解决 2.任务分成两步做 联合模型解决 好处...
  • 基于机器学习算法的用户评论的细粒度情感分析,基于决策树算法实现主题的分类和情感极性的分类,并利用 flask + bootstrap + jquery 搭建可视化交互 web 系统。 汽车行业用户观点主题及情感识别,对情感分析的情感...
  • 引言情感分析是文本分类的一种,主要方法是提取文本的表示特征,并基于这些特征进行分类。情感分析根据研究对象的粒度不同可分为文本级、句子级、对象级等,分别对相应单位的文本进行情感倾向分析。其...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,379
精华内容 951
关键字:

细粒度情感分析

友情链接: 四平方和.rar