
之所以写这个, 其实是因为昨天面试时, 被问到网站的关键字检索你怎么做?我就是说了下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下的中文分词检索工具分享全部内容,希望文章能够帮你解决asp.net下的中文分词检索工具分享所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)