基于动态规划的整句输入法

一般来说,我们不会在用动态规划算法求解的问题上称呼它为“动态规划”,而是称之为“隐马尔可夫模型”,不过,如果我们单纯用动态规划算法来求解一个普通的有向无环图,那么就只能说是动态规划了……

这次我们要来说的,是基于词库的整句输入法。而不是基于状态转移的隐马尔可夫模型求解。

词库

由于不需要模型,我们的整句输入是基于词汇的,就需要一个词库。这个词库里应该记录了普通人大部分的常用词汇,而且有一[……]

点击跳转以继续阅读

ios 为视障用户支持 VoiceOver

其实很少用户知道,ios系统其实有一套完整的轻松访问机制,很多盲人或者说视障用户都喜欢使用iphone

所以说,作为一名开发者,我觉得不论是从产品销售面还是作为责任,都应该做好完善的轻松访问支持。

不过好在,得益于苹果严格的开发规范,所以一般只要你的app已经通过审核能够上架,那么基本上 VoiceOver 就已经能够很好的识别你 app 中的大部分内容了,比较通用的,比如 tabV[……]

点击跳转以继续阅读

iOS 平台 SQLite 性能优化

开始

在 ios 平台,数据永久化的存储方式就那么几种,比如说 coredata,比如说realm,还有nosql的几种方案,但是很遗憾,nosql的几种方案支持的功能都还是太少,这样就让对它们的选择显得十分鸡肋——毕竟,如果是简单的应用的话,那就还不如其他方案来的方便快捷——虽然nosql是趋势。

这次我们来谈谈另一种比较常见的储存方案——sqlite,这个东西很厉害,它是一个用c实现的[……]

点击跳转以继续阅读

如何自定义 落格输入法 ?

如何自定义落格输入法?

在落格输入法中,我为你提供了强大的自定义功能。不论是简单地新建一种双拼方案,还是导入一份五笔输入法的码表,它都能完成。

首先,我们从概念说起

按键映射方案

落格输入法用它来生成对应的映射方案,比如智能abc、比如自然码等等。按键映射方案有两个文件,比如“智能ABC.plist”那么就要有对应的“智能ABC_rev.plist”,后者不是必须,但如果你想开启“按键[……]

点击跳转以继续阅读

获取 中文 维基百科语料

最近在做输入法的词库,实现新的整句输入模型,(回头我会把之前的基于词的整句输入模型讲讲),新的整句输入模型是基于 HMM (也就是隐马尔可夫模型)来做的,当然了,由于我个人设备资金等有限,只做了二阶矩阵。不过即使如此,模型还是需要训练的。

当然,不是说用小说名著来训练就不好,只不过很难找到各行各业的相关小说,毕竟,它们覆盖的面积太单一了,这其实并不是高质量的语料库。说起高质量,那自然是非维基[……]

点击跳转以继续阅读

swift 中内存狂飙的问题

在使用 Swift 语言进行开发的时候,很多朋友会莫名奇妙地遇到内存爆满的问题,明明有 ARC ,明明释放了内存,却还是让程序的内存占用随着循环而一路飙升。

这里其实并不是出现了内存泄露,这其实是 ARC 的一个机制:在每一个主 Runloop 结束的时候进行清理。也就是说,它有一套必要的缓存机制——毕竟,实时释放的话谁能保证你的局部变量要不要留下来给后续的代码使用呢?

但显然,这个必[……]

点击跳转以继续阅读

SourceKitService 占用大量内存和 CPU 的解决办法

在使用 Xcode 进行 Swift 语言开发软件的时候,不少人在项目中后期都会遇到这么一个问题,如题图那样:SourceKitService 占用大量的 CPU 和内存,甚至直接导致系统卡死。

那么,这到底是怎么一回事呢? 在 StuckOverflow 上的高票答案是这么说的:

在活动监视器里找到 SourceKitService 双击它,看它打开了哪些目录,去把缓存删除然后强[……]

点击跳转以继续阅读

如何学习自然码辅码?

自然码是个比较古老的双拼方案了,有多古老?古老到现在不少用户都根本不知道它还有一套辅码方案。

自然码的辅码称不上是形码,它之所以被称为是辅码,就是因为这套方案的设计初衷还是作为辅助,所以它并不能像小牛辅码那样做到非常低的重码率——但是加上音的话,用起来还是很高效。

为什么就算如此还说它输入高效呢?因为它设计之初就是为了辅助,这就直接决定了这套方案十分容易被接受和学习!有多简单?就是偏旁[……]

点击跳转以继续阅读

让 SSH 走代理连接服务器

很多网络运维、或者站长需要通过 ssh 来管理服务器、vps,如果不凑巧,你和服务器之间相隔了一堵 GFW,那么由于 GFW 会分析 ssh 数据包,结果就是导致稍微慢一点的网络就会让命令卡一分钟。

GFW 现在完全有能力分析 ssh 流量特征,以判断你是在真的使用 ssh 配置服务器,还是使用它作为代理来浏览网页。

如果有什么好的办法让ssh像浏览器那样指定翻墙就好了。

事实上,还真有[……]

点击跳转以继续阅读