算法:
依据词的共有特征
成词的标准之一:内部凝固程度
什么是凝固程度?比如说一个词“电影院”,如果“电影”和“院”真的是各自独立地在文本随机出现,那么他两正好出现在一起的概率会很小。 我们通过计算P(电影)×P(院)远小于P(电影院)发现“电影院”很有可能是一个有意义的词。
因此我们枚举文本片段的组合方式
然后取凝聚程度的最小值
成词的标准之二:自由运用程度
什么是自由运用程度?比如说一个词“辈子”, 用法非常固定,除了“一辈子”、“这辈子”、“上辈子”、“下辈子”,基 本上“辈子”前面不能加别的字了。以至于直觉上会觉得“辈子”不能单独成词。因此我们说能够自由运用是一个词的关键。得具有丰富的左邻词集合与右邻词集合。
先介绍信息熵的概念,信息熵能够反映一个事件的结果平均会给你带来多大的信息量。如果某个结果的发生概率为p,当你知道它确实发生了,那么你得到的信息量为-log(p)。 如果一颗骰子的六面是1,1,1,2,2,3。那么我们投到1时,得到的信息量是-log(1/2);投到2时,得到的信息量是-log(1/3);投到3时得到的信息量是-log(1/6)。
事情越不确定,信息熵越大。
我们使用信息熵来衡量一个文本片段的左邻字集合与右邻字集合有多随机。
凝固程度与自由程度缺一不可,只看凝固程度的话容易找到半个词,只看自由度的话容易得到无意义的垃圾词组。
流程:
1. 输入: 按行分割的未切词文本
2. 文档清洗, 去除非中文字符
3. 构建子串-频率字典, 计算长度从1到max_word_length的所有子串的频率
4. 构建新词候选集, 计算所有子串-频率字典中的子串的PMI值,PMI大鱼min_pmi的所有子串构成新词候选集
5. 生成合法新词, 计算新词候选集中的所有子串左右邻居信息熵,信息熵高于min_entropy的所有子串构成最终的新词集
6. 输出:新词集