文本数据挖掘与Python应用 课件 第7章 利用Python处理文本数据简单应用_第1页
文本数据挖掘与Python应用 课件 第7章 利用Python处理文本数据简单应用_第2页
文本数据挖掘与Python应用 课件 第7章 利用Python处理文本数据简单应用_第3页
文本数据挖掘与Python应用 课件 第7章 利用Python处理文本数据简单应用_第4页
文本数据挖掘与Python应用 课件 第7章 利用Python处理文本数据简单应用_第5页
已阅读5页,还剩27页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章

利用Python处理文本数据简单应用7.1情感分析

情感分析原理为了说明中文文本情感分析的原理,下面通过一个例子进行说明。比如这么一句话:“这手机的画面极好,操作也比较流畅。不过拍照真的太烂了!系统也不好。”

1.情感词要分析一句话是积极的还是消极的,最简单最基础的方法就是找出句子里面的情感词,积极的情感词比如:赞、好、顺手、华丽等;消极情感词比如:差、烂,坏、坑爹等。出现一个积极词就+1,出现一个消极词就-1。里面就有“好”,“流畅”两个积极情感词,“烂”是一个消极情感词。那它的情感分值就是1+1-1+1=2。很明显这个分值是不合理的,下面一步步修改它。7.1情感分析

2.程度词“好”,“流畅”和“烂”前面都有一个程度修饰词。“极好”就比“较好”或者“好”的情感更强,“太烂”也比“有点烂”情感强得多。所以需要在找到情感词后往前找一下有没有程度修饰,并给不同的程度一个权值。比如“极”、“无比”、“太”就要把情感分值定义为4,“较”、“还算”就要情感分值定义为2,像“只算”,“仅仅”的感情分值可以定义为0.5。那么这句话的情感分值就是:4*1+1*2-1*4+1=3。

3.感叹号可以发现太烂了后面有感叹号,叹号意味着情感强烈。因此发现叹号可以为情感值+2。那么这句话的情感分值就变成了:4*1+1*2-1*4-2+1=17.1情感分析

4.否定词其实我们一眼就看出最后面那个“好”并不是表示“好”,因为前面还有一个“不”字。所以在找到情感词的时候,需要往前找否定词。比如“不”,“不能”这些词。而且还要数这些否定词出现的次数,如果是单数,情感分值就取-1,但如果是偶数,那情感就没有反转,还是取1。在这句话里面,可以看出“好”前面只有一个“不”,所以“好”的情感值应该反转,取值为-1。因此这句话的准确情感分值是:4*1+1*2-1*4-2+1*-1=-17.1情感分析

5.积极和消极分开来再接下来,很明显就可以看出,这句话里面有褒有贬,不能用一个分值来表示它的情感倾向。而且这个权值的设置也会影响最终的情感分值,敏感度太高了。因此对这句话的最终处理,是得出这句话的一个积极分值,一个消极分值(这样消极分值也是正数,无需使用负数了)。它们同时代表了这句话的情感倾向。所以这句评论应该是:“积极分值”为6,“消极分值”为7。

6.以分句的情感为基础一条评论的情感分值是由不同的分句加起来的,因此要得到一条评论的情感分值,就要先计算出评论中每个句子的情感分值。比如对某一观点的评论有四个分句,其结构[积极分值,消极分值],四个分句的分值分别为:[[4,0],[2,0],[0,6],[0,1]]

,则对该观点评论的“积极分”值为:4+2+0+0=6;“消极分”值为:0+0+6+1=7。7.1情感分析算法设计step1读取评论数据,对评论进行分句。step2查找对分句的情感词,记录积极还是消极,以及位置。step3往情感词前查找程度词,找到就停止搜寻。为程度词设权值,乘以情感值。step4往情感词前查找否定词,找到全部否定词,若数量为奇数,乘以-1,若为偶数,乘以1。step5判断分句结尾是否有感叹号,有叹号则往前寻找情感词,有则相应的情感值+2。step6计算完一条评论所有分句的情感值,用数组(list)记录起来。step7计算并记录所有评论的情感值。step8通过分句计算每条评论的积极情感均值,消极情感均值,积极情感方差,消极情感方差。7.1情感分析算法实现例7.1用Python实现对一段评论文本的情感分析。importjiebaimportnumpyasnp#打开词典文件,返回列表defopen_dict(Dict='hahah',path=r'/D://python3/'):path=path+'%s.txt'%Dictdictionary=open(path,'r',encoding='utf-8')dict=[]程序中调用了D://python3sy/下的四个文本文件positive.txt、negative.txt、程度级别词语.txt和否定词.txt。从得分我们看到第一段话是消极的,第二段是积极的。(主要看Pos与Neg大小)。7.2自动生成关键词和摘要TextRank算法可以用来从文本中生成关键词和摘要(重要的句子)。

TextRank算法TextRank算法基于PageRank,用于为文本生成关键字和摘要。

1.PageRank算法PageRank最开始用来计算网页的重要性。整个www可以看作一张有向图,节点是网页。如果网页A存在到网页B的链接,那么有一条从网页A指向网页B的有向边。构造完图后,使用下面的公式:S(Vi)是网页i的中重要性(PR值)。d是阻尼系数,一般设置为0.85。In(Vi)是存在指向网页i链接的网页集合。|Out(Vj)|是集合中元素的个数。PageRank需要使用上面的公式多次迭代才能得到结果。7.2自动生成关键词和摘要例7.2网页链接如图所示。上图表示了三张网页之间的链接关系,直觉上网页A最重要。可以得到下表所示的表。结束\起始ABCA011B000C0007.2自动生成关键词和摘要横栏代表起始的节点,纵栏代表结束的节点。若两个节点间有链接关系,对应的值为1。根据公式,需要将每一竖栏归一化(每个元素/元素之和),归一化的结果如上表所示。上面的结果构成矩阵M。我们用Python编程迭代100次可以得到最后每个网页的重要性。7.2自动生成关键词和摘要

2.TextRank4ZHTextRank4ZH是针对中文文本的TextRank算法的python算法实现。类TextRank4Keyword、TextRank4Sentence在处理一段文本时会将文本拆分成4种格式:sentences:由句子组成的列表。words_no_filter:对sentences中每个句子分词而得到的两级列表。words_no_stop_words:去掉words_no_filter中的停止词而得到的二维列表。words_all_filters:保留words_no_stop_words中指定词性的单词而得到的二维列表。

例7.3对于文本“这间酒店位于北京东三环,里面摆放很多雕塑,文艺气息十足。答谢宴于晚上8点开始。敬请各位按时参加。”的拆分。7.2自动生成关键词和摘要

7.2自动生成关键词和摘要

生成关键词和摘要使用TextRank生成中文文本关键字和摘要。1.生成关键字将原文本拆分为句子,在每个句子中过滤掉停用词(可选),并只保留指定词性的词汇(可选)。由此可以得到句子的集合和词汇的集合。每个词汇作为pagerank中的一个节点。设定窗口大小为k,假设一个句子依次由下面的词汇组成:w1,w2,…,wn;而[w1,w2,…,wk+1]、[w2,…,wk+2]、[w3,w4,…,wk+3]、…等都是一个窗口。在一个窗口中的任两个词汇对应的节点之间存在一个无向无权的边。基于上面构成图,可以计算出每个词汇节点的重要性,即可以确定若干词汇作为关键词。

例7.4提取中文文本D://python3sy/002.txt的关键词。7.2自动生成关键词和摘要

7.2自动生成关键词和摘要

2.生成摘要将每个句子看成图中的一个节点,若两个句子之间有相似性,则可以认为对应的两个节点之间有一个无向有权边,权值是相似度。通过pagerank算法计算得到的重要性最高的若干句子可以当作摘要。

例7.5提取中文文本D://python3sy/002.txt的摘要。7.3使用SnowNLP进行商品评价

SnowNLP是一个Python中文文本处理库,它内置了中文词库,使用这个库就可以直接处理中文。SnowNLP库简介SnowNLP是一个Python写的类库,可以方便的处理中文文本内容。SnowNLP库一般对于商品买卖具有比较好的分析效果,调用简单方便,无需顾及中文分词和创建各种NLP模型即可进行分析。

1.SnowNLP主要功能

(1)分词fromsnownlpimportSnowNLP

text='自然语言处理是一门融语言学,它是融计算机科学、数学于一体的科学。's=SnowNLP(text)print(s.words)7.3使用SnowNLP进行商品评价(2)词性标注SnowNLP给每个词标注上词性。fromsnownlpimportSnowNLPtext='自然语言处理是一门融语言学,它是计算机科学、数学融于一体的科学。's=SnowNLP(text)tags=[xforxins.tags]print("")print(tags)7.3使用SnowNLP进行商品评价(3)断句SnowNLP根据标点符号,给一段文本分句。fromsnownlpimportSnowNLPtext='自然语言处理是一门融语言学,它是融于计算机科学、数学于一体的科学。's=SnowNLP(text)print("")print(s.sentences)7.3使用SnowNLP进行商品评价(3)商品评价分值利用SnowNLP可以获得商品评价,输出一个“0”到“1”之间的一个评价分值。fromsnownlpimportSnowNLPtext1='这次购买的包包还不错,服务也比较好。'text2='新买的这个包包烂透了,服务态度也不好。's1=SnowNLP(text1)s2=SnowNLP(text2)print("")print(text1,s1.sentiments)print(text2,s2.sentiments)7.3使用SnowNLP进行商品评价(4)拼音利用SnowNLP可以得到每个汉字的拼音。fromsnownlpimportSnowNLPtext='自然语言处理是一门融语言学、计算机科学、数学于一体的科学。's=SnowNLP(text)print("")print(s.pinyin)7.3使用SnowNLP进行商品评价(5)繁体转简体SnowNLP具有把汉语繁体字转化为简化字的功能。fromsnownlpimportSnowNLPtext='凱風飄陰雲,白日揚素暉。良友掃我游,高會宴中闈。's=SnowNLP(text)print("")print(s.han)7.3使用SnowNLP进行商品评价(6)关键字抽取可以利用SnowNLP抽取个关键词,下面例子是抽取10个关键词。fromsnownlpimportSnowNLPimportsysimportcodecstext=codecs.open('D://python3sy/002.txt','r','utf-8').read()s=SnowNLP(text)print("")print(s.keywords(limit=10))7.3使用SnowNLP进行商品评价(7)提取主题语句可以利用SnowNLP可以提取主题语句,下面例子抽取4个主题语句。fromsnownlpimportSnowNLPimportsysimportcodecstext=codecs.open('D://python3sy/002.txt','r','utf-8').read()s=SnowNLP(text)print("")print(s.summary(limit=4))7.3使用SnowNLP进行商品评价

(8)词语信息量TF-IDF是一种统计方法,用以评估一字词汇对于一个文件集或一个语料库中的其中一份文件的重要程度。可以利用SnowNLP计算TF和IDF的值。下面例子中假设五个文档向量:['性格','善良']、['温柔','善良','善良']、['温柔','善良']、['好人']、['性格','善良']。fromsnownlpimportSnowNLPs=SnowNLP([['性格','善良'],['温柔','善良','善良'],['温柔','善良'],['好人'],['性格','善良'],])#假设的五个文档向量print("TF的值:")print(s.tf)print("IDF的值:")print(s.idf)7.3使用SnowNLP进行商品评价

(9)文本相似性可以利用SnowNLP计算词汇和文档的相似度。fromsnownlpimportSnowNLPs=SnowNLP([['性格','善良'],['温柔','善良','善良'],['温柔','善良'],['好人'],['性格','善良'],])print("词汇'温柔'和五个文档相似度分别为:")print(s.sim(['温柔']))print("词汇'好人'和五个文档相似度分别为:")print(s.sim(['好人']))7.3使用SnowNLP进行商品评价

2.Jieba与SnowNLP简单比较Jieba与SnowNLP在处理中文文本上有些功能相同,下面通过实例进行处理质量的对比。

(1)分词对比SnowNLP返回一个列表,直接打印出来即可。fromsnownlpimportSnowNLPs=SnowNLP('这个商品很赞')print(s.words)Jieba.cut返回一个生成器。importjiebas=list(jieba.cut('这个东西很赞'))print(s)7.3使用SnowNLP进行商品评价(2)关键字抽取下面是是利用Jieba进行关键字抽取的程序段。为了与SnowNLP关键字抽取进行比较,选取与1.中(6)实验的相同文本数据集。importjiebaimportjieba.analyseimportsysimportcodecstext=codecs.open('D://python3sy/002.txt','r','utf-8').read()s=jieba.analyse.extract_tags(text,topK=10)print(s)

7.3使用SnowNLP进行商品评价源文档都是利用D://python3sy/002.txt,通过和实验结果的图7.13中SnowNLP关键字抽取结果对比,结合源文档的实际内容分析,Jieba关键字抽取结果略优于SnowNLP关键字抽取结果。但是SnowNLP有些功能是Jieba不能实现的,如汉字标注和商品评价分值等。SnowNLP商品评价SnowNLP是用Python写的个中文情感分析的包,自带了中文正负情感的训练集和主要用于评论的语料库,可以用于对商品评论的分析。

例7.6对商品评论文本文件D://python3sy/taobao.txt进行评价。Taobao.txt部分客户评论内容如图所示。

7.3使用SnowNLP进行商品评

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论