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#实现)
记录完毕,不足之处,望见谅。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值