最近,我制作了一个小型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

android 常用短语的添加,操作方法:使用Android上的百度输入法提供的导入词库和个性化短语,批量创建单词便于输入...相关推荐

  1. 安卓上利用百度输入法提供的导入词库与个性短语,批量造词方便输入

    最近有做个小APP,里面管理了很多的商品,商品名称不是常见的词,用户在会需要经常输入这些商品名称(软件外部,无法做自动补全),每次都要选词,正确的候选项往往不会出现在很前面,容易误选,输入效率较低.按 ...

  2. 华为android通知使用权6,如何在华为手机上开启百度应用的通知使用权限

    如何在华为手机上开启百度应用的通知使用权限 有的人成为了果粉,有的人选择了安卓手机,那么在安卓手机华为手机上如何开启百度应用的通知使用权限呢?小编就来为大家介绍一下吧. 具体如下: 1. 第一步,打开 ...

  3. Android简单音乐盒,添加音乐播放的 上一首 和 下一首 控制

    1.界面布局 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <Linear ...

  4. android 动态添加元素,动态添加项目到Android中的NavigationView

    Hexise.. 13 假设您有两个组,group1和group2.如果要将项目动态添加到group1,则可以为group2分配优先级,使其始终低于group1.然后,当您向group1添加新项目时, ...

  5. android 常用图像密码,这几种Android图形密码最常用 你也在用吗?

    从iPhone 5s开始,按压式指纹识别就成了高端智能手机的标配,但是对于大部分没法体验指纹识别的用户来说,图形密码仍然是他们最常使用的解锁方式之一.有意思的是,最近一位名叫Marte Løge的挪威 ...

  6. Android 常用开发工具收藏

    实践 • NIST网络安全实践指南:"移动设备安全:云和混合构建" • Android安全概述 • 开发人员的Android安全提示 • 移动应用渗透测试备忘录 • MobileA ...

  7. Android常用权限permission列表摘录

    Android常用权限permission列表摘录 一个Android应用程序需要权限才能调用某些android系统的功能:一个android应用也可能被其他应用调用,因此也需要声明调用自身所需要的权 ...

  8. Android P HAL层添加HIDL实例(详细实现步骤)

    Android P HAL层添加HIDL实例 本文是参照 https://www.jianshu.com/p/b80865c61d8e 教程介绍实现,原理请参考原作者. 本文将介绍如何在P OS上添加 ...

  9. Android studio给备忘录添加背景音乐

    Android studio给备忘录添加背景音乐 目录 Android studio给备忘录添加背景音乐 一.音乐导入 二.代码 (1)AndroidMainfest.xml (2)MyIntentS ...

最新文章

  1. tomcat容器是如何创建servlet类实例?用到了什么原理?
  2. ios遍历模块的方式
  3. Android图片适应屏幕大小
  4. dmx512协议c语言编程,DMX512协议+c程序代码.pdf
  5. 构建持续交付_如何使交付成为您的重点将如何帮助您构建高质量的应用程序
  6. Java路径问题最终解决方案使用演示
  7. 【算法】剑指 Offer 52. 两个链表的第一个公共节点
  8. 腾讯广告算法大赛“视”界杯专题直播来袭,腾讯专家助你赛场争先!
  9. matlab 结构(struct)数组,matlab 结构(struct)数组
  10. java daemon 线程_【转】关于Java的Daemon线程的理解
  11. poj 3450 Corporate Identity 枚举+kmp,话说这家伙给我一顿超时啊!!!!
  12. Python中参数iterable的意义
  13. 【学习记录贴】#3——校园二维和三维电子地图制作
  14. hive用源生函数实现根据身份证计算年龄
  15. 方向导数(Directional derivatives)
  16. 第4章 计算机网络自顶向下——网络层:数据平面
  17. 华为智慧屏鸿蒙系统缺点,华为智慧屏用户评论及华为智慧屏电视真实体验优缺点情况...
  18. java中jframe是什么_java中JFrame是什么
  19. MLDLRL:MLDL相关概念的原始英文解释——对理解最初的ML和DL的相关概念的定义非常有用
  20. java中sort函数的使用

热门文章

  1. 2018-12-25 上机作业
  2. 读取遥感图像中遇到的问题集锦
  3. jQuery 基础事件
  4. HDU 5919 分块做法
  5. LeetCode之Max Points on a Line Total
  6. 一次难忘的 MTS 故障的排除过程
  7. 时间复杂度O(1) O(n) O(logn) O(nlogn)是什么意思?
  8. MySql 你知道 order by 是怎么回事吗? MySql全字段排序与 rowid 排序
  9. 用 Gearman 分发 PHP 应用程序的工作负载(转载)
  10. php 使用fseek指针读取大文件日志