赞
踩
- import org.apache.spark.mllib.classification.NaiveBayes
- import org.apache.spark.mllib.feature.HashingTF
- import org.apache.spark.mllib.linalg.Vectors
- import org.apache.spark.sql.functions._
-
- object ChineseTextClassification {
-
- def main(args: Array[String]): Unit = {
-
- // 读取训练数据
- val df = spark.read.format("csv").option("header", "true").load("data/train.csv")
-
- // 中文分词
- val stopwords = sc.broadcast(Set("的", "是", "在", "了", "和", "为", "有", "这", "我"))
- val tokenizer = new RegexTokenizer().setPattern("\\w+").setInputCol("文本内容").setOutputCol("分词内容")
- df = tokenizer.transform(df)
-
- // 将分词结果转换为特征向量
- val hashingTF = new HashingTF().setNumFeatures(1000)
- val tf = hashingTF.transform(df.select("分词内容"))
-
- // 训练模型
- val naiveBayes = new NaiveBayes()
- val model = naiveBayes.fit(tf)
-
- // 测试模型
- val testData = spark.read.format("csv").option("header", "true").load("data/test.csv")
- val testTf = hashingTF.transform(testData.select("分词内容"))
- val predictions = model.predict(testTf)
-
- // 计算准确率
- val accuracy = predictions.zip(testData.select("文本类别")).map{ case (p, l) => if (p == l) 1 else 0}.sum() / testData.count()
- println(s"准确率:${accuracy}")
- }
- }
该代码首先读取训练数据。训练数据包括文本内容和文本类别两列。
然后,我们使用中文分词器将文本内容转换为分词结果。在本例中,我们使用了 Spark MLlib 提供的 RegexTokenizer 类。
接下来,我们使用 HashingTF 对象将分词结果转换为特征向量。特征向量的维度设置为 1000。
最后,我们使用朴素贝叶斯算法训练模型,并在测试数据上进行测试。
以下是 10 个中文文本分类的 GitHub 资源:
这些资源提供了丰富的中文文本分类模型和数据集,可以帮助您快速入门中文文本分类
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。