Skip to content
condexpr01Public

About

含工具和数据,可从零制作码表,有五笔编码器,汉字转拼音,表对象运算工具(交集,并集,差集,可实现去除人名,获取频数等),数据450w频表

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

53 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

工具编译

make

说明

为使
condexpr01/rime-wubi86ex
condexpr01/rime-ranwu
轻量化,迁移出维护相关代码, 额外数据等

数据: freq 450w统计时语料在各个方面分布不均, 但足够覆盖大部分场景使用
拼音: 由GitYCC/g2pW的模型本地运行生成

纯化: share/pinyin/pinyin的数据为纯化数据,
纯化数据跟随输入法边打字边校正,永久维护,拼音由g2pW模型保证(1频为最常见音, 0频为多音字)

标准格式

codec,seq=word,freq

以`编码,序号=字词,频数`形成的多行utf-8文本

如(86五笔):
wqvb,1=你好,1661360
wqvb,2=您好,378383
wv,1=分,23956465
wv,2=你好,1661360
wv,3=做好,612346

使用时也可以只含需要的工具部分,如encoder可用的被编码表:
,=你好,
,=您好,
,=分,
,=你好,
,=做好,

工具预览

.
├── bin                          # 指令工具,部分需要编译src下的makefile生成
├── share
│   ├── backup                   # ranwu,wubi86ex backup checkpoint
│   ├── freq                     # 450w频表
│   ├── single                   # 各种单字表
│   └── pinyin                   # 纯化数据, hanzi-to-pinyin参考词典
└── src
    ├── binsrc                   # bin工具的源码
    ├── c-core(deprecated)       # 旧的c解析码表用(弃用)
    ├── CMakeLists.txt           # makefile会调用这个Cmakelists.txt
    ├── cppcore                  # cpp写的表对象核心
    └── makefile                 # cd到目录下运行make以运行这个makefile

  bin
     gen-readme-ranwu      # 给标准格式码表生成readme for ranwu
     gen-readme-wubi       # 给标准格式码表生成readme for wubi

     fmt-to-rime           # 标准格式到rime
     fmt-to-sougou         # 标准格式到sougou
     fmt-to-scheme
     rime-to-fmt           # rime original到标准格式
     rime-to-full-fmt

     breakup-codec         # 标准格式按编码长度拆分
     breakup-seq
     breakup-word          # 标准格式按字词长度拆分
     breakups-merge        # 合并拆分

     sort-freq             # 标准格式,按频数排序
     sort-codec-seq        # 标准格式,按编码排序,同编码的按序号排,同时修补序号
     sort-codec-seq-wbfilter
     sort-num-selection
     sort-word
     sort-word-codec

     codec-set-difference  # 标准格式,按编码计算表1和表2的差集(表1中存在而表2中不存在)
     codec-set-intersect   # 标准格式,按编码计算表1和表2的交集
     codec-set-unite       # 标准格式,按编码计算表1和表2的并集

     word-set-difference   # 标准格式,按字词计算表1和表2的差集(表1中存在而表2中不存在)
     word-set-intersect    # 标准格式,按字词计算表1和表2的交集
     word-set-unite        # 标准格式,按字词计算表1和表2的并集

     word-codec-set-difference
     word-codec-set-intersect
     word-codec-set-unite

     encoder               # 标准格式,编码器,对字词生成编码
     encoder-with-filter   # 标准格式,编码器,过滤不能编码的字词

     get-freq              # 标准格式,为码表从频表中获取频数
     get-freq-with-filter  # 标准格式,为码表从频表中获取频数,过滤得不到频数的

     make-seq-from-freq              # 标准格式,以频数为依据生成序号
     make-seq-from-freq-wbfilter     # 标准格式,以频数为依据生成序号,同时过滤在3号位以后的词

     ollama-filter         # 标准格式,尝试以ollama ai模型生成过滤信息

     pinyin-normalize      # 标准格式,多编码的拼音变单编码正常化
     pinyin-add-aux
     pinyin-to-letter
     pinyin-to-zrm

     hanzi-to-pinyin       # 根据词典生成拼音,贪婪匹配,不处理分词

     find-easyword-3
     find-easyword-4

     unique-major-voice
     unique-line
     unique-line-keep-seq

工具详细

  • 简易格式变换
若文件a内容为:
wqvb,2=您好,378383
wqvb,1=你好,1661360
wv,3=做好,612346
wv,1=分,23956465
wv,2=你好,1661360

shell运行: fmt-to-rime a
结果:
wqvb	你好
wqvb	您好
wv	分
wv	你好
wv	做好

shell运行: fmt-to-sougou a
结果:
wqvb,1=你好
wqvb,2=您好
wv,1=分
wv,2=你好
wv,3=做好

###################

文件b内容为:
wqvb	你好
wqvb	您好

shell运行: rime-to-fmt b
结果:
wqvb,=你好,
wqvb,=您好,
  • 拆分
文件a内容为:
d,=,
dd,=,
ddd,=,
dddd,=,

shell运行: breakup-codec a
结果: breakup1.txt ~ breakup4.txt内容对应: d dd ddd dddd

文件b内容为:
,=字,
,=字字,
,=字字字,
,=字字字字,
,=字字字字字,

shell运行: breakup-word b
结果: breakup1.txt ~ breakupn.txt内容对应: 字 字字 字字字 字字字字

拆分目录下运行: breakup-word
结果:合并后的数据
  • 排序且修补
文件a内容为:
c,1=又,
wv,10=分,
b,=子,
wv,20=你好,
a,1=工,
wv,30=做好,

shell运行: sort-codec-seq a
结果: 
a,1=工,
b,1=子,
c,1=又,
wv,1=分,
wv,2=你好,
wv,3=做好,

  • 集合运算
文件a内容为:
a,1=工,
b,1=了,

文件b内容为:
b,1=了,
c,1=以,

shell运行: codec-set-difference a b
结果(a中存在b中不存在):
a,1=工,

shell运行: codec-set-intersect a b
结果(a中存在b中存在):
b,1=了,

shell运行: codec-set-unite a b
结果(a和b的元素):
a,1=工,
b,1=了,
c,1=以,


word-set-difference,word-set-intersect,word-set-unite逻辑和上面一样
但是参考的是字词字段word,同时如果存在频数,会相加



#####################
从github仓库上可以找到人名,地名等仓库
如git@github.com:wainshine/Chinese-Names-Corpus.git,
取数据转换为标准格式后,
用word-set-difference就可以去人名,地名等

统计生成的数据频表,可以用word-set-unite取并集,如
a,1=工,1111
a,1=工,2222
会并为:
a,1=工,3333

也可以用word-set-interset只统计表中已有的数据
  • 编码器
若文件a内容为:
,=你,
,=你好,
,=0139,

# 用8105表编码a
shell运行: encoder share/encoder-data-single/norm8105 a
结果:
wqyi,=你,
wqvb,=你好,
,=0139,

shell运行: encoder-with-filter share/encoder-data-single/norm8105 a
结果:
wqyi,=你,
wqvb,=你好,
  • 频数操作
若文件a内容为:
,=区区,203656
,=式,3816084
,=某某,391924

shell运行: sort-freq a
结果: 
,=式,3816084
,=某某,391924
,=区区,203656

####################

若文件b内容为:
,=区区,
,=式,
,=某某,
,=&&&&&&,

# 从频表获取频数
shell运行: greq-freq share/freq/freq b
结果: 
,=区区,203656
,=式,3816084
,=某某,391924
,=&&&&&&,

shell运行: get-freq-with-filter share/freq/freq b
结果: 
,=区区,203656
,=式,3816084
,=某某,391924
  • 从频数生成序号
若文件a内容为:
aa,=,203656
aa,=,3816084
aa,=,391924


shell运行: make-seq-from-freq a
结果: 
aa,1=,3816084
aa,2=,391924
aa,3=,203656
  • 多音字正常化
pinyin-normalize
# 标准格式,多编码的拼音变单编码正常化

若文件a内容为:
xing/hang,=行,

shell运行: pinyin-normalize a
结果: 
xing,=行,
hang,=行,

About

含工具和数据,可从零制作码表,有五笔编码器,汉字转拼音,表对象运算工具(交集,并集,差集,可实现去除人名,获取频数等),数据450w频表

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages