跳转至内容
0
  • 版块
    • 全部版块

    • 公告
    • 版本发布
    • 使用教程
    • 问题反馈
    • 功能建议
    • 使用交流
    • 方案与码表
    • 文档反馈
    • 论坛功能
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
  • 官网
  • GitHub
  • 主题市场
  • 主题编辑器
  • 版块
    • 全部版块

    • 公告
    • 版本发布
    • 使用教程
    • 问题反馈
    • 功能建议
    • 使用交流
    • 方案与码表
    • 文档反馈
    • 论坛功能
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
  • 官网
  • GitHub
  • 主题市场
  • 主题编辑器
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
  1. 主页
  2. 功能建议
  3. 【实验性需求】英文词组的分词快速输入设想方案

【实验性需求】英文词组的分词快速输入设想方案

已定时 已固定 已锁定 已移动 功能建议
英文输入已实现已解决
11 楼层 2 发布者 31 浏览 2 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此帖子已被删除。只有拥有帖子管理权限的用户可以查看。
  • 太
    太
    太阳雨
    正式成员
    编写于 最后由 编辑
    #2

    英文分词编码算法看看能不能申请专利:)

    1 条回复 最后回复
    0
    • 幻枫幻
      幻枫幻
      幻枫
      管理员
      编写于 最后由 编辑
      #3

      这个算法看起来难度不大,但问题是如果直接使用遍历的方式,性能比较差。

      当前拼音之类的词库是做了索引的,所以才能在海量词库数据里快速的找到需要的词。

      而英文的话,索引的方式肯定不太一样。后面有空会研究一下。

      1 条回复 最后回复
      0
      • 太
        太
        太阳雨
        正式成员
        编写于 最后由 编辑
        #4

        1 关于英文词组分词查询算法的设计思路

        注:仅做为思路参考。

        1.1 词库加载

        1.1.1 现有部分不变

        • 继续加载词库码表及相应的创建索引
        • 不区分单词还是词组,词组的编码为由词库内置

        1.1.2 增加词组的额外处理

        • 当发现加载的词条包含空格时,认定为词组,做特殊处理。
        • 新设计一张tbl_phrases表,字段为:word,p1,p2,...p10, 共11个字段,word是词组原文,p1为word以空格分割后的第1个单词,p2为第2个...依次类推,词组只需要最多拆分到10个单词就够了,有些太长的有点扯。
        • tbl_phrases表的各字段都要建立索引,注:很多词条可能后面的p3 - p10都是空的。
        • 将拆分后的词组存入tbl_phrases表中,如果词组只有2个单词,则p3到p10字段填充空值。
        • 词组数量并不会太多,经筛选,40W的词库里面,大概有2W条词组。
        • 表结构示意:

        1.2 单词输入时的查询

        1.2.1 按分词方式查询词组

        • 当用户输入的内容不包含分词符号时,按原逻辑进行筛选,只查询主表
        • 当用户输入内容包含分词时,切换到查询词组表tbl_phrases
        • 查询行为,以SQLite数据库为例(已导入2W词组), 查询目标词组为:two heads are better than one
        • 输入分词方式:two'he'a'be, 甚至不用输完,转成内部查询语句为:
        SELECT word
        FROM tbl_phrases
        WHERE p1 LIKE 'two%' 
          AND p2 LIKE 'he%' 
          AND p3 LIKE 'a%' 
          AND p4 LIKE 'be%';
        

        注:这个查询操作即可命中词组,本机耗时约0.002秒。

        • 哪怕按极端的,只输入第1个分词字母时,性能也很快:
        SELECT word
        FROM tbl_phrases
        WHERE p1 LIKE 't%'; 
        

        注:这个查询操作本机耗时也只约0.002秒。

        1.3 后记

        • 以上只是基于SQLite数据库的一些操作参考,清风输入法如果使用的内存库,则性能会更加优异。
        1 条回复 最后回复
        0
        • 太
          太
          太阳雨
          正式成员
          编写于 最后由 编辑
          #5

          补充

          • 📌需要考虑词组中本来就有“'”单引号的情况,如:Rome wasn't built in a day。
          1 条回复 最后回复
          0
          • 幻枫幻
            幻枫幻
            幻枫
            管理员
            编写于 最后由 编辑
            #6

            0.122.0 实现了一部分此功能,可以测试后再反馈。

            1 条回复 最后回复
            0
            • 太
              太
              太阳雨
              正式成员
              编写于 最后由 编辑
              #7

              验证结论:总体功能是OK的,还有个小问题。

              • 输入英文词组分词的首字母,候选项里出现独立的单词
                image.png

              比如上图中

              • 期望命中 plenty of
              • 实际把很多单词也放到了候选项, 没有进入分词语义(只显示词组)。
              幻枫幻 1 条回复 最后回复
              0
              • 太
                太
                太阳雨
                正式成员
                编写于 最后由 编辑
                #8

                这个功能后续发现的问题,是重新开贴,还是直接在本贴下回复呢? 哪个更方便问题跟踪?

                1 条回复 最后回复
                0
                • 幻枫幻
                  幻枫幻
                  幻枫
                  管理员
                  编写于 最后由 编辑
                  #9

                  直接回帖就可以了,把状态再更新一下。

                  1 条回复 最后回复
                  0
                  • 太 太阳雨

                    验证结论:总体功能是OK的,还有个小问题。

                    • 输入英文词组分词的首字母,候选项里出现独立的单词
                      image.png

                    比如上图中

                    • 期望命中 plenty of
                    • 实际把很多单词也放到了候选项, 没有进入分词语义(只显示词组)。
                    幻枫幻
                    幻枫幻
                    幻枫
                    管理员
                    编写于 最后由 编辑
                    #10

                    太阳雨 你这个用的是哪个词库?我这里看结果并不是这样的?
                    但当前的确会匹配到非分割的单词

                    1 条回复 最后回复
                    0
                    • 太
                      太
                      太阳雨
                      正式成员
                      编写于 最后由 编辑
                      #11

                      英文词组的分词总体功能已经具备了, 小问题继续回帖进行跟踪

                      1 条回复 最后回复
                      0

                      你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

                      厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

                      有了你的建议,这篇帖子会更精彩哦 💗

                      注册 登录

                      • 登录

                      • 没有帐号? 注册

                      • 登录或注册以进行搜索。
                      • 第一个帖子
                        最后一个帖子