基於樸素貝葉斯分類器的文本分類演算法C#版(二)

來源:互聯網
上載者:User

代碼太多,編輯的時候卡的很,於是再整個(二)

前面貼完了分類器的代碼,下面主程式如下(樣本仍然採用原文的例子):

Code
 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4
 5using AspxOn.Search.FenLei;
 6
 7namespace AspxOn.Search.ConsoleTest
 8{
 9    class Program
10    {
11        static void Main(string[] args)
12        {
13            string s = "北京時間今天淩晨3:45(歐洲當地時間24日晚20:45),歐冠聯賽1/8淘汰賽的首回合較量在日爾蘭球場上演焦點戰,法甲霸主裡昂迎戰西甲領頭羊巴薩,儒尼尼奧在第7分鐘利用自由球破門得分,埃托奧和本澤馬先後擊中對方門框一次,亨利在第67分鐘的俯身沖頂破門為巴薩扳平比分,最終裡昂和巴薩在日爾蘭球場戰成1-1平,兩周后的次回合將移師諾坎普。";
14            string result = ChineseSpliter.Split(s, "|");
15            Console.WriteLine(result);
16            //TrainingDataManager tdm = new TrainingDataManager();
17            //Console.WriteLine(tdm.GetFilesPath("C000020")[0]);
18
19            string[] res = result.Split('|');
20            for (int k = 0; k < res.Length; k++)
21            {
22                Console.WriteLine(res[k]);
23            }
24            
25            BayesClassifier bcf = new BayesClassifier();
26            List<ClassifyResult> crs = bcf.Classify(s);
27            Console.WriteLine(crs.Count.ToString());
28
29            for (int i = 0; i < crs.Count; i++)
30            {
31                Console.WriteLine(crs[i].classification + ":" + crs[i].probability.ToString());
32            }
33            
34
35            //string defaultDir = "D:\\SogouC.mini.20061127\\SogouC.mini\\Sample\\C000007";
36
37            //string[] filespath=System.IO.Directory.GetFiles(defaultDir);
38
39            //Console.WriteLine(filespath.Length.ToString());
40            
41            Console.ReadKey();
42        }
43    }
44}
45

 

運行後結果如下:

 

其中,樣本資料同樣採用搜狗實驗室的mini版本,共10個分類,

冒號前是分類編碼,冒號後面是機率結果。

分類編碼和分類名稱對應如下:

C000007    汽車
C000008    財經
C000010    IT
C000013    健康
C000014    體育
C000016    旅遊
C000020    教育
C000022    招聘
C000023    文化
C000024    軍事

 

因此,測試資料歸到 體育 分類下。

在原來的貼來的分詞器中,還對停用詞進行了過濾,由於ICTCLAS分詞器內建了停用詞過濾,因此我對原文代碼中的相關代碼進行了調整。

ICTCLAS分詞器對停頓詞的過濾代碼(見本文(一)中的ICTCLAS中文分詞for Lucene.Net介面代碼(實現Analyzer)):

Code
result = new StopFilter(result, CHINESE_ENGLISH_STOP_WORDS);

 

其原理也是基於詞典的過濾,字典目錄的指定見本文(一)中的ICTCLAS中文分詞for Lucene.Net介面代碼(實現Analyzer))。

Code
public string NoisePath = Environment.CurrentDirectory + "\\data\\stopwords.txt";

 

開啟\data\檔案夾下的stopwords.txt,可見:

這裡面是一些常用停頓詞。

還沒有對批量資料進行分類測試,稍後貼出測試結果和代碼下載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.