Lucene.net和盘古分词使用小结

盘古分词是开源项目,核心技术基于Lucene.net。虽然有点旧(2010年),但是还是可以用的。案例、应用程序、以及源码可以详见以下链接。

http://pangusegment.codeplex.com/

 

1.分词过程

Analyzer——>PanGuTokenizer——>Segment().DoSegment()——>Segment().PreSegment()

 

2.修改dll

2.1 变成小写的原因

dll文件:PanGu.Lucene.Analyzer.dll

语句:return new LowerCaseFilter(new PanGuTokenizer(reader, this._OriginalResult));

修改:return  new PanGuTokenizer(reader, this._OriginalResult);

 

2.2 遇到符号自动分词的原因和修改

dll文件:PanGu.dll

 

目的:事实上,关闭了多元分词功能

函数:Regex.GetMatchStrings()

语句:private const string PATTERNS = @"([0-9\d]+)|([a-zA-Za-zA-Z_]+)";
修改:private const string PATTERNS = @"([\S]+)";

 

目的:切分点不后移,即没有cur = cur.Next

函数:MergeEnglishSpecialWord()

语句:if (cur.Value.WordType == WordType.Symbol || cur.Value.WordType == WordType.English)

修改:if (cur.Value.WordType == WordType.Symbol || cur.Value.WordType == WordType.English || cur.Value.WordType == WordType.Numeric)

 

3.分词注意事项

假设一个词有3部分组成:字母、数字、符号。符号放在词的第一位,会被自动切分。最后一位是符号时,需要续接空格或中文,否则,无法识别分词而被切分。

 

 4.词典导入

词典的导入有点慢,70万多条的词汇(10M左右),需要约45分钟,生成约20M的文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值