基于Python的文本分析方法研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Python的文本分析方法研究
李泽,古超,龙政
(西南林业大学图书馆,昆明650224)
摘要:随着大数据技术的发展,可获取的信息量变得越来越大,通过文本挖掘的方法可以快速提取 海量文献中的有用信息,追踪热点,在文献挖掘和情报获取方面被广泛应用。Python编程语言可以做到 快速高效地对不同语言的文献进行词频统计,获取高频词,从而体现文献资料中的主旨。
关键词:文本挖掘;情报获取;Python编程
1概述
Python是一种面向对象编程语言袁语法简洁清晰,是目前最受欢迎的一种编程语言。虽然Python可能被 粗略地分类为“脚本语言”(script language),但实际 上一些大规模软件开发计划例如Zope、Mnet及BitTor-rent,Google也广泛地使用它。Python的支持者较喜欢 称它为一种高级动态编程语言,原因是“脚本语言”泛 指仅作简单程序设计任务的语言,如shellscript、VBScript 等只能处理简单任务的编程语言 ,并不能与 Python相提并论。Python由于包含有丰富的库功能,可以和其他高级语言很广泛地结合11]。该语言是编程语言 中最容易人门的语言,其应用领域包括了后台开发、图像处理、数据挖掘、数据分析、机器学习、神经网络、自然语言处理等[2]。由于Python在科学计算和自然语言 分析方面有着高效、精确的优点,因此在文本挖掘领域 有着广泛的应用。对于NLP (自然语言)来说,分词是 一步重要的工作,导人Python的jieba库功能,可以准 确地对文本内容进行分词。
2数据源和方法
选取途牛网上的旅游用户对于“玉龙雪山纯玩一 曰游”的评论来进行文本分析,从评论文本中提取高 频关键词,体现游客对于景点和旅游途中感知的关注 热点。首先将网络用户的评论存储为文本,然后采用 分词、词频统计的方式获取文本中的高频词,使用停 词表、自定义词表的方式对统计的结果进行优化。最 终得到的结果能直观体现游客们在旅游过程中所关注 的热点,反映出旅游景点的服务好坏。编程平台选择 Python3.6的版本,在Python的官方网站可以直接下载 安装,在安装的过程中可以选择设置环境变量,其他 的引用库在编程的时候依据所需可以用pip install命令在线安装。
3 Jieba分词和词频统计
使用Jieha分词,可以使用其开源的代码,简单易 用。在导人Jieba之前,需要使用pip命令安装Jieba,在 程序中用import命令来导人。如果要对两会的报告分 析,首先将两会的报告内容存储在两个文本中,分别命 名,例如在程序用使用filename=野评论.txt”来对文件 名进行赋值。
对文件名进行赋值以后,就要读取文件,并进行分 词处理了。实例中,可以定义一个函数fenci (filename)来打开文件,在函数中写人f=open (filename,'r+')和file_list = f.read〇来打开文本,并设置该文件属性为可 读,将ffread()读取的内容赋值给file_list,在对文件的 操作完成后,别忘记使用f.close()关闭文件。
Jieba分词支持3种分词模式,精确模式能将句子 精确分开,比较适合文本分析,支持繁体分词,支持自 定义词典。例如给定一串字符串“我来到北京清华大 学”,那么使用精确模式可能得到的结果就是“我/来 到/北京/清华大学”,使用分词的关键代码如下院se gjist = sorted(list(jieba.cut(file」ist,cut_all= True)))
tf={}
seg = ,,.join(seg.split())
if(seg != " and seg != VT and seg != M\n\n M):
f se
g in t f:
tf[seg] += 1
else :
作者简介:李泽(1979-),男,硕士,研究方向:管 理信息系统、数据挖掘、图书馆信息化。
收稿日期:2018-01-24
2018.04
V电B
纗程技巧与维护
实用第一智慧密集9回困B B S回B B回回EI8S困困E f®
tf[seg] = 1
sorted函数可以将词频统计的结果进行排序,方便 导人到Excel文件中进行分析。Jieba.cut能够接受3 个输人参数:需要分词的字符串;cut_all参数用来控 制是否采用全模式;HMM参数用来控制是否使用 HMM模型。返回的结构都是一个可迭代的generator,可以使用fo r循环来获得分词后得到的每一个词语 (Unicode),或者用 jieba.lcut 以及 jieba.lcut_for_search 直接返回list。
分词统计结束后,将结果保存在result.excel文本 中。代码如下:
for a,b in tf:
if b>0:
c = open(,result.xls,, ,a,)
c.write(a+A0,+str(b)+An,)
分词统计的结果还需要进行优化处理,对一些没有 实际意义的词汇进行过滤,可以设定停用词库和自定义 词库来重新优化统计结果。定义停词库需要单独定义一 个函数,用来读取停词库的文本,在案例将要过滤掉的 词汇存人stopword.txt文本,在Python中进行判断,凡 是出现在该停词库中的词汇,都将被过滤掉。可以使用 语句if seg not in stopwords:,然后再进行词频统计。建 立停词库的代码如下院
def stopwordslist(filepath):
stopwords = [line.strip()for line in open(,stop-word.t x f,,r,,encoding=,gbk,).readlines()]
return stopwords
最后统计结果进行排序,选取词频最高的前30个 热点词汇,结果如表1所示。
表1文本词频统计表
序号热点词词频
满意656
2旅行193
3交通181
4住宿181
5赠送181
6酒店174
7导游107
8好104
9雪山85
10推荐73
11出游72
序号热点词词频
12朋友70
13情侣66
14玩法63
15家庭55
16行程50
17不错49
18师傅49
19一般45
20时间39
21玉龙雪山35
22司机33
23索道28
24不满25
25服务23
26讲解23
27开心21
28值得20
29买19
30牛18
31但是17
32排队17
33负责17
34可以16
35天气16
36很美16
37比较16
38美16
39吃15
40合理15
41景点15
42丽江14
43赞14
44幽默13
45氧气13
46大索12
47热情12
48购物12
49古镇11
50周到11
51很满意11
52注意11
53超级11
54餐钦11
55很棒10
56感觉10
57景色10
58电瓶10
59电瓶车10
60遗憾10 (下转第51页)
22U18.U4
\_#电脑编程技巧与维护✓