SparkML-初探-文本分类

本文介绍了使用SparkML进行文本分类的背景和相关知识,包括分词(英文与中文)、词向量转化工具(TF-IDF和Word2Vec),并讨论了回归和分类模型。实践中,通过TF-IDF和多层感知器神经网络实现高精度的文本分类。
摘要由CSDN通过智能技术生成

背景

由于项目组需要对爬虫获取的文本进行归类,最初使用正则表达式按照想到的规则进行解析分类,后来发现这种方式不够灵活,而且不能穷举所有的可能。所以项目组觉得使用最近比较流行的机器学习相关的知识去处理。

相关知识

对文本进行分类之前,需要先对文本进行分词,然后将分词转换为特征向量,使用机器学习算法模型对特征向量和已经知道的标签数据进行模型拟合,产生理想的模型,通过理想的模型进行预测未来产生的数据

分词

英文分词

英文文档已经天然的分好词,根据空格字符就可以做出很精准的分词,只要控制好停用词即可。以下是spark已经为我们封装好的英文分词和停用词API使用介绍。

import org.apache.spark.ml.feature.Tokenizer
import org.apache.spark.sql.functions._
val sentenceDataFrame = spark.createDataFrame(Seq(
  (0, "Hi I heard about Spark"),
  (1, "I wish Java could use case classes"),
  (2, "Logistic,regression,models,are,neat")
)).toDF("id", "sentence")
val tokenizer = new Tokenizer().setInputCol("sentence").setOutputCol("words")
val tokenized = tokenizer.transform(sentenceDataFrame)
tokenized.select("sentence", "words").show(false)

以上代码输出结果

+-----------------------------------+------------------------------------------+
|sentence                           |words                                     |
+-----------------------------------+------------------------------------------+
|Hi I heard Spark about Spark       |[hi, i, heard, spark, about, spark]       |
|I wish Java could use case classes |[i, wish, java, could, use, case, classes]|
|Logistic regression models are neat|[logistic, regression, models, are, neat] |
+-----------------------------------+------------------------------------------+

中文分词

中文分词比英文分词复杂很多,需要根据中文语义和中文词典进行分词。还好关于中文分词的工具很多大牛已经帮我们做好了,我们只要根据API去调用即可。本人在实践中最初使用了IKAnalysis,但是发现IKAnalysis分词器的性能很差,几百万的行的文本分词竟然跑不出来。后来,在同事的推荐下使用了HanNlp中文分词器,解决了性能上面的瓶颈。

词向量转化工具

TF-IDF

TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。
关于TF-IDF的计算公式如下:
T F I D F = T F × I D F TFIDF=TF × IDF TFIDF=TF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值