百度空间 | 百度首页 
               
 
查看文章
 
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");
      ...

类别:自然语言处理-分词 全文检索 | 添加到搜藏 | 浏览() | 评论 (6)
 
最近读者:
 
网友评论:
1
2006年11月20日 星期一 15:26 | 回复
是否有内容限制?
 
2
2006年11月20日 星期一 15:27 | 回复
我是说文件大小的限制,最近总是文件大了就不能分了
 
3
2006年11月20日 星期一 20:04 | 回复
我没有测试过很长的东西,我用C++测试过一些普通的网页还可以,也就是几万字把,再大没有测试过
 
4
2007年08月17日 星期五 13:56 | 回复
在WEB怎么实现调用该分词方法,总是提示找到了Split库,请问在WEb中应用,要如何配置调用呢?
 
5
2008年02月20日 星期三 12:15 | 回复
我能够在Java下面调用这个分词的dll。现在我想通过javabean调用这个dll文件,然后用到我的jsp程序中,请问如何配置啊?
 
6
2008年05月23日 星期五 17:32 | 回复
你好,请问下关于那个Split.dll文件有没有linux调用的.so版本?
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu