zoukankan      html  css  js  c++  java
  • 2020年寒假假期总结0211

      Ansj分词工具详细使用

      api文档:http://nlpchina.github.io/ansj_seg/

      四种分词方法:

      基本分词:

    List<Term> parse = BaseAnalysis.parse("腾讯公司的员工非常多,有40678个员工,老板是马化腾,现在也开始搞区块链了");
    System.out.println(parse);

      ToAnalysis 精准分词:兼顾精度与速度,比较均衡

    List<Term> parse = ToAnalysis.parse("腾讯公司的员工非常多,有40678个员工,老板是马化腾,现在也开始搞区块链了");    
    System.out.println(parse);

      NLP分词:分词能力更强,但是速度较慢。

    List<Term> parse = NlpAnalysis.parse("腾讯公司的员工非常多,有40678个员工,老板是马化腾,现在也开始搞区块链了");
    System.out.println(parse);

       IndexAnalysis分词:一般用于检索或搜索引擎

    List<Term> parse = IndexAnalysis.parse("腾讯公司的员工非常多,有40678个员工,老板是马化腾,现在也开始搞区块链了");
    System.out.println(parse);

       通病:词典过时,需要补充新词,同时没有自带的停用词表,需要自己添加停用词表。在上面的分词中,都没有识别区块链三个字,都是拆分了,没有识别出来。

      添加自定义词典:(前提:工程是maven项目)

      一.Ansj自带办法:

      Ansj自带方法添加新词,但是只能一个一个添加。

    UserDefineLibrary.insertWord("区块链", "n", 1000);//添加自定义词汇、自定义词性
    
    UserDefineLibrary.removeWord("区块链");//去除自定义词汇

      二.利用配置文件添加自定义词表

      1.在resources目录下添加配置文件:library.properties。添加内容:

    userLibrary=/library/userLibrary.dic #此行为自定义词典的位置和名称
    isRealName=true
    

       2.在resources目录下新家library目录,再在其中添加userLibrary.dic文件,主要注意的是文件的格式是:词语内容  词性  词频,例如:区块链  n  1000,中间间隔的是tab制表符。

      3.代码声明变量配置:

            String str = "腾讯公司的员工非常多,有40678个员工,老板是马化腾,现在也开始搞区块链了";
            Forest forest= Library.makeForest(Ansj.class.getResourceAsStream("/library/userLibrary.dic"));//加载字典文件
            String resultstr= NlpAnalysis.parse(str, forest).toStringWithOutNature();
            System.out.println(resultstr);

      目录结构如下:

       添加自定义停用词表:(前提:工程是maven项目)

      Ansj只有自带方法一个一个添加停用词,没有通过配置添加的方法(也许是我没有看到,如果您看到,可以补充在评论中),但是我们需要的停用词都很多,所以只能自己写方法读写文档来添加停用词。这里就不在赘述,就是java方法读取文件,在利用自带方法来添加。

    StopRecognition s = new StopRecognition();
    s.insertStopWords(“个”);
    String str = "腾讯公司的员工非常多,有40678个员工,老板是马化腾,现在也开始搞区块链了";
    Forest forest= Library.makeForest(Ansj.class.getResourceAsStream("/library/userLibrary.dic"));//加载字典文件
    String resultstr= NlpAnalysis.parse(str, forest).recognition(s).toStringWithOutNature();

      更多的关于Ansj的方法可以查看api文档,链接:http://nlpchina.github.io/ansj_seg/

  • 相关阅读:
    Two Sum II
    Subarray Sum
    Intersection of Two Arrays
    Reorder List
    Convert Sorted List to Binary Search Tree
    Remove Duplicates from Sorted List II
    Partition List
    Linked List Cycle II
    Sort List
    struts2结果跳转和参数获取
  • 原文地址:https://www.cnblogs.com/heiyang/p/12301981.html
Copyright © 2011-2022 走看看