<commit_before>CWSharp
===
.Net的中文分词组件(C#版,跨平台)，支持中英文、符号或者混合词组(比如：T恤,卡拉OK,C#等)以及自定义词典。

##### 特性
- 默认支持多种分词器
	- StandardTokenizer - 默认分词，基于词典
	- BigramTokenizer - 二元分词，支持英文，数字识别
	- StopwordTokenizer - 自定义过滤词，扩展类
	- UnigramTokenizer - 一元分词
- 可扩展的自定义分词接口
- 支持自定义词典
- 支持Lucene.Net
- 支持.NET 多个版本(3.5,4.0,4.5)以及Mono
- 支持跨平台(Windows,Linux)
- MIT授权协议

##### 其它版本
- [CWSharp-go](https://github.com/zhengchun/cwsharp-go) - Golang版

##### 安装&编译
- NuGet
```
nuget install CWSharp 
```
- Package Manager Console
```
PM> install-package CWSharp
```
- 编译(Windows)
```
build.cmd [v4.5|v4.0|v3.5] Release
```
- 编译(Linux,Mono)
```
Install Mono
xbuild
mono Yamool.CWSharp.Tests.exe ~/CWSharp/dict/cwsharp.dawg
```

##### 扩展&帮助
- [自定义词典](https://github.com/yamool/CWSharp/tree/master/dict) - 介绍关于DAWG词典文件格式、生成以及如何添加新的词汇
- [Lucene.Net.CWSharp](https://github.com/yamool/CWSharp/tree/master/contrib/LuceneNet) - Lucene.Net的分词插件，支持搜索高亮显示
- [Setting the source file character encoding for Mono's xbuild](http://stackoverflow.com/questions/6520919/setting-the-source-file-character-encoding-for-monos-xbuild) - Mono编译后字符串编码,更改为936(GB2312)

##### 说明
- 基于正向最大匹配的算法。[MMSEG算法](http://technology.chtsai.org/mmseg/)
- 词典基于DAWG结构，比传统的前缀树占用更少的内存空间。[DAWG算法](https://en.wikipedia.org/wiki/Deterministic_acyclic_finite_state_automaton)

##### 示例

```c#
var tokenizer = new StandardTokenizer("dict.dawg");
var tokenizer2 = new StopwordTokenizer(tokenizer, new string[] { "的" });
foreach (var token in tokenizer2.Traverse("你是我的小苹果"))
{
	Console.Write(token.Text + "/" + token.Type);
}
```

- **StandardTokenizer**
```
研究生命起源 >> 研究/CJK 生命/CJK 起源/CJK
长春市长春药店 >> 长春市/CJK 长春/CJK 药店/CJK
神秘的组织-北京朝阳群众 >> 神秘/CJK 的/CJK 组织/CJK -/PUNC 北京/CJK 朝阳/CJK 群众/CJK<commit_msg>修正URL链接和部分文字描述<commit_after>CWSharp
===
.Net的中文分词组件(C#版,跨平台)，支持中英文、符号或者混合词组(比如：T恤,卡拉OK,C#等)以及自定义词典。

##### 特性
- 默认支持多种分词器
	- StandardTokenizer - 默认分词，基于词典
	- BigramTokenizer - 二元分词，支持英文，数字识别
	- StopwordTokenizer - 自定义过滤词，扩展类
	- UnigramTokenizer - 一元分词
- 可扩展的自定义分词接口
- 支持自定义词典
- 支持Lucene.Net
- 支持.NET以及.NET Core
- MIT授权协议

##### 其它版本
- [CWSharp-go](https://github.com/zhengchun/cwsharp-go) - Golang版

##### 安装&编译
- NuGet
```
nuget install CWSharp 
```
- Package Manager Console
```
PM> install-package CWSharp
```
- 编译(Windows)
```
build.cmd [v4.5|v4.0|v3.5] Release
```
- 编译(Linux,Mono)
```
Install Mono
xbuild
mono Yamool.CWSharp.Tests.exe ~/CWSharp/dict/cwsharp.dawg
```

##### 扩展&帮助
- [自定义词典](https://github.com/zhengchun/CWSharp/tree/master/data) - 介绍关于DAWG词典文件格式、生成以及如何添加新的词汇
- [Lucene.Net.CWSharp](https://github.com/zhengchun/CWSharp/tree/master/contrib/LuceneNet) - Lucene.Net的分词插件，支持搜索高亮显示
- [Setting the source file character encoding for Mono's xbuild](http://stackoverflow.com/questions/6520919/setting-the-source-file-character-encoding-for-monos-xbuild) - Mono编译后字符串编码,更改为936(GB2312)

##### 说明
- 基于正向最大匹配的算法。[MMSEG算法](http://technology.chtsai.org/mmseg/)
- 词典基于DAWG结构，比传统的前缀树占用更少的内存空间。[DAWG算法](https://en.wikipedia.org/wiki/Deterministic_acyclic_finite_state_automaton)

##### 示例

```c#
var tokenizer = new StandardTokenizer("dict.dawg");
var tokenizer2 = new StopwordTokenizer(tokenizer, new string[] { "的" });
foreach (var token in tokenizer2.Traverse("你是我的小苹果"))
{
	Console.Write(token.Text + "/" + token.Type);
}
```

- **StandardTokenizer**
```
研究生命起源 >> 研究/CJK 生命/CJK 起源/CJK
长春市长春药店 >> 长春市/CJK 长春/CJK 药店/CJK
神秘的组织-北京朝阳群众 >> 神秘/CJK 的/CJK 组织/CJK -/PUNC 北京/CJK 朝阳/CJK 群众/CJK
{'fraction_non_alphanumeric': 0.17883318674875404, 'fraction_numerical': 0.01465845793022574, 'mean_word_length': 4.86254295532646, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 17, 'https://': 8, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7401508', 'n_tokens_mistral': 1919, 'n_tokens_neox': 2045, 'n_words': 196}