CWSharp - .Net中英文分词组件
mmntt
9年前
CWSharp 是 .Net 的中英文分词组件。
特性
-
内嵌多种分词算法及可扩展的自定义分词接口
-
StandardTokenizer
-
BigramTokenizer
-
StopwordTokenizer
-
自定义分词接口
-
支持自定义词典
-
支持Lucene.Net分词
-
MIT授权协议
安装&编译
-
NuGet
nuget install CWSharp
-
Package Manager Console
PM> install-package CWSharp
-
编译
build.cmd v4.5 Release //.NET 4.5 build.cmd v4.0 Release //.NET 4.0 build.cmd v3.5 Release //.NET 3.5
算法
TODO
-
HMM算法,识别未登记词语以及人名、地名识别
-
支持跨平台Windows、Linux
示例
-
StandardTokenizer
var dawgFile = @"dict.dawg"; var tokenizer = new StandardTokenizer(dawgFile) { OptionOutputOriginalCase = true }; foreach (var token in tokenizer.Traverse("微软宣布它爱Linux")) { Console.Write(token.Text + "/" + token.Type); }
微软/CJK 宣布/CJK 它/CJK 爱/CJK Linux/ALPHANUM
-
BigramTokenizer
var tokenizer = new BigramTokenizer(); foreach (var token in tokenizer.Traverse("微软宣布它爱Linux")) { Console.Write(token.Text + "/" + token.Type); }
微软/CJK 软宣/CJK 宣布/CJK 布它/CJK 它爱/CJK linux/ALPHANUM
-
StopwordTokenizer
var tokenizer = new StopwordTokenizer( new StandardTokenizer(dawgFile), new string[] { "它", "a", "the", "an" }); foreach (var token in tokenizer.Traverse("微软宣布它爱Linux")) { Console.Write(token.Text + "/" + token.Type); Console.Write(" "); }
微软/CJK 宣布/CJK 爱/CJK linux/ALPHANUM
-
自定义分词接口
//一元分词 public class CustomTokenizer : ITokenizer { private ITokenizer _tokenizer; public CustomTokenizer(ITokenizer tokenizer) { _tokenizer = tokenizer; } public IEnumerable<Token> Traverse(string text) { foreach (var token in _tokenizer.Traverse(text)) { if (token.Type == TokenType.CJK) { foreach (var ch in token.Text) yield return new Token(ch.ToString(), TokenType.CJK); } else yield return token; } } }
微/CJK 软/CJK 宣/CJK 布/CJK 它/CJK 爱/CJK linux/ALPHANUM
FAQ
-
词典 - 如何生成DAWG词典文件,如何添加新的词组到DAWG词典中。
-
lucene.net插件 - Lucene.Net分词接口