往期回顾
道路交通信息常用检测技术介绍——第三篇:射频检测器
道路交通信息常用检测技术介绍——第二篇:环形线圈检测器
道路交通信息常用检测技术介绍——第一篇:地磁检测器
基于大数据的苏州市交通分析系统——快速路流量和车速监测
背景
编程语言是人类与计算机之间交流的工具,而所谓的自然语言则是人类与人类之间交流的工具,那么计算机是如何理解人与人之间交流所使用的语句呢?今天讲一种常用的自然语言处理算法——双向最大匹配算法,这种算法虽然实现简单,但是依赖庞大的词库,词库相当的情况下,能取得不错的分词效果。
1
正向匹配法
双向最大匹配算法”中的“双向”就是正向和反向。所以先来说正向匹配法。正向匹配法就是按照正向阅读顺序,根据词库中的词对句子进行匹配,我们已“苏州中学生前来参观”这句话为例(词库中存在各种长度的词语,这里假设词库中最长的单词长度为5):
No.1
第一轮:
1. 取出字串“苏州中学生”,扫描5个字的词典,如果匹配失败则每次去掉最后面一个字。
2. “苏州中学”,扫面4个字的词典,匹配成功,输出“苏州中学”,剩下的字符串为“生前来参观”
No.2
第二轮:
1. “生前来参观”,扫描5个字词典,没有匹配,字数减一,变为“生前来参”
2. “生前来参”,扫描4个字词典,没有匹配,字数减一,变为“生前来”
3. “生前来”,扫描3个字词典,没有匹配,字数减一,变为“生前”
4. “生前”,扫描2个字词典,有匹配,输出“生前”,剩下字符串为“来参观
No.3
第三轮:
1. “来参观”,扫描3个字词典,没有匹配,字数减一,变为“来参”
2. “来参”,扫描2个字词典,没有匹配,字数减一,变为“来”,由于单词最小粒度为1,直接输出“来”,字符串变为“参观”
No.4
第四轮:
1. “参观”,扫描2个字的词典,有匹配。
正向匹配法丨结论
因此正向匹配法输出结果:“苏州中学 /生前 /来 /参观”,这显然不是我们要的意思,因此有人提出了逆向匹配法,原理和正向匹配一直,不过取词的顺序是从后往前:
2
逆向匹配法
No.1
第一轮:
1. “生前来参观”,扫描5个字词典,没有匹配,字数减一,变为“前来参观”
2. “前来参观”,扫描4个字词典,没有匹配,字数减一,变为“来参观”
3. “来参观”,扫描3个字词典,没有匹配,字数减一,变为“参观”
4. “参观”,扫描两个字的词典,有匹配,输出“参观”
No.2
第二轮:
1. “中学生前来”,扫描5个字的词典,没有匹配,字数减一,变为“学生前来”
… …
逆向匹配法丨结论
按照这个方法,逆向匹配法最终的输出结果是:“苏州 /中学生 /前来 /参观“。
但是,无论是正向匹配法还是逆向匹配法,方法都是一样的,逆向匹配也会出现曲解句子意思的情况,并不会从根本上改变匹配的准确度,因此有了双向最大匹配法。
3
双向匹配法
双向最大匹配法是通过比较正向和逆向的结果从而确定正确的结果:
双向
结果:
1. 假如正向和逆向匹配结果一样,那随便选一个结果就可以了
2. 如果结果不一样,那要遵从两个原则:1) 取分词数量较少的结果;2)如果数量一样则取单字词较少的那个。我的理解是,遵从这两个原则的分词结果,单词颗粒度一般比较大,颗粒度比较大的单词一般包含的信息比较完整。
丨最后总结
双向最大匹配法的结果也不是完全准确的,所以在使用中往往会加入一些统计模型做校正。

讲数公众号
数 据 | 开 发 | 交 通
用 数 据 讲 述 城 市
球分享
球点赞

球在看