• 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/

  • 相关阅读:
    Mysql数据库基本操作
    Entity Framework 实践系列 —— 搞好关系 单相思(单向一对一,onetoone)
    ADO.NET最佳实践
    C++试题1
    SQL操作(初级、中级、高级)
    存储过程入门与提高
    数据库学习笔记
    触发器设计技巧与实例
    UML在关系型数据库设计中的应用
    数据库设计的一些构想
  • 原文地址:https://www.cnblogs.com/heiyang/p/12301981.html
Copyright © 2020-2023  润新知