[tep] 用 Rust 写的汉语到英语标点用法转换工具

2022-02-15 22:42:24 +08:00
 H00kran

链接: https://github.com/h0gan1ee/tep

特点:超级稳定超级高效。(在 M1 处理器上转换 1000+ 万字的文本仅需 0.2 秒,除去 IO 用时仅有 0.02 秒)。

目前只有核心功能,非常简单。未来计划加入扩展性功能,得益于独特的文本分析算法,所以有很大的发挥空间。

转换原理:从简单匹配规则(可能是冗余的)按所有规则的匹配字符串中字符顺序构建树状数据结构,每个节点都采用哈希表来记录子节点,从而做到零冗余和 O(n) 时间复杂度的转换算法。

除了 CLI 应用之外,此项目还是一个 lib ,不过目前只提供了很简单的 API ,而且几乎没有文档。

(当然,好像没有人有这种需求……)

1920 次点击
所在节点    分享创造
19 条回复
duke807
2022-02-15 23:13:47 +08:00
你應該做成:自動修復中英文標點混用,中文語句用中文標點,英文語句用英文標點。
這樣才有意義。
SuperMild
2022-02-15 23:22:29 +08:00
我也觉得“中文語句用中文標點,英文語句用英文標點”比较好,比如

现年 74 岁的卡米拉,17 年前……成员之一。

我希望改成

现年 74 岁的卡米拉, 17 年前……成员之一。

只把“卡米拉”与“17 年前”之间的逗号改成半角。
H00kran
2022-02-15 23:29:56 +08:00
@duke807 这个已经有人做了,叫 auto correct ( https://github.com/huacnlee/autocorrect ),我就不重复造轮了
Kilerd
2022-02-15 23:37:10 +08:00
@duke807 https://github.com/Kilerd/chineseword 我也写了一个, 哈哈哈哈哈
BrettD
2022-02-16 00:03:36 +08:00
匹配数据结构是前缀树吗?
H00kran
2022-02-16 00:08:55 +08:00
@BrettD 是的
wwwe
2022-02-16 00:12:52 +08:00
冷知识:与问号冒号分号感叹号括号等不同,双引号“”中文和英文用的是同一个字符
BrettD
2022-02-16 00:14:19 +08:00
@wwwe 中文也有全角的双引号
H00kran
2022-02-16 00:18:34 +08:00
@wwwe 确实是这样。我当时也纳闷为什么找不到全角的引号。不过自从互联网兴起之后由于 " ' 这两种引号在计算机上输入方便,所以在英文领域好像在除了文字出版之外的领域都很少见了。倒是时不时会看到一种 old school 的用法是把 ` 当作左引号,' 当作右引号。
H00kran
2022-02-16 00:20:44 +08:00
@BrettD Unicode 里好像没有,中英文是共用的,只是很多中文字体把引号都全角化了。我发的那个截图里用的是苹方字体,就没有全角化。
Mohanson
2022-02-16 00:23:42 +08:00
感觉用状态机好点,有些不讲究的人喜欢一个句号后面打两个空格(点名中本聪),用前缀树没法删掉多余的空格
H00kran
2022-02-16 00:28:11 +08:00
@Mohanson 可以试试用 auto correct 这种严格的句读规范修正工具处理再用这个工具。我也想过状态机的实现,但感觉不够优雅,而且后续开发自定义扩展规则集的功能会稍显复杂。(顺带一提,这个工具开发的初衷就是用来把 auto correct 过的文本转成英文标点表达形式的文本)
lxml
2022-02-16 00:34:27 +08:00
正好想问一个知识,在大陆出版的文章和官方新闻之类的,可以用直角引号么?
「」( mac 中文输入法 shift + [] 可输入)
H00kran
2022-02-16 00:37:32 +08:00
@lxml 国标是用英文样式的全角引号的,因此「」是不符合出版规范的,理论上在大陆的出版物无特殊理由应该遵守国标规范。不过我这个工具支持「」『』。
wwwe
2022-02-16 08:32:12 +08:00
@H00kran 计算机领域用"都怪 ASCII 码里只有"没有“”。如果 ASCII 码里是“”,编程语言中字符串就会用“”,就能和(){}[]一样嵌套,减少一些 escape 的麻烦😂
yolee599
2022-02-16 08:58:51 +08:00
最讨厌中文注释使用英文标点符号的了
Origami404
2022-02-16 09:31:15 +08:00
好!最喜欢中文里打英文标点的了
bvt
2022-02-16 13:55:07 +08:00
一点也不懂中文里用英文标点的
就光说切换输入法不麻烦吗?
Origami404
2022-02-16 17:12:01 +08:00
@bvt 在中文里用中文标点切输入法才麻烦…想想你写着写着忽然要插入一个代码块,或者想加粗,你还得切英文打符号。而大部分输入法都有一个选项可以让你直接在中文下输入半角符号的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/834101

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX