<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[【实验性需求】英文词组的分词快速输入设想方案]]></title><description><![CDATA[<h1>背景</h1>
<p dir="auto">最近在修订英文词库，发现有很多词组有如下特点：</p>
<ul>
<li><strong>类型1</strong>: 单词多，总长非常长， 如：automatic water quality monitor(自动水质监测仪)</li>
<li><strong>类型2</strong>: 单词不多，但单词很长， 如：environmental degradation(环境退化)</li>
<li><strong>类型3</strong>: 普通型，总长正常，单词正常， 如： a lot of, good idea</li>
</ul>
<h1>当前编码方案</h1>
<ul>
<li><strong>方案1</strong>(姑且叫“首字母编码”): 各单词首字母拼接， 缺点，用户需要记得每个单词，并提取首字母，重码率高，打了第1个单词的首字母，但是不记得第2个单词是什么，想浏览候选列表，几乎是不现实的，所以这种编码方案放弃了！</li>
<li><strong>方案2</strong>(姑且叫“首全从简编码”): 第1个单词使用全编码，后面的单词使用首字母拼接，优点：可能通过打全第1个单词，缩小候选列表的范围，并且打第2个单词的首字母后，将极大缩小候选范围，对类型1、类型3将是非常有效的编码方式， 但是有如下缺点：
<ul>
<li>对于类型2的词组， 要打完第1个完整的单词，将是非常痛苦的事，明明智能提示已经把单词放到候选1了，却不能空格上屏，需要完全手工打完，再打第2个单词的触发字母。</li>
</ul>
</li>
</ul>
<p dir="auto">注：使用“首全从简编码”，解决了一大部分的词组用户输入方便性的问题，但效率仍然捉襟见肘。</p>
<h1>新“分词编码”方案设想</h1>
<ul>
<li><strong>单词不需要打全</strong>， 只需要打单词1的一部分前缀，再接分词符号“‘”，接着输入单词2的部分前缀....单词3前缀...，这样可以极大的减少输入负担。如：envi'deg，即可精确命中environmental degradation</li>
<li><strong>兼容“首字母编码”</strong>，使用首字母加分词符，即可退化到单词“首字母编码”， 如：a'l'o 精确命中a lot of</li>
</ul>
<h1>约束</h1>
<ul>
<li>“分词编码”无法在词库里进行固定形式的编码，词库只能默认内置“首全从简编码”(个人优选)</li>
<li>需要输入法内置代码逻辑，实现英文词组的“分词编码”功能， 用户使用分词方式时，需要清风按单词前缀进行分词匹配，而使用“首全从简编码”时，按现有的匹配方式。</li>
</ul>
]]></description><link>https://bbs.windinput.com/topic/42/实验性需求-英文词组的分词快速输入设想方案</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 13:03:53 GMT</lastBuildDate><atom:link href="https://bbs.windinput.com/topic/42.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 01 Sep 2026 03:29:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 【实验性需求】英文词组的分词快速输入设想方案 on Thu, 03 Sep 2026 04:51:57 GMT]]></title><description><![CDATA[<h1>1 关于英文词组分词查询算法的设计思路</h1>
<p dir="auto">注：仅做为思路参考。</p>
<h2>1.1 词库加载</h2>
<h3>1.1.1 现有部分不变</h3>
<ul>
<li>继续加载词库码表及相应的创建索引</li>
<li>不区分单词还是词组，词组的编码为由词库内置</li>
</ul>
<h3>1.1.2 增加词组的额外处理</h3>
<ul>
<li>当发现加载的词条包含空格时，认定为词组，做特殊处理。</li>
<li>新设计一张tbl_phrases表，字段为：word,p1,p2,...p10， 共11个字段，word是词组原文，p1为word以空格分割后的第1个单词，p2为第2个...依次类推，词组只需要最多拆分到10个单词就够了，有些太长的有点扯。</li>
<li>tbl_phrases表的各字段都要建立索引，注：很多词条可能后面的p3 - p10都是空的。</li>
<li>将拆分后的词组存入tbl_phrases表中，如果词组只有2个单词，则p3到p10字段填充空值。</li>
<li>词组数量并不会太多，经筛选，40W的词库里面，大概有2W条词组。</li>
<li>表结构示意：</li>
</ul>
<p dir="auto"><img src="/assets/uploads/files/2026-09-03/1788438940-318062-image.png" alt="" class=" img-fluid img-markdown" width="1105" height="561" /></p>
<h2>1.2 单词输入时的查询</h2>
<h3>1.2.1 按分词方式查询词组</h3>
<ul>
<li>当用户输入的内容不包含分词符号时，按原逻辑进行筛选，只查询主表</li>
<li>当用户输入内容包含分词时，切换到查询词组表tbl_phrases</li>
<li>查询行为，以SQLite数据库为例(已导入2W词组)， 查询目标词组为：<code>two heads are better than one</code></li>
<li>输入分词方式：<code>two'he'a'be</code>, 甚至不用输完，转成内部查询语句为：</li>
</ul>
<pre><code class="language-sql">SELECT word
FROM tbl_phrases
WHERE p1 LIKE 'two%' 
  AND p2 LIKE 'he%' 
  AND p3 LIKE 'a%' 
  AND p4 LIKE 'be%';
</code></pre>
<p dir="auto">注：这个查询操作即可命中词组，本机耗时约0.002秒。</p>
<ul>
<li>哪怕按极端的，只输入第1个分词字母时，性能也很快：</li>
</ul>
<pre><code class="language-sql">SELECT word
FROM tbl_phrases
WHERE p1 LIKE 't%'; 
</code></pre>
<p dir="auto">注：这个查询操作本机耗时也只约0.002秒。</p>
<h2>1.3 后记</h2>
<ul>
<li>以上只是基于SQLite数据库的一些操作参考，清风输入法如果使用的内存库，则性能会更加优异。</li>
</ul>
]]></description><link>https://bbs.windinput.com/post/138</link><guid isPermaLink="true">https://bbs.windinput.com/post/138</guid><dc:creator><![CDATA[tyysoft]]></dc:creator><pubDate>Thu, 03 Sep 2026 04:51:57 GMT</pubDate></item><item><title><![CDATA[Reply to 【实验性需求】英文词组的分词快速输入设想方案 on Tue, 01 Sep 2026 05:12:22 GMT]]></title><description><![CDATA[<p dir="auto">这个算法看起来难度不大，但问题是如果直接使用遍历的方式，性能比较差。</p>
<p dir="auto">当前拼音之类的词库是做了索引的，所以才能在海量词库数据里快速的找到需要的词。</p>
<p dir="auto">而英文的话，索引的方式肯定不太一样。后面有空会研究一下。</p>
]]></description><link>https://bbs.windinput.com/post/137</link><guid isPermaLink="true">https://bbs.windinput.com/post/137</guid><dc:creator><![CDATA[admin]]></dc:creator><pubDate>Tue, 01 Sep 2026 05:12:22 GMT</pubDate></item><item><title><![CDATA[Reply to 【实验性需求】英文词组的分词快速输入设想方案 on Tue, 01 Sep 2026 04:10:46 GMT]]></title><description><![CDATA[<p dir="auto">英文分词编码算法看看能不能申请专利:)</p>
]]></description><link>https://bbs.windinput.com/post/136</link><guid isPermaLink="true">https://bbs.windinput.com/post/136</guid><dc:creator><![CDATA[tyysoft]]></dc:creator><pubDate>Tue, 01 Sep 2026 04:10:46 GMT</pubDate></item></channel></rss>