中文分词的基本原则
- 颗粒度越大越好
分词结果的颗粒度越大(即单词的字数越多),所能表示的含义越确切。如:“公安局长”可以分为“公安 局长”、“公安局 长”、“公安局长”,但是要用于语义分析,则“公安局长”的分词结果最好(前提是所使用的词典中有这个词)。
- 切分结果中非词典词越少越好,单字词典词数越少越好
- 非词典词:不包含在词典中的单字
- 单字词典词:可以独立运用的单字,如:的、了、和、你、我、他
如:“技术和服务”,可以分为“技术 和服 务”以及“技术 和 服务”。“务”字无法独立成词(即词典中没有),但“和”字可以单独成词(词典中要包含),因此“技术 和服 务”有1个非词典词,而“技术 和 服务”有0个非词典词,因此选用后者。
- 总体词数越少越好
在相同字数的情况下,总词数越少,说明语义单元越少,那么相对的单个语义单元的权重会越大,因此准确性会越高。
匹配算法
最大匹配算法
最大匹配是指以词典为依据,取词典中最长单词为第一个次取字数量的扫描串,在词典中进行扫描(为提升扫描效率,还可以跟据字数多少设计多个字典,然后根据字数分别从不同字典中进行扫描)。例如:词典中最长词为“中华人民共和国”共7个汉字,则最大匹配起始字数为7个汉字。然后逐字递减,在对应的词典中进行查找。
正向最大匹配算法
以“我们在野生动物园”为例,词典中最长词为“中华人民共和国”。
正向即从前往后取词,从7->1,每次减一个字,直到词典命中或剩下1个单字。
第1轮第1次:7字词典中扫描“我们在野生动物”,无;
第1轮第2次:6字词典中扫描“我们在野生动”,无;
第1轮第3次:5字词典中扫描“我们在野生”,无;
第1轮第4次:4字词典中扫描“我们在野”,无;
第1轮第5次:3字词典中扫描“我们在”,无;
第1轮第6次:2字词典中扫描“我们”,有;
扫描中止,输出第1个词为“我们”,去除第1个词后开始第2轮扫描。
第2轮第1次:7字词典中扫描“在野生动物园玩”,无;
第2轮第2次:6字词典中扫描“在野生动物园”,无;
第2轮第3次:5字词典中扫描“在野生动物”,无;
第2轮第4次:4字词典中扫描“在野生动”,无;
第2轮第5次:3字词典中扫描“在野生”,无;
第2轮第6次:2字词典中扫描“在野”,有;
扫描中止,输出第2个词为“在野”,去除第2个词后开始第3轮扫描。
第3轮第1次:5字词典中扫描“生动物园玩”,无;
第3轮第2次:4字词典中扫描“生动物园”,无;
第3轮第3次:3字词典中扫描“生动物”,无;
第3轮第4次:2字词典中扫描“生动”,有;
扫描中止,输出第3个词为“生动”,去除第3个词后开始第4轮扫描。
第4轮第1次:3字词典中扫描“物园玩”,无;
第4轮第2次:2字词典中扫描“物园”,无;
第4轮第3次:1字词典中扫描“物”,无;
扫描中止,输出第4个词为“物”,非词典词数加1,去除第4个词后开始第5轮扫描。
第5轮第1次:2字词典中扫描“园玩”,无;
第5轮第2次:1字词典中扫描“园”,有;
扫描中止,输出第5个词为“园”,单字词典词数加1,去除第5个词后开始第6轮扫描。
第6轮第1次:1字词典中扫描“玩”,有;
扫描中止,输出第6个词为“园”,单字词典词数加1,扫描结束。
最终切分结果为:“我们/在野/生动/物/园/玩”,其中,单字词典词数为2,非词典词数为1。
逆向最大匹配算法
以“我们在野生动物园”为例,词典中最长词为“中华人民共和国”。
逆向即从后往前取词,从7->1,每次减一个字,直到词典命中或剩下1个单字。
第1轮第1次:7字词典中扫描“在野生动物园玩”,无;
第1轮第2次:6字词典中扫描“野生动物园玩”,无;
第1轮第3次:5字词典中扫描“生动物园玩”,无;
第1轮第4次:4字词典中扫描“动物园玩”,无;
第1轮第5次:3字词典中扫描“物园玩”,无;
第1轮第6次:2字词典中扫描“园玩”,无;
第1轮第7次:1字词典中扫描“玩”,有;
扫描中止,输出第1个词为“玩”,单字词典词数加1,去除第1个词后开始第2轮扫描。
第2轮第1次:7字词典中扫描“们在野生动物园”,无;
第2轮第2次:6字词典中扫描“在野生动物园”,无;
第2轮第3次:5字词典中扫描“野生动物园”,有;
扫描中止,输出第2个词为“动物”,去除第2个词后开始第3轮扫描。
第3轮第1次:3字词典中扫描“我们在”,无;
第3轮第2次:2字词典中扫描“们在”,无;
第3轮第3次:1字词典中扫描“在”,有;
扫描中止,输出第3个词为“玩”,单字词典词数加1,去除第3个词后开始第4轮扫描。
第4轮第1次:2字词典中扫描“我们”,有;
扫描中止,输出第4个词为“我们”,扫描结束。
最终切分结果为:“我们/在/野生动物园/玩”,其中,单字词典词数为2,非词典词数为0。
双向最大匹配算法
正向、逆向两种算法都切一遍,然后根据大颗粒度词越多越好,非词典词和单字词越少越好的原则,选取其中一种分词结果输出。
- 非词典词数:越少越好
- 单字词典词数:越少越好
- 总词数:越少越好