Skip to main content

February 06, 2021

利用中文分词,在小书匠上改进使用体验

1. 中文分词

1-1. 什么是中文分词

分词 就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂得多、困难得多。

比如这样一句话 “小书匠是一款功能强大的笔记软件”,我们进行中文分词后,就会变成一个个词语,下面就是分词后的效果(为了说明的方便,这里用空格来做分隔)。这样的过程,就叫分词,因为只针对中文环境下的操作,所以叫中文分词。

  1. 1小书匠 是 一款 功能 强大 的 笔记 软件 

1-2. 中文分词能用来做什么

从 wiki 或者百科上,我们可以看到分词主要是方便计算机识别语句的含义。更具体一点的应用就是搜索机器翻译(MT)语音合成自动分类自动摘要自动校对等。

对于普通用户,用得最多的应该就是搜索,可能你并没有察觉你用到了分词功能,但其实搜索内部实现上,大量使用到了分词功能。特别是像百度,谷歌等搜索引擎。如果没有分词功能,数以亿计的网页,想在你按下搜索后的一两秒时间内返回结果,几乎是不可能的。该篇文章的最后,会介绍小书匠的中文分词搜索,虽然不能达到像百度,谷歌这种速度,但对于一般用户的知识检索,还是游刃有余的。

对于普通用户,除了搜索以外,能在感观上体验到分词的好处,这样的例子其实还很多,可能你并没有发觉到。在编辑器领域中,中文分词也可以提高用户的编辑体验。继续阅读下面的文章,定会让你眼前一亮,原来小书匠在对中文编辑操作体验上做了这吗多的改进!

2. 编辑器操作

2-1. 光标移动定位

通常编辑时,我们可以通过 left right 键来左右移动光标,定位光标位置。如果跳跃幅度比较大时,就通过鼠标直接点击一个具体的位置,将光标定位在那里,然后再编辑修改。

对于经常写英文文章的用户,不知道你有没有发现这样的一个技巧,就是按住 Ctrl 再加上 leftright 按键,就可以很方便的在 英文词语 之间快速的跳转,而不是像以前只能在 英文字符 之间一个字符一个字符的来回移动。

一个字符一个字符的跳跃,虽然准确率很高,但效率太低。通过鼠标点击,进行光标定位时,虽然优势是能够跨越比较大幅度的定位,但由于双手需要离开键盘,容易造成思路的中断,经常使用的话,反而更影响写作。单词之间的跳跃,正好解决了上面的问题,保证了双手无需离开键盘的同时增加了光标定位的跨越幅度,减少了按键的输入次数,提高了用户的编辑效率

虽然单词之间的跳跃非常方便,但这个功能对中文确是无效!!!

因为单词跳跃功能是通过单词与单词之间的空格(或者其他标点符号)进行分隔的,而中文词组却是直接连起来,只在一句话需要停顿时,才有逗号句号等标点符号。正因为中文词语之间没有空格,我们按下 ctrl+left/right 时,都是直接跳跃到一句话的结尾,而不是在词语之间跳跃。

想要在中文环境下实现词语跳跃,那该如何操作呢?然道要用户在编辑时,自己手动在中文词语之间加空格?显然这是不合理的,再加上中文环境下,加了 N 多空格的文章,反而影响阅读体验。

小书匠为了解决这个问题,引入了中文分词,实现了中文词语之间的跳跃。所谓中文分词,就是让系统自动对整个语句进行拆分,变成一个一个词语。这个过程不需要用户自己手动输入空格就可以自动完成,改善了用户使用检验。

下面的两个视频,展示的是没有中文分词的光标定位和有中文分词的光标定位

没有中文分词的光标移动

有中文分词的光标移动

2-2. vim 下光标移动定位

vim 在查看模式下时,可以通过 w, b 或者 e 这几个按键,快速的在英文单词之间跳转定位,大大的提高了编辑效率。

但这样的操作技巧,对于中文,同样是没有任何效果,大部份的编辑器都是直接跳转到整个中文语句的结尾。

小书匠专门在 vim 模式下,也做了中文分词适配。

没有中文分词的移动效果

有中文分词后的移动效果

2-3. 双击选择

一般的编辑器,在鼠标双击一个字符时,会选中整个单词,这样的功能也是利用了英文单词之间通过空格来分隔的原理来实现的。

同样的,如果没有嵌入中文分词功能,鼠标双击一个中文字符,编辑器就直接选中了整个中文句子。

因为小书匠引入了中文分词,在编辑器里,直接鼠标双击一个汉字,小书匠自动选择了词语,而其他编辑器则是整个句子都被选中了。

旧版操作上的体验