Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

词组联想 #568

Open
barrer opened this issue Sep 4, 2022 · 9 comments
Open

词组联想 #568

barrer opened this issue Sep 4, 2022 · 9 comments

Comments

@barrer
Copy link

barrer commented Sep 4, 2022

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

@LEOYoon-Tsaw
Copy link
Member

duplicated #65

@lotem
Copy link
Member

lotem commented Sep 8, 2022

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

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

@sbxlmdsl
Copy link

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

@ieeegeee
Copy link

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

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

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

@ilupin
Copy link

ilupin commented Dec 27, 2022

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

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

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

@siuze
Copy link
Contributor

siuze commented Feb 26, 2023

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

@siuze
Copy link
Contributor

siuze commented Mar 2, 2023

细读了几天源码中查词的实现,定位到源码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中的多级索引,协调起来可能有些复杂。
又及,用户词典下的词汇预测尚未展开研究。

@sbxlmdsl
Copy link

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

@lotem
Copy link
Member

lotem commented May 12, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants