Loadrunner Informix Oracle HP-Unix AIX MQ Tuexdo Project server 2007 J2EE PHP Z/OS CICS
查看文章 |
java 中科院分词 调用程序
2006年11月01日 星期三 14:52
可以在中科院智能研究所上下载 autosplit.rar这个文件 说明: 1.Split.dll是我根据中科院自动分词系统修改后自己编译成的DLL文件,调用的方法可以参见Demo.java。 2.caller.jar是一个java包,里面只有SplitCaller这一个类,这个类的主要作用是DLL调用中的接口定义以及初始化。调用caller.jar时注意将此包放入classpath内。 3.Data目录下的文件是分词用的概率词表。 4.Demo.java是一个简单的演示程序,演示了如何调用自动分词功能。 5.关于Split.dll生成的源代码,因为版权原因,恕不提供源代码。自动分词程序的源代码请到http://www.nlp.org.cn上下载。 在Lucene中调用自动分词系统的办法。 建索引时: 1)先调用SplitCaller将要处理的内容进行分词处理。示例代码如下:(下面的代码是对RSS文档进行建索引操作) ---RSSDocument.java------- import com.blogever.RssReader.SplitCaller; ... ... public static Document makeDocument(ItemIF item) { Document doc = new Document(); //现在加了自动分词功能 doc.add(Field.Text(TITLE, SplitCaller.splits("将标题进行分词"))); doc.add(Field.Text(CONTENT,SplitCaller.splits("将内容进行分词"))); //下面的内容没有分词 doc.add(new Field("uid", uid(item), false, true, false)); return doc; } ... 2)使用Analyzer时注意要使用 WhitespaceAnalyzer 分析器,因为自动分词程序已经将文档进行了分词,并用空格空开,此时只要按空格进行解析就行了。如:“将标题进行分词”已经分成“将 标题 进行 分词”。 -----ChannelIndexer.java------ ... import org.apache.lucene.analysis.WhitespaceAnalyzer; ... //其他代码 ... Analyzer analyzer = new WhitespaceAnalyzer(); ... public void indexItems(boolean createNewIndex, Collection items) throws java.io.IOException { ArrayList al = (ArrayList) items; Collections.sort(al, new ItemComparator()); writer = new IndexWriter(indexDir, analyzer, createNewIndex); writer.maxFieldLength = 1000000; ... //其他代码 ... writer.addDocument(RssDocument.makeDocument(item)); ... writer.optimize(); nrOfIndexedItems = writer.docCount(); writer.close(); logger.info("Finished writing index."); } ... 3)检索时,对检索词也采用上面同样的方法即可: ... Searcher searcher = new IndexSearcher("d:\\NewsSpider\\index"); Analyzer analyzer = new WhitespaceAnalyzer(); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); while (true) { System.out.print("Query: "); String line = in.readLine(); if (line.length() == -1) break; Query query = QueryParser.parse(SplitCaller.splits(line), "title", analyzer); System.out.println("Searching for: " + query.toString("title")); Hits hits = searcher.search(query); System.out.println(hits.length() + " total matching documents"); ... |
最近读者: