zoukankan      html  css  js  c++  java
  • 新词发现

    新词发现

    定义

    新词发现就是识别特定预料中不在字典中的词,所以新词又被称为「未登录词」,比如微博语料中的网络流行语,黑产语料中的黑话。

    一般的做法是不依赖字典做无监督分词,分好的词减去已知字典,得到的就是新词。这样新词发现就被转换为分词任务,或者说是一个识别预料中的词的任务。

    下面介绍几种基于统计的判断是否成词的指标

    1、词频

    对语料完整切词,比如对于一句话 "明天可能要下雨",以2grams, 3grams, 4grams 的方式切词

    2grams切分为:明天,天可,可能,能要,要下,下雨

    3grams切分为:明天可,天可能,可能要,能要下,要下雨

    4grams切分为:明天可能,天可能要,可能要下,能要下雨

    统计上词出现的次数,词频越高,越可能成词。

    2、凝固度

    有一个两字词 (xy)(P(xy)) 代表词 (xy) 出现的概率,凝固度的计算如下

    [frac{P(xy)}{P(x)P(y)} ]

    假如 (x)(y) 相互独立,那么 (P(xy) = P(x) * P(y)) ,凝固度接近于 1,当 (xy) 越容易成词,(P(xy)) 相比于 (P(x) * P(y)) 会更大,凝固度就更大。

    对于三字,四字词呢,一般用多种分割方式的最小值作为多字词的凝固度

    [minleft(frac{P(xyz)}{P(x)P(yz)}, frac{P(xyz)}{P(xy)P(z)} ight) ]

    一般使用中会对概率比值取对数,就变成点间互信息的概念

    [PMI(xy) = log_{2}left(frac{P(xy)}{P(x)P(y)} ight) ]

    当然取不取对数,在实际使用中区别不太大,都可以卡一个阈值来判断凝固度是否达标。

    基于词频和凝固度实现的新词发现:https://kexue.fm/archives/3913

    3、左右熵

    熵:代表信息的混乱程度,熵越大,代表越混乱,信息量越大

    当前词的左熵是指,当前词的左侧出现的字的熵,也就是当前词都可以应用在哪些字后面,应用越广泛,越像一个词。

    比如"被子"这个词,左侧有可能是"叠、盖、买、晒、晾",统计这些前置字出现的频率,计算熵值,结果我们可知"被子"的熵值就挺大的

    再比如 "日梦"的左侧出现的字可能大概率就是"白",左熵较小,那么就认为"日梦"可能不容易单独成词,实际情况我们知道"白日梦"更适合做一个词

    右熵类似计算

    左右熵衡量的是一个词在外部的应用场景是否广泛,熵越大,应用场景越多,越有可能成词。

    使用时可以取左右熵的最大值、最小值、均值来用,看具体使用场景

    4、词内熵

    计算当前词左侧部分的右侧对应的外部熵,熵越大,越不可能成词

    比如"被子"这个词,看"被"字右侧还可以是哪些字,计算一个熵出来,就是"被子"这个词左部的右熵

    相应的也可以计算右部的左熵

    词内熵利用熵信息来衡量不成词的概率,与"凝固度"指标相反

    来自一个反作弊博主:https://zhuanlan.zhihu.com/p/25499358

    5、业务应用

    xxxx

    6、分词延伸

    新词发现问题可以转化为分词问题。分词问题的两类解法

    6.1、基于统计的分词

    基于字典的前向匹配法、最少成词法、最大概率法

    考虑马尔可夫假设,基于语言模型的分词最大概率法

    结论:效果已经较好,提升空间较小

    6.2、转换为序列标注问题

    考虑n-grams文本标注,标签有n个,以n=4举例

    f: 单子词或者多字词的首字

    s: 词的第二个字

    t: 词的第三个字

    other: 词的第四个字

    那么分词问题就转化成了序列标注问题,标注的标签就是以上四种,序列标注是比较成熟的问题了,可以用HHM 或者 LSTM来解决。

    结论:利用神经网络能识别更深层次的语义信息,还有一定的探索空间

    苏剑林基于HMM做的分词:https://kexue.fm/archives/3922

    苏剑林基于双向LSTM做的分词:https://kexue.fm/archives/3924

    7、参考资料

    Matrix67的经典新词发现博客:http://www.matrix67.com/blog/archives/5044

    苏剑林三步生成新词:https://kexue.fm/archives/4256;更新版:https://kexue.fm/archives/6920

    新词发现相关工具:SmoothNLP、HanLP

  • 相关阅读:
    android注解使用具体解释(图文)
    Zepto Code Rush 2014-A. Feed with Candy(HACK)
    LoadRunner解决超时错误
    Loadrunner定时执行脚本
    windows下at命令使用详解
    java编写Loadrunner脚本
    Mysql 查看连接数,状态
    获取ping的最短、最长、平均时间
    mysql中You can't specify target table for update in FROM clause错误
    修改Apache的最大连接数
  • 原文地址:https://www.cnblogs.com/wa007/p/15064480.html
Copyright © 2011-2022 走看看