| 类 | 技能 | 名称 | 职责 |
|---|---|---|---|
| 🤦♀️能工智人 | 💡🔬🎨🧩🛠️⚖️📝📈 | y-in-gb |
原型设计、算法研发、测试评估、指派调研与编程任务 |
| 🤖人工智能 | 🛠️ | deepseek-v4-pro |
一级编程辅助 |
| 🤖人工智能 | 🔍📝🛠️🎨 | deepseek-v4-flash |
一级调研辅助、二级编程辅助 |
- 极速轻量:专为超长文本、企业级知识库设计,纯 CPU 运算,实测处理速度达 5万字/秒
- 低维护成本:无需维护任何专业术语词典,无需调用 Embedding 模型,所有计算完全基于用户输入的文本数据
- 白盒可解释:每一个切分边界与关联判定均有明确依据
- 垂直领域泛化性:算法与语义无关,仅依赖统计特征,可丝滑迁移至文学、法律、医药生物、工业制造等任意领域
- AI场景:企业知识库精准检索、专业术语自动发现与对齐、LLM 推理前的分词策略等
- Python3.10+
算法只需调用Python 标准库,无需额外pip install,具体说明如下:
| 库 | 是否为Python标准库 | 说明 |
|---|---|---|
sys |
✅ | 系统相关参数和函数,如命令行参数等 |
re |
✅ | 正则表达式操作 |
collections |
✅ | 特殊容器数据类型,如 Counter、defaultdict 等 |
当前主流大语言模型(LLM)的 Tokenizer 多基于公开语料(如维基百科、新闻)预训练,且内部逻辑为黑盒状态。这导致在垂直领域中,高频专有名词极易被割裂为无意义的碎片化子词(Sub-word),造成语义失真
- 算法突破:本算法实验了仅依赖输入语料自身的字符频次统计与邻接聚合模式,即可在无外部模型辅助的情况下,自动推导出该领域的最优语义原子单元
- 颠覆性可能:本算法有望发展为一种白盒化、可热插拔的领域动态 Tokenizer。未来垂直领域 LLM 可在训练或推理前置环节,利用本算法重新编码输入序列,从根本上改变 Transformer 架构的注意力分布,提升领域理解精度
传统 RAG 体系严重依赖稠密向量检索(Dense Retrieval),需将文档切片后通过 Embedding 模型转为高维向量。这种模式存在三大痛点:数据偏差、计算资源消耗巨大、长尾实体召回率低。
- 算法突破:本算法将文本重新定义为由“关键字符锚点”及其“强关联邻接片段”组成的关系结构
- 颠覆性可能:未来的知识检索或将完全专为“Grep式精准定位”,检索时,系统只需扫描目标实体与其关系结构,即可在毫秒级内完成证据片段(Evidence Chunks)的召回,从而绕过庞大的向量数据库与 Embedding 模型,实现极度轻量、完全可解释的检索模式
Nodicta Entity Extractor V0 提供对中文小说/文章的分章节、多粒度统计以及高频字符的左右邻接语境分析功能。支持从全文、章节、段落、行、句子、半句(子句)六个粒度统计中文字符频次,并能自动挖掘与高频字符存在强关联的上下文字符。
- 自动分章:识别以“第X章”或“第X回”开头的标题,将文本分割为章节。
- 多粒度统计:
full:全文chapter:章节paragraph:段落(以空行分隔)line:行(以换行符分隔)sentence:句子(按。!?;!?;等结束标点分割)clause:半句/子句(按,、:;等内部标点再细分)
- 字符频次统计:对每个单元统计中文字符总数、唯一字符数及频率列表。
- 基于高频字符语境分析的中文实体抽取
- Python 3.10+
- 仅使用标准库:
sys,re,collections
python nodicta-entity-extractor-v0.py <输入文件路径> [--unit <粒度>] [--analyze-top-n <N> | --analyze-all]
| 参数 | 说明 |
|---|---|
输入文件路径 |
必需,UTF-8 编码的 txt 文件 |
--unit <粒度> |
可选,指定统计粒度,可选值:full, chapter, paragraph, line, sentence, clause,默认值为 paragraph |
--analyze-top-n <N> |
可选,执行语境分析,只分析全文出现次数最高的前 N 个字符(N 为正整数) |
--analyze-all |
可选,执行语境分析,分析所有出现次数 >1 的字符 |
注意:--analyze-top-n 和 --analyze-all 互斥,不能同时使用。若不提供任何分析参数,则默认执行统计。
python nodicta-entity-extractor-v0.py 小说.txt
输出示例:
识别到 20 章
统计粒度:段落
index 0: [第1章、第1段] 中文字符总数=72, 唯一字符个数=61
唯一字符频率列表: [('的', 6), ('着', 4),...]
(共 61 个唯一字符,仅显示前 20 个)
...
所有单元合并唯一字符频率列表(共 2547 个唯一字符,显示前 20 个):
[('的', 1988), ('了', 1277), ('不', 687), ('一', 657), ('儿', 554),...]
(其余 2527 个未显示)
python nodicta-entity-extractor-v0.py 小说.txt --unit sentence
python nodicta-entity-extractor-v0.py 小说.txt --analyze-top-n 5
输出会依次显示每个目标字符的:
- 出现总次数
- 包含它的半句数量
- 左/右部分的字符频率列表
- 关键关联字符及其占比
输出示例:
识别到 20 章
=== 前 5 个最高频字符的语境分析 ===
【字符:的】 出现总次数:1988
包含该字符的半句数量:1803
具体半句位置:
左部分字符频率列表(1073 个唯一字符):
[('了', 322), ...]
(其余 1053 个未显示)
右部分字符频率列表(994 个唯一字符):
[('了', 215), ('的', 185), ...]
(其余 974 个未显示)
左右部分均无关键字符,将 '的' 标记为非关键字符。(后续循环将忽略该字符)
...
【字符:儿】 出现总次数:...
左部分关键字符(判定条件:半句内占比 ...):
- ... (当前部分频率=499):半句内占比 = 499/554 = 0.90,全文占比 = 499/501 = 1.00 [判定依据:half_ratio]
- ... (当前部分频率=498):半句内占比 = 498/554 = 0.90,全文占比 = 498/524 = 0.95 [判定依据:half_ratio]
右部分关键字符:
无
...
=== 分析结果汇总 ===
非关键字符列表(左右均无关键字符的目标字符):['一', '不', '了', '的']
关联字符记录(共 2 条):
目标字符='儿' 来源='left' ... 半句内占比=499/554=0.90 全文占比=499/501=1.00 [判定依据:半句内占比]
目标字符='儿' 来源='left' ... 半句内占比=498/554=0.90 全文占比=498/524=0.95 [判定依据:半句内占比]
python nodicta-entity-extractor-v0.py 小说.txt --analyze-all
- 每个单元一行:
index <编号>: [位置信息] 中文字符总数=..., 唯一字符个数=... - 下方显示该单元的字符频率列表(按频次降序,默认显示前20个,可修改代码中
max_freq_print参数) - 最后汇总所有单元的合并频率列表
- 对每个目标字符输出:
- 出现总次数、包含该字符的半句数
- 左/右部分字符频率列表(显示前20个)
- 判定出的关键关联字符,附带半句占比和全文占比
- 最终汇总:
- 非关键字符列表(左右均无强关联的字符)
- 所有关联字符/实体记录
- 修改
max_freq_print默认值(代码中为20)可控制频率列表显示的条目数 - 修改
split_chapters中的标题正则表达式可适配不同章回格式
- 输入文件必须为 UTF-8 编码(支持
utf-8-sig,可自动处理 BOM) - 分章依赖于标题行格式,若文本无章回标题,则整个文本视为一个章节
- 粒度分割基于标点,标点符号(如引号、省略号)在句子/半句切分前会被移除,以避免干扰
- 分析模式固定基于半句(clause)粒度
Nodicta Tokenizer V0 基于字符左右邻接统计与频次数字模式分组算法,对中文文本中的每个半句(子句)进行自动切分,在合适位置插入分隔符 |。
分词器不依赖预置词典,而是利用字符在全文中出现的总频次,结合左右邻字符的出现情况,通过检测频次数字序列的多种组合模式,动态决定切分边界,从而将半句拆分为有意义的内部片段。
- 自动分章:识别“第X章”或“第X回”标题,将文本划分为章节。
- 全文中文字符统计:对每个中文字符,统计其出现总次数,以及它在所有半句中左侧相邻字符和右侧相邻字符的频次。
- 基于统计的半句切分:
- 对每个半句(以逗号、顿号等内部标点切分),提取其中每个字符的总频次,形成一个数字序列。
- 对数字序列应用分组算法,识别特定的数值模式,将序列切分为若干连续片段。
- 每个片段对应半句中的一个子串,最终用
|连接所有片段,输出切分结果。
- 输出结果带位置信息:每个切分后的半句都会显示其章节、段落、行、句子、半句序号,方便溯源。
- Python 3.10+
- 仅使用标准库:
sys,re,collections
python nodicta-tokenizer-v0.py <输入文件路径>
| 参数 | 说明 |
|---|---|
<输入文件路径> |
必需,UTF-8 编码的 txt 文件 |
python nodicta-tokenizer-v0.py 小说.txt
输出示例:
识别到 20 章
--- 半句分割结果(加入 '|' 表示切分) ---
[第1章、第1段、第1行、第1句、第1个半句] 昏暗的|殿阁内
[第1章、第1段、第1行、第1句、第2个半句] ...
注意:实际输出取决于输入的文本内容和算法判断。
- 修改
group_indices函数参数的max_char_in_split(默认5),控制每个片段最多包含多少个字符 - 修改
split_chapters中的title_pattern以适配其他标题格式
- 输入文件必须为 UTF-8 编码(支持
utf-8-sig) - 算法对半句的定义基于内部标点(逗号、顿号、分号等),若文本标点不规范可能影响半句切分质量
- 由于算法完全基于统计运算,建议输入文本不少于1万字。对于超大型文本(数千万字),算法需遍历所有字符及半句可能耗时较长,建议先截取部分文本进行测试
-
选择任意Agent工具 (e.g. Deepseek Harness, Codex, Claude Code, Copilot, Open Code),调用pro级别的大语言模型
-
输入本仓库的
README.md和2个.py作为上下文,让模型配置Skill
jieba开发者与维护者 [https://github.com/fxsjy/jieba]- Python standard package developers and maintainers
MIT © 2026 y-in-gb
