背景
编程语言是人类与计算机之间交流的工具,而所谓的自然语言则是人类与人类之间交流的工具,那么计算机是如何理解人与人之间交流所使用的语句呢?今天讲一种常用的自然语言处理算法——双向最大匹配算法,这种算法虽然实现简单,但是依赖庞大的词库,词库相当的情况下,能取得不错的分词效果。
正向匹配法
双向最大匹配算法”中的“双向”就是正向和反向。所以先来说正向匹配法。正向匹配法就是按照正向阅读顺序,根据词库中的词对句子进行匹配,我们已“苏州中学生前来参观”这句话为例(词库中存在各种长度的词语,这里假设词库中最长的单词长度为5)
正向匹配法丨结论
因此正向匹配法输出结果:“苏州中学 /生前 /来 /参观”,这显然不是我们要的意思,因此有人提出了逆向匹配法,原理和正向匹配一直,不过取词的顺序是从后往前。
逆向匹配法
逆向匹配法丨结论
按照这个方法,逆向匹配法最终的输出结果是:“苏州 /中学生 /前来 /参观“。
但是,无论是正向匹配法还是逆向匹配法,方法都是一样的,逆向匹配也会出现曲解句子意思的情况,并不会从根本上改变匹配的准确度,因此有了双向最大匹配法。
双向匹配法
双向最大匹配法是通过比较正向和逆向的结果从而确定正确的结果:
丨最后总结
双向最大匹配法的结果也不是完全准确的,所以在使用中往往会加入一些统计模型做校正。