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#實現)
記錄完畢,不足之處,望見諒。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章