首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python分析文本学习笔记

这周开始学习微软的Cognitive Services,微软的认知服务包括了很多内容,像自然语言理解,人脸和情绪识别,计算机图像,文字和语音的识别和翻译等等,我们可以在Azure网站上看到关于认知服务的更多信息:https://azure.microsoft.com/zh-cn/services/cognitive-services/directory/

但是,在正式开始学习Cognitive Services之前,微软有个教程展示了Python是如何处理和分析文本的,对于了解文本分析的基础只有很有帮助,所以先学习这部分内容。

关于Python下的文本分析,微软已经提供了一个Sample代码:

https://lyqblog.blob.core.chinacloudapi.cn/lyqblog/PythonText.ipynb

这是一个ipython notebook格式文件,它可以实现基于网页的可交互计算的应用程序。主要用于开发、运行代码和展示结果,微软有一个正在preview的服务可以来执行:https://notebooks.azure.com/ 或者也可以直接查看 https://jupyter.org/ ,在本地安装python的jupyter模块。

登录以后创建一个新的项目:New Library

进入新建立的项目里,点击 “+ New” 上传刚才下载的ipynb 文件

点击 上传的Python Text.ipynb 文件名就可以看到以下界面,在这段Sample代码里,已经将文本,文字和语音的各个服务一步步操作过程列在了下面。接下来就可以一段段来学习了。

首先我们来看怎么来分析一篇文章中的关键字,通常情况一篇文章中的某个词语出现的频率越高,那么这篇文章的主题就会与之有关。

所以我们首先来看第一段代码:

这段代码从指定的位置读取一个文本文件,并保存到项目中。除了Sample Code中已经指定的文本,我们也可以上传自己的文本来分析,这里提供一个文本试用:https://lyqblog.blob.core.chinacloudapi.cn/lyqblog/DTH.txt

选择运行这段代码,在上方点击 “Run” 按钮,

Jupyter notebook可以将执行结果直接显示在页面上,代码最后一句话是print(doc1Txt),所以会看待整篇文章显示在下方。

但是如果需要去识别这篇文章,首先需要规范化这篇文档,下面这段代码就是将文章中的标点符号全部去除,并将字母全部变成小写。同样运行这段代码,我们可以在下方看到规范后的文本。

接下来可以分析一下这篇文章中的词频分布,统计每个单词的出现次数

在这里用的是nltk库,采用nltk进行分词,并采用FreqDist功能来分析词频分布。

执行这段代码,可以看一下执行的结果,很有意思,看到出现最多的单词是a, the,and, to, be这些单词。

顺便说一下,NLTK是可以用来分析中文文本的,但是由于词频分析是基于单词的,因此中文文本可以采用结巴分词https://github.com/fxsjy/jieba处理。而且文本必须是UTF-8编码的。

很明显,像a, the, and, to, be单词分析出来是没有任何意义的,因此必须把这些词也去除掉。

执行以上代码,将文本中的a, the, and, to, be 这些处理掉。

接下来执行这段代码,来分析上面处理过的文本,根据词频生成柱状图

现在看到出现频率最高的词是“new”,“go“,"space", "science",and "moon". 这个比较有意思了。

简单的分析词频对以单个文本文件是非常有用的,如果需要同时处理很多文本要怎么做呢?下面这段代码导入了两段新的文本。并进行了规范化处理。

然后运行以下代码来计算每段文本的TF-IDF值,TF-IDF是指词频和反向词频,因为如果一个单词在很多文本中都出现,那么在判断这个单词对每个文本的重要性的时候,就认这个单词的影响力较小。所以算法引入反向词频,将单词出现的文件数和文件总数的除数取对数,将词频乘以反向词频就得到了TF-IDF值。

运行结果如下:

在处理文本时,还有一种情况会有影响,那就是词根,来源于同一个词根的单词往往意思相近,需要在分析时引入这个概念来分析,下面的代码引入一段新的文本来看一下词根的分析的影响:

这是没有引入词根的分析结果

接下来引入词根来做分析,使用PorterStemmer算法来处理词根。,

这是有了词根以后的结果,可以看到有了很大的不同

接下来,可以尝试使用微软的认知服务来做这些事情了,也许还可以试一试中文。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180819G1FF0P00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券