复现经典:用dict_build实现Matrix67互信息+左右熵新词发现算法
复现经典用dict_build实现Matrix67互信息左右熵新词发现算法【免费下载链接】dict_build自动构建中文词库http://www.matrix67.com/blog/archives/5044项目地址: https://gitcode.com/gh_mirrors/di/dict_build在自然语言处理中新词发现算法一直是中文分词领域的经典难题。今天要介绍的dict_build是一个用 Java 实现的自动构建中文词库工具它完整复现了 Matrix67 博客中经典的互信息左右熵新词发现算法无需任何标注语料和分词词典仅凭一段原始文本就能自动挖掘出高价值的新词堪称无监督分词的入门神器。本文将从算法原理、快速上手、源码结构三个角度带你彻底看懂这套经典方案。什么是互信息左右熵新词发现算法Matrix67 在其经典博文中提出了一套无监督新词发现思路一个字符串是否能成为词可以从内部黏合度和外部自由度两个维度来判断。内部黏合度字与字之间结合得是否紧密紧密到可以当作一个整体外部自由度这个整体前后能搭配的字是否足够多样多样说明它边界清晰、独立成词。这套思路不需要分词词典、不需要标注语料属于典型的无监督新词发现算法非常适合从小说、新闻、电商评论、招聘 JD 等垂直语料中挖掘领域新词。互信息衡量词内部的黏合度**互信息PMI**衡量的是两个或多个字共同出现的概率与各自独立出现概率的比值。比值越大说明这些字绑定越强越像一个词。例如西和门经常一起出现且西门内部结合紧密它的互信息值就会显著偏高。左右熵衡量词边界的自由度左右熵分别统计一个候选词左边和右边出现过的不同字符的分布情况。熵值越高说明该词左右搭配越丰富、边界越独立。比如的、了这类高频虚词左右搭配极其丰富但它们本身不算新词需要靠其他条件过滤。dict_build 在实现时正是把互信息、左右熵、位置成词概率、ngram 频率四者结合起来综合判定成词条件非常严谨相关逻辑集中在 FastBuilder.java 中。dict_build 快速上手一键自动构建中文词库第一步获取并打包程序首先获取项目源码git clone https://gitcode.com/gh_mirrors/di/dict_build项目采用 Gradle 构建仓库中同时保留了 pom.xml 便于 Maven 用户使用可以使用gradle distTar打出一个可直接运行的 tar 包仓库根目录也提供了现成的 dict_build-0.0.3.tar解压即可使用。第二步运行新词发现工具解压后进入 bin 目录把原始语料文件的绝对路径作为参数传入即可./dict_build 你的数据文件的绝对路径注意数据文件必须是 UTF-8 编码每行一段文本即可无需任何预处理。程序的完整入口在 Main.java它会依次完成 ngram 统计、左右熵计算、合并与成词抽取。第三步解读输出结果运行结束后会在数据文件同目录生成words_sort.data每一行有五列信息列含义词抽取出的候选新词词频该词在语料中的出现次数互信息内部黏合度指标值越高越像词左右熵边界自由度指标值越高边界越清晰位置成词概率首尾位置成词概率用于过滤垃圾词以《西游记》为例抽取效果相当惊艳八戒 1807 7.88874324889826 2.00952580557629 0.36441586280814575 师父 1632 7.507794640198696 3.745294449785798 0.1371395690812608 唐僧 1003 7.076815597050832 4.350465172292435 0.43277723258096173不需要任何词典八戒师父唐僧这些核心人物词就被自动挖掘出来了。同样地《金瓶梅》中能抽到西门庆潘金莲《全宋词》中能抽到东风江南相思等高频意象词甚至在拉勾 JD 语料中能抽到数据分析互联网相关专业这类领域词。源码结构解析读懂经典实现想要深入理解这套新词发现算法的工程实现可以重点看这几个模块Main.java程序入口串联整个流水线FastBuilder.java核心实现v0.0.3 起用radix tree基数树替代了原来的 ternary search tree大幅提升查找性能并加入了日志输出展示抽取进度CounterMap.java并发安全的计数工具用于统计左右相邻字符分布PosProbability.java从搜狗词典统计单字的位置成词概率生成 pos_prop.txtTernaryTree.java旧版实现已标记 Deprecated适合对比学习另外项目还内置了com/fasterxml/sort/外部排序模块用于处理超大语料的磁盘排序这也是它能处理 GB 级文本的原因。常见问题大文件内存不足怎么办如果数据文件较大可能出现 Out Of Memory。macOS 和 Linux 用户可以这样调整 JVM 堆内存2G 可根据机器实际情况调整export JAVA_OPTS-Xmx2G ./dict_build 你的数据文件的绝对路径写在最后dict_build 用不到几百行的核心代码就把Matrix67 互信息左右熵新词发现算法完整落地还兼顾了大语料的工程可行性。对于想学习新词发现算法、无监督分词原理或者需要快速从垂直语料中构建自定义词典的开发者来说它都是一份不可多得的经典参考实现。动手 clone 一份源码跑起来你也能轻松体验机器自动学词的乐趣。【免费下载链接】dict_build自动构建中文词库http://www.matrix67.com/blog/archives/5044项目地址: https://gitcode.com/gh_mirrors/di/dict_build创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

带加速电容的NPN型开关电路

带加速电容的NPN型开关电路

一、 原理加补充波形当输入为高电平时,大于导通管压降,三极管深度饱和导通,Uce ≈ 0V,即UC ≈ 0V,所以输出0V,此时输出电流约440uA;理论上:当输入为低电平时,三极管截止&…

2026/10/18 22:46:15 阅读更多 →
macchanger快速上手:3条命令轻松查看与修改网卡MAC地址

macchanger快速上手:3条命令轻松查看与修改网卡MAC地址

macchanger快速上手:3条命令轻松查看与修改网卡MAC地址 【免费下载链接】macchanger GNU MAC Changer 项目地址: https://gitcode.com/gh_mirrors/ma/macchanger macchanger(GNU MAC Changer)是一款经典的 Linux 命令行工具&#xff0…

2026/10/17 14:55:54 阅读更多 →
支付防重复扣款:NestJS RedisX幂等性插件的完整实战指南

支付防重复扣款:NestJS RedisX幂等性插件的完整实战指南

支付防重复扣款:NestJS RedisX幂等性插件的完整实战指南 【免费下载链接】nestjs-redisx Modular Redis toolkit for NestJS with plugin architecture - caching, locks, rate limiting, circuit breaker, pub/sub, idempotency, streams, metrics & tracing …

2026/10/18 18:40:41 阅读更多 →

最新新闻

十月AI前端面试:告别老实打法,掌握流式交互与状态管理

十月AI前端面试:告别老实打法,掌握流式交互与状态管理

1. 十月求职季的AI前端面试现状拆解十月这个时间节点,在招聘市场里向来是个微妙的存在。一边是秋招进入中后段,补录和急招的岗位开始释放;另一边是不少团队在年中调整后重新梳理HC,赶在年底前把人头落定。AI前端这个方向&#xff…

2026/10/18 22:48:55 阅读更多 →
OpenSpec:可执行API契约协议与CI/CD分层验证实践

OpenSpec:可执行API契约协议与CI/CD分层验证实践

1. OpenSpec不是另一个CLI工具,而是Spec驱动开发的底层协议层OpenSpec这个词最近在前端工程、AI编程助手和CI/CD自动化圈子里突然密集出现,但很多人点开GitHub仓库或npm页面后第一反应是:“这到底是个库?框架?还是规范…

2026/10/18 22:48:55 阅读更多 →
Claude Code插件开发实战:knowledge-work-plugins从入门到精通

Claude Code插件开发实战:knowledge-work-plugins从入门到精通

1. 从零认识 knowledge-work-plugins:它到底解决什么问题第一次看到knowledge-work-plugins这个仓库名,很多人会以为是某个知识管理软件的插件合集,或者是一个笔记工具的扩展包。实际上,它是 Anthropic 官方在 Claude Cowork 生态…

2026/10/18 22:48:55 阅读更多 →
RAG知识库落地实战:从文档分块到混合检索与重排优化

RAG知识库落地实战:从文档分块到混合检索与重排优化

做RAG知识库也有几年了,从最早的裸装LangChain一步步叠工具,到后来能独立给企业搭一套能上线、能回答、能被业务方接受的方案,中间踩过的坑比写过的代码还多。最近帮几个朋友改了简历里的RAG项目,也在不少场合聊过这个话题&#x…

2026/10/18 22:48:55 阅读更多 →
基于YOLOv10的疲劳驾驶检测系统:从数据标注到UI部署全流程解析

基于YOLOv10的疲劳驾驶检测系统:从数据标注到UI部署全流程解析

疲劳驾驶检测这几年可以说是计算机视觉领域最热门的实战方向之一,GitHub上相关的开源项目一大堆,但很多都是“能跑、效果一般、界面简陋”的演示级作品。我这次做了一套相对完整的方案,把YOLOv10目标检测、自制标注数据集、实时UI界面和Pytho…

2026/10/18 22:48:55 阅读更多 →
React前端工程化架构实践:响应式、可扩展、可维护的rea式设计

React前端工程化架构实践:响应式、可扩展、可维护的rea式设计

1. 从“rea”这个标题说起:一个被低估的缩写背后藏着什么第一次看到“rea”这个标题的时候,我承认自己愣了几秒。三个字母,没有上下文,没有说明,放在任何一个技术社区里都像是某种暗号。但恰恰是这种极简的命名方式&am…

2026/10/18 22:47:54 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →