spark scala 用ansj分词

本文编辑于2017.4.15,使用ansj最新的版本5.1.1分词

先要将ansj_seg-5.1.1.jar和nlp-lang-1.7.2.jar加入工程

ansj源码github:https://github.com/NLPchina/ansj_seg

ansj下载链接:https://oss.sonatype.org/content/repositories/releases/org/ansj/ansj_seg/

nlp-lang下载链接:https://oss.sonatype.org/content/repositories/releases/org/nlpcn/nlp-lang/


下面的scala代码展示:从一个文本文件中读入用户自定义的词、停用标点、用spark的RDD分词:

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDD
import scala.io.Source
import org.ansj.splitWord.analysis.DicAnalysis
import org.ansj.library.DicLibrary
import org.ansj.recognition.impl.StopRecognition
import org.nlpcn.commons.lang.tire.library


object TextClassificationDemo {
  def main (args: Array[String]) {
    Logger.getLogger("org").setLevel(Level.OFF)
    System.setProperty("spark.ui.showConsoleProgress","False")
    //----添加自定义词典----
    val dicfile = raw"/xxx/xxx/ExtendDic" //ExtendDic为一个文本文件的名字,里面每一行存放一个词
    for (word <- Source.fromFile(dicfile).getLines) { DicLibrary.insert(DicLibrary.DEFAULT,word)} //逐行读入文本文件,将其添加到自定义词典中
    println("done")
    //----添加停用词----
    val filter = new StopRecognition()
    filter.insertStopNatures("w") //过滤掉标点
    //----先分一句话测试----
    val testsentence = DicAnalysis.parse("好喜欢《武林外传》这部电视剧!"). //用DicAnalysis分词,这是一个优先用户自定义词典分词的分词方式
      recognition(filter).  // 过滤停用词
      toStringWithOutNature("|") // 分词默认会打出词性,此语句用于不打出词性,并且分好的词用“|”隔开
    println(testsentence)
    // ----构建spark对象----
    val conf = new SparkConf().setAppName("TextClassificationDemo").setMaster("local[2]")
    val sc = new SparkContext(conf)
    //----读入要分词的文件----
    val filename = raw"/WorkSpace/TextClassificationDemo/data/SampleText.csv"    
    val CSVFile = sc.textFile(filename) // 用sc读入文件,此时文件的数据是RDD结构,注意textFile只能读UTF-8编码
    val splited = CSVFile.map( x => DicAnalysis.parse(x).recognition(filter).toStringWithOutNature("|") )
    splited.foreach(println) 
    println("done")  
  } 
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值