python什么是文本分析

Python023

python什么是文本分析,第1张

文本分析是指对文本的表示及其特征项的选取;文本分析是文本挖掘、信息检索的一个基本问题,它把从文本中抽取出的特征词进行量化来表示文本信息。

而Python有大量库,例如jieba、jingjia2等能够对文字进行分析。

通过对问半天呢内容的分析,能够在短时间知道一段文字的标签是什么,情感是什么等等。

题图来自 Camelot: List o’ 10 Intriguing Mythical Places

为获取LEED认证项目的评分表明细,可以从USGBC的项目页面上爬取,或者从pdf格式的项目评分表中解析得到。以 重庆某LEED EM:OB v2009 Gold项目 为例,USGBC上公布的 LEED项目得分表 其格式并不统一,利用XPath爬取后需要进一步清洗处理。相对而言,LEED项目所对应的 项目评分表PDF文件 的数据更为规范完整。因此考虑尝试解析出PDF文件中的表格,以便后续分析。

Python 处理PDF文件的程序包,pdfminer、tabula、pdfplumber、camelot……查询资料表明,似乎普遍认为pdfminer的效果不怎么好,而tabula需要java支持 ,想偷懒于是只试了pdfplumber和camelot。

安装过程不赘述,直接来看运行结果。

pdfplumber无法直接解析出Scorecard.pdf文件中的表格,但实际上要解决此问题也并非难事。调整下思路,可先解析出pdf文件中的文本,让后通过分列来得到表格。

利用pdfplumber的extract_text()命令可解析出pdf文件中的文本,但由于本次需要解析的得分表pdf文件的排版的原因,左右两个表格的文本行并未完全对齐,因此如果直接解析完整页面上的文本的话,文字会出错。先用corp()命令指定识别范围,然后再extract_text(),识别得到的文本列表如下所示。

对于类似本例中Scorecard.pdf表格排版有错位的情况,也可以按照表格在页面中所处的位置,指定表格识别的范围。所用到的指令:camelot.plot()可以绘制出页面的略图,table_area参数可以指定表格识别的范围。

又及,Camelot原来是亚瑟王和圆桌骑士们的宫殿所在地,和Asgard的Valhalla一样,也是传说中的圣域。搜索camelot程序安装包时无意中学到的,涨知识了。

[1] Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比

[2] 用Python提取pdf文件中的表格数据

[3] python读取pdf文件

[4] Github: pdfplumber

[5] Camelot: PDF Table Extraction for Humans

[6] ImageMagick Installation

[7] ImageMagick之PDF转换成图片(image)

[8] LEED 2009 for Existing Buildings: Operations &Maintenance

[9] Camelot - Wikipedia

[10] List o’ 10 Intriguing Mythical Places

[11] Camelot识别pdf表格时的参数设置补充

作者 | zhouyue65

来源 | 君泉计量

文本挖掘:从大量文本数据中抽取出有价值的知识,并且利用这些知识重新组织信息的过程。

一、语料库(Corpus)

语料库是我们要分析的所有文档的集合。

二、中文分词

2.1 概念:

中文分词(Chinese Word Segmentation):将一个汉字序列切分成一个一个单独的词。

eg:我的家乡是广东省湛江市-->我/的/家乡/是/广东省/湛江市

停用词(Stop Words):

数据处理时,需要过滤掉某些字或词

√泛滥的词,如web、网站等。

√语气助词、副词、介词、连接词等,如 的,地,得;

2.2 安装Jieba分词包:

最简单的方法是用CMD直接安装:输入pip install jieba,但是我的电脑上好像不行。

后来在这里:https://pypi.org/project/jieba/#files下载了jieba0.39解压缩后 放在Python36Libsite-packages里面,然后在用cmd,pip install jieba 就下载成功了,不知道是是什么原因。

然后我再anaconda 环境下也安装了jieba,先在Anaconda3Lib这个目录下将jieba0.39的解压缩文件放在里面,然后在Anaconda propt下输入 pip install jieba,如下图:

2.3 代码实战:

jieba最主要的方法是cut方法:

jieba.cut方法接受两个输入参数:

1) 第一个参数为需要分词的字符串

2)cut_all参数用来控制是否采用全模式

jieba.cut_for_search方法接受一个参数:需要分词的字符串,该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细

注意:待分词的字符串可以是gbk字符串、utf-8字符串或者unicode

jieba.cut以及jieba.cut_for_search返回的结构都是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode),也可以用list(jieba.cut(...))转化为list代码示例( 分词 )

输出结果为: 我 爱

Python

工信处

女干事

每月 经过 下属 科室 都 要 亲口

交代

24 口 交换机 等 技术性 器件 的 安装

工作

分词功能用于专业的场景:

会出现真武七截阵和天罡北斗阵被分成几个词。为了改善这个现象,我们用导入词库的方法。

但是,如果需要导入的单词很多,jieba.add_word()这样的添加词库的方法就不高效了。

我们可以用jieba.load_userdict(‘D:PDM2.2金庸武功招式.txt’)方法一次性导入整个词库,txt文件中为每行一个特定的词。

2.3.1 对大量文章进行分词

先搭建语料库:

分词后我们需要对信息处理,就是这个分词来源于哪个文章。

四、词频统计

3.1词频(Term Frequency):

某个词在该文档中出现的次数。

3.2利用Python进行词频统计

3.2.1 移除停用词的另一种方法,加if判断

代码中用到的一些常用方法:

分组统计:

判断一个数据框中的某一列的值是否包含一个数组中的任意一个值:

取反:(对布尔值)

四、词云绘制

词云(Word Cloud):是对文本中词频较高的分词,给与视觉上的突出,形成“关键词渲染”,从而国旅掉大量的文本信息,使浏览者一眼扫过就可以领略文本的主旨。

4.1 安装词云工具包

这个地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/ ,可以搜到基本上所有的Python库,进去根据自己的系统和Python的版本进行下载即可。

在python下安装很方便,在anaconda下安装费了点劲,最终将词云的文件放在C:UsersAdministrator 这个目录下才安装成功。

五、美化词云(词云放入某图片形象中)

六、关键词提取

结果如下:

七、关键词提取实现

词频(Term Frequency):指的是某一个给定的词在该文档中出现的次数。

计算公式: TF = 该次在文档中出现的次数

逆文档频率(Inverse Document Frequency):IDF就是每个词的权重,它的大小与一个词的常见程度成反比

计算公式:IDF = log(文档总数/(包含该词的文档数 - 1))

TF-IDF(Term Frequency-Inverse Document Frequency):权衡某个分词是否关键词的指标,该值越大,是关键词的可能性就越大。

计算公式:TF - IDF = TF * IDF

7.1文档向量化

7.2代码实战