CWSharp - .Net中英文分詞組件
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分詞接口
本文由用戶 mmntt 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!