当前位置:

CWSharp - .Net中英文分词组件_ASP.NET_.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

算法

  • 基于正向最大匹配的算法。介绍

  • 词典使用DAWG结构,比传统的前缀树占用更少的内存空间。介绍

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分词接口

项目主页:http://www.open-open.com/lib/view/home/1437307469865

评论:

登录后发表评论




2022.11.30 群组聊天