Fw: [心得] iOS8 中文输入法真的很聪明

楼主: linpien (Linpien)   2014-09-29 07:44:17
※ [本文转录自 iPhone 看板 #1KA9K4qz ]
作者: IMPOSSIBLEr (高级外劳) 看板: iPhone
标题: Re: [心得] iOS8 中文输入法真的很聪明
时间: Mon Sep 29 07:08:49 2014
: 推 ishuen: 但是apple说输入法没用到网络 这些资料都在手机里吗? 09/29 01:00
: → KANO1931: 需要庞大资源的部分是在计算阶段 应用的部分是结果 不一 09/29 01:05
: → KANO1931: 定占很大空间 但如果要动态更新常用词就需要了 09/29 01:09
: 推 pm2001: 没用到网络我觉得不可能 这资料量非常大 09/29 01:18
小弟非专业发言,大家看看就好
个人觉得像这种切进时事的联想字,应该都是需要网络的
如同KANO大所说,需要大量运算资源的是计算阶段,实作阶段所需资源并不大
我举一个我最近为虾米键盘实作简易联想词的方法为例
虾米键盘的联想词功能目前实作流程如下
1. 下载Google ngrams dataset简中版本(因为没有繁中...)
上文所述需要大量运算资源的就是这部份,如何产生ngrams
而google已经帮我们作好了(佛心
Google ngrams dataset资料格式看起来像这样
<中文词> <某西元年> <该西元年中发现此词汇数量> <该西元年中在多少著作中发现该词>
我下载下来的dataset总共大小约1.3gb(只取2 gram)
2. 使用程式语言parse下载下来的dataset,输出成frequency list, 格式如下
<中文词> <总发生数量>
存成纯文字档,目前我跑出来的这个档大小为500kb左右,40000左右中文词
像这第二步,需要读入1.3gb的原始资料,在手机上会耗时良久
但读入500kb的资料,目前虾米键盘的速度还算可以(iPhone 5)
3. 在键盘初始化时parse第二步产生的frequency list存进内存。
这部份的资料结构可采用简单的hash map或是高级一点(比较难实作)的trie
不过如果词的长度不是很长,例如我的第二步出来的档,里面最长的词只有4字
那使用hash map应该整体来说效能会好一点,当然这是个人感觉
基本上有了这个backend data structure,再写一个function,输入为字串,
然后到这个data structure中查询,输出为一个字串阵列,然后就可以输出到
键盘画面上给使用者选择。
由上可知,如果想要动态产生联想词例如结合时事,或是使用最近的报章blog文章
当作ngrams的corpus,那么网络是必须的。
不专业分享,请勿笔战~~
作者: zxcasdfj (扮演好上班族!!)   2014-09-30 21:47:00
真希望iOS版有虾米快出来,至于联想词我个人还好...因为在那边挑的时间,早就可以把那些字打完了 XD
作者: idunhav1 (你知道天空为什么是蓝的?)   2014-09-30 23:05:00
注意苦手+1 那时候才有呒虾米能用

Links booklink

Contact Us: admin [ a t ] ucptt.com