librime icon indicating copy to clipboard operation
librime copied to clipboard

词组联想

Open barrer opened this issue 2 years ago • 9 comments

Is your feature request related to a problem? Please describe. 有计划支持联想功能吗

例如:华佗妙术 hua tuo miao shu

必须打到第四个字的首个拼音字母才行,超大词库,无法根据已经输入的拼音联想长词,那就失去了大词库的意义

Describe the solution you'd like 输入一个字的拼音,还没有开始选字,就开始联想词组

Describe alternatives you've considered 这个可能要改动匹配算法,还有就是性能问题,另外就是最小匹配几个拼音就开始联想

Additional context 使用方案 https://github.com/ssnhd/rime

barrer avatar Sep 04 '22 09:09 barrer

duplicated #65

LEOYoon-Tsaw avatar Sep 04 '22 12:09 LEOYoon-Tsaw

長詞聯想(輸入前幾個音節)與前後詞聯想(上屏前一詞、候選提示後一詞)是兩個用戶交互和程序實現均不同的功能。

對於長詞聯想,在詞典查詢處,目前過濾掉了結果中有未完成音節(三音節以上)的詞典項,將其保留即可。

lotem avatar Sep 08 '22 03:09 lotem

前后词联想目前是怎么实现的呢,用Octagram吗?

sbxlmdsl avatar Sep 19 '22 03:09 sbxlmdsl

長詞聯想(輸入前幾個音節)與前後詞聯想(上屏前一詞、候選提示後一詞)是兩個用戶交互和程序實現均不同的功能。

對於長詞聯想,在詞典查詢處,目前過濾掉了結果中有未完成音節(三音節以上)的詞典項,將其保留即可。

请问这个选项是在配置文件里修改还是需要在源码里修改?

ieeegeee avatar Oct 11 '22 17:10 ieeegeee

長詞聯想(輸入前幾個音節)與前後詞聯想(上屏前一詞、候選提示後一詞)是兩個用戶交互和程序實現均不同的功能。 對於長詞聯想,在詞典查詢處,目前過濾掉了結果中有未完成音節(三音節以上)的詞典項,將其保留即可。

请问这个选项是在配置文件里修改还是需要在源码里修改?

@lotem 同问,能否提示一下具体位置 :bow:

ilupin avatar Dec 27 '22 04:12 ilupin

@lotem 同问需要修改的具体位置,长词联想作为比较重要的功能,为何长期不加入功能配置

siuze avatar Feb 26 '23 07:02 siuze

细读了几天源码中查词的实现,定位到源码src/rime/dict/dictionary.cc下函数match_extra_code(),做如下修改:

删去
-  if (current_pos >= syll_graph.interpreted_length)
-   return 0;  // failure (possibly success for completion in the future)
替换为
+  if (current_pos >= syll_graph.interpreted_length)
+    return match_extra_code(extra_code, depth + 1,syll_graph, current_pos+1); //长词联想

可实现固态词典查询下输入4个及以上音节时的词汇预测,效果如下: image

我计划将该功能使用enable_completion配置项进行开关,但是我代码水平很差,不知如何在这里引入配置更合适。目前比较愚蠢的做法是在script_translator.cc处读取config,并逐级传参到函数match_extra_code()中,详见该commit。这显得有些繁杂,若有更加优雅的实现,还望各位前辈不吝赐教。

对于排序和权重问题,需要对代码进行一些改动。否则因为这些候选项长度最长,会默认排序到最前面,排挤掉原匹配项。修改位置可见前文提到的commit。而预测候选项内部的排序我尚未细究。

另,输入小于4个音节时的词汇预测我暂未实现,这涉及到词典table中的多级索引,协调起来可能有些复杂。 又及,用户词典下的词汇预测尚未展开研究。

siuze avatar Mar 02 '23 16:03 siuze

用户词典下的词汇预测问题解决了吗?

sbxlmdsl avatar May 11 '23 07:05 sbxlmdsl

需要关注这类候选词的完整编码与输入串匹配部分的编码长度不一致的新情况。特别是检查联想词参与造词能否构造出正确编码。另外,还需要排除插入点不在编码末尾的情况,联想词也不适用。

lotem avatar May 12 '23 02:05 lotem