C#实现中文分词——IKAnalyzerNet
C#实现中文分词——IKAnalyzerNet
项目源码:请别抢我闪刀姬 / 分词测试
前言
这个分词是前一段需要用时,在网上扒了好久,才找到的一个,而且年代久远,但是还能用,所以记录一下。
页面设计
界面方面上方一个richTextBox用来输入需要分词的数据,下方一个是“开始分词”按钮和其正下方的“简单分词输出”和“详细示例”下面的“较详细输出”。
代码实现部分
引用dll
using IKAnalyzerNet;
using IKAnalyzerNet.dict;
using Lucene.Net.Analysis;
using Wintellect.PowerCollections;
简洁分词代码
点击“开始分词”按钮后,仅将分词结果显示在文本框内。
private void button1_Click(object sender, EventArgs e){string teststring = richTextBox1.Text; //获取字符串IKAnalyzer ika = new IKAnalyzer();System.IO.TextReader r = new System.IO.StringReader(teststring);TokenStream ts = ika.TokenStream("TestField", r); //分词for (Token t = ts.Next(); t != null; t = ts.Next()){richTextBox2.Text += t.TermText() + "\r\n"; //显示内容}}
详细示例代码
点击“详细示例”按钮后,将分词结果的序列号、起始位置和结束位置进行显示,并记录解析时间。
private void button2_Click(object sender, EventArgs e){string testString = richTextBox1.Text; //获取字符串string slen = testString.Length.ToString(); //获取字符串长度IKAnalyzer ika = new IKAnalyzer();System.IO.TextReader r = new System.IO.StringReader(testString);TokenStream ts = ika.TokenStream("TestField", r);int m = 0;long begin = System.DateTime.Now.Ticks;for (Token t = ts.Next(); t != null; t = ts.Next()){m++; //显示每项分词结果的序列号、起始字符数、结尾字符数richTextBox3.Text += m + ")" + (t.StartOffset() + "," + t.EndOffset() + " = " + t.TermText()) + "\r\n";}int end = (int)((System.DateTime.Now.Ticks - begin) / 10000);richTextBox3.Text += ("长度:" + slen + " 耗时: " + (end) + "ms" + " 分词个数:" + m + " 效率(词/秒):" + ((int)(m * 1.0f / (end) * 1000))) + "\r\n";}
运行效果
结语
当然,这种方法只是C#分词众多方法中的一种,同时也可以使用jieba.NET进行分词,可以参考这篇文章:jieba.NET是jieba中文分词的.NET版本(C#实现)。
记录完毕,不足之处,望见谅。
最新文章
- Linux platform
- Application.platform 平台
- 关于C语言编程中include的用法
- skip connections
- 电视信号的数字化
- 电话银行
- cruisecontrol 配置
- 机器学习概述
- c语言怎么键盘输入数据0停止,《C语言》上机考试题目.PDF
- SpringSecurity原理:探究SpringSecurity运作流程
- schedulewithfixeddelay
- 最小二乘支持向量机预测matlab实现,最小二乘支持向量机及其 Pre
- c++实现atoi()和itoa()函数(字符串和整数转化)
- extern用法详解
- MFCCList使用
- 家族关系查询系统程序设计算法思路
- C语言程序设计之通讯录