赞
踩
我们在使用Python对文本数据进行处理时,通常会遇到提取文本关键词、提取摘要、提取短语或者进行无监督文本聚类等需求。本文将向大家推荐一个非常实用的包pyhanlp,使用这个包中的函数通过几行代码就可以完成以上所有的操作。
- from pyhanlp import *
- content = "随着云时代的来临,大数据(Big data)也吸引了越来越多的关注。分析师团队认为,大数据(Big data)通常用来形容一个公司创造的大量非结构化数据和半结构化数据,这些数据在下载到关系型数据库用于分析时会花费过多时间和金钱。大数据分析常和云计算联系到一起,因为实时的大型数据集分析需要像MapReduce一样的框架来向数十、数百或甚至数千的电脑分配工作。"
- # 提取文本关键词
- print(HanLP.extractKeyword(content, 2))
输出结果:
注意:如果大家想获取准确度更高的关键词推荐大家使用另一种办法:通过jieba进行中文分词,然后去停用词,再用TF-IDF算法进行提取关键词。
- from pyhanlp import *
- content = "随着云时代的来临,大数据(Big data)也吸引了越来越多的关注。分析师团队认为,大数据(Big data)通常用来形容一个公司创造的大量非结构化数据和半结构化数据,这些数据在下载到关系型数据库用于分析时会花费过多时间和金钱。大数据分析常和云计算联系到一起,因为实时的大型数据集分析需要像MapReduce一样的框架来向数十、数百或甚至数千的电脑分配工作。"
- # 提取文本摘要
- print(HanLP.extractSummary(content, 4))
输出结果:
- from pyhanlp import *
- content = "随着云时代的来临,大数据(Big data)也吸引了越来越多的关注。分析师团队认为,大数据(Big data)通常用来形容一个公司创造的大量非结构化数据和半结构化数据,这些数据在下载到关系型数据库用于分析时会花费过多时间和金钱。大数据分析常和云计算联系到一起,因为实时的大型数据集分析需要像MapReduce一样的框架来向数十、数百或甚至数千的电脑分配工作。"
- # 提取文本短语
- print(HanLP.extractPhrase(content,10))
输出结果:
在进行无监督文本聚类前,需要大家可以对文本进行预处理。
首先是中文分词,推荐大家使用jieba分词器。利用jieba分词对文本进行分词后,文本中的句子会被划分成单个的词语,但是其中部分词语并无实际意义。如果不对这些无实际意义的词语进行处理,那么后续提取关键词时,这些词语也会被统计,这将使工作量增加,且可能导致结果无效。
最后就是将词语以逗号分割,组成字符串。这样我们就把数据处理好了,然后使用pyhanlp包中的函数就可以完成无监督文本聚类。
- from pyhanlp import *
-
- ClusterAnalyzer = JClass('com.hankcs.hanlp.mining.cluster.ClusterAnalyzer')
- if __name__ == '__main__':
- analyzer = ClusterAnalyzer()
- analyzer.addDocument("1", "流行, 流行, 流行, 流行, 流行, 流行, 流行, 流行, 流行, 流行, 蓝调, 蓝调, 蓝调, 蓝调, 蓝调, 蓝调, 摇滚, 摇滚, 摇滚, 摇滚")
- analyzer.addDocument("2", "爵士, 爵士, 爵士, 爵士, 爵士, 爵士, 爵士, 爵士, 舞曲, 舞曲, 舞曲, 舞曲, 舞曲, 舞曲, 舞曲, 舞曲, 舞曲")
- analyzer.addDocument("3", "古典, 古典, 古典, 古典, 民谣, 民谣, 民谣, 民谣")
- analyzer.addDocument("4", "爵士, 爵士, 爵士, 爵士, 爵士, 爵士, 爵士, 爵士, 爵士, 金属, 金属, 舞曲, 舞曲, 舞曲, 舞曲, 舞曲, 舞曲")
- analyzer.addDocument("5", "流行, 流行, 流行, 流行, 摇滚, 摇滚, 摇滚, 嘻哈, 嘻哈, 嘻哈")
- analyzer.addDocument("6", "古典, 古典, 古典, 古典, 古典, 古典, 古典, 古典, 摇滚")
-
- print(analyzer.repeatedBisection(3)) # 重复二分聚类
- print(analyzer.repeatedBisection(1.0)) # 自动判断聚类数量k
输出结果:
需要注意:
1、路径不要出现中文,不然会导致找不到相关文件!
2、如果包下载的很慢的话,可以在网上找到包,下载好后放入相关文件夹内!
3、analyzer.addDocument(index1,index2)的作用是往聚类数据库中添加数据。第一个参数是最后显示的结果,也就是说第一个参数是代表第二个参数的。第二个参数是预处理完毕后的数据,一个以逗号分割的词语组成的字符串。
4、analyzer.repeatedBisection(3)是重复二分聚类,参数是最后聚类的类簇个数。
5、analyzer.repeatedBisection(1.0)有时候自己无法确定最终的类簇个数,就可以使用这个函数,它可以实现自动判断聚类的数量。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。