- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
17-逆向分词详解
概 述 逆向最大长度切分流程 中文后缀树 逆向最大长度匹配 逆向最大长度切分 中文分词方法 贪心法 正向最大长度切分 逆向最大长度切分 长词往往在后面,所以逆向最大长度切分比正向最大长度切分准确度高 逆向最大长度切分流程 中文后缀树 词典中包括如下的8个词语: 大 大学 大学生 活动 生活 中 中心 心 插入顺序为: 大学 活动 中心 中 大 心 大学生 生活 词典树上的节点 增加词 逆向最大长度匹配 测试逆向最大长度匹配 逆向最大长度切分 比较单词大小 从后往前比较两个单词的大小,用于取得平衡的单词序列 对词典排序 C#搜索引擎开发实践第十七讲逆向最大长度匹配分词法 主讲人: 罗刚 luogang@ 有意见分歧 大学生活动中心 大学生 活动 中心 学 心 大 动 中 心 活 生 黄色节点是 第一层节点 蓝色节点是 第二层节点 白色节点是 第三层节点 中 学 大 活 生 /// summary /// 树型构数 泛型G为储存类型 /// /summary /// typeparam name=G/typeparam public class TrieNodeG{ public Char key; public G data; public TrieNodeG loNode; public TrieNodeG eqNode; public TrieNodeG hiNode; public TrieNode(Char key) { this.key = key; } } public TrieNodeString CreatTSTNode(String key, String value){ if (key == null) { throw new Exception(空指针异常); } int charIndex = key.Length - 1; if (rootNode == null) { rootNode = new TrieNodeString(key[charIndex]); } TrieNodeString currentNode = rootNode; while (true) { int compa = key[charIndex] - currentNode.spliter; if (compa == 0) { charIndex--; if (charIndex 0) { currentNode.data = value; return currentNode; } if (currentNode.eqNode == null) { currentNode.eqNode = new TrieNodeString(key[charIndex]); } currentNode = currentNode.eqNode; } else if (compa 0) { if (currentNode.loNode == null) { currentNode.loNode = new TrieNodeString(key[charIndex]); } currentNode = currentNode.loNode; } else { if (currentNode.hiNode == null) { currentNode.hiNode = new TrieNodeString(key[charIndex]); } currentNode = currentNode.hiNode; } } } /// summary /// 匹配最长字符串 /// /summary /// param name=sentence语句/param /// param name=offset开始位置/param /// param name=end结束位置/param /// returns匹配上的词/returns public String GetMaxMatch(char [] sentence, int offset){ int charindex = offset; String ret = ; TrieNodeString currentNode = rootNode; while (currentNode != null) { int compa = sentence[chari
文档评论(0)