HanLP分词,如README中所说,如果没有特殊需求,可以通过maven配置,如果要添加自定义词典,需要下载“依赖jar包和用户字典".

分享某大神的示例经验:

是直接"java xf hanlp-1.6.8-sources.jar" 解压源码,把源码加入工程(依赖本地jar包,有些麻烦,有时候到服务器有找不到jar包的情况)

按照文档操作,在Spark中分词,默认找的是本地目录,所以如果是在driver中分词是没有问题的。但是如果要分布式分词,是要把词典目录放在HDFS上面,因为这样每台机器才可以访问到 【参考代码】

最好把新增词典放在首位(没有放在首位好像没有生效).第一次使用时,HanLP会把新增txt文件,生成bin文件,这个过程比较慢。但是只需要跑一次,它会把bin文件写到HDFS路径上面,第二次以后速度就快一些了。

注意到issue中说,只可以在mapPartition中使用

参考scala代码

class HadoopFileIoAdapter extends IIOAdapter {

override def create(path: String): java.io.OutputStream = {

val conf: Configuration = new Configuration()

val fs: FileSystem = FileSystem.get(URI.create(path), conf)

fs.create(new Path(path))

}

override def open(path: String): java.io.InputStream = {

val conf: Configuration = new Configuration()

val fs: FileSystem = FileSystem.get(URI.create(path), conf)

fs.open(new Path(path))

}

}

def myfuncPerPartition_ ( iter : Iterator [String] ) : Iterator[(Int, mutable.Buffer[String])]  = {

println("run in partition")

val keyWordNum = 6

HanLP.Config.IOAdapter = new HadoopFileIoAdapter

val ret = iter.filter(_.split(",",2).length==2)

.map(line=>(line.split(",",2)(1).trim.hashCode, HanLP.extractKeyword(line.split(",",2)(0),keyWordNum)

.map(str=>str.filterNot(stopChar.contains(_))).filter(w=>(w.length>1 || ( w.length==1 && white_single_word.contains(w(0))) ))

.filterNot(stopWords.contains(_)).take(keyWordNum).distinct))

ret

}

//调用

raw_data.repartition(100).mapPartitions(myfuncPerPartition_)

最新文章

  1. JQuery笔记汇总
  2. WPF学习之路(十二)控件(Items控件)
  3. 2016年11月5日--marquee标签、插入百度地图
  4. 【python】django-celery 实现django项目定时任务
  5. ffmpeg mp3 to m3u8
  6. Powershell的内置变量
  7. SQL Server 2012 内存管理 (memory management) 改进
  8. Java异常处理之try-catch-finally
  9. APMServ5.2.6升级PHP
  10. UIScrollView的布局
  11. APP加固技术历程及未来级别方案:虚机源码保护
  12. x64_dbg破解64位WinSnap4.5.6图文视频教程
  13. c# base 和this 继承
  14. plink计算两个SNP位点的连锁不平衡值(LD)
  15. Linux中DHCP服务器的简单配置
  16. linux FTP安全配置
  17. 【问题】vs IIS破除文件上传限制最全版
  18. 微信小程序-查询快递
  19. HTTP请求行、请求头、请求体详解
  20. 谈谈你对MVC的理解

热门文章

  1. 一个关于STL list使用 小示例
  2. mac使用sublime text3打开当前文件夹的终端
  3. axios的post传参时,将参数转为form表单格式
  4. 本地创建的项目使用版本管理(git)推送至远端。
  5. ettercap局域网DNS切换到恶意网址
  6. eureka 服务实例实现快速下线快速感知快速刷新配置解析
  7. win7安装Elasticsearch和Elasticsearch-Head插件
  8. Spring常用的jar+普通构造注入
  9. 剑指XX游戏(六) - 轻松搞定面试中的红黑树问题
  10. dpkg软件包管理