使用Spark+Hanlp进行简单的文本处理(中)-Kmeans文本聚类
文本聚类
1. TFIDF
TFIDF全程叫做term frequency–inverse document frequency,即文本频率与逆文档频率指数, TFIDF就是为了表征一个token的重要程度,如果这个token出现的频数很高,出现的频数这个因素就叫做TF,IDF即逆文档频率,就是所有文档的条数与有某词的文档条数的比值的对数,减少“的,了”等频率过高又无意义的词语干扰。
TFIDF是个词袋模型。
Spark有相关的接口
1.导包
import com.hankcs.hanlp.dictionary.stopword.CoreStopWordDictionary
import com.hankcs.hanlp.summary.TextRankKeyword
import com.hankcs.hanlp.tokenizer.StandardTokenizer
import org.apache.hadoop.io.BytesWritable
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.ml.clustering.KMeans
import org.apache.spark.ml.feature.{HashingTF, IDF}
import scala.collection.JavaConversions._
2.读数
def main(args: Array[String]): Unit = {val conf = new SparkConf().setAppName("GenDClogExample")val spark = SparkSession.builder().config(conf).getOrCreate()val sc = spark.sparkContext//自行读取一份文本数据吧val click_df = genclickdata(sc,spark)//分词,分词可以参考上一篇文章代码val words_df = Sentence2Words(click_df,spark)//提取下,两列 文本和分词的文本 : String,List[String]val docs = words_df.select("desc","desc_all_word")
3. TF-IDF
//求tfval hashingTF = new HashingTF().setInputCol("desc_all_word").setOutputCol("rawFeatures").setNumFeatures(2000)val featurizedData = hashingTF.transform(docs)//求IDFval idf = new IDF().setInputCol("rawFeatures").setOutputCol("features")val idfModel = idf.fit(featurizedData)val rescaledData = idfModel.transform(featurizedData).cache()rescaledData.show(false)
2. K-means
kmeans是比较普遍的聚类算法了,spark有相关的api,可以自行谷歌相关示例.这里根据上面的结果数据直接调取kmeans api即可,对于中心点数的选择也可以采用遍历的方式选择
val kmeans = new KMeans().setK(25).setSeed(1L)val model = kmeans.fit(rescaledData)val WSSSE = model.computeCost(rescaledData)model.clusterCentersval output = model.transform(rescaledData)output.schemaval re_df = output.select("desc","prediction")re_df.show(false)
3.总结
很简单的直接掉包进行文本分词聚类分析,然后看看中心数据,不需要标注数据,建立词典等人工操作,当然效果应该很一般,但是胜在操作方便。
使用Spark+Hanlp进行简单的文本处理(中)-Kmeans文本聚类相关推荐
- java word文本框_Java 读取Word文本框中的文本、图片、表格
Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...
- PHP开发小技巧①⑥—提取富文本字符串中的文本内容
综述 富文本在我们平常的项目中应用已经很广泛了,并逐渐发展成了一个行业.最近在项目中遇到需要提取富文本字符串中的文本内容,本篇博文就是记述如何重富文本字符串中提取出文本内容,欢迎大家相互学习. 富文本 ...
- Word控件Spire.Doc 【文本】教程(5) ;从 Word 文档中的文本框中提取文本
文本框的目的是允许用户输入程序要使用的文本信息.也可以从文本框中提取现有的文本信息.以下指南重点介绍如何通过Spire.Doc for .NET从 C# 中 Word 文档的文本框中提取文本. Spi ...
- Java 读取Word文本框中的文本、图片、表格
Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...
- python 获取文本框内容_如何在python中单击按钮时获取文本框中的文本?
我可以让您的代码在单击按钮时显示文本框中的文本: 这就是你要达到的目的吗?您没有提到是否出现错误,但我确实发现您的代码存在两个问题:Button.py脚本中似乎存在一些缩进问题.在 对于changeT ...
- 文本分类中的文本特征表示
Introduce 文本话题分析文本分类的一个应用领域,主要是针对文本表现的主题的划分.目前,针对文本话题分类的研究还是很热的,主要包括微博,知乎等大型话题社区,论坛类网站.之前知乎针对该问题在著名的 ...
- python tkinter entry长字符串靠右显示_如何突出显示tkinter文本widg中的文本
它是用于这些目的的正确小部件.基本概念是,将属性分配给标记,并将标记应用于小部件中的文本范围.您可以使用文本小部件的search命令查找与模式匹配的字符串,这将返回足够的信息,并将标记应用于匹配的范围 ...
- python docx提取word中的目录及文本框中的文本
问题描述 同标题 解决方案 因未在docx库找到直接识别word中目录及文本框中文本的方法,所以采用了一个"笨"方法,docx库可以把word文档解析成xml格式,以解析xml的方 ...
- python 文本框内容变化_当文本框中的文本发生变化时,动态读取文本输入中的文本?...
我是kivy新手,我正试图用python编写一个应用程序,有一次,每当textinput被更改时,我都要从textinput读取文本,基于此,我想实现我的按钮功能-我已经看过所有文档,但我不知道怎么做 ...
最新文章
- metasploit msfvenom使用实例
- Linux下fork()函数
- 常见ETL工具一览,你知多少?
- Web前端主要学什么?这些知识要掌握
- Hibernate Synchronizer3——一个和hibernate Tool类似的小插件之使用方法
- 山东青岛市南区:创建物联网 信息化管理涉案财物
- rocketmq 顺序消费_10 分钟看懂消息队列 RocketMQ
- python3 urllib安装_对python3 urllib包与http包的使用详解
- zabbix 监控 db2_zabbix-第二章-第二节 zabbix添加简单主机监控
- 晋职称不考外语 计算机,评职称不考外语计算机的价值导向
- Python字符串isidentifier()
- SQL 当前时间加/减一天/时/分/秒
- 菜鸟学习oracle一看就会
- python 安卓库_Android高级面试题资料(持续更新)
- Android常用的工具方法
- SQL经典50查询语句(面试题)案例2
- onSubmit 使用
- linux 网络 指示灯 亮,Linux网络子系统中GRO的实现
- LINUX设置DNS
- 使用“已知明文攻击”破解加密