精华内容
下载资源
问答
  • nlp情感分析
    2021-09-15 21:23:39

    一、情感分析Baseline:

    IMDb数据集包含50000条电影评论,每条评论都标记为正面或负面评论

    数据集下载:http://ai.stanford.edu/~amaas/data/sentiment/

    本次主要学习情感分析简单模型,选择RNN模型做Baseline。

    RNN每次的输入为一个单词序列:X={x1,...,xT}X={x1,...,xT},并为每个输入单词输出一个隐向量:h。

    二、对IMDB电影评论进行情感分析

    TorchText 的主要概念之一是Field,这些定义了应如何处理数据。 我们的数据集为带标签数据集,即数据由评论的原始字符串和情感组成,“pos”表示积极情绪,“neg”表示消极情绪。

    数据预处理

    import torch
    from torchtext.legacy import data
    # 设置随机种子数,该数可以保证随机数是可重复的
    SEED = 1234
    # 设置种子
    torch.manual_seed(SEED)
    torch.backends.deterministic = True
    # 读取数据和标签
    TEXT = data.Field(tokenize = 'spacy', tokenizer_language = 'en_core_web_sm')
    LABEL = data.LabelField(dtype = torch.float)
    
    from torchtext.legacy import datasets
    # 以下代码自动下载IMDb数据集并将其拆分为规范的训练集和测击集,
    # 作为torchtext.datasets对象。它使用我们之前定义的Frields处理数据。IMDb数据集包含50000条电影评论,每条评论都标记为正面或负面评论。
    train_data, test_data = datasets.IMDB.splits(TEXT, LABEL)
    # 查看我们的训练集和测试集大小
    print(f'Number of training examples: {len(train_data)}')
    print(f'Number of testing examples: {len(test_data)}')
    # Number of training examples: 25000
    # Number of testing examples: 25000
    # 查看一下示例数据
    print(vars(train_data.examples[0]))
    # {'text': ['elvira', 'mistress', 'of', 'the', 'dark', 'is', 'one', 'of', 'my', 'fav', 'movies', ',', 'it', 'has', 'every', 'thing', 'you', 'would', 'want', 'in', 'a', 'film', ',', 'like', 'great', 'one', 'liners', ',', 'sexy', 'star', 'and', 'a', 'Outrageous', 'story', '!', 'if', 'you', 'have', 'not', 'seen', 'it', ',', 'you', 'are', 'missing', 'out', 'on', 'one', 'of', 'the', 'greatest', 'films', 'made', '.', 'i', 'ca', "n't", 'wait', 'till', 'her', 'new', 'movie', 'comes', 'out', '!'], 'label': 'pos'}
    

    构建模型

    import torch.nn as nn

    训练模型

    SGD随机梯度下降计算

    更多相关内容
  • 本课程首先介绍了传统的情感分类模型,将传统的情感分类模型与深度学习情感分类模型对比并阐述了各模型的特点。之后介绍了基于LSTM情感分类模型,其中包括LSTM的基本原理、如何搭建LSTM网络、并演示了LSTM情感分类...
  • Python 自然语言处理方法在文本情感分析中的应用.pdf
  • 抓取热门微博评论并进行数据分析、nlp情感分析 功能介绍 weiboAPI.py功能包含: 通过调用微博API的方法将微博评论写入数据库 xueweibo.py功能包含: 爬取微博评论并写入数据库 xuenlp.py功能包含: 读取数据库并进行...
  • 文本情感分析(也称为意见挖掘)是指用自然语言处理、文本挖掘以及计算机语言学等方法来识别和提取原素材中的主观信息。 情感分析不是炫技工具。它是闷声发大财的方法。早在2010年,就有学者指出,可以依靠Twitter...

    大家好,我是K同学啊~

    今天给大家分享一个情感分析的小案例

    在维基百科上,情感分析的定义是:

    文本情感分析(也称为意见挖掘)是指用自然语言处理、文本挖掘以及计算机语言学等方法来识别和提取原素材中的主观信息。

    情感分析不是炫技工具。它是闷声发大财的方法。早在2010年,就有学者指出,可以依靠Twitter公开信息的情感分析来预测股市的涨落,准确率高达87.6%!

    配置环境

    安装snownlp

    pip install snownlp -i https://pypi.mirrors.ustc.edu.cn/simple/

    WIN键+R 输入 jupyter notebook 打开我们的工作台

    在这里插入图片描述
    jupyter notebook界面

    进入正题

    我们使用的是 SnowNLP ,SnowNLP是一个用Python写的可以方便的处理中文文本内容类库,是受到了TextBlob的启发而写的。

    开源地址:https://github.com/isnowfy/snownlp

    准备好我们的文本

    text = u"这本书很棒,这本书很差。"
    

    导入我们的 SnowNLP

    from snownlp import SnowNLP
    s = SnowNLP(text)
    

    进行分句处理

    for sentence in s.sentences:
        print(sentence)
    

    SnowNLP 对我们的第一句话进行判别

    s1 = SnowNLP(s.sentences[0])
    s1.sentiments
    

    我的结果如下:

    SnowNLP 对我们的第二句话进行判别

    s2 = SnowNLP(s.sentences[1])
    s2.sentiments
    

    我的结果如下:

    这个评分是什么意思呢?

    我们通常将正面情感标为1,负面情感标为0,我们的sentiments值越接近1,正面的情感越强烈,反之同理。

    情感分析似乎也没有那么难~

    👇🏻 源码+数据 可通过扫一扫下方 公众号(K同学啊) 回复 【001】获取👇🏻
    展开全文
  • 情感分析-nlp-2020

    2021-03-01 18:07:18
    情感分析-nlp-2020
  • 本文对R中的文本内容进行情感分析。此实现利用了各种现有的字典,此外,还可以创建自定义词典。自定义词典使用LASSO正则化作为一种​​统计方法来选择相关词语。最后,评估比较所有方法。 ...

    全文链接:http://tecdat.cn/?p=19095

    原文出处:拓端数据部落公众号

    本文对R中的文本内容进行情感分析。此实现利用了各种现有的字典,此外,还可以创建自定义词典。自定义词典使用LASSO正则化作为一种​​统计方法来选择相关词语。最后,评估比较所有方法。

    介绍

    情感分析是自然语言处理(NLP),计算语言学和文本挖掘的核心研究分支。它是指从文本文档中提取主观信息的方法。换句话说,它提取表达意见的积极负面极性。人们也可能将情感分析称为 观点挖掘 (Pang and Lee 2008)。

    相关视频:文本挖掘:主题模型(LDA)及R语言实现分析游记数据

    文本挖掘:主题模型(LDA)及R语言实现分析游记数据

    时长12:59


    研究中的应用

    最近,情感分析受到了广泛的关注(K. Ravi和Ravi 2015; Pang和Lee 2008),我们将在下面进行探讨。当前在金融和社会科学领域的研究利用情感分析来理解人类根据文本材料做出的决策。这立即揭示了对从业者以及金融研究和社会科学领域的从业者的多种含义:研究人员可以使用R提取与读者相关的文本成分,并在此基础上检验其假设。同样,从业人员可以衡量哪种措辞对他们的读者而言实际上很重要,并相应地提高他们的写作水平(Pröllochs,Feuerriegel和Neumann 2015)。在下面的两个案例研究中,我们从金融和社会科学中论证了增加的收益。

    应用

    几个应用程序演示了情感分析在组织和企业中的用途:

    • 金融: 金融市场的投资者在行使股票所有权之前,会以金融新闻披露的形式参考文本信息。有趣的是,它们不仅依赖数据,而且还依赖信息,例如语气和情感(Henry 2008; Loughran和McDonald 2011; Tetlock 2007),从而极大地影响了股价。通过利用情感分析,自动化交易者可以分析财务披露中传达的情感,以便进行投资决策。

    • 市场营销: 市场营销部门通常对跟踪品牌形象感兴趣。为此,他们从社交媒体上收集了大量用户意见,并评估个人对品牌,产品和服务的感受。

    • 评级和评论平台: 评级和评论平台通过收集用户对某些产品和服务的评级或偏好来实现有价值的功能。在这里,人们可以自动处理大量用户生成的内容(UGC)并利用由此获得的知识。例如,人们可以确定哪些提示传达了积极或者负面的意见,甚至可以自动验证其可信度。

    情感分析方法

    随着情感分析被应用于广泛的领域和文本来源,研究已经设计出各种测量情感的方法。最近的文献综述(Pang and Lee 2008)提供了一个全面的,与领域无关的调查。

    一方面,当机器学习方法追求高预测性能时,它是首选。但是,机器学习通常充当黑匣子,从而使解释变得困难。另一方面,基于字典的方法会生成肯定和否定单词的列表。然后,将这些单词的相应出现组合为单个情感评分。因此,基本的决定变得可追溯,研究人员可以理解导致特定情感的因素。

    另外, SentimentAnalysis 允许生成定制的字典。它们针对特定领域进行了定制,与纯字典相比,提高了预测性能,并具有完全的可解释性。可以在(Pröllochs,Feuerriegel和Neumann 2018)中找到此方法的详细信息。

    在执行情感分析的过程中,必须将正在运行的文本转换为一种机器可读的格式。这是通过执行一系列预处理操作来实现的。首先,将文本标记为单个单词,然后执行常见的预处理步骤:停用词的删除,词干,标点符号的删除以及小写的转换。这些操作也默认在中进行 SentimentAnalysis,但可以根据个人需要进行调整。

    简短示范

    # 分析单个字符极性(正/负)
    
    anaSen("是的,这对德国队来说是一场很棒的足球比赛!")
    
    ## [1] positive
    ## Levels: negative positive
    # 创建字符串向量
    
    
    documents <- c("哇,我真的很喜欢新的轻型军刀!",
    
    "那本书很棒。",
    
    "R是一种很棒的语言。",
    
    "这家餐厅的服务很糟糕。"
    
    "这既不是正面也不是负面。",
    
    "服务员忘了我的甜点-多么糟糕的服务!")
    
    # 分析情感
    
    
    anaSen(documents)
    
    # 根据QDAP词典提取基于词典的情感
    
    
    sentiment$SentimentQDAP
    ## [1]  0.3333333  0.5000000  0.5000000 -0.3333333  0.0000000 -0.4000000
    #查看情感方向(即正面,中性和负面)
    
    
    ToDirection(sentiment$SentimentQDAP)
    ## [1] positive positive positive negative neutral  negative
    ## Levels: negative neutral positive
    response <- c(+1, +1, +1, -1, 0, -1)
    
    comToRne(sentiment, response)
    ##                              WordCount  SentimentGI  NegativityGI
    ## cor                        -0.18569534  0.990011498 -9.974890e-01
    ## cor.t.statistic            -0.37796447 14.044046450 -2.816913e+01
    ## cor.p.value                 0.72465864  0.000149157  9.449687e-06
    ## lm.t.value                 -0.37796447 14.044046450 -2.816913e+01
    ## r.squared                   0.03448276  0.980122766  9.949843e-01
    ## RMSE                        3.82970843  0.450102869  1.186654e+00
    ## MAE                         3.33333333  0.400000000  1.100000e+00
    ## Accuracy                    0.66666667  1.000000000  6.666667e-01
    ## Precision                          NaN  1.000000000           NaN
    ## Sensitivity                 0.00000000  1.000000000  0.000000e+00
    ## Specificity                 1.00000000  1.000000000  1.000000e+00
    ## F1                          0.00000000  0.500000000  0.000000e+00
    ## BalancedAccuracy            0.50000000  1.000000000  5.000000e-01
    ## avg.sentiment.pos.response  3.25000000  0.333333333  8.333333e-02
    ## avg.sentiment.neg.response  4.00000000 -0.633333333  6.333333e-01
    ##                            PositivityGI SentimentHE NegativityHE
    ## cor                         0.942954167   0.4152274 -0.083045480
    ## cor.t.statistic             5.664705543   0.9128709 -0.166666667
    ## cor.p.value                 0.004788521   0.4129544  0.875718144
    ## lm.t.value                  5.664705543   0.9128709 -0.166666667
    ## r.squared                   0.889162562   0.1724138  0.006896552
    ## RMSE                        0.713624032   0.8416254  0.922958207
    ## MAE                         0.666666667   0.7500000  0.888888889
    ## Accuracy                    0.666666667   0.6666667  0.666666667
    ## Precision                           NaN         NaN          NaN
    ## Sensitivity                 0.000000000   0.0000000  0.000000000
    ## Specificity                 1.000000000   1.0000000  1.000000000
    ## F1                          0.000000000   0.0000000  0.000000000
    ## BalancedAccuracy            0.500000000   0.5000000  0.500000000
    ## avg.sentiment.pos.response  0.416666667   0.1250000  0.083333333
    ## avg.sentiment.neg.response  0.000000000   0.0000000  0.000000000
    ##                            PositivityHE SentimentLM NegativityLM
    ## cor                           0.3315938   0.7370455  -0.40804713
    ## cor.t.statistic               0.7029595   2.1811142  -0.89389841
    ## cor.p.value                   0.5208394   0.0946266   0.42189973
    ## lm.t.value                    0.7029595   2.1811142  -0.89389841
    ## r.squared                     0.1099545   0.5432361   0.16650246
    ## RMSE                          0.8525561   0.7234178   0.96186547
    ## MAE                           0.8055556   0.6333333   0.92222222
    ## Accuracy                      0.6666667   0.8333333   0.66666667
    ## Precision                           NaN   1.0000000          NaN
    ## Sensitivity                   0.0000000   0.5000000   0.00000000
    ## Specificity                   1.0000000   1.0000000   1.00000000
    ## F1                            0.0000000   0.3333333   0.00000000
    ## BalancedAccuracy              0.5000000   0.7500000   0.50000000
    ## avg.sentiment.pos.response    0.2083333   0.2500000   0.08333333
    ## avg.sentiment.neg.response    0.0000000  -0.1000000   0.10000000
    ##                            PositivityLM RatioUncertaintyLM SentimentQDAP
    ## cor                           0.6305283                 NA  0.9865356369
    ## cor.t.statistic               1.6247248                 NA 12.0642877257
    ## cor.p.value                   0.1795458                 NA  0.0002707131
    ## lm.t.value                    1.6247248                 NA 12.0642877257
    ## r.squared                     0.3975659                 NA  0.9732525629
    ## RMSE                          0.7757911          0.9128709  0.5398902495
    ## MAE                           0.7222222          0.8333333  0.4888888889
    ## Accuracy                      0.6666667          0.6666667  1.0000000000
    ## Precision                           NaN                NaN  1.0000000000
    ## Sensitivity                   0.0000000          0.0000000  1.0000000000
    ## Specificity                   1.0000000          1.0000000  1.0000000000
    ## F1                            0.0000000          0.0000000  0.5000000000
    ## BalancedAccuracy              0.5000000          0.5000000  1.0000000000
    ## avg.sentiment.pos.response    0.3333333          0.0000000  0.3333333333
    ## avg.sentiment.neg.response    0.0000000          0.0000000 -0.3666666667
    ##                            NegativityQDAP PositivityQDAP
    ## cor                          -0.944339551    0.942954167
    ## cor.t.statistic              -5.741148345    5.664705543
    ## cor.p.value                   0.004560908    0.004788521
    ## lm.t.value                   -5.741148345    5.664705543
    ## r.squared                     0.891777188    0.889162562
    ## RMSE                          1.068401367    0.713624032
    ## MAE                           1.011111111    0.666666667
    ## Accuracy                      0.666666667    0.666666667
    ## Precision                             NaN            NaN
    ## Sensitivity                   0.000000000    0.000000000
    ## Specificity                   1.000000000    1.000000000
    ## F1                            0.000000000    0.000000000
    ## BalancedAccuracy              0.500000000    0.500000000
    ## avg.sentiment.pos.response    0.083333333    0.416666667
    ## avg.sentiment.neg.response    0.366666667    0.000000000
    ##                            WordCount SentimentGI NegativityGI PositivityGI
    ## Accuracy                   0.6666667   1.0000000   0.66666667    0.6666667
    ## Precision                        NaN   1.0000000          NaN          NaN
    ## Sensitivity                0.0000000   1.0000000   0.00000000    0.0000000
    ## Specificity                1.0000000   1.0000000   1.00000000    1.0000000
    ## F1                         0.0000000   0.5000000   0.00000000    0.0000000
    ## BalancedAccuracy           0.5000000   1.0000000   0.50000000    0.5000000
    ## avg.sentiment.pos.response 3.2500000   0.3333333   0.08333333    0.4166667
    ## avg.sentiment.neg.response 4.0000000  -0.6333333   0.63333333    0.0000000
    ##                            SentimentHE NegativityHE PositivityHE
    ## Accuracy                     0.6666667   0.66666667    0.6666667
    ## Precision                          NaN          NaN          NaN
    ## Sensitivity                  0.0000000   0.00000000    0.0000000
    ## Specificity                  1.0000000   1.00000000    1.0000000
    ## F1                           0.0000000   0.00000000    0.0000000
    ## BalancedAccuracy             0.5000000   0.50000000    0.5000000
    ## avg.sentiment.pos.response   0.1250000   0.08333333    0.2083333
    ## avg.sentiment.neg.response   0.0000000   0.00000000    0.0000000
    ##                            SentimentLM NegativityLM PositivityLM
    ## Accuracy                     0.8333333   0.66666667    0.6666667
    ## Precision                    1.0000000          NaN          NaN
    ## Sensitivity                  0.5000000   0.00000000    0.0000000
    ## Specificity                  1.0000000   1.00000000    1.0000000
    ## F1                           0.3333333   0.00000000    0.0000000
    ## BalancedAccuracy             0.7500000   0.50000000    0.5000000
    ## avg.sentiment.pos.response   0.2500000   0.08333333    0.3333333
    ## avg.sentiment.neg.response  -0.1000000   0.10000000    0.0000000
    ##                            RatioUncertaintyLM SentimentQDAP NegativityQDAP
    ## Accuracy                            0.6666667     1.0000000     0.66666667
    ## Precision                                 NaN     1.0000000            NaN
    ## Sensitivity                         0.0000000     1.0000000     0.00000000
    ## Specificity                         1.0000000     1.0000000     1.00000000
    ## F1                                  0.0000000     0.5000000     0.00000000
    ## BalancedAccuracy                    0.5000000     1.0000000     0.50000000
    ## avg.sentiment.pos.response          0.0000000     0.3333333     0.08333333
    ## avg.sentiment.neg.response          0.0000000    -0.3666667     0.36666667
    ##                            PositivityQDAP
    ## Accuracy                        0.6666667
    ## Precision                             NaN
    ## Sensitivity                     0.0000000
    ## Specificity                     1.0000000
    ## F1                              0.0000000
    ## BalancedAccuracy                0.5000000
    ## avg.sentiment.pos.response      0.4166667
    ## avg.sentiment.neg.response      0.0000000

    从文本挖掘中执行了一组预处理操作。将标记每个文档,最后将输入转换为文档项矩阵。

    输入

    提供了具有其他几种输入格式的接口,其中包括

    • 字符串向量。

    • tm 软件包中实现的DocumentTermMatrix和 TermDocumentMatrix(Feinerer,Hornik和Meyer 2008)。

    • tm 软件包实现的语料库对象 (Feinerer,Hornik和Meyer 2008)。

    我们在下面提供示例。

    向量的字符串

    documents <- c("这很好",
    
    "这不好",
    
    "这介于两者之间")
    convertToDirection(analyzeSentiment(documents)$SentimentQDAP)
    ## [1] positive negative neutral 
    ## Levels: negative neutral positive

    文档词语矩阵

    corpus <- VCorpus(VectorSource(documents))
    convertToDirection(analyzeSentiment(corpus)$SentimentQDAP)
    ## [1] positive negative neutral 
    ## Levels: negative neutral positive

    语料库对象

    ## [1] positive negative neutral 
    ## Levels: negative neutral positive

    可以直接与文档术语矩阵一起使用,因此一开始就可以使用自定义的预处理操作。之后,可以计算情感分数。例如,可以使用其他列表中的停用词替换停用词。

    字典

    可区分三种不同类型的词典。它们所存储的数据各不相同,这些数据最终还控制着可以应用哪种情感分析方法。字典如下:

    • SentimentDictionaryWordlist 包含属于一个类别的单词列表。

    • SentimentDictionaryBinary 存储两个单词列表,一个用于肯定条目,一个用于否定条目。

    • SentimentDictionaryWeighted 允许单词的情感评分。

    情感词典词表

    # 替代
    
    d <- Dictionary(c(“不确定”,“可能”,“有可能”))
    summary(d)
    ## Dictionary type:  word list (single set)
    ## Total entries:    3

    情感词典

    d <- DictionaryBin(c(“增加”,“上升”,“更多”),
                                   c(“下降”))
    summary(d)
    ## Dictionary type:  binary (positive / negative)
    ## Total entries:    5
    ## Positive entries: 3 (60%)
    ## Negative entries: 2 (40%)

    情感词典加权

    d <- SentimentDictionaryWeighted(c(“增加”,“减少”,“退出”),
                                     c(+1, -1, -10),
                                     rep(NA, 3))
    summary(d)
    ## Dictionary type:  weighted (words with individual scores)
    ## Total entries:    3
    ## Positive entries: 1 (33.33%)
    ## Negative entries: 2 (66.67%)
    ## Neutral entries:  0 (0%)
    ## 
    ## Details
    ## Average score:      -3.333333
    ## Median:             -1
    ## Min:                -10
    ## Max:                1
    ## Standard deviation: 5.859465
    ## Skewness:           -0.6155602
    d <- SentimentDictionary(c(“增加”,“减少”,“退出”),
                             c(+1, -1, -10),
                             rep(NA, 3))
    summary(d)                         
    ## Dictionary type:  weighted (words with individual scores)
    ## Total entries:    3
    ## Positive entries: 1 (33.33%)
    ## Negative entries: 2 (66.67%)
    ## Neutral entries:  0 (0%)
    ## 
    ## Details
    ## Average score:      -3.333333
    ## Median:             -1
    ## Min:                -10
    ## Max:                1
    ## Standard deviation: 5.859465
    ## Skewness:           -0.6155602

    字典生成

    用向量的形式表示因变量。此外,变量给出了单词在文档中出现的次数。然后,该方法估计具有截距和系数的线性模型。估计基于LASSO正则化,它执行变量选择。这样,它将某些系数设置为正好为零。然后可以根据剩余单词的系数按极性对它们进行排序。

    # 创建字符串向量
    
    
    documents <- c(“这是一件好事!”,
    
    “这是一件非常好的事!”,
    
    “没关系。”
    
    “这是一件坏事。”,
    
    “这是一件非常不好的事情。”
    
    )
    response <- c(1, 0.5, 0, -0.5, -1)
    
    # 使用LASSO正则化生成字典
    
    
    dict
    ## Type: weighted (words with individual scores)
    ## Intercept: 5.55333e-05
    ## -0.51 bad
    ##  0.51 good
    summary(dict)
    ## Dictionary type:  weighted (words with individual scores)
    ## Total entries:    2
    ## Positive entries: 1 (50%)
    ## Negative entries: 1 (50%)
    ## Neutral entries:  0 (0%)
    ## 
    ## Details
    ## Average score:      -5.251165e-05
    ## Median:             -5.251165e-05
    ## Min:                -0.5119851
    ## Max:                0.5118801
    ## Standard deviation: 0.7239821
    ## Skewness:           0

    有几种微调选项。只需更改参数,就可以用弹性网络模型替换LASSO  。

    最后,可以使用read() 和 保存和重新加载字典 write()

    评估

    最终,例程允许人们进一步挖掘生成的字典。一方面,可以通过summary() 例程显示简单的概述 。另一方面,核密度估计也可以可视化正词和负词的分布。

    ## Comparing: wordlist vs weighted
    ## 
    ## Total unique words: 4213
    ## Matching entries: 2 (0.0004747211%)
    ## Entries with same classification: 0 (0%)
    ## Entries with different classification: 2 (0.0004747211%)
    ## Correlation between scores of matching entries: 1
    ## $totalUniqueWords
    ## [1] 4213
    ## 
    ## $totalSameWords
    ## [1] 2
    ## 
    ## $ratioSameWords
    ## [1] 0.0004747211
    ## 
    ## $numWordsEqualClass
    ## [1] 0
    ## 
    ## $numWordsDifferentClass
    ## [1] 2
    ## 
    ## $ratioWordsEqualClass
    ## [1] 0
    ## 
    ## $ratioWordsDifferentClass
    ## [1] 0.0004747211
    ## 
    ## $correlation
    ## [1] 1
    ##                             Dictionary
    ## cor                         0.94868330
    ## cor.t.statistic             5.19615237
    ## cor.p.value                 0.01384683
    ## lm.t.value                  5.19615237
    ## r.squared                   0.90000000
    ## RMSE                        0.23301039
    ## MAE                         0.20001111
    ## Accuracy                    1.00000000
    ## Precision                   1.00000000
    ## Sensitivity                 1.00000000
    ## Specificity                 1.00000000
    ## F1                          0.57142857
    ## BalancedAccuracy            1.00000000
    ## avg.sentiment.pos.response  0.45116801
    ## avg.sentiment.neg.response -0.67675202

    下面的示例演示如何将计算出的字典用于预测样本外数据的情感。然后通过将其与内置词典进行比较来评估预测性能。

    test_documents <- c(“这既不是好事也不是坏事”,
    
    “真是好主意!”,
    
    “不错”
    )
    
    pred <- predict(dict, test_documents)
    
    
    ##                              Dictionary
    ## cor                        5.922189e-05
    ## cor.t.statistic            5.922189e-05
    ## cor.p.value                9.999623e-01
    ## lm.t.value                 5.922189e-05
    ## r.squared                  3.507232e-09
    ## RMSE                       8.523018e-01
    ## MAE                        6.666521e-01
    ## Accuracy                   3.333333e-01
    ## Precision                  0.000000e+00
    ## Sensitivity                         NaN
    ## Specificity                3.333333e-01
    ## F1                         0.000000e+00
    ## BalancedAccuracy                    NaN
    ## avg.sentiment.pos.response 1.457684e-05
    ## avg.sentiment.neg.response          NaN

    ##                             WordCount SentimentGI NegativityGI
    ## cor                        -0.8660254 -0.18898224   0.18898224
    ## cor.t.statistic            -1.7320508 -0.19245009   0.19245009
    ## cor.p.value                 0.3333333  0.87896228   0.87896228
    ## lm.t.value                 -1.7320508 -0.19245009   0.19245009
    ## r.squared                   0.7500000  0.03571429   0.03571429
    ## RMSE                        1.8257419  1.19023807   0.60858062
    ## MAE                         1.3333333  0.83333333   0.44444444
    ## Accuracy                    1.0000000  0.66666667   1.00000000
    ## Precision                         NaN  0.00000000          NaN
    ## Sensitivity                       NaN         NaN          NaN
    ## Specificity                 1.0000000  0.66666667   1.00000000
    ## F1                          0.0000000  0.00000000   0.00000000
    ## BalancedAccuracy                  NaN         NaN          NaN
    ## avg.sentiment.pos.response  2.0000000 -0.16666667   0.44444444
    ## avg.sentiment.neg.response        NaN         NaN          NaN
    ##                            PositivityGI SentimentHE NegativityHE
    ## cor                         -0.18898224 -0.18898224           NA
    ## cor.t.statistic             -0.19245009 -0.19245009           NA
    ## cor.p.value                  0.87896228  0.87896228           NA
    ## lm.t.value                  -0.19245009 -0.19245009           NA
    ## r.squared                    0.03571429  0.03571429           NA
    ## RMSE                         0.67357531  0.67357531    0.8164966
    ## MAE                          0.61111111  0.61111111    0.6666667
    ## Accuracy                     1.00000000  1.00000000    1.0000000
    ## Precision                           NaN         NaN          NaN
    ## Sensitivity                         NaN         NaN          NaN
    ## Specificity                  1.00000000  1.00000000    1.0000000
    ## F1                           0.00000000  0.00000000    0.0000000
    ## BalancedAccuracy                    NaN         NaN          NaN
    ## avg.sentiment.pos.response   0.27777778  0.27777778    0.0000000
    ## avg.sentiment.neg.response          NaN         NaN          NaN
    ##                            PositivityHE SentimentLM NegativityLM
    ## cor                         -0.18898224 -0.18898224   0.18898224
    ## cor.t.statistic             -0.19245009 -0.19245009   0.19245009
    ## cor.p.value                  0.87896228  0.87896228   0.87896228
    ## lm.t.value                  -0.19245009 -0.19245009   0.19245009
    ## r.squared                    0.03571429  0.03571429   0.03571429
    ## RMSE                         0.67357531  1.19023807   0.60858062
    ## MAE                          0.61111111  0.83333333   0.44444444
    ## Accuracy                     1.00000000  0.66666667   1.00000000
    ## Precision                           NaN  0.00000000          NaN
    ## Sensitivity                         NaN         NaN          NaN
    ## Specificity                  1.00000000  0.66666667   1.00000000
    ## F1                           0.00000000  0.00000000   0.00000000
    ## BalancedAccuracy                    NaN         NaN          NaN
    ## avg.sentiment.pos.response   0.27777778 -0.16666667   0.44444444
    ## avg.sentiment.neg.response          NaN         NaN          NaN
    ##                            PositivityLM RatioUncertaintyLM SentimentQDAP
    ## cor                         -0.18898224                 NA   -0.18898224
    ## cor.t.statistic             -0.19245009                 NA   -0.19245009
    ## cor.p.value                  0.87896228                 NA    0.87896228
    ## lm.t.value                  -0.19245009                 NA   -0.19245009
    ## r.squared                    0.03571429                 NA    0.03571429
    ## RMSE                         0.67357531          0.8164966    1.19023807
    ## MAE                          0.61111111          0.6666667    0.83333333
    ## Accuracy                     1.00000000          1.0000000    0.66666667
    ## Precision                           NaN                NaN    0.00000000
    ## Sensitivity                         NaN                NaN           NaN
    ## Specificity                  1.00000000          1.0000000    0.66666667
    ## F1                           0.00000000          0.0000000    0.00000000
    ## BalancedAccuracy                    NaN                NaN           NaN
    ## avg.sentiment.pos.response   0.27777778          0.0000000   -0.16666667
    ## avg.sentiment.neg.response          NaN                NaN           NaN
    ##                            NegativityQDAP PositivityQDAP
    ## cor                            0.18898224    -0.18898224
    ## cor.t.statistic                0.19245009    -0.19245009
    ## cor.p.value                    0.87896228     0.87896228
    ## lm.t.value                     0.19245009    -0.19245009
    ## r.squared                      0.03571429     0.03571429
    ## RMSE                           0.60858062     0.67357531
    ## MAE                            0.44444444     0.61111111
    ## Accuracy                       1.00000000     1.00000000
    ## Precision                             NaN            NaN
    ## Sensitivity                           NaN            NaN
    ## Specificity                    1.00000000     1.00000000
    ## F1                             0.00000000     0.00000000
    ## BalancedAccuracy                      NaN            NaN
    ## avg.sentiment.pos.response     0.44444444     0.27777778
    ## avg.sentiment.neg.response            NaN            NaN

    预处理

    如果需要,可以实施适合特定需求的预处理阶段。如函数 ngram_tokenize() ,用于从语料库中提取n-gram。

    tdm <- TermDocumentMatrix(corpus, 
                              control=list(wordLengths=c(1,Inf), 
                                           tokenize=function(x) ngram_tokenize(x, char=FALSE, 
                                                                               ngmin=1, ngmax=2)))
    
    ## Dictionary type:  weighted (words with individual scores)
    ## Total entries:    7
    ## Positive entries: 4 (57.14%)
    ## Negative entries: 3 (42.86%)
    ## Neutral entries:  0 (0%)
    ## 
    ## Details
    ## Average score:      5.814314e-06
    ## Median:             1.602469e-16
    ## Min:                -0.4372794
    ## Max:                0.4381048
    ## Standard deviation: 0.301723
    ## Skewness:           0.00276835
    dict
    ## Type: weighted (words with individual scores)
    ## Intercept: -5.102483e-05
    ## -0.44 不好
    ## -0.29 非常糟糕
    ## 0.29  好
    
    
    

    性能优化

    ##   SentimentLM
    ## 1         0.5
    ## 2         0.5
    ## 3         0.0
    ## 4        -0.5
    ## 5        -0.5

    语言支持和可扩展性

     可以适应其他语言使用。为此,需要在两点上进行更改:

    • 预处理:使用参数 language="" 来执行所有预处理操作。

    • 字典: 可以使用附带的字典生成方法 。然后,这可以自动生成可应用于给定语言的正负词词典。

    下面的示例使用德语示例。最后,我们进行情感分析。

    documents <- c("Das ist ein gutes Resultat",
                   "Das Ergebnis war schlecht")
    
    sentiment <- ana(documents,
                                  language="german",
    sentiment
    ##   GermanSentiment
    ## 1             0.0
    ## 2            -0.5
    ## [1] positive negative
    ## Levels: negative positive

    同样,可以使用自定义情感分数来实现字典。

    woorden <- c("goed","slecht")
    scores <- c(0.8,-0.5)
    
    ##   DutchSentiment
    ## 1           -0.5

    实例

    我们利用了tm 包中的路透社石油新闻 。

    
    # 分析情感
    
    
    sentiment <- ana(crude)
    
    # 计算正面和负面新闻发布数量
    
    
    table(coToB(sentiment$SentimentLM))
    ## 
    ## negative positive 
    ##       16        4
    # 情感最高和最低的新闻
    
    
    ## [1] "HOUSTON OIL <HO> RESERVES STUDY COMPLETED"
    crude[[which.min(sentiment$SentimentLM)]]$meta$heading
    ## [1] "DIAMOND SHAMROCK (DIA) CUTS CRUDE PRICES"
    # 查看情感变量的摘要统计
    
    
    summary(sentiment$SentimentLM)
    ##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
    ## -0.08772 -0.04366 -0.02341 -0.02953 -0.01375  0.00000
    # 可视化标准化情感变量的分布
    
    
    hist(scale(sentiment$SentimentLM))

    # 计算相关
    
    ##               SentimentLM SentimentHE SentimentQDAP
    ## SentimentLM     1.0000000   0.2769878     0.4769730
    ## SentimentHE     0.2769878   1.0000000     0.6141075
    ## SentimentQDAP   0.4769730   0.6141075     1.0000000
    #  1987-02-26  1987-03-02之间的原油新闻
    
    
    plot(senti$Sentime)

    plot(SenLM, x=date, cumsum=TRUE)

    单词计算

    对单词进行计数 。

    #词(无停用词)
    
    ##   WordCount
    ## 1         3
    # 计算所有单词(包括停用词)
    
    ##   WordCount
    ## 1         4

    参考文献

    Feinerer,Ingo,Kurt Hornik和David Meyer。2008年。“ R中的文本挖掘基础结构”。 统计软件杂志 25(5):1–54。

    Tetlock,Paul C.,2007年。“将内容传递给投资者的情感:媒体在股票市场中的作用。” 金融杂志 62(3):1139–68。


    最受欢迎的见解

    1.探析大数据期刊文章研究热点

    2.618网购数据盘点-剁手族在关注什么

    3.r语言文本挖掘tf-idf主题建模,情感分析n-gram建模研究

    4.python主题建模可视化lda和t-sne交互式可视化

    5.疫情下的新闻数据观察

    6.python主题lda建模和t-sne可视化

    7.r语言中对文本数据进行主题模型topic-modeling分析

    8.主题模型:数据聆听人民网留言板的那些“网事”

    9.python爬虫进行web抓取lda主题语义数据分析

    展开全文
  • 案例1:利用贝叶斯方法的多项式模型分析新闻数据 数据#1 !wget http://qwone.com/~jason/20Newsgroups/20news-bydate.tar.gz !ls !tar -xzf 20news-bydate.tar.gz !ls !ls 20news-bydate-test !ls 20news-bydate-...
  • !!!!!!不要急着代码,搞清楚原理知识结构才下手,以后还指着它吃饭呢,又不是水一篇论文当混子!... 情感分析是从书面或口头语言中,对特定主题,理解观点的自动过程。 在世界上,我们每天生成2.5QB字...

    !!!!!!不要急着代码,搞清楚原理知识结构才下手,以后还指着它吃饭呢,又不是水一篇论文当混子!!!!!!!

    !!!!!!书越读越薄,本文源自:https://blog.csdn.net/linxid/article/details/83478720!!!!!!!

            情感分析是从书面或口头语言中,对特定主题,理解观点的自动过程。
            在世界上,我们每天生成2.5QB字节的数据,情感分析已成为理解这些数据的关键工具。 这使得公司能够获得关键的见解,并自动化各种流程。

            但是,它是如何实现的呢?
            有哪些不同的方法? 它需要注意什么,限制是什么? 你如何在业务中使用情感分析?
            接下来,您将找到这些问题的答案,以及您需要了解的,关于情感分析的所有内容。 无论你是经验丰富的数据科学家,开发人员,营销人员,产品分析师,还是刚刚开始进行文本分析,这份指南都适合你。

    1.情感分析基础:

    1.1 什么是情感分析:

            情感分析也称为意见挖掘( Opinion Mining),是自然语言处理(NLP)的一个领域,它构建的系统,用于在文本中识别和提取观点。 通常,除了识别观点之外,这些系统还提取描述的特征,例如:

    • 极性:发言者表达积极或消极的意见;
    • 主题:正在谈论的事情;
    • 意见持有人:表达意见的个人或实体。

            目前,情感分析是一个很有兴趣的话题,因为它有许多实际应用。 由于互联网上公开可用的信息不断增长,在评论网站,论坛,博客和社交媒体中,可以获得大量表达意见的文本。
    在情感分析系统的帮助下,这种非结构化信息可以自动转换为,结构化数据,关于产品,服务,品牌,政治或人们可以表达意见的其他主题。 这些数据对于商业应用非常有用,例如营销分析,公共关系,产品评论,网络发起人评分,产品反馈和客户服务。

    1.2 什么是观点:

            在进一步详细说明之前,让我们首先给出"观点"的定义。 文本信息可以大致分为两种主要类型:事实和意见。 事实是关于某事的客观表达。 意见通常是主观表达,描述人们对主题的情绪,评价和感受。
            正如许多其他NLP问题一样,情感分析可以建模为分类问题,其中必须解决两个子问题:

    • 将句子分类为主观或客观,称为主观性分类。
    • 将句子分类为正面,负面或中立的观点,称为极性分类。

            在一种观点中,文本所讨论的,可以这个对象,它的一部分,一方面,属性或其特征。 它也可以是产品,服务,个人,组织,事件或主题。 举个例子,看下面的观点:

            “这款相机的电池续航时间太短。”:
            关于实体(相机)特征(电池寿命)的负面评价。

            直接性与比较性的观点:

            观点分为两类:直接性的和比较性的。

    •                 直接性观点:直接对实体提出意见,例如:“相机A的画质很差。”这个直接意见陈述了对相机A的负面看法。
    •                 比较性的意见:通过比较实体与另一实体来表达意见,例如:“相机A的图像质量优于相机B的图像质量。”

            通常,比较性观点使用,形容词或副词的比较级或最高级形式表达两个或更多个实体之间的相似性或差异。 在前面的例子中,对于摄像机A有一个积极的看法,相反,对摄像机B有一个负面看法。

            明确的和含蓄的观点:

                    关于主题的明确观点,是在主观句子中明确表达的意见。 以下句子表达了明确的积极观点:“这款手机的音质令人惊叹。”对某一主题的含蓄的观点,是客观句中隐含的意见。 以下句子表达了一种隐含的否定意见:“耳机在两天内坏了。”在隐含的意见中,我们可以包括隐喻,这些隐喻可能是最难分析的观点类型,因为它们包含大量的语义信息

    1.3 情感分析的范围:

            情感分析可以用于不同级别的范围:

    • 文本级别:通过完整文档或段落来获取情绪;
    • 句子级别:获得单句的情绪。
    • 子句级别:获得句子中,子表达的情感。

    1.4 情感分析的类型:

            情感分析有多种类型和风格,情感分析工具的范围从专注于极性(正面,负面,中立)的系统到检测情感和情绪(愤怒,快乐,悲伤等)或识别意图的系统(例如感兴趣和没兴趣)。 在下一节中,我们将重点介绍。

            细粒度情感分析:

                    有时您可能想,更加准确地了解意见的极性水平,因此你可以考虑,以下类别而不仅仅是谈论积极,中立或消极的意见:

    • 非常积极
    • 积极
    • 中性
    • 消极
    • 非常消极

            这通常被称为细粒度情感分析。 例如,这可以在评论中映射到5星评级,例如:非常正= 5星和非常负= 1星。

                    一些系统还通过识别积极或消极情感是否与特定感觉相关联,来提供不同的极性风格,例如愤怒,悲伤或忧虑(即负面情绪)或快乐,爱情或热情(即积极情绪)。

            情绪检测

                    情绪检测旨在检测诸如快乐,沮丧,愤怒,悲伤等情绪。 许多情绪检测系统采用词典(即单词列表和它们传达的情感)或复杂的机器学习算法。诉诸词典的一个缺点是,人们表达情感的方式变化很大,他们使用的词汇项目也是如此。 一些词,像shit和kill,通常表达愤怒(eg.在你的产品中是狗屎,或者你的客户支持正在杀死我),也可能表达快乐。

            基于方面的情感分析:

                    通常,在分析目标(例如产品)的情感时,您可能不仅对人们是否正在谈论产品的极性(积极,中立或负面)感兴趣,而且对人们谈论的产品的哪些特定方面或特征感兴趣。 这就是基于方面的情感分析。 在我们前面的例子中:“这款相机的电池续航时间太短。”这句话表达了对相机的负面看法,但更准确地说,关于电池寿命,这是相机的一个特殊功能。

            意图分析:

                    意图分析基本上是为了检测人们通过文本做什么,而不仅仅是人们通过文本说了什么。 请看以下示例:
                            “你的客户支持是一场灾难。 我已被搁置20分钟“。
                            “我想知道如何更换墨盒”。
                            “你能帮我填一下这张表吗?”
                    人们很容易在第一个文本中感觉出抱怨,第二个文本中的问题和第三个文本中的请求。 但是,机器可能会遇到一些问题。 有时,可以从文本中推断出意图,但有时,推断它需要一些上下文知识。

            多语言情感分析:

                    多语言情感分析是一项艰巨的任务。 通常,需要进行大量预处理,并且预处理会使用大量资源。 大多数这些资源可在线获得(例如情感词典),但必须创建许多其他资源(例如翻译的语料库或噪声检测算法)。 使用这些资源需要一定的编程能力,并且可能需要很长时间才能实现。

                    另一种方法是自动检测文本中的语言,然后为您选择的语言训练自定义模型(如果文本不是用英语编写的),最后进行分析。

    1.5 为什么情感分析如此重要?

            据估计,世界上80%的数据都是非结构化的,没有以预先定义的方式组织。 其中大部分来自文本数据,如电子邮件,票据,聊天,社交媒体,调查,文章和文档。 这些文本通常难以分析,理解和分类,既费时又费钱。

            情感分析系统能够让公司,通过自动化业务流程,获得可操作的洞察力,以及节省数小时的手动数据处理来理解这种非结构化文本,也就是说,通过提高团队效率。

            情感分析的优点如下所示:

    • 可扩展性:您能想象通过成千上万的推文,用户对话或用户评论手动排序吗? 手动处理的话,数据太多了。 情感分析允许以有效且低成本的方式大规模处理数据。
    • 实时分析:我们可以使用情感分析来识别关键信息,以便在特定情景中实时提供态势感知。 社交媒体即将爆发公关危机吗? 一个愤怒的客户即将流失? 情感分析系统可以帮助您立即识别这些情况并采取行动。
    • 一致的标准:人类没有观察到评估一段文字情感的清晰标准。 据估计,在判断特定文本的情感时,不同的人仅仅在60-65%的情况下同意。 这是一项主观任务,深受个人经历,思想和信仰的影响。 通过使用集中情感分析系统,公司可以对所有数据应用相同的标准。 这有助于减少错误并提高数据一致性。

            查看“应用案例”部分,查看针对各种事物使用情感分析的公司和组织的示例。

    2.如何实现情感分析

    2.1 算法:

            实现情感分析系统的方法和算法有很多种,可分为:

    • 基于规则:基于一组手动制定的规则执行情绪分析;
    • 自动系统:依靠机器学习技术从数据中学习的;
    • 混合系统:结合了基于规则和自动方法。

            基于规则:

                    通常,基于规则的方法,通过脚本定义了一组规则,用于识别主观性,极性或意见主体。

                    规则可以使用各种输入,例如:

    • 经典的NLP技术,如词干,符号,词性标注和解析。
    • 其他资源,例如词典(即单词和表达方式列表)。

            基于规则的实现的基本示例如下:

    1. 定义两个极化词列表(例如,差、最差、丑陋等负面词和好、最佳、美丽等正面词);
    2. 给出一个文本:
      计算文本中出现的积极词数。
      计算文本中出现的否定词数。
      如果正面出现的数量大于否定单词出现的数量则返回正面情绪,相反,返回负面情绪。 否则,返回中立。

            这个系统非常简单,因为它没有考虑单词如何在一个序列中组合。 可以进行更高级的处理,但这些系统很快就会变得非常复杂。 它们可能非常难以维护,因为可能需要新的规则来支持对新表达式和词汇表。 此外,由于与先前规则的混合,添加新规则可能会产生不好的结果。 因此,这些系统需要在手动调整和维护规则方面占用很多精力。

            自动系统:

            与基于规则的系统相反,自动的方法不依赖于手工制作的规则,而是依赖于机器学习。 情感分析任务通常被建模为分类问题,文本喂给分类器,然后返回相应的类别,例如, 正,负或中性(如果正在进行极性分析)。

    机器学习分类器通常可以通过以下步骤来实现:
    image.png

    训练和预测过程:

    在训练过程(a)中,我们的模型学习基于训练样本,将特定输入(即文本)与相应的输出(标签)相关联。 特征提取器将文本输入传输到特征向量中。 将成对的特征向量和标签(例如,正,负或中性)喂给到机器学习算法中以生成模型。

    在预测过程(b)中,特征提取器用于将未见过的的文本输入,变换为特征向量。 然后将这些特征向量喂给模型,该模型生成预测标签(正,负或中性)。

    从文本中提取特征:

    机器学习文本分类器的第一步是将文本转换为数字表示,通常是向量。 通常,向量的每个分量表示预定义字典中的单词或表达的频率(例如,极性词的词典)。 这个过程被称为特征提取或文本向量化,并且经典方法一直是bag-of-words或带有频率的bag-of-ngrams

    最近,基于词嵌入(也称为词向量)应用了新的特征提取技术。 这种表示使得具有相似含义的词可以具有相似的表示,这可以改善分类器的性能。

    分类算法:

    分类算法通常涉及统计模型,如NaïveBayes,Logistic回归,支持向量机或神经网络:

    • NaïveBayes:一种概率统计模型,使用贝叶斯定理来预测文本的类别;
    • 线性回归:一种非常着名的统计算法,用于在给定一组特征(X)的情况下预测某些值(Y);
    • 支持向量机:一种非概率模型,它使用文本示例的表示作为多维空间中的点。 映射这些示例以便不同类别(情绪)的示例属于该空间的不同区域。然后,新文本被映射到该相同空间并且预测属于基于它们落入哪个区域的类别。
    • 深度学习:一组多样化的算法,试图通过模仿人类大脑的工作方式,使用人工神经网络来处理数据。

    情感分析评估标准:

    你可以通过多种指标评估分类器的性能,并了解情感分析模型的准确程度。 最常用的一种称为交叉验证。

    交叉验证的作用是将训练数据分成一定数量的训练数据(75%的训练数据)和测试测试数据(25%的训练数据),训练数据来训练分类器,根据测试数据对其进行测试以获得性能指标(见下文)。 该过程重复多次,并计算每个度量的平均值。

    如果测试集总是相同的,那么可能会过度拟合该测试集,这意味着可能会将分析调整到给定的数据集,以至于可能无法分析不同的集。 交叉验证有助于防止这种情况。 您拥有的数据越多,您可以使用的折越多。

    精确度,召回率和准确度(Precision, Recall, and Accuracy)
    精确度,召回率和准确度是用于评估分类器性能的标准度量。

    • 精确度(Precision):测量预测为1的样本中,多少被正确分类;
    • 召回率(Recall):实际为1的样本中,多少被成功预测;
    • 准确度(Accuracy):测量语料库中所有文本中正确预测了多少文本

    最常见的是,精确度和召回率用于衡量性能,因为仅仅准确性并不能说明分类器的好坏。

    对于像分析情感这样的困难任务,精度和召回水平一开始可能很低。在为分类器提供更多数据时,性能会提高。但是,正如我们将在下面看到的那样,由于带注释的数据可能不准确,因此精度水平可能不会太高。但是,如果您为分类器提供一致标记的数据,那么结果将与任何其他分类问题的结果一样好。

    注释之间的协议:
    当涉及到注释之间的协议(即人类对给定注释任务的协议)时,最常用的指标之一是Krippendorff的Alpha。根据Saif等人的研究,Twitter情绪分析的最佳注释间协议达到了Krippendorff的Alpha的0.655值。这意味着有很多协议(因为alpha大于零),但我们认为它仍然远远不够(例如:大约0.8,这是社会科学家用来说数据可靠的最低可靠性阈值,见这里)。这就是说,从上面引用的论文中描述的注释任务的结果中只能得出推文情感的初步结论。

    总而言之,这个0.655也是人类情感分析检测难度的指标。考虑到机器从它们所喂养的数据中学习,自动预测可能反映了数据中嵌入的人为分歧。

    混合方法:

    混合方法的概念非常直观:只需结合两个方面的优点,即基于规则的方法和自动方法。 通常,通过组合两种方法,该方法可以提高准确度和精度。

    2.2 挑战:

    近年来情感分析的大部分工作都是开发更准确的分类算法,不断解决该领域的一些主要挑战和局限来。

    主观性和语气:

    主观和客观文本的检测与分析其语气一样重要。 事实上,所谓的客观文本不包含明确的情绪。 比如说,您打算分析以下两个文本的情绪:“包很好。”“包裹是红色的。”
    大多数人会说第一个情绪是积极的,第二个情绪是中性的,对吧? 所有谓词(形容词,动词和某些名词)在创造情绪方面不应该被视为相同。 在上面的例子中,nice比red更主观。

    语境和极性:

    所有的话语都会在某个时间点发出,在某些地方,对某些人说。所有的话语都是在上下文中说出来的。分析没有上下文的情感非常困难。但是,如果未明确提及,机器无法了解上下文。上下文产生的问题之一是极性的变化。请查看以下对调查的回复:“它的一切。”“绝对没有!”
    想象一下上面的回应,来自某个问题,“你对这次活动有什么看法?”,的答案。第一个反应是积极的,第二个反应是否定的,对吗?现在,想象一下另一个问题,“你对这个事件不喜欢什么?”问题的否定将使情感分析完全改变。
    如果我们要考虑产生文本的部分背景,就需要进行大量的预处理或后处理。但是,如何预处理或后处理数据以捕获有助于分析情感的上下文位并不简单。

    反讽和讽刺:

    字面意思和预期意义(即讽刺)之间的差异以及更具侮辱性或讽刺性的讽刺形式(即讽刺)通常会将积极情绪转变为消极情绪,而消极情绪或中性情绪可能会改为正面情绪。然而,检测讽刺或讽刺需要对文本产生的背景进行大量分析,因此很难自动检测。

    例如,对于问题,“您是否有过良好的客户体验?”
    “是啊,当然。”“不是一个,而是很多!”

    上面的回答分别是什么情感?可能你已经多次听过第一个回复,你会说是消极的,对吗?问题是没有任何文字提示会使机器学习负面情绪,因为大多数情况下,“是的”,肯定属于正面或中性文本。

    第二个回应在这种情况下,情绪是积极的,但存在提出许多不同的背景,其中相同的反应可以表达负面情绪。

    比较

    如何处理情绪分析中的“比较”是另一个挑战。 看看下面的文字:
    “这款产品首屈一指。”“这比旧工具更好。”“这总比没有好。”

    有一些比较,如上面的第一个,不需要任何上下文线索,可以被正确分类。
    不过,第二和第三个文本更难被分类。 你会把它们归类为中性还是积极的? 也许你更有可能为第二个选择正面而第三个选择中立,对吗? 上下文可以再次发挥作用。 例如,如果第二个文本所讨论的旧工具在上下文中被认为是无用的,那么第二个文本与第三个文本非常相似。 但是,如果没有提供上下文,这些文本会有所不同。

    表情符号:

    根据Guibon等人有两种类型的表情符号。西方表情符号(例如 ?)仅编码为一个字符或其中几个字符的组合而东方表情符号(例如¯\ (ツ) /¯) 是垂直性质的更长的组合。 特别是在推文中,表情符号在文本的情感中非常重要。

    通过推文进行的情感分析需要特别注意字符级别和单词级别。 但是,这两种都可能需要进行大量的预处理。 例如,您可能希望预处理社交媒体内容并将西方和东方表情符号转换为tokens并将其列入白名单(即始终将其作为分类用途的特征),以帮助改善情绪分析性能。

    这是一个非常全面的表情符号及其unicode字符列表,在预处理时可能会派上用场。

    定义中性:

    定义中性是另一个挑战,以便进行准确的情绪分析。与所有分类问题一样,定义类别 - 在本例中为中性标记 - 是问题中最重要的部分之一。当你训练情绪分析模型时,你的中立,正面或负面意味着什么。由于标记数据要求标记标准一致,因此必须对问题进行良好定义。

    关于中性文本可能包含以下内容:

    • 1.客观文本。正如我们在这里所说的,所谓的客观文本不包含明确的情绪,因此您应该将这些文本包含在中性类别中。
    • 2.无关的信息。如果您尚未预处理数据,以过滤掉不相关的信息,则可以将其标记为中性。但是要小心!只有在你知道这会如何影响整体性能时才这样做。有时,你会在分类器中添加噪音,性能可能会变差。
    • 3.包含愿望的文本。有些希望,例如希望产品有更多功能,通常是中性的。然而,包括“比较”在内的那些,比如我希望产品更好,很难分类。

    2.3 情感分析到底有多准确:

    情感分析:即使对于人类来说,这也是一项非常艰巨的任务。也就是说,情感分析分类器可能不如其他类型的分类器那么精确。请记住,注释间协议非常低,机器从它们所提供的数据中学习(见上文)。

    你可能会说,这值得努力吗?答案很简单:确实值得!有可能情感预测会不时出错,但通过使用情感,对文本进行分类,可以再70-80%的时间内正确对待。

    如果您或您的公司之前没有使用过情绪分析,那么您会很快看到一些改进。对于典型的用例,例如票证路由,品牌监控和VoC分析(见下文),这意味着您将节省大量时间和金钱——现在可能投资于内部的手动处理——并提高你(或你公司的)生产力。

    展开全文
  • python机器学习——文本情感分析(英文文本情感分析)代码下载,代码完整可以运行。希望可以帮助到正在学习的伙伴们。
  • 自然语言处理实战视频教程,自然语言处理中重要的算法,词向量模型。本课程从语言模型入手,详解词向量构造原理与求解算法。理论与实战结合, 基于深度学习主流框架Tensorflow实例演示如何用深度学习来进行文本分类...
  • 读取csv或xlsx文件后对文本信息进行NLP情感分析并计算出情感的得分,越接近1越积极,越接近-1越消极
  • python实现中文自然语言处理情感分析
  • 情感分析自然语言处理中常见的场景,比如淘宝商品评价,饿了么外卖评价等,对于指导产品更新迭代具有关键性作用。通过情感分析,可以挖掘产品在各个维度的优劣,从而明确如何改进产品。比如对外卖评...
  • Faster 情感分析 一、数据预处理: FastText分类模型: 其他文本分类模型最大的不同之处在于其计算了输入句子的n-gram n-gram: 将文本里面的内容按照字节进行大小为n的滑动窗口操作,形成了长度是n的...
  • 自然语言处理实战——情感分析 从事软件开发行业二十余年,创业公司做过,上市公...
  • mark一下,感谢作者分享! 基于情感词典的中文自然语言处理情感分析(上): https://blog.csdn.net/valada/article/details/81024992 基于情感词典的中文自然语言处理情感分析(下): ...
  • 目前情感分析在中文自然语言处理中比较火热,很多场景下,我们都需要用到情感分析。比如,做金融产品量化交易的,需要根据爬取的舆论数据来分析政策和舆论对股市或者基金期货的态度;电商交易,根据买家的评论数据,...
  • 自然语言处理情感分析
  • Sentiment Analysis1_NLP_NLP情感分析_csvxlsx_Sentiment写入csv_文本分析_源码.rar.rar
  • 词云图 情感分析 LDA主题分析 机械压缩去词
  • NLP情感分析之情感分类

    万次阅读 多人点赞 2018-09-26 15:38:35
    情感分析(sentiment analysis)是近年来国内外研究的热点,其任务是帮助用户快速获取、整理和分析相关评价信息,对带有情感色彩的主观性文本进行分析、处理、归纳和推理。 情感分析包含较多的任务,如情感分类...
  • nlp情感分析经典书籍推荐A simple tutorial to analyse the sentiment of a book in Python 一个简单的教程,用Python分析一本书的情感 入门 (Getting Started) In this tutorial, I will show you how to apply ...
  • NLP】文本情感分析

    万次阅读 多人点赞 2021-11-20 09:16:57
    昨晚太晚代码还没有跑完,恰巧又遇到PSO-LSTM的准确率没办法复原,惨兮兮/(ㄒoㄒ)/,具体内容今天来补上 文本情感分析一、情感分析简介二、文本介绍及语料...文本情感分析(Sentiment Analysis)是自然语言处理NLP
  • 自然语言处理6 -- 情感分析

    万次阅读 多人点赞 2018-09-09 15:30:17
    情感分析自然语言处理中常见的场景,比如淘宝商品评价,饿了么外卖评价等,对于指导产品更新迭代具有关键性作用。通过情感分析,可以挖掘产品在各个维度的优劣,从而明确如何改进产品。比如对外卖评价,可以分析菜...
  • 自然语言处理(NLP)之使用LSTM进行文本情感分析 情感分析简介 文本情感分析(Sentiment Analysis)是自然语言处理NLP)方法中常见的应用,也是一个有趣的基本任务,尤其是以提炼文本情绪内容为目的的分类。它是对...
  • NLP基础:情感分析

    2022-05-04 00:27:49
    情感分析 ·最常用于微博、微信、用户论坛等语境下的短文本分析 ·大量的文本预处理技术需求[ 网页解析,文本抽取,正则表达式等 ] ·情感分析的特殊性 ·文本长度相对较短 ·语境比较独特 ·需要提取的信息量...
  • 情感分析自然语言处理中常见的场景,比如淘宝商品评价,饿了么外卖评价等,对于指导产品更新迭代具有关键性作用。通过情感分析,可以挖掘产品在各个维度的优劣,从而明确如何改进产品。比如对外卖评...
  • python nlp情感分析之极性分析

    千次阅读 2019-12-30 21:36:02
    最近与某高校新闻媒体学院合作进行大数据情感分析,学院老师要求采用情感字典进行情感极性分析,之前做项目情感分析都是采用深度模型做的,这次打算使用情感字典进行情感极性分析,并且以后可以用来收集数据。...
  • 作者:太子长琴,算法工程师,Datawhale成员文本分类是自然语言处理NLP)最基础核心的任务,或者换句话说,几乎所有NLP任务都是「分类」任务,或者涉及到「分类」概念。比如分词、词性...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,197
精华内容 11,278
关键字:

nlp情感分析