美文网首页
【Spark学习笔记】Spark下的四种中文分词工具

【Spark学习笔记】Spark下的四种中文分词工具

作者: 不可能打工 | 来源:发表于2020-06-24 11:17 被阅读0次

1. Spark下四种中文分词工具使用

  • hanLP
  • ansj
  • jieba
  • fudannlp

2. 获取四种分词工具

在maven 项目工程下的 pom.xml文件中添加 点击import即可完成对前三种的获取

     <dependency>
        <groupId>org.ansj</groupId>
        <artifactId>ansj_seg</artifactId>
        <version>5.1.3</version>
    </dependency>
    <dependency>
        <groupId>com.hankcs</groupId>
        <artifactId>hanlp</artifactId>
        <version>portable-1.3.4</version>
    </dependency>
    <dependency>
        <groupId>com.huaban</groupId>
        <artifactId>jieba-analysis</artifactId>
        <version>1.0.2</version>
    </dependency>

fudannlp github地址:https://github.com/FudanNLP/fnlp
模型文件国内网盘地址:http://pan.baidu.com/s/1D7CVc

image.png
下载jar包及其models文件,将jar导入工程,models文件夹直接复制到项目工程下即可

3.spark下具体使用

jieba

import com.huaban.analysis.jieba.JiebaSegmenter
import org.apache.spark.{SparkConf, SparkContext}
object WordSp {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("input").setMaster("local[*]")
    val sc = new SparkContext(conf)
    val rdd=sc.textFile("C:\\Users\\Administrator\\Desktop\\icwb2-data\\testing\\pku_test.utf8")
      .map { x =>
        var str = if (x.length > 0)
          new JiebaSegmenter().sentenceProcess(x)
        str.toString
      }.top(50).foreach(println)
  }
}

hanLP

import com.hankcs.hanlp.tokenizer.StandardTokenizer
import org.apache.spark.{SparkConf, SparkContext}

object WordSp {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("input").setMaster("local[*]")
    val sc = new SparkContext(conf)
    val rdd=sc.textFile("C:\\Users\\Administrator\\Desktop\\icwb2-data\\testing\\pku_test.utf8")
      .map { x =>
        var str = if (x.length > 0)
          StandardTokenizer.segment(x)
        str.toString
      }.top(50).foreach(println)
  }
}

ansj

import org.ansj.recognition.impl.StopRecognition
import org.ansj.splitWord.analysis.ToAnalysis
import org.apache.spark.{SparkConf, SparkContext}

object WordSp {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("input").setMaster("local[*]")
    val sc = new SparkContext(conf)
    val filter = new StopRecognition()
    filter.insertStopNatures("w") //过滤掉标点

    val rdd=sc.textFile("C:\\Users\\Administrator\\Desktop\\icwb2-data\\testing\\pku_test.utf8")
      .map { x =>
        var str = if (x.length > 0)
          ToAnalysis.parse(x).recognition(filter).toStringWithOutNature(" ")
        str.toString
      }.top(50).foreach(println)
  }
}

fudannlp

使用fudannlp需要自己建个类,至于为啥可以自行测试,words类。

import org.fnlp.nlp.cn.CNFactory;
import org.fnlp.util.exception.LoadModelException;
import java.io.Serializable;

public class words implements Serializable {

    public String[] getword(String text){
       String[] str = null;
        try {
            CNFactory p=  CNFactory.getInstance("models");
            str=p.seg(text);
        } catch (LoadModelException e) {
            e.printStackTrace();
        }
return str;
    }
}

fudannlp:

import org.apache.spark.{SparkConf, SparkContext}

object WordSp {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("input").setMaster("local[*]")
    val sc = new SparkContext(conf)

    val rdd=sc.textFile("C:\\Users\\Administrator\\Desktop\\icwb2-data\\testing\\pku_test.utf8")
      .map { x =>
        var str = if (x.length > 0)
          new words().getword(x).mkString(" ")
        str.toString
      }.top(50).foreach(println)
  }
}

推荐使用ansj,速度快效果好,另外jieba,hanLP效果也不错。
具体可以参考
ansj:https://github.com/NLPchina/ansj_seg
HanLP:https://github.com/hankcs/HanLP

相关文章

  • 【Spark学习笔记】Spark下的四种中文分词工具

    1. Spark下四种中文分词工具使用 hanLP ansj jieba fudannlp 2. 获取四种分词工具...

  • spark

    *Spark Spark 函数Spark (Python版) 零基础学习笔记(一)—— 快速入门 1.map与fl...

  • spark 学习笔记

    Spark学习笔记 Data Source->Kafka->Spark Streaming->Parquet->S...

  • Spark Core 学习笔记

    Spark Core 学习笔记 1、Spark 简介 ​ Spark 是一种用于大规模数据处理的统一计算引擎...

  • Shell脚本学习:spark2-shell启动流程分析

    摘要:Spark,Linux,Shell 学习一下spark2-shell的启动shell脚本,分析一下spark...

  • hadoop(mapreduce) shuffle

    本文主要想梳理下spark的四种shuffle机制。但是在说spark之前还是很有必要把mapreduce的shu...

  • spark核心编程

    Spark 学习笔记 Spark 架构及组件 client:客户端进程,负责提交job到master Driver...

  • Spark 性能优化方案

    Spark 性能优化方案(转自李智慧的Spark性能优化方案): Spark性能测试工具 •Spark性能测试基准...

  • Spark 单机版安装

    Spark单机版安装 Spark部署模式主要是四种:Local模式(单机模式,是本文讲的方式,仅供熟悉Spark和...

  • spark 和 pyspark的理解

    最近学习了spark 相关的内容,写个笔记记录一下自己目前对于spark的理解,方便以后查阅。在本文的写作过程中,...

网友评论

      本文标题:【Spark学习笔记】Spark下的四种中文分词工具

      本文链接:https://www.haomeiwen.com/subject/bccrfktx.html