您的位置:首页 > 其它

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

2013-10-14 21:14 447 查看
一元分词:内置的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());//得到分到的词。

            }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  分词 Lucene.Net