/newword-py

基于 Nagao 算法统计词频

Primary LanguagePython

Introduction

基于 Nagao 算法统计词频,可以用于可能成词的词频统计,也可快速构建领域词典。

x=(c_1c_2...c_n), 判断成词的依据:

词频(n_freq)
左邻, 右邻较小值(n_av): min(l_av,r_av)
左邻,右邻均衡值(n_eta): 2*l_av*r_av/(l_av*l_av+r_av*r_av)
最小词长度(n_size)
最大词频(n_gram)
最小成词概率(n_threshold): sqrt(n_freq) /(1/l_av + 1/r_av)*min_{1<=i<=n-1}(n_freq(c_1...c_i)*n_freq(c_(i+1)...c_n))

使用

当前只测试 Python3。使用方法

 python3 newword.py input_file output_file [newword.conf]

默认字符编码为 UTF8, 如果字符编码为 GBK, 则需指定配置文件,及对应的分隔符。

注意事项

  1. 分隔符文件中的字符不会出现在可能成词中,如果需要包含,则在分隔符文件中删除。
  2. 因为需要统计左邻,右邻,文件需读取两次。所以,在程序执行完毕之前,不要对语料进行移动,修改,删除等操作。
  3. 本代码基于 python 的 dict 实现,读取语料与使用内存占比约为 1:100。
  4. 如果分隔符分隔得到的为数字字母组合,则不参与成词统计,而是直接统计词频。