我们在使用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)有时候自己无法确定最终的类簇个数,就可以使用这个函数,它可以实现自动判断聚类的数量。

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: