1、基于 Python 的自然语言数据处理系统的设计与实现打开文本图片集摘要随着云时代的来临,大数据技术将具有越来越重要的战略意义,很多组织通常都会用一种领域特定的计算语言,像 Python、R 和传统的 MATLAB,将其用于对新的想法进行研究和原型构建,之后将其移植到某个使用其他语言编写大的系统中去,如 Java、Python 等语言慢慢经验的积累人们意识到,Python 对于科研和产业两者都适用,这使得即 thon 变得流行起来,因为研究人员和技术人员使用同一种编程工具将会带来非常高的效益。本文基于 Python 语言通过对旅游游记的文本数据的处理分析,来预测大众游客的旅游趋势,并进行个性化
2、推荐。这样工作有利于了解旅游网站的运行情况,分析游客的需求,以便更加有效地对网站和产品进行改进和升级。该工作涉及到数据采集、数据挖掘等关键技术。本文介绍一个基于 Python 的自然语言数据处理系统,系统通过对旅游游记文本数据进行探索,让人们能更加深入了解文本数据获取和处理的流程和一些实用方法技巧。【关键词】Python 自然语言 数据处理系统设计1 自然语言数据处理系统的设计自然语言数据处理是目前非常重要的一个科研和产业任务,自然语言处理被划分为 3个阶段,分别是数据爬取,数据预处理和数据分析。本设计基于 Python 语言进行具体阐述得。因为,Python 既是一门编程语言,又是一款十分好
3、用的数据处理、统计分析与挖掘的软件框架。与其他编程语言相比 Python 具有简单,易学习的特点,通过对 Python 的学习,能够快速开发统计分析程序。Python 擁有丰富强大的扩展库和成熟的框架特性很好地满足了数据分析所需的基本要求。1.1 自然语言数据处理系统框架本系统框架基于一般产业和科研的自然语言处理方法归纳总结而成,见图 I。1.2 数据爬取数据爬取任务通常是基于 Robots 协议进行,再分析网站 DOM 树爬取所需要的数据,在解析过程中主要使用正则表达式进行筛选和匹配,针对网站的反爬取机制采取一些措施和手段。本系统基于 Python 的爬取了途牛网及马蜂窝的旅游游记数据包括元
4、数据和文本型两种数据,共计 3000 余篇。其中元数据包括:文章标题,发表时间,浏览量和点赞等信息。文本型数据包括文字和游记图片数据。1.3 数据清洗现有数据中,文本是最非结构化的形式,里面有各种各样的噪声;如果没有预处理,文本数据都不能分析。清理和标准化文本的整个过程就是文本预处理,其作用是使文本数据没有噪声并且可以分析。移除噪声通用的做法是准备一个噪声实体的词典,在文本对象上逐个逐词迭代,消除在噪声词典中出现的标签。例如:处理掉文本中的停用词,需要用到停用词表,常见的停用词表可以在网上下载,再添加项目内容相关的停用词即可。文本通过 Python 的 jieba 库进行中文分词,将每一篇游记
5、精确分词并去除停用词,之后将分词后的结果每篇作为一行合并成预料文档,1.4 数据挖掘数据挖掘方法需要将文本转换为数值进行计算,最简单的方法是基于词袋模型进行表示。再使用文档频率及逆文献频率(TF-IDF)进行计算。TF-IDF 在不考虑文献中词的具体位置情况下,基于文献中出现的词汇将文本文献转化成向量模型。一个词语在一篇文章中出现次数越多,同时在所有文档中出现次数越少,越能够代表该文章。词频(TF)指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被归一化(一般是词频除以文章总词数),以防止它偏向长的文件。TF-IDF 公式给出了文本集中术语的相对重要性,本文使用 Python 的 s
6、cikit-learn 模块实现了文本转换为 TF-IDF 向量计算。首先使用在计算 tf-idf 词语权重将文档转换为词频矩阵,这样就做完了聚类之前的准备工作。再对游记数据通过 KMeans 实现聚类分析,KMeans 算法的基本思想是初始随机给定 K 个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后按平均法重新计算各个簇的质心,从而确定新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值。K值的确定和聚类效果的评估是取得最优聚类结果的关键。k 值可用手肘法获取,手肘法的核心指标是 SSE(误差平方和),对每一个 k 值进行聚类并且记下对于的 SSE,然后画出 k和 SSE 的关系图
7、,最后选取肘部对应的 k 作为我们的最佳聚类数。聚类效果评估,通过对同一个 k 值进行多次聚类,画出聚类次数和 intreia 的折线图,intreia 表示所有点到其分类中心点平均值的和,intreia 值越小说明聚类效果越好。2 自然语言数据处理系统的实现2.1 项目所使用 Python 库模块介绍本问所述系统使用了 requests、BeautifulSoup、Selenium、jieba、scikit-learn及 pylab 库模块,下面简要介绍这些库模块:(1)requests:requests 是 Python 的一个 HTTP 客户端库,相比 urllib 更加简单易学。(2)
8、Beautiful Soup:Beautiful Soup 是一个可以从 HTML 或 XML 文件中提取数据的Python 库。Selenium:自动化工具库,Selenium 支持各种浏览器驱动用于和 PhantomJS实现模拟浏览器,PhantomJS 是一个无界面的,可脚本编程的 WebKit 浏览器引擎。(3)jieba:jieba 是一个 python 实现的分词库,对中文有着很强大的分词能力。支持精确模式,全模式和搜索引擎模式三种分词模式。(4)scikit-learn:Scikit-Learn 是 Python 著名的机器学习库,其中包含大量机器学习算法、数据集,是数据挖掘方便
9、的工具。安装它需要 numpy、scipy、matplotlib 一些依赖包支持。(5)pylab:是 marplotlib 的一个子包,非常适合于进行交互式绘图。2.2 系统实现基于自然语言处理框架,系统被划分为数据收集、数据预处理、数据分析三部分。如图 2 所示。2.3 数据收集系统主要使用 Python 网络爬虫,通过 geturlList 函数获取当前页面 url,getinList函数下载一页的游记内容和图片将游记的一些元数据信息如标题,作者,发表日期等存入MySQL 数据库表中,游记正文以文本形式单独存放。系统为了提升爬取效率实现多进程和模拟浏览器,具体代码如下所示:page=0#
10、初始化页数while page4:#下载页数url_list=url_list=geturIList(driver.page source)pool=Pool(5)#创建进程池pool.map(getinList,url list)#传入进程函数名和 url 列表产生子进程pool.closc()#关闭进程池pool.join()#主进程阻塞count=count+1#存储次数加 1print(r 当前进度:.2f%.fomiat(count*100/4),end=)#显示页数进度driver.find_element_by_xpath(/acontains(text(),下一页).click
11、()#模拟点击翻页page=page+1#页数加 1time.sleep(4)#睡眠防止被封翻页等待时间driver.quit()#关闭浏览器驱动2.4 数据预处理本系统数据预处理包括中文分词、移除噪声筛选词性等操作。其中,segment 函数移除噪声、分词,merge_file 函数合并文档预料。2.5 数据分析本系统数据分析采用了无监督的聚类方法,通过 clu 函数计算 tf-idf、k-means 聚类,其中计算 tf-idf 主要代码如下所示:vectorizer=CountVectorizer()#将文本中的词语转换为词频矩阵transformer=Tfidffransformer(
12、)#统计每个词语的 tf-idf 权值tfidf=transformer.fit_transform(vectorizer.fit_transform(corpus)#计算tf-idf 并将文本转为词频矩阵word=vectorizer.get_feature_names()#获取词袋模型中的所有词语weight=tfidf toarray()#将 tf-idf 矩阵抽取出来本系统的数据分析中需要人工根据经验值输入聚类个数,并选择聚类次数进行聚类。该方法更利于对不同文本聚类次数和准确度的控制,如图 3 所示。聚类结果好坏,可以通过 inertia 值进行辅助判别,如图 4 所示。这样实现是由于
13、初始中心点选择以及聚类数量的影响。一般无法直接获取最优的聚类结果。聚类结果存储到聚类结果表中,从而可以结合专家判断进行更深一步的知识探索。3 结论通过对旅游数据的数据获取、清洗和分析表明 Python 语言能轻松胜任数据采集、预处理、数据挖掘等多项任务,用可视化的界面对分析的效果进行评估,本系统利用 Python语言强大的第三方库,用自然语言处理系统将高维数据降维,将数据的采集,处理一体化,节省了数据分析的时间,大大提高了工作效率,加强了我们对数据处理流程的整体把握。(通讯作者:唐琳)参考文献1唐琳,张应博.应用型本科软件工程专业转型试点框架设计J.计算机教育,2017(11):78-81.2
14、丘文峰.基于 Python 的医学图像处理框架及其应用D.华南师范大学,2010.3丁杰.基于文法规则匹配的自然语言处理系统研究与实现J.电脑知识与技术,2009,5(04):833-834.4杨洋.基于网络爬虫的学术文献检索管理系统的研究和实现D.中国科学院大学,2014.5楊洋,李晓风,赵赫等.基于网络爬虫的文献检索系统的研究和实现J.计算机技术与发展,2014(11):35-38.6唐琳,李天俐,何天宇.校企合作下面向企业项目教学法的设计与实践J.科技资讯,2017,15(27).7唐琳.面向企业项目教学法的 Python 1s 序设计教学研究J.黑龙江教育(高教研究与评估),2018(04):3-4.