给了一堆数据 用python做文本情感分析 但是课题要求是事先将无意义的评论去处 这要怎么做

给了一堆数据 用python做文本情感分析 但是课题要求是事先将无意义的评论去处 这要怎么做,第1张

既然你已经学到了数据分析,那么基本的语法应该大都知道了吧。

这无非就是筛选数据的问题,先搞清楚什么是“无意义的评论”,它满足什么条件,再遍历评论,如果满足这个“无意义”的条件,那么就删除掉就是了。

如果一个女人出轨了,男人怎么办?

一、控制脾气和情绪

在外遇这件事上,人的容忍度越低,人的污名就越高。所以,如果你的妻子出轨了,这一定令人难以忍受,怨恨,除非这个男人太怂。

但这时候,情绪控制首先是这种控制不是吞咽,而是不要把事态恶化。

首先,在这个时候你还没有决定结婚的趋势,情绪上可能导致事情失控。第二,在这个时候男人会有很高的暴力倾向,暴力最终不会有助于解决问题。

二、用男人的方式来解决问题

既然是男人,当然,我们应该以男人的方式解决这个问题。

当一些男人遇到一件事,他们发现了第三个和他们所爱的人的单位,这些都是不够的。用这种方法做,虽然这是合理的,但会使人们看不起他们,总之,这不像一个男人。

特别是,一个孩子的家庭,一个男人的责任感也体现在孩子身上,对未来经济增长的大惊小怪一定对孩子有害。所以,这一次要忍耐,这忍耐是人能忍受的,是真正的忍辱负重。

三、不要优柔寡断,拖泥带水

在外遇这个问题上,坦率地说,男人更难消除。所以,男人处理婚外情的最好方法,要么选择原谅,要么让过去的事过去,他吞下了苦;或者没有,那就好聚好散。

最怕的就是黏黏糊糊,今天,说服自己原谅,明天的耻辱又会出现,想要离婚。

当然,宽恕有一个重要前提,另一个是错误和回报,离婚有重要的问题,也就是说离婚应该是坚定的,不在嘴里。最极端的是婚姻没有离婚,但我不原谅你。这对双方都是一种折磨。《失乐园》中的凛子知道丈夫出轨后,这是复仇的凛子的方法。

四、用更加优秀来证明自己

我们在影视文学作品中看过很多这样的桥段了,一个背叛和艰辛的人,努力,最终取得成功——这是对男人背叛的最好方法。

毕竟,背叛是另一个人对你的否定,不管她是否是恶意的,总之,在男人的心里,自信心、自尊心等都受到了沉重打击。

人争一口气,所以你要努力。

有人说,特别想报复对方,报复第三者,我觉得,有点血性的男人都会这么想。但是,怎么样才是最好的报复呢?那就是让自己变得更加优秀。

不离婚的情况下,你的更加优秀有助于自己找回自信和尊严,有助于更好地掌控婚姻关系;如果是离婚的结果,那么你的更加优秀,就是对前任最彻底的打脸!

所以,如果男人遭遇了外遇,给自己一点时间去决定,到底是继续,还是离婚——如果继续,就拿出足够的包容;如果离婚,就当机立断。做出了决定,就踏踏实实努力,用余生来证明自己——你的背叛,是瞎了眼。

目前常见的分析方法有:

1高频词分析(有专门的软件,如ROST);

2情感分析(多用于对旅游目的地形象分析);

3满意度分析(最近看的一篇文章用KANO模型结合文本做的分析)

4共词分析(例如分析多篇文章的关键词,使用共词矩阵,社会网络分析等)

4时空分析(游客路径和时空共现等等,这里面也有很多分析用到的是照片的分析)

注意:文本处理起来很繁琐,特别是有些意义相近的词,全都要进行清洗。

计算情感分析得分函数是预处理文本数据。

1、预处理文本数据,如去除停用词、标点符号等,进行分词和词性标注,将文本转化为计算机可处理的形式。

2、构建情感词典或使用现有的情感词典,将文本中的词语与情感词典进行匹配,计算文本中包含正面、负面和中性情感词汇的数量和权重。

3、根据算法模型,计算文本的情感极性得分,通常使用的是情感极性得分的加权平均值或者概率值。

人工智能产品的定义较为广泛,智能硬件、机器人、芯片、语音助手等都可以叫做人工智能产品。本文讨论的人工智能产品主要是指在互联网产品中运用人工智能技术。

互联网产品主要着手与解决用户的痛点,对于C端产品来说,痛点就是指的个人想解决而无法解决的问题,如个人想要美化自己的照片,但是他不会复杂的PS软件,于是美图秀秀就可以解决这个痛点。从KANO模型中,就是满足用户的基本需求与期望需求。

人工智能产品(在互联网产品中运用人工智能技术)则是要满足用户的兴奋需求。如将情感分析运用到电商的产品评论中,用户则可以通过可视化的数据展示来大致对产品有个全面、直观的了解,而不再需要自己一页一页的翻看评论内容。

互联网产品主要关注点在于用户需求、流程设计、交互设计、商业模式等。着眼于用户需求,设计满足用户需求的产品,通过合理的流程设计、交互设计达到产品目标,进而实现商业目标。典型的思路是发现用户需求——>设计满足用户需求的产品——>迭代完善、产品运营——>商业变现。

人工智能产品关注点在于模型的构建,它不再是对于布局、交互的推敲,而是通过选择合适的数据,构建合适的模型,最终呈现出来的是好的效果。什么是好的效果呢?这就需要引入评测指标。互联网的评测指标有我们熟知的留存率、转化率、日活跃等,那么人工智能的产品主要是通过一些统计指标来描述,以情感分析为例,把情感分析看成一个分类问题,则可以使用P、R、A、F值来描述。

1)查准率(Precision):P值,衡量某类分类中识别正确的比例,如情感分析中,有10条被分类为“正向”,其中8条是分类正确的(由人工审核),那么P=8/10=80%

2)查全率(Recall):R值,又叫查全率,又叫召回度,指的是某类被被正确分类的比例,同样以情感分析为例,100条数据中有10条是正向的,机器分类后,这10条中有7条被分类为正向,则R=7/10=70%

3)F值,因为P值和R值通常是两个相互矛盾的指标,即一个越高另一个越低,F则是两者综合考虑的指标,不考虑调节P、R权重的情况下,F=2PR/(P+R)

4)精确度(Accuracy):这个最好理解,就是被准确分类的比例,也就是正确率。如100条数据,90条是被正确分类的,则A=90/100=90%。

以上指标越高,说明模型效果越好。

我们从上面内容可以知道,人工智能产品设计关注:数据——>模型——>效果评估。

现在我们以情感分析为例子说明产品设计的过程。

1)数据:

数据的选择对最终模型的结果有直接影响,情感分析,根据不同的目的,选择的数据也不同。如将情感分析运用于**票房预测,则一些更新及时、内容丰富的数据源,如微博,是比较好的选择。如果是应用于商品的评价,如电子产品,很多评测内容是无法在短短几句话内描述清楚的,这时候微博不是个好的选择,选择论坛上更新较慢、但是详细的内容就比较适合。

如果能在产品的早期就有引入人工智能的打算,则可以在产品中事先做好数据采集。

2)模型:

在选择模型中,产品需要了解不同的模型的优缺点,进而选择更加合适的模型。在情感分析中,NB、SVM、N-gram都是常用的模型,其中SVM效果最好(这是已有的结论),如果是其他的智能产品,可能需要算法团队进行实验,给出测试数据,进而选择合适的模型。

3)效果评估:

效果评估在上文中已经描述得比较清楚,具体指标不再赘述。

4)产品呈现:

最后这一步,是将结果展示给用户。在情感分析中,我们可以选择雷达图、词云、情感趋势图来展示结果。取决于产品属性,如电商产品评论挖掘,可以使用词云;

如舆论分析,可以使用情感趋势图。

人工智能产品的设计要关注:数据、模型、评判、呈现。

http://minieastdaycom/bdmip/180414224336264html

在这篇文章中,主要介绍的内容有:

1、将单词转换为特征向量

2、TF-IDF计算单词关联度

文本的预处理和分词。

如何将单词等分类数据转成为数值格式,以方便我们后面使用机器学习来训练模型。

一、将单词转换为特征向量

词袋模型(bag-of-words model):将文本以数值特征向量的形式来表示。主要通过两个步骤来实现词袋模型:

1、为整个文档集(包含了许多的文档)上的每个单词创建一个唯一的标记。

2、为每个文档构建一个特征向量,主要包含每个单词在文档上的出现次数。

注意:由于每个文档中出现的单词数量只是整个文档集中很少的一部分,因此会有很多的单词没有出现过,就会被标记为0。所以,特征向量中大多数的元素就会为0,就会产生稀疏矩阵。

下面通过sklearn的CountVectorizer来实现一个词袋模型,将文档转换成为特征向量

通过countvocabulary_我们可以看出每个单词所对应的索引位置,每一个句子都是由一个6维的特征向量所组成。其中,第一列的索引为0,对应单词"and","and"在第一和二条句子中没有出现过,所以为0,在第三条句子中出现过一些,所以为1。特征向量中的值也被称为原始词频(raw term frequency)简写为tf(t,d),表示在文档d中词汇t的出现次数。

注意:在上面词袋模型中,我们是使用单个的单词来构建词向量,这样的序列被称为1元组(1-gram)或单元组(unigram)模型。除了一元组以外,我们还可以构建n元组(n-gram)。n元组模型中的n取值与特定的应用场景有关,如在反垃圾邮件中,n的值为3或4的n元组可以获得比较好的效果。下面举例说明一下n元组,如在"the weather is sweet"这句话中,

1元组:"the"、"weather"、"is"、"sweet"。

2元组:"the weather"、"weather is"、"is sweet"。

在sklearn中,可以设置CountVecorizer中的ngram_range参数来构建不同的n元组模型,默认ngram_range=(1,1)。

sklearn通过CountVecorizer构建2元组

二、TF-IDF计算单词关联度

在使用上面的方法来构建词向量的时候可能会遇到一个问题:一个单词在不同类型的文档中都出现,这种类型的单词其实是不具备文档类型的区分能力。我们通过TF-IDF算法来构建词向量,从而来克服这个问题。

词频-逆文档频率(TF-IDF,term frequency-inverse document frequency):tf-idf可以定义为词频×逆文档频率

其中tf(t,d)表示单词t在文档d中的出现次数,idf(t,d)为逆文档频率,计算公式如下

其中,nd表示文档的总数,df(t,d)表示包含单词t的文档d的数量。分母中加入常数1,是为了防止df(t,d)=0的情况,导致分母为0。取log的目的是保证当df(t,d)很小的时候,不会导致idf(t,d)过大。

通过sklearn的TfidfTransformer和CountVectorizer来计算tf-idf

可以发现"is"(第二列)和"the"(第六列),它们在三个句子中都出现过,它们对于文档的分类所提供的信息并不会很多,所以它们的tf-idf的值相对来说都是比较小的。

注意:sklearn中的TfidfTransformer的TF-IDF的计算与我们上面所定义TF-IDF的公式有所不同,sklearn的TF-IDF计算公式

通常在计算TF-IDF之前,会对原始词频tf(t,d)做归一化处理,TfidfTransformer是直接对tf-idf做归一化。TfidfTransformer默认使用L2归一化,它通过与一个未归一化特征向量L2范数的比值,使得返回向量的长度为1,计算公式如下:

下面通过一个例子来说明sklearn中的TfidfTransformer的tf-idf的计算过程,以上面的第一句话"The sun is shining"为例子

1、计算原始词频

a、单词所对应的下标

b、计算第三句话的原始词频tf(t,d)

c、计算逆文档频率idf(t,d)

注意:其他的词在计算tf-idf都是0,因为原始词频为0,所以就不需要计算idf了,log是以自然数e为底。

d、计算tf-idf

所以,第一个句子的tf-idf特征向量为[0,1,129,129,0,1,0]

e、tf-idf的L2归一化

本次实验将加载两个数据,一个是已经标注好的用户评论数据,另外一个是用户评价主题句,通过标注过的用户评论数据进行基于集成模型的情感极性模型训练,然后利用模型对主题句进行情感极性推理,最后通过数据聚合可视化得出主题情感极性。

使用 Pandas 加载在线数据表格,并查看数据维度和前 5 行数据。

数据属性如下表所示

加载我们之前通过主题词典提取出来的主题句。

数据属性如下表所示

用户评论分词

jieba 分词器预热,第一次使用需要加载字典和缓存,通过结果看出返回的是分词的列表。

批量对用户评价进行分词,需要一些时间,并打印第一行情感极性训练集的分词结果。

批量对用户评价主题句进行分词,并打印第一句用户主题句分词结果。

依据统计学模型假设,假设用户评论中的词语之间相互独立,用户评价中的每一个词语都是一个特征,我们直接使用 TF-IDF 对用户评价提取特征,并对提取特征后的用户评价输入分类模型进行分类,将类别输出为积极的概率作为用户极性映射即可。

用户评论向量化

TF-IDF 是一种用于信息检索与数据挖掘的常用加权技术,当某个词在文章中的TF-IDF越大,那么一般而言这个词在这篇文章的重要性会越高,比较适合对用户评论中的关键词进行量化。

数据集合划分

按照训练集 8 成和测试集 2 成的比例对数据集进行划分,并检查划分之后的数据集数量。

我们在系列实验的开始使用朴素贝叶斯模型来训练情感分析模型,下面我们新增逻辑回归模型作为对比模型。逻辑回归(Logistic Regression)是一种用于解决二分类问题的机器学习方法,在线性回归的基础上,套用了一个 sigmod 函数,这个函数将线性结果映射到一个概率区间,并且通常以 05 分界线,这就使得数据的分类结果都趋向于在 0 和 1 两端,将用户评论进行向量化之后也可以用此方式预测用户情感。本实验直接对标注过的用户情感数据进行训练,并验证单一模型和集成模型在情感分析性能上的差异。

模型加载

通过传入原始的标签和预测的标签可以直接将分类器性能进行度量,利用常用的分类模型评价指标对训练好的模型进行模型评价,accuracy_score 评价被正确预测的样本占总样本的比例,Precision 是衡量模型精确率的指标,它是指模型识别出的文档数与识别的文档总数的比率,衡量的是模型的查准率。Recall 召回率也称为敏感度,它是指模型识别出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率,表示正样本在被正确划分样本中所占的比例,f1_score 值是精确率与召回率的调和平均数,是一个综合性的指数。

我们分别对不同模型使用相同的数据集进行训练和测试,以此来比较单模型之间的差异,并打印模型运行时间供大家参考,批量处理不同的模型需要一些时间进行计算,清耐心等待。

通过求得的指标进行模型评价,我们发现使用相同的数据进行模型训练,朴素贝叶斯模型和逻辑回归模型性能基本持平,相差很微弱,逻辑回归稍稍占一些优势。

Stacking 堆栈模型训练

集成学习是地结合来自两个或多个基本机器学习算法的优势,学习如何最好地结合来自多个性能良好的机器学习模型的预测结果,并作出比集成中的任何一个模型更好的预测。主要分为 Bagging, Boosting 和 Stacking,Stacking 堆栈模型是集成机器学习模型的一种,具体是将训练好的所有基模型对整个训练集进行预测,然后将每个模型输出的预测结果合并为新的特征,并加以训练。主要能降低模型的过拟合风险,提高模型的准确度。

开始对两个模型进行集成训练,训练的时间要比单一模型时间久一些,清耐心等待。

评测结果收集。

结果分析

将结果存入 Dataframe 进行结果分析,lr 表示逻辑回归,nb 表示朴素贝叶斯,model_stacking 将两个单模型集成后的模型。从结果来看集成模型准确度和 f1 值都是最高的,结合两个模型的优势,整体预测性能更好,鲁棒性更好。

样例测试

通过测试样例发现,分类器对正常的积极和消极判断比较好。但是当我们改变语义信息,情感模型则不能进行识别,模型鲁棒性较差。作为早期的文本分类模型,我们使用 TFIDF 的特征提取方式并不能很好的解决语义问题,自然语言是带有语序和语义的关联,其词语之间的关联关系影响整句话的情感极性,后续我们继续试验深度情感分析模型研究解决此类问题。

加载民宿主题数据。

模型预测

将情感分析模型推理的结果写入 DataFrame 中进行聚合。

单主题聚合分析

挑选一个主题进行主题情感分析。

对民宿“设施”进行描述统计,此次我们使用主题词典的出来的用户关于民宿“设施”主体的讨论条数为 4628 条,平均用户情感极性为 040 表示为整体呈现不满意的情况,有超过一半的关于“设施”的民宿评论中表现用户不满意的情况,重庆民宿需要在“设施”进行改善,以此提高用户满意度。

单主题情感极性可视化

我们开始进行“设置”主题下的用户主题情感进行可视化,首先加载画图模块。

对“设施”主题下的用户情感极性进行可视化,我们利用集成模型对主题句进行情感极性预测,如下所示。

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/qinggan/755722.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-09
下一篇2023-07-09

发表评论

登录后才能评论

评论列表(0条)

    保存