HTML5技术

《人民的名义》---简单的文本分析 - 视野

字号+ 作者:H5之家 来源:H5之家 2017-04-22 18:00 我要评论( )

我们都知道进行自然语言处理的第一步就是分词,下面使用jieba模块对最近比较热的电视剧《人民的名义》进行分词,并对它进行一些简单的文本分析。 一、jieba模块中常用的方法说明(github): 1.分词: 最近学习python爬虫,为了练习一下,在书本网上爬去《人

     我们都知道进行自然语言处理的第一步就是分词,下面使用jieba模块对最近比较热的电视剧《人民的名义》进行分词,并对它进行一些简单的文本分析。

一、jieba模块中常用的方法说明(github):

1.分词:

最近学习python爬虫,为了练习一下,在书本网上爬去《人民的名义》,代码如下:

Created on Sun Apr 16 16:24:32 2017 4 python爬去小说--人民的名义 5 @author: whb urllib2 as p 8 import re 9 from bs4 import BeautifulSoup find_html(url): 12 html=p.urlopen(url).read() ) 14 cont=re.findall(reg,html) 15 url=[x[0] for x in cont] 16 name=[x[1] for x in cont] 17 return [name,url] search_content(url_list): 20 html=p.urlopen(url_list).read() 21 soup=BeautifulSoup(html) ) 23 return content save_content(url): 26 name,url=find_html(url) 27 for i in xrange(len(url)): 28 try: +str(name[i]) ,) +str(url[i]) 32 content=search_content(url_list) 33 print dir(content) 34 for x in xrange(len(content)-1): 35 txt=content[x].string ,))# 37 f.close() 38 except IOError: +str(name[i]) ==: save_content(url)

python爬去小说--人民的名义

下面使用jieba.cut()方法对小说进行分词,结果发现一些小说中的名词的分词不如愿,例如如下:

.join(jieba.cut("str"))

/侯亮/平/代表/反贪/总局/发出/的/抓捕/令/不能/忽视/,/万一出/问题/,/责任/在/我们/省/反贪局/啊/!/季/昌明/却/坚持/向/省委/副/书记/兼/政法委/书记/高育良/汇报/。

原因在于:在分词原理是按照最大概率法来分词,因为单字有一定概率,而“没有侯亮平,季昌明”等这些名词不含词典中,所以会被切割成单字。

提高分词的精准度的方法:自定义添加词典:jieba.load_userdict(file_name)

注:file_name的格式:1.每一行有三部分组成:1词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。2.file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码(在保存user_dict.txt文件时,另存为UTF-8编码格式即可)。3.词频省略时使用自动计算的能保证分出该词的词频

二、关键词提取的算法 1.基于 TF-IDF 算法

      基本原理:提取重要的词条,过滤常见的词语。TF(team frequency)表示词频=(词语在文章中出现的次数之和)/(文章中的词语之和);IDF(Inverse document frequency)反文档频率=log((语料库中总文档之和)/(语料库中包含该词语的文档之和 )).最后它们的乘积为该词条的权重。

     优点:简单易实现,但有时精度不高。缺点:不能区分词条的位置信息,在一篇文章中,有时往往是首段与尾段的权重比中间的词条权重大一些。没有反映词条的分布情况。

  import jieba.analyse
  • jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
  • jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 实例,idf_path 为 IDF 频率文件
  • 关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径

  • 用法: jieba.analyse.set_idf_path(file_name) # file_name为自定义语料库的路径
  • ).read() ); 3 tags = jieba.analyse.extract_tags(content, topK=topK) .join(tags))

  • 关键词提取所使用停止词(Stop Words)文本语料库可以切换成自定义语料库的路径

  • 用法: jieba.analyse.set_stop_words(file_name) # file_name为自定义语料库的路径
  • ).read() ) ); 4 tags = jieba.analyse.extract_tags(content, topK=topK) .join(tags))

    停止词

    2.基于 TextRank 算法
  • jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) 直接使用,接口相同,注意默认过滤词性。
  • jieba.analyse.TextRank() 新建自定义 TextRank 实例
  •  基本思想:

    1 import jieba.posseg as pseg ) 3 for word, flag in words: % (word, flag)) 5 ... 6 我 r 7 爱 v 8 北京 ns 9 天安门 ns

    三、可视化

    1.云词图(使用wordcloud模块)

     

    从云词图中,我们可以看出:侯亮平,高育良,李达康,祁同伟等这些主要角色词条较大,符合小说的实际情况。

     2.待续中。。。。

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(三) - 反骨仔(二五仔)

      [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(三) - 反

      2017-04-02 11:00

    • 设计模式(0)简单工厂模式 - Fonour

      设计模式(0)简单工厂模式 - Fonour

      2017-03-25 15:01

    • DapperPoco -- 基于Dapper的、轻量级的、高性能的、简单的、灵活的ORM框架 - Frank.Cui

      DapperPoco -- 基于Dapper的、轻量级的、高性能的、简单的、灵活的OR

      2017-03-18 14:07

    • 基于 socket.io, 简单实现多平台类似你猜我画 socket 数据传输 - HOWIE-CH

      基于 socket.io, 简单实现多平台类似你猜我画 socket 数据传输 - HO

      2017-03-09 17:00

    网友点评
    a