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

comment 和 preedit 相同时不显示 #215

Closed
ztl8702 opened this issue Jul 22, 2018 · 3 comments
Closed

comment 和 preedit 相同时不显示 #215

ztl8702 opened this issue Jul 22, 2018 · 3 comments
Assignees

Comments

@ztl8702
Copy link
Contributor

ztl8702 commented Jul 22, 2018

Background

最近在做一个方案(script-based)遇到一个问题,我们用注释来显示“正确的拼写”,而当用户输入和注释正好相同的时候,注释会不显示。

Expected Behaviour

所有的候选词都显示comment。

Actual Behaviour

如图所示:
image


试了一下,在Windows和 Linux (ibus-rime) 都是一样的结果,猜测相关代码是在librime中。特别是这行很可疑:

if (!spelling.empty() && spelling != sentence_->preedit()) {

我猜想当时写这行代码的时候,是假设如果用户输入==注释,就等于用户知道正确拼法,没必要再显示了。

但是这有几个问题:

  1. 一个是UI上的不一致 -> 我们想要所有的词汇都显示拼写。中间有几个词的注释消失,用户会觉得莫名其妙。(至少我一开始看到就莫名其妙,以为哪条algebra写出了bug)
  2. ”用户输入==注释“ 不代表用户完全知道正确的拼写。 在我们所用的拼写方案中,无调号代表“阴平”。用户输入当然都是无调号的(如"cia"),这可以代表用户不知道正确的声调,而我们在注释回显一个无调号的"cia", 是在确认正确声调是阴平,所以即使注释和用户输入相同,其代表的意思也可能是不一样的
  3. 在词组输入的时候,单字和多字的候选词都同时出现无注释,进一步造成用户困惑。

我们目前的workaround是在comment_format里面给输出的comment加入一个不可见字符(U+2063) 让librime以为注释和用户输入不一样。
我还是希望librime能增加一个配置项,比如always_show_comment: true,可以任何时候都显示注释。

@ztl8702
Copy link
Contributor Author

ztl8702 commented Aug 21, 2018

看这个不是很复杂,我就自己提了PR。需要写对应的测试吗?

@lotem
Copy link
Member

lotem commented Aug 22, 2018

PR OK了。
但我不同意原题提出的理由。

拼写法设计为用不标调代表阴平,则事实上该拼写法并没有提供系统地区别“阴平”与“不标调”的方法。
那么当用户输入这样的音节时,没有充分理由认为用户不知道正确的声调而不是意图输入阴平。即使用户确知声调为阴平,他没有办法继续提供信息、消除歧义。“用户不知道”这种猜测多此一举。可类比:
当用户输入为 ci (假定存在这个音节)时,虽然理论上有可能用户意图为输入更长的 cia 且处于未完成的状态,但输入法显示候选字及提示只能以当前的输入内容为依据,给出用户输入到此已经完成的情况下所需的选项和提示。而不需要假设用户还会追加编码而穷举所有可能性。
另一方面,基于现有拼写法设计,回显一个无调号的 cia 并不能起到消除歧义、表明“正确的声调是阴平”的作用。除非在视觉上对“阴平”和“不标调”有所区别。

现有的编码提示逻辑,只有当用户输入与取得该选项的完整(正确)输入形式有出入时给出编码提示,帮助用户完成(纠正)输入码。在任何时候都显示注释,反而可能造成用户困惑,花更多时间对比输入和提示,检查是否因拼写错误而得提示。

@ztl8702
Copy link
Contributor Author

ztl8702 commented Aug 22, 2018

我再提供一点背景,解释一下为什么我原来会那样说:

  • 这个是一个福州话的(新的)拼音方案的配套输入方案。是带有一定的教学性质的输入方案(因为除了方案设计者外,基本上没有熟练用户)。方案有分手写方案(“拼音”)和键入方案(“输入码”)。至于为什么(手写)方案设计成阴平无调号,按我的理解(我不是设计者)可能因为觉得福州话声调多,符号太多不便学习。而阴平调恰好是比较高频出现的声调,因此这个声调用无调号表示。

  • 我们目前是用 comment 来回显 (手写)拼音方案,而用户输入的是键入方案。这个使用方式的确和 @lotem 所说的编码提示逻辑不同。使用情景是(主要是语言保护的情景):

    1. 让用户学习手写方案(也就是这个福州话拼音方案的本体)。输入码的部分我们在输入方案的基础上,用 algebra 做了比较多的模糊音处理,让用户可以“以直觉”(建基于对普通话拼音和英文字母一般发音的印象)输入,但是“顺便”学习正确的拼写。

    2. 转录音频的时候,比如我 transcribe 一段福州话录音,我希望能确认我选的字词的字形和声调都是正确的(和录音吻合),所以总是显示 comment 在这时候是很必要的。

总的来说我们是在做用于语保用途的输入法(用户群体以语宝工作者,和非native speaker、不熟悉拼写方案者为主),和作为日常效率工作的输入法的期望应该有所不同吧。

另一方面,基于现有拼写法设计,回显一个无调号的 cia 并不能起到消除歧义、表明“正确的声调是阴平”的作用。除非在视觉上对“阴平”和“不标调”有所区别。

这个我认同,我觉得可能可以通过不同字体来实现。那这个我就需要研究一下不同前端的主题配置了。

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

No branches or pull requests

2 participants