尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

左右熵的秘密:dict_build如何用信息熵锁定词语边界

左右熵的秘密:dict_build如何用信息熵锁定词语边界 左右熵的秘密dict_build如何用信息熵锁定词语边界【免费下载链接】dict_build自动构建中文词库http://www.matrix67.com/blog/archives/5044项目地址: https://gitcode.com/gh_mirrors/di/dict_build中文文本没有空格机器如何判断左右熵在哪里断开、哪里成词这是中文词库自动构建的核心难题。dict_build 正是这样一个面向 NLP 爱好者和初学者的开源工具它不依赖任何词典仅凭统计学指标——互信息、左右熵、位置成词概率与 ngram 频率——就能从任意 UTF-8 原始文本中自动构建中文词库。本文以左右熵为主线拆解这个自动构建词库工具的分词原理并给出最快上手方法。为什么中文分词这么难英文单词天然用空格分隔而中文句子是连续汉字流比如武汉市长江大桥既能切为武汉市/长江大桥也能切为武汉/市长/江大桥。机器必须借助统计特征来判断词语边界这正是 dict_build 存在的意义。什么是左右熵词语边界的统计学定义左右熵Left-Right Entropy衡量一个候选词左右两侧环境的不确定性。左熵该词左边出现过的所有字符分布越均匀左熵越高右熵该词右边出现过的所有字符分布越均匀右熵越高。例如吃后面能接饭、亏、力、惊……无数种搭配右熵很高说明吃是一个独立的词根而们几乎只跟在人称后面右熵极低很难独立成词。dict_build 取左右熵的较小值作为最终判定依据只有两侧环境都足够自由的字符串才被认为是真正的词。dict_build 的四大成词条件项目 READMEREADME.md明确列出了自动构建词库的四个统计门槛互信息判断两个字是否绑定紧密左右熵判断词边界是否清晰位置成词概率判断词在句中位置的分布ngram 频率判断候选串出现的次数是否足够。核心源码左右熵是如何算出来的左熵与右熵的计算逻辑非常直观核心实现位于 Builder.javagenFreqRight正向扫描句子统计候选串右侧后继字符的分布套用香农熵公式-Σ p·log(p)得到右熵genLeft先把句子反转再统计从而得到左熵mergeEntropy将左右两份结果合并取二者较小值写入 merge_entropy.dataextractWords再叠加互信息与频率过滤最终产出词表。整个流程环环相扣切分 ngram → 外部排序 → 统计熵值 → 合并过滤最终生成words_sort.data结果文件。快速上手的完整步骤第一步获取程序克隆仓库后使用 Gradle 打包git clone https://gitcode.com/gh_mirrors/di/dict_build cd dict_build ./gradlew distTar也可以在项目根目录直接使用已有的 dict_build-0.0.3.tar 发行包。第二步运行构建命令tar -xvf dict_build-0.0.3.tar cd dict_build-0.0.3/bin ./dict_build 你的数据文件绝对路径⚠️ 注意数据文件必须为 UTF-8 编码大文件若内存溢出可先执行export JAVA_OPTS-Xmx2G再运行。第三步解读输出结果运行结束后数据文件同目录会出现words_sort.data每行四列依次为词、词频、互信息、左右熵、位置成词概率。以《西游记》语料为例输出效果如下词词频互信息左右熵唐僧10037.074.35菩萨7659.473.60妖精6347.193.18可以看到唐僧、菩萨这类稳定专名左右熵都很高被准确识别为词。性能优化从 TST 到 Radix Treedict_build 0.0.3 版本做了一项关键升级用radix tree 替代 ternary search tree提升检索性能并加入 LOG 日志展示抽取进度详见 README.md。此外项目还内嵌了 java-merge-sort 源码借助 TextFileSorter 与 SortConfig 实现海量 ngram 的磁盘外部排序让超大规模语料也能稳定运行。左右熵的局限与最佳实践左右熵并非万能对频次极低的长词统计可能不稳定对的了么呢等高频虚词直接进入候选前就已通过清洗规则被剔除。建议实践时先用 10MB 左右小语料跑通全流程再逐步增大语料观察words_sort.data的成词质量结合业务需要二次过滤低频词条。小结从互信息到左右熵dict_build 用四把统计标尺在没有词典的情况下自动构建中文词库。理解左右熵锁定词语边界的原理你不仅能用好这个工具更能举一反三把它应用到新词发现、领域词库构建等 NLP 任务中。现在就克隆仓库用《金瓶梅》《西游记》或任意中文语料亲手体验一把无词典分词的乐趣吧【免费下载链接】dict_build自动构建中文词库http://www.matrix67.com/blog/archives/5044项目地址: https://gitcode.com/gh_mirrors/di/dict_build创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表