lucene应用wordnet的同义词典实现同义词检索(c 版)

lucene应用wordnet的同义词典实现同义词检索(c 版)

ID:17883001

大小:35.50 KB

页数:9页

时间:2018-09-08

lucene应用wordnet的同义词典实现同义词检索(c 版)_第1页
lucene应用wordnet的同义词典实现同义词检索(c 版)_第2页
lucene应用wordnet的同义词典实现同义词检索(c 版)_第3页
lucene应用wordnet的同义词典实现同义词检索(c 版)_第4页
lucene应用wordnet的同义词典实现同义词检索(c 版)_第5页
资源描述:

《lucene应用wordnet的同义词典实现同义词检索(c 版)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、从此处转载(不知是否是原作者)http://hi.baidu.com/%CC%EC%CF%C2%D7%E3%C7%F2001/blog/item/7de397fa5cdecb02d8f9fd2e.html感谢原作者!Lucene应用WordNet的同义词典实现同义词检索(C#版)12010-07-1810:49同义词检索应该很多时候会用得上的,举个简单的例子,我们搜索关键字good的时候,与well和fine等的词条也可能是你想要的结果。这里我们不自己建立同义词库,直接使用WordNet的同义词库,本篇介绍C#版的实现步骤,还会有续篇--Java版。由于Lucene是发源于Java,

2、所以C#的应用者就没有Java的那么幸福了,Java版已经有3.0.2可下载,C#的版本还必须从SVN库里:https://svn.apache.org/repos/asf/lucene/lucene.net/tags/Lucene.Net_2_9_2/才能取到最新的2.9.2的源码,二制包还只有2.0的。接下来就是用VS来编译它的,不多说。只是注意到在contrib目录中有WordNet.Net解决方案,这是我们想要的,编译WordNet.Net可得到三个可执行文件:1.Syns2Index.exe用来根据WordNet的同义词库建立同义词索引文件,同义词本身也是通过Lucene来

3、查询到的2.SynLookup.exe从同义词索引中查找某个词有哪些同义词3.SynExpand.exe与SynLookup差不多,只是多了个权重值,大概就是同义程度好啦,有了Lucene.Net.dll和上面那三个文件,我们下面来说进一步的步骤:二.下载WordNet的同义词库可以从http://wordnetcode.princeton.edu/3.0/下载WNprolog-3.0.tar.gz文件。然后解压到某个目录,如D:WNprolog-3.0,其中子目录prolog中有许多的pl文件,下面要用到的就是wn_s.pl三.生成同义词Lucene索引使用命令Syns2Inde

4、x.exed:WNprolog-3.0prologwn_s.plsyn_index第二个参数是生成索引的目录,由它来帮你创建该目录,执行时间大约40秒。这是顺利的时候,也许你也会根本无法成功,执行Syns2Index.exe的时候出现下面的错误:UnhandledException:System.ArgumentException:maxBufferedDocsmustatleastbe2whenenabledatLucene.Net.Index.IndexWriter.SetMaxBufferedDocs(Int32maxBufferedDocs)atWorldNet.Net

5、.Syns2Index.Index(StringindexDir,IDictionaryword2Nums,IDictionarynum2Words)atWorldNet.Net.Syns2Index.Main(String[]args)莫急,手中有源码,心里不用慌,只要找到Syns2Index工程,改动Syns2Index.cs文件中的writer.SetMaxBufferedDocs(writer.GetMaxBufferedDocs()*2*/);//GetMaxBufferedDocs()本身就为0,翻多少倍也是白搭为writer.SetMaxBufferedDocs(100

6、);//所以直接改为100或大于2的数就行重新使用新编译的Syns2Index.exe执行上一条命令即可。成功执行后,可以看到新生成了一个索引目录syn_index,约3M。现在可以用另两个命令来测试一下索引文件:D:wordnet>SynLookup.exesyn_indexhiSynonymsfoundfor"hi":hawaiihellohowdyhulloD:wordnet>SynExpand.exesyn_indexhiQuery:hihawaii^0.9hello^0.9howdy^0.9hullo^0.9也可以用Luke-LuceneIndexToolBox来查看索

7、引,两个字段,syn和word,通过word:hi就可以搜索到syn:hawaiihellohowdyhullo四.使用同义词分析器、过滤器进行检索相比,Java程序员要轻松许多,有现成的lucene-wordnet-3.0.2.jar,里面有一些现在的代码可以用。C#的那些分析器和过滤器就得自己写了,或许我已走入了一个岔道,但也不算崎岖。小步骤就不具体描述了,直接上代码,大家从代码中去理解:同义词引擎接口viewsourceprint?01.usingS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。