Lucene.Net中的分词算法 和 第三方分词算法

一元分词:内置的StandardAnalyzer是将英文按照空格、标点符号等进行分词,将中文按照单个字进行分词,一个汉字算一个词。代码如下

Analyzer analyzer = new StandardAnalyzer();  
            TokenStream tokenStream = analyzer.TokenStream("", new StringReader("北京,Hi欢迎你们大家"));
            Lucene.Net.Analysis.Token token = null;
            while ((token = tokenStream.Next()) != null)
            {
                this.listBox1.Items.Add(token.TermText()); //将分词后的结果添加到listBox中
            }

二元分词:lCJKAnalyzer 使用的是网上下载的此类。 代码与上面基本一致

Analyzer analyzer = new CJKAnalyzer();
            TokenStream tokenStream = analyzer.TokenStream("", new StringReader("北京,Hi欢迎你们大家"));
            Lucene.Net.Analysis.Token token = null;
            while ((token = tokenStream.Next()) != null)
            {
                this.listBox1.Items.Add(token.TermText());
            }


盘古分词:基于词库的分词算法,基于一个词库进行分词,可以提高分词的成功率

要使用盘古分词,首先要引用PanGu.dll 和PanGu.Lucene.Analyzer.dll 

将下载的词库Dictionaries添加到项目根路径(改名为Dict),添加对PanGu.dll(同目录下不要有Pangu.xml,那个默认的配置文件的选项对于分词结果有很多无用信息)、PanGu.Lucene.Analyzer.dll的引用,代码与上面大致相同
    Analyzer analyzer = new PanGuAnalyzer();
            TokenStream tokenStream = analyzer.TokenStream("", new StringReader("北京,Hi欢迎你们大家!"));
            Lucene.Net.Analysis.Token token = null;
            while ((token = tokenStream.Next()) != null)//next(),继续分词,如果没有更多的词,则返回null
            {
                this.listBox1.Items.Add(token.TermText());//得到分到的词。
            }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值