科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件关于C#在lucene.net下的中文切词

关于C#在lucene.net下的中文切词

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

经过一天的研究,终于完成了在lucene.net下可以使用的中文切词方法。感到有些复杂,不过我还是拿下了。颇有点成就感的,发上来跟大家分享一下!

作者:佚名 来源:论坛整理 2007年11月11日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
以下是引用片段:
  using System;
  using System.Collections.Generic;
  using System.Text;
  
  using Analyzer = Lucene.Net.Analysis.Analyzer;
  using SimpleAnalyzer = Lucene.Net.Analysis.SimpleAnalyzer;
  using StandardAnalyzer = Lucene.Net.Analysis.Standard.StandardAnalyzer;
  using Token = Lucene.Net.Analysis.Token;
  using TokenStream = Lucene.Net.Analysis.TokenStream;
  
  namespace MyLuceneTest
  {
   class Program
   {
   [STAThread]
   public static void Main(System.String[] args)
   {
   try
   {
   Test("中华人民共和国在1949年建立,从此开始了新中国的伟大篇章。长春市长春节致词", true);
   }
   catch (System.Exception e)
   {
   System.Console.Out.WriteLine(" caught a " + e.GetType() + "\n with message: " + e.Message + e.ToString());
   }
   }
  
   internal static void Test(System.String text, bool verbose)
   {
   System.Console.Out.WriteLine(" Tokenizing string: " + text);
   Test(new System.IO.StringReader(text), verbose, text.Length);
   }
  
   internal static void Test(System.IO.TextReader reader, bool verbose, long bytes)
   {
   //Analyzer analyzer = new StandardAnalyzer();
   Analyzer analyzer = new Lucene.Fanswo.ChineseAnalyzer();
   TokenStream stream = analyzer.TokenStream(null, reader);
  
   System.DateTime start = System.DateTime.Now;
  
   int count = 0;
   for (Token t = stream.Next(); t != null; t = stream.Next())
   {
   if (verbose)
   {
   System.Console.Out.WriteLine("Token=" + t.ToString());
   }
   count++;
   }
  
   System.DateTime end = System.DateTime.Now;
  
   long time = end.Ticks - start.Ticks;
   System.Console.Out.WriteLine(time + " milliseconds to extract " + count + " tokens");
   System.Console.Out.WriteLine((time * 1000.0) / count + " microseconds/token");
   System.Console.Out.WriteLine((bytes * 1000.0 * 60.0 * 60.0) / (time * 1000000.0) + " megabytes/hour");
   }
   }
  }
  

  测试结果:

  C#在lucene下的中文切词

  完毕!

  分词的郊率上还有待在算法上提高。还有中文的标点符号没有处理,我将进一步完善。

  本人文采不好,写不出很多文字,只有以代码代替一下我的言语。兄弟姐妹们给点意见哦。谢谢!

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章