首页 > 代码库 > NLP: 中文分词---正向匹配 (Forward Matching)
NLP: 中文分词---正向匹配 (Forward Matching)
在采用FMM (正向最大匹配) 进行中文分词的时候, 可能会存在比较多的交集歧义, 这个时候为了解决交集歧义的问题, 可以采用 FM (Forwar Matching, 正向匹配) 进行中文分词, 正向匹配会在最大匹配的路径上查找所有可能成词的term(这里所有可能成词的term的意思是在构建索引的时候所有切分出来的词, 因为不是路径上的所有节点都会是切分成的词)。
http://blog.csdn.net/watkinsong/article/details/37696389 这个文章中给出了FMM(正向最大匹配) 的算法实现。
算法描述如下图给出, 下面的图比较多, 但是描述的比较详细。 图后给出代码实现。
FM算法最大的问题就是切分的结果太琐碎, 因为在一次FMM(正向最大匹配)的过程中, 路径上所有是term的节点都会作为一个切分结果。 这样做的好处就是可以减少交集歧义的影响。
接下来根据算法给出代码。 代码假设已经存在索引, 并且索引采用trie树进行保存。
仍然是JS代码。。。
var lunr = require("./lunr.js") var idxdata = http://www.mamicode.com/require("./idx.json")>
测试:query: "互联网金宝"
切分结果: [ ‘互联网‘, ‘网‘, ‘网金宝‘, ‘金‘, ‘宝‘ ]
这里, 因为在切分 “联网金宝”子句时, “联” 在索引中出现, 但是并不是一个term, 所以跳过“联”, 进行下一次切分“网金宝”
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。