zoukankan      html  css  js  c++  java
  • Pyhanlp自然语言处理中的新词识别

     

    新词发现

    “新词发现”模块基于信息熵和互信息两种算法,可以在无语料的情况下提取一段长文本中的词语,并支持过滤掉系统中已存在的“旧词”,得到新词列表。

    调用方法

    静态方法

    一句话静态调用接口已经封装到HanLP中:

        /**

         * 提取词语

         *

         * @param text 大文本

         * @param size 需要提取词语的数量

         * @return 一个词语列表

         */

        public static List<WordInfo> extractWords(String text, int size)

        /**

         * 提取词语

         *

         * @param reader 从reader获取文本

         * @param size   需要提取词语的数量

         * @return 一个词语列表

         */

        public static List<WordInfo> extractWords(BufferedReader reader, int size) throws IOException

        /**

         * 提取词语(新词发现)

         *

         * @param text         大文本

         * @param size         需要提取词语的数量

         * @param newWordsOnly 是否只提取词典中没有的词语

         * @return 一个词语列表

         */

        public static List<WordInfo> extractWords(String text, int size, boolean newWordsOnly)

        /**

         * 提取词语(新词发现)

         *

         * @param reader       从reader获取文本

         * @param size         需要提取词语的数量

         * @param newWordsOnly 是否只提取词典中没有的词语

         * @return 一个词语列表

         */

        public static List<WordInfo> extractWords(BufferedReader reader, int size, boolean newWordsOnly) throws IOException

    调用示例请参考com.hankcs.demo.DemoNewWordDiscover 值得注意的是,在计算资源允许的情况下,文本越长,结果质量越高。对于一些零散的文章,应当合并为整个大文件传入该算法。

    高级参数

    根据语料的长度或用词的不同,默认的参数有可能不能得到最佳的结果。我们可以通过构造不同的NewWordDiscover调整提取算法。该构造函数如下:

    /**

     * 构造一个新词识别工具

     * @param max_word_len 词语最长长度

     * @param min_freq 词语最低频率

     * @param min_entropy 词语最低熵

     * @param min_aggregation 词语最低互信息

     * @param filter 是否过滤掉HanLP中的词库中已存在的词语

     */

    public NewWordDiscover(int max_word_len, float min_freq, float min_entropy, float min_aggregation, boolean filter)

    其中

    · max_word_len控制识别结果中最长的词语长度,默认值是4;该值越大,运算量越大,结果中出现短语的数量也会越多。

    · min_freq控制结果中词语的最低频率,低于该频率的将会被过滤掉,减少一些运算量。由于结果是按照频率排序的,所以该参数其实意义不大。

    · min_entropy控制结果中词语的最低信息熵的值,一般取0.5左右。该值越大,越短的词语就越容易被提取出来。

    · min_aggregation控制结果中词语的最低互信息值,一般取50到200.该值越大,越长的词语就越容易被提取出来,有时候会出现一些短语。

    · filter设为true的时候将使用内部词库过滤掉“旧词”。

  • 相关阅读:
    Delphi 正则表达式之TPerlRegEx 类的属性与方法(2): 关于子表达式
    Delphi 正则表达式语法(7): 匹配转义字符
    Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找
    Delphi 正则表达式语法(5): 边界
    Delphi 正则表达式语法(8): 引用子表达式 也叫反向引用
    Delphi 正则表达式语法(3): 匹配范围
    Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配
    Delphi 正则表达式语法(9): 临界匹配 也叫"预搜索"与"反向预搜索"
    Delphi 正则表达式语法(10): 选项
    善用 Web 调试代理工具
  • 原文地址:https://www.cnblogs.com/adnb34g/p/10383712.html
Copyright © 2011-2022 走看看