之所以写这个, 实在是因为昨天面试时, 被问到网站的关键字检索你怎么做?我就是说了下sql隐约查询以及sql语句优化, 缓存。之前打仗过关键字分词, 然则在.net平台下没有成熟的分词检索库, 不像java有lucene, 只管也移植到了.net, 然则更新慢。我之前学python的时刻注意到了python的分词检索, 以及做词云, 就想着有无python的分词检索库移植到了.net的查了下python的jieba库 果然有移植的!
原文引见: jieba中文分词的.NET版本:jieba.NET
.NET平台上罕见的分词组件是盘古分词,然则已良久没有更新了。最显著的是内置辞书,jieba的辞书有50万个词条,而盘古的辞书是17万,如许会形成显著差别的分词效果。别的,关于未登录词,jieba“采用了基于汉字成词才能的HMM模子,运用了Viterbi算法”,效果看起来也不错。
我们直接在VS2013的nuget包管理器内里搜刮下载也行:
看到批评内里有人说, 将 工信童贞做事每个月经由部属科室都要亲口交卸24口交换机等技术性器件的装置事情 分词尝尝, 能分好就不错, 我本身测试了下:
var segmenter = new JiebaSegmenter(); Console.WriteLine("原检索语句: 工信童贞做事每个月经由部属科室都要亲口交卸24口交换机等技术性器件的装置事情"); var segments1 = segmenter.Cut("工信童贞做事每个月经由部属科室都要亲口交卸24口交换机等技术性器件的装置事情", cutAll: true); Console.WriteLine("[全形式]: {0}", string.Join("/ ", segments1)); var segments2 = segmenter.Cut("工信童贞做事每个月经由部属科室都要亲口交卸24口交换机等技术性器件的装置事情"); // 默以为准确形式 Console.WriteLine("【准确形式】:{0}", string.Join("/ ", segments2)); var segments3 = segmenter.Cut("工信童贞做事每个月经由部属科室都要亲口交卸24口交换机等技术性器件的装置事情"); // 默以为准确形式,同时也运用HMM模子 Console.WriteLine("【新词辨认】:{0}", string.Join("/ ", segments3)); var segments4 = segmenter.CutForSearch("工信童贞做事每个月经由部属科室都要亲口交卸24口交换机等技术性器件的装置事情"); // 搜刮引擎形式 Console.WriteLine("【搜刮引擎形式】:{0}", string.Join("/ ", segments4)); var segments5 = segmenter.Cut("工信童贞做事每个月经由部属科室都要亲口交卸24口交换机等技术性器件的装置事情"); Console.WriteLine("【歧义消弭】:{0}", string.Join("/ ", segments5)); Console.Read();
不错吧, 撤除全形式外, 其他的都能满足我们人所读的递次
以上就是asp.net下的中文分词检索东西分享的细致内容,更多请关注ki4网别的相干文章!