使用spark mllib训练中文文本分类器的

Scala 复制代码
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 资源:

  • 649453932/Chinese-Text-Classification-Pytorch:基于 PyTorch 实现的中文文本分类,包括 TextCNN、TextRNN、FastText、TextRCNN、BiLSTM_Attention、DPCNN、Transformer 等模型。
  • gaussic/text-classification-cnn-rnn:基于 Keras 实现的中文文本分类,包括 TextCNN、TextRNN、BiLSTM 等模型。
  • brightmart/bert_language_understanding:基于 BERT 实现的中文文本分类。
  • brightmart/text_classification:包含各种中文文本分类模型的实现,包括 TextCNN、TextRNN、FastText、TextRCNN、BiLSTM_Attention、DPCNN、Transformer 等模型。
  • chenyuntc/PyTorchText:用于自然语言处理的 PyTorch 工具包,包含中文文本分类模型的实现。
  • thunlp/THUCNews:中文文本分类数据集。
  • wenet-e2e/wenet:中文文本分类模型,基于 CTC 和 Attention 等技术。
  • wenet-e2e/wenet_transformer:中文文本分类模型,基于 Transformer 技术。
  • wenet-e2e/wenet_bert:中文文本分类模型,基于 BERT 技术。

这些资源提供了丰富的中文文本分类模型和数据集,可以帮助您快速入门中文文本分类

相关推荐
程序猿阿伟2 天前
《探索 Apache Spark MLlib 与 Java 结合的卓越之道》
java·spark-ml·apache
pblh12314 天前
PySpark3.4.4_基于StreamingContext实现网络字节流中英文分词词频累加统计结果保存到数据库中
数据库·python·spark-ml·spark·中文分词
pblh1231 个月前
spark 3.4.4 利用Spark ML中的交叉验证、管道流实现鸢尾花分类预测案例选取最优模型
分类·数据挖掘·spark-ml
跟着大数据和AI去旅行4 个月前
Spark2.x 入门:高斯混合模型(GMM)聚类算法
算法·数据挖掘·spark-ml·聚类
跟着大数据和AI去旅行4 个月前
Spark2.x 入门: KMeans 聚类算法
机器学习·spark-ml·kmeans·聚类
跟着大数据和AI去旅行4 个月前
libsvm 数据格式简介
机器学习·spark-ml
zhang98800006 个月前
小白的学习资料:Spark MLlib 机器学习详细教程
机器学习·spark-ml·spark·mllib
路人与大师6 个月前
spark mllib 特征学习笔记 (二)
笔记·学习·spark-ml
路人与大师6 个月前
spark MLlib (DataFrame-based) 中的聚类算法Bisecting K-Means、K-Means、Gaussian Mixture
算法·spark-ml·聚类