爱意满满的作品展示区。
H00kran

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

  •  
  •   H00kran · Feb 15, 2022 · 3345 views
    This topic created in 1729 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    19 replies  •  2022-02-16 17:12:01 +08:00
    duke807
    duke807
    Feb 15, 2022 via Android
    1
    你應該做成:自動修復中英文標點混用,中文語句用中文標點,英文語句用英文標點。
    這樣才有意義。
    SuperMild
    SuperMild
    Feb 15, 2022
    2
    我也觉得“中文語句用中文標點,英文語句用英文標點”比较好,比如

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

    我希望改成

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

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