一、普通java项目

(1)添加项目jar包

File -> Project Structure
    Libarries 添加jar包jna-4.0.0.jar
(2)将Data文件夹复制到ICTCLAS2015文件夹下
(3)声明调用分词器的接口,如下:
//定义接口Clibrary,继承自com.sun.jna.Librarypublic interface CLibrary extends Library{//定义并初始化接口的静态变量,这一个语句是用来加载dll的,注意dll文件的路径    //可以是绝对路径也可以是相对路径,只需要填写dll的文件名,不能加后缀    //加载dll文件NLPIR.dll    CLibrary Instance =(CLibrary) Native.loadLibrary("C:\\jars\\nlpir\\bin\\ICTCLAS2015\\NLPIR",CLibrary.class);    // 初始化函数声明    public int NLPIR_Init(String sDataPath, int encoding, String sLicenceCode);    //执行分词函数声明    public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);    //提取关键词函数声明    public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit, boolean bWeightOut);    //提取文件中关键词的函数声明    public String NLPIR_GetFileKeyWords(String sLine, int nMaxKeyLimit, boolean bWeightOut);    //添加用户词典声明    public int NLPIR_AddUserWord(String sWord);//add by qp 2008.11.10    //删除用户词典声明    public int NLPIR_DelUsrWord(String sWord);//add by qp 2008.11.10    //获取最后一个错误的说明    public String NLPIR_GetLastErrorMsg();    //退出函数声明    public void NLPIR_Exit();    //文件分词声明    public void NLPIR_FileProcess(String utf8File, String utf8FileResult, int i);

}

(4)分词器使用实例:
String system_charset="UTF-8";//说明分词器的bin文件所在的目录String dir="C:\\jars\\nlpir\\bin\\ICTCLAS2015";int charset_type=1;String utf8File="C:\\utf8file.txt";String utf8FileResult ="C:\\utf8result.txt";//初始化分词器int init_flag =CLibrary.Instance.NLPIR_Init(dir,charset_type,"0");String nativeBytes=null;if(init_flag==0){    nativeBytes=CLibrary.Instance.NLPIR_GetLastErrorMsg();    System.out.println("初始化失败,原因为"+nativeBytes);    return;}String sinput="去年开始,打开百度李毅吧,满屏的帖子大多含有“屌丝”二字,一般网友不仅不懂这词什么意思,更难理解这个词为什么会这么火。然而从下半年开始,“屌丝”已经覆盖网络各个角落,人人争说屌丝,人人争当屌丝。\n" +"从遭遇恶搞到群体自嘲,“屌丝”名号横空出世";try{

//参数0代表不带词性,参数1代表带有词性标识    nativeBytes=CLibrary.Instance.NLPIR_ParagraphProcess(sinput,0);    System.out.println("分词结果为:"+nativeBytes);    //添加用户词典    CLibrary.Instance.NLPIR_AddUserWord("满屏的帖子 n");    CLibrary.Instance.NLPIR_AddUserWord("更难理解 n");    //执行分词    nativeBytes=CLibrary.Instance.NLPIR_ParagraphProcess(sinput,1);    System.out.println("增加用户词典后分词的结果为: " +nativeBytes);    //删除用户定义的词 更难理解    CLibrary.Instance.NLPIR_DelUsrWord("更难理解");    //执行分词    nativeBytes=CLibrary.Instance.NLPIR_ParagraphProcess(sinput,1);    System.out.println("删除用户词典后分词结果为: "+nativeBytes);    //从utf8File目录中读取语句进行分词,将结果写入utf8FileResult对应的路径之中,保留词性对应的标志    CLibrary.Instance.NLPIR_FileProcess(utf8File,utf8FileResult,1);    //获取sinput中对应的关键词,指定关键词数目最多为3    nativeBytes=CLibrary.Instance.NLPIR_GetKeyWords(sinput,3,false);    System.out.println("关键词提取结果是:"+nativeBytes);    //获取文件中对应的关键词    nativeBytes=CLibrary.Instance.NLPIR_GetFileKeyWords(utf8File,10,false);    System.out.println("关键词提取结果是:"+nativeBytes);}catch (Exception e){    e.printStackTrace();}

(3)String编码方式转换函数的实现:
//转换String的编码方式public static String transString(String str,String ori_encoding,String new_encoding){try{return new String(str.getBytes(ori_encoding),new_encoding);    }catch (UnsupportedEncodingException e){        e.printStackTrace();    }return null;}

二、spark项目
    请注意,一中步骤(1),(2),(3)也是必不可少的!
    有了普通实现的完成,下一步我想将分词部署在spark中,就有了下述项目。我想将文本转换为 单词,词性标志 PairRDD,具体实现如下,有上面的基础,就不在详细解释了。
SparkConf conf =new SparkConf().setAppName("test").setMaster("local");JavaSparkContext sc =new JavaSparkContext(conf);JavaRDD<String> inputs  =sc.textFile("C:\\utf8file.txt");JavaRDD<String> source=inputs.filter(new Function<String, Boolean>() {public Boolean call(String v1) throws Exception {return !v1.trim().isEmpty();            }        });JavaRDD<String> transmit = source.mapPartitions(new FlatMapFunction<Iterator<String>, String>() {public Iterable<String> call(Iterator<String> it) throws Exception {                List<String> list=new ArrayList<String>();                String dir="C:\\jars\\nlpir\\bin\\ICTCLAS2015";                int charset_type=1;                int init_flag =CLibrary.Instance.NLPIR_Init(dir,charset_type,"0");                if(init_flag==0){throw new RuntimeException(CLibrary.Instance.NLPIR_GetLastErrorMsg());                }try{while(it.hasNext()){                        list.add(CLibrary.Instance.NLPIR_ParagraphProcess(it.next(),1));                    }                }catch (Exception e){                    e.printStackTrace();                }return list;            }        }).filter(new Function<String, Boolean>() {public Boolean call(String v1) throws Exception {return !v1.trim().isEmpty();            }        });

JavaRDD<String> words = transmit.flatMap(new FlatMapFunction<String, String>() {public Iterable<String> call(String s) throws Exception {return Arrays.asList(s.split(" "));            }        }).filter(new Function<String, Boolean>() {public Boolean call(String v1) throws Exception {return !v1.trim().isEmpty();            }        });JavaPairRDD<String, String> result = words.mapToPair(new PairFunction<String, String, String>() {public Tuple2<String, String> call(String s) throws Exception {                String[] split = s.split("/");                return new Tuple2<String, String>(split[0], split[1]);            }        });for(Tuple2<String,String> t:result.collect())    System.out.println(t._1()+" "+t._2());

sc.stop();

程序执行结果:

scala版本
def ok(f:Iterator[String]):Iterator[String] ={val dir="C:\\jars\\nlpir\\bin\\ICTCLAS2015"  val charset_type=1  val init_flag=CLibrary.Instance.NLPIR_Init(dir,charset_type,"0")if(init_flag==0)null  val buf = new ArrayBuffer[String]for(it<-f){    buf+=(CLibrary.Instance.NLPIR_ParagraphProcess(it,0))  }  buf.iterator}

def main(args:Array[String]): Unit = {val conf = new SparkConf().setAppName("test").setMaster("local");  val sc = new SparkContext(conf);  val inputs = sc.textFile("c:\\utf8file.txt");  val results=inputs.mapPartitions(ok  );  results.collect().foreach(println)

}

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/zhoudayang/p/5027508.html

NLPIR中文分词器的使用相关推荐

  1. 中文分词工具比较 6大中文分词器测试(哈工大LTP、中科院计算所NLPIR、清华大学THULAC和jieba、FoolNLTK、HanLP)

    中文分词工具比较 6大中文分词器测试(jieba.FoolNLTK.HanLP.THULAC.nlpir.ltp) 哈工大LTP.中科院计算所NLPIR.清华大学THULAC和jieba 个人接触的分 ...

  2. 【Elasticsearch】Elasticsearch analyzer 中文 分词器

    1.概述 转载: https://blog.csdn.net/tzs_1041218129/article/details/77887767 分词器首先看文章:[Elasticsearch]Elast ...

  3. 11大Java开源中文分词器的使用方法和分词效果对比

    2019独角兽企业重金招聘Python工程师标准>>> 本文的目标有两个: 1.学会使用11大Java开源中文分词器 2.对比分析11大Java开源中文分词器的分词效果 本文给出了1 ...

  4. solr mysql 分词_solr 7+tomcat 8 + mysql实现solr 7基本使用(安装、集成中文分词器、定时同步数据库数据以及项目集成)...

    基本说明 Solr是一个开源项目,基于Lucene的搜索服务器,一般用于高级的搜索功能: solr还支持各种插件(如中文分词器等),便于做多样化功能的集成: 提供页面操作,查看日志和配置信息,功能全面 ...

  5. ik分词器 分词原理_Solr7.7.2中文分词器

    中文分词器的配置 1.7版本之后solr内置了中文分词器所以可以使用solr内置的分词器进行配置 1.在解压的目录内找到分词器包 2.将包放在solr项目的lib下 3.修改配置文件修改他下面的con ...

  6. 中文分词器分词效果的评测方法

    [原创]中文分词器分词效果的评测方法 2013年8月27日 由 learnhard留言 » 转载请注明出处:http://www.codelast.com/ 现在有很多开源的中文分词器库,如果你的项目 ...

  7. 当前几个主要的Lucene中文分词器的比较

    http://blog.fulin.org/2009/08/lucene_chinese_analyzer_compare.html 1. 基本介绍: paoding :Lucene中文分词" ...

  8. 中科院NLPIR中文分词java版

    中科院NLPIR中文分词java版 中科院NLPIR中文分词java版

  9. ElasticSearch中文分词器-IK分词器的使用

    IK分词器的使用 首先我们通过Postman发送GET请求查询分词效果 GET http://localhost:9200/_analyze {"text":"农业银行& ...

  10. 给solr配置中文分词器

    Solr的中文分词器 中文分词在solr里面是没有默认开启的,需要我们自己配置一个中文分词器. 目前可用的分词器有smartcn,IK,Jeasy,庖丁.其实主要是两种,一种是基于中科院ICTCLAS ...

最新文章

  1. 2021年春季学期-信号与系统-第十五次作业参考答案-第三小题参考答案
  2. java实现上传功能吗_Java实现文件上传功能
  3. Java LinkedHashMap类源码解析
  4. 阳泉师范高等专科学校计算机系,阳泉师范高等专科学校
  5. 数学之美 系列八-- 贾里尼克的故事和现代语言处理
  6. cron4j的Jfinal plugin
  7. 康托展开与八数码问题
  8. catia曲面扫掠命令详解_Mastercam快捷键命令,附中英文功能讲解!值得收藏!
  9. 3dmax导出x文件插件2020_C4D与unity3D,3DMAX,AI,AE,ks之间互导
  10. 职场新人的入门法则:少想、多做、立即执行!
  11. 在linux上执行.net Console apps
  12. iptables 一些有用的规则
  13. 实战HPUX 11.31 MC/SG更换锁盘
  14. 嵌入式操作系统内核原理和开发(基于链表节点的内存分配算法)
  15. Deep_Rank,经典ctr系列预估模型复现框架
  16. websocket 带头部信息请求 header_BeetleX之Websocket协议分析详解
  17. Web App 前端构建(纯净版)
  18. 几种div/css布局的代码
  19. dialogfield
  20. xp系统计算机启动时灰色界面,windows xp系统下屏幕开始按钮变成灰色怎么处理

热门文章

  1. linux免杀工具,kali 免杀工具shellter安装以及使用
  2. 阿里巴巴《Java开发手册》官网最全版本及配套 AJCG(Alibaba Java Coding Guidelines)辅助插件下载
  3. 什么是静态网页 什么是HTML5,什么是静态网页?
  4. Mac终端查看MD5/SHA1/SHA256
  5. 【CV2】Python中cv2使用小窗口显示高分辨率图片
  6. IBM ServerGuide 8.42
  7. 计算机毕业设计java+ssm的在线投票管理系统(源码+系统+mysql数据库+Lw文档)
  8. sxe增加服务器,sXe Injected服务端使用说明
  9. 邮箱发大文件服务器怎么删除,Exchange 2010如何删除系统默认邮箱数据库
  10. 领域驱动设计(DDD)入门概要