博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Pyhanlp自然语言处理中的新词识别
阅读量:2082 次
发布时间:2019-04-29

本文共 1643 字,大约阅读时间需要 5 分钟。

新词发现

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

调用方法

静态方法

一句话静态调用接口已经封装到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控制结果中词语的最低互信息值,一般取50200.该值越大,越长的词语就越容易被提取出来,有时候会出现一些短语。

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

 

转载地址:http://lsfqf.baihongyu.com/

你可能感兴趣的文章
Java并发与多线程
查看>>
对于多线程程序,单核cpu与多核cpu是怎么工作的
查看>>
多线程和CPU的关系
查看>>
认识cpu、核与线程
查看>>
关于Java健壮性的一些思考与实践!
查看>>
如何避免自己写的代码成为别人眼中的一坨屎!
查看>>
Postman 安装及使用入门教程
查看>>
获取指定包下所有自定义注解并提取注解信息
查看>>
Windows 环境下 Git clone pull fetch 慢 解决之道
查看>>
Redis (error) NOAUTH Authentication required.解决方法
查看>>
plsql窗口中文显示的是横版的 问题解决办法
查看>>
使用notePad修改将文件格式保存后不起作用
查看>>
如何查询oracle会话及锁 如何查锁了哪张表?如何杀掉会话
查看>>
Git常用命令速查手册
查看>>
Redis运维利器 -- RedisManager
查看>>
分布式之REDIS复习精讲
查看>>
分布式之数据库和缓存双写一致性方案解析
查看>>
Redis集群
查看>>
Oracle 查看和扩展表空间
查看>>
记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
查看>>