链接: https://github.com/h0gan1ee/tep
特点:超级稳定、超级高效。(在 M1 处理器上转换 1000+ 万字的文本仅需 0.2 秒,除去 IO 用时仅有 0.02 秒)。
目前只有核心功能,非常简单。未来计划加入扩展性功能,得益于独特的文本分析算法,所以有很大的发挥空间。
转换原理:从简单匹配规则(可能是冗余的)按所有规则的匹配字符串中字符顺序构建树状数据结构,每个节点都采用哈希表来记录子节点,从而做到零冗余和 O(n)
时间复杂度的转换算法。
除了 CLI 应用之外,此项目还是一个 lib ,不过目前只提供了很简单的 API ,而且几乎没有文档。
(当然,好像没有人有这种需求……)
1
duke807 2022-02-15 23:13:47 +08:00 via Android
你應該做成:自動修復中英文標點混用,中文語句用中文標點,英文語句用英文標點。
這樣才有意義。 |
2
SuperMild 2022-02-15 23:22:29 +08:00
我也觉得“中文語句用中文標點,英文語句用英文標點”比较好,比如
现年 74 岁的卡米拉,17 年前……成员之一。 我希望改成 现年 74 岁的卡米拉, 17 年前……成员之一。 只把“卡米拉”与“17 年前”之间的逗号改成半角。 |
3
H00kran OP @duke807 这个已经有人做了,叫 auto correct ( https://github.com/huacnlee/autocorrect ),我就不重复造轮了
|
4
Kilerd 2022-02-15 23:37:10 +08:00
@duke807 https://github.com/Kilerd/chineseword 我也写了一个, 哈哈哈哈哈
|
5
BrettD 2022-02-16 00:03:36 +08:00
匹配数据结构是前缀树吗?
|
7
wwwe 2022-02-16 00:12:52 +08:00 via Android
冷知识:与问号冒号分号感叹号括号等不同,双引号“”中文和英文用的是同一个字符
|
9
H00kran OP @wwwe 确实是这样。我当时也纳闷为什么找不到全角的引号。不过自从互联网兴起之后由于 " ' 这两种引号在计算机上输入方便,所以在英文领域好像在除了文字出版之外的领域都很少见了。倒是时不时会看到一种 old school 的用法是把 ` 当作左引号,' 当作右引号。
|
10
H00kran OP @BrettD Unicode 里好像没有,中英文是共用的,只是很多中文字体把引号都全角化了。我发的那个截图里用的是苹方字体,就没有全角化。
|
11
Mohanson 2022-02-16 00:23:42 +08:00 via Android
感觉用状态机好点,有些不讲究的人喜欢一个句号后面打两个空格(点名中本聪),用前缀树没法删掉多余的空格
|
12
H00kran OP @Mohanson 可以试试用 auto correct 这种严格的句读规范修正工具处理再用这个工具。我也想过状态机的实现,但感觉不够优雅,而且后续开发自定义扩展规则集的功能会稍显复杂。(顺带一提,这个工具开发的初衷就是用来把 auto correct 过的文本转成英文标点表达形式的文本)
|
13
lxml 2022-02-16 00:34:27 +08:00
正好想问一个知识,在大陆出版的文章和官方新闻之类的,可以用直角引号么?
「」( mac 中文输入法 shift + [] 可输入) |
14
H00kran OP @lxml 国标是用英文样式的全角引号的,因此「」是不符合出版规范的,理论上在大陆的出版物无特殊理由应该遵守国标规范。不过我这个工具支持「」『』。
|
15
wwwe 2022-02-16 08:32:12 +08:00 via Android
@H00kran 计算机领域用"都怪 ASCII 码里只有"没有“”。如果 ASCII 码里是“”,编程语言中字符串就会用“”,就能和(){}[]一样嵌套,减少一些 escape 的麻烦😂
|
16
yolee599 2022-02-16 08:58:51 +08:00 via Android 1
最讨厌中文注释使用英文标点符号的了
|
17
Origami404 2022-02-16 09:31:15 +08:00 via Android 3
好!最喜欢中文里打英文标点的了
|
18
bvt 2022-02-16 13:55:07 +08:00 via Android
一点也不懂中文里用英文标点的
就光说切换输入法不麻烦吗? |
19
Origami404 2022-02-16 17:12:01 +08:00 via Android
@bvt 在中文里用中文标点切输入法才麻烦…想想你写着写着忽然要插入一个代码块,或者想加粗,你还得切英文打符号。而大部分输入法都有一个选项可以让你直接在中文下输入半角符号的
|