最近,我制作了一个小型APP,可以管理许多产品。产品名称不是一个常用词。用户经常需要输入这些产品名称(在软件外部,无法自动完成),并且每次都必须选择单词,正确的候选者通常不会出现在前面,很容易出错,并且输入效率低。通常,此问题与App本身无关。输入法应该考虑这个问题,但是我认为仅输入法是无法解决的。对于这个问题,用户体验至关重要,因此我试图解决这一难题。
此问题的关键是词汇表中没有要输入的单词,因此需要选择它。尽管主要的输入方法会记录用户输入的自制单词,但此词汇的形成速度太慢,无法快速适应。对于新单词,如果您可以学习同义词库的规则,则软件会分批构建同义词库,然后导入输入法,以便立即提高输入的准确性。
因为我常用的输入法是百度输入法,我对此很熟悉,并且我非常喜欢它的自定义短语功能,所以我以百度输入法为例来实现此功能。
百度输入法(此处是指百度输入法的Android版本,与以下相同)提供了导入同义词库的设置。在同义词库管理→同义词库备份和恢复中,我们必须首先备份本地同义词库,然后再进行备份。只有通过分析其备份文件才能制作此类文件。
单击备份将在SD卡baidu / ime /路径中生成两个文件:en2.txt和ch3.txt。其中,en2.txt放置英文自制词,ch3.txt放置中文自制词
en2.txt的示例如下:
......
ArcGIS 55000
arcgis 55000
are 55000
Are 55000
atr 55000
ate 55000
atm 60000
ATM 60003
......
ch3.txt显示
......
藏(cang) 60001
仓促(cang|cu) 60000
仓库(cang|ku) 60002
藏了(cang|le) 60000
苍穹(cang|qiong) 60000
沧桑(cang|sang) 60000
层(ceng) 60005
蹭(ceng) 60027
层次(ceng|ci) 60005
......
英语规则很简单,无需过多解释。在中文中,它是中文名称。然后是一个括号,里面有拼音,每个汉字拼音的中间用|分隔。最后一个数字是什么意思?实际上,这就是您输入的次数。自制单词的基准数字为60,000,例如layer(ceng)60005。我输入ceng并选择“ layer” 6次(为什么不是5次?嘿程序员都知道了),选择“ Ceng”“它是28次数,该数字确定其候选位置的数量,同时,百度输入法还提供了智能清除自制单词的功能,应使用此数据,因此要导出的单词越多,不容易清理,因此请适当增加此数字。
然后,当我们清楚地理解该规则后,就可以创建该同义词库。如果我们自己做中文,首先要解决的是拼音问题。检查后,Internet上通常使用两种解决方案。这里有更多详细介绍,我将在这里简单地将其提取出来:
使用ASCII码和拼音映射
优点:零依赖,只有一个类,易于使用
缺点:仅支持常见的一级汉字,对于某些不常见的汉字(bobo),无法正确获取拼音
(中文编码的第一级汉字通过拼音排序,很容易映射。第二级汉字通过笔画部首排序)使用第三方pinyin4j jar包。
优点:易于使用,实用性强
缺点:需要依赖第三方jar包
我尝试了第一个。方便而简洁。它太简洁了,但是不够准确。例如,Kou一词不正确。作为一个完美主义者,我选择了第二个选项,准确性确实得到了很大的提高。除复音特征因素外,到目前为止没有发现错误。
解决拼音问题后,您可以根据特定的内容和格式开始制作同义词库,然后使用Android OutputStreamWriter生成文件。但是,如果直接生成,导入将失败。比较格式之后,发现其导出的格式完全相同,为什么不识别呢?由于之前字符编码的折磨,我的第一个反应是字符编码错误。我比较了导出文件和计算机生成的文件,发现导出文件是Unicode编码,并且生成了utt-8,所以我们只需要在导出时指定Unicode编码
OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(f), "Unicode");
然后再次导出,导入成功!
但是我仍然觉得它不是太完美。如果有一个产品叫“我只是这么长的目录”,那么根据我们的方法,创建的单词太长,而百度输入法也是自制单词的长度限制为8个字符,对于中文和英文的混合输入,这有点无助。在这里,我们将使用第二种法宝:个性化短语。
在这里,我简要介绍一些个性化短语的功能。个性化短语是通过自定义输入代码和相应的输入内容。例如,我将输入代码定义为“ dz”,并在中文状态下输入dz。出现了我定义的“我的地址”的输入内容,该输入内容可能会很长,也可能是中文和英文的结合,这仅仅是快速输入的产物。百度输入法的个性化短语功能是在高级设置中→个性化短语→管理个性化短语可以导入和导出,我们也可以先导出以查看其格式
[快速符号]
alpha=0,α
beta=0,β
chi=9,χ
delta=0,Δ
epsilon=0,ε
gamma=9,γ
lambda=0,λ
mu=9,μ
number=0,№
omicron=0,ο
omega=0,Ω
......
官方默认有一组快速符号,然后其中有一些数学符号,格式为输入代码=候选位,输入内容,每组均以[group name]开头,值得一提的是是一个个性化短语,与合并的同义词库的导入不同,涵盖了的导入。其次,个性化短语的优先级最高(固定的第一个单词除外),因此可以使用它来定义一些经常输入的长文本,例如邮箱。地址,电话号码等再合适不过了。
在大量产品名称下,如何定义个性化短语的输入代码是合适的?我采用的方法是默认情况下使用拼音的缩写,同时用户可以自行对其进行修改。
实际上,这并不难实现,但是个人认为效果非常好。同义词库提供了更多的自动关联功能,个性化的短语被准确输入,两管齐下,并且输入极为流畅。
最后两个效果图也输入“我就是这么长的内容列表”
1.输入“ ycc”,我们预设为“我就是这么长的内容列表”
2.输入“我喜欢这个”,然后自动与“一长串内容”相关联
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-323988-1.html