Google Code Block

2009年5月18日

CKIP Client for C# (part II - 新增詞性分析)

有網友針對之前發表的文章 CKIP Client for C# 提出希望分析詞性的功能, 希望能把分析文章後成為一句句的字串再斷為一個個詞,在此提供一個簡單的方法提供給各網友參考!
CKIP 的網站上可以找到詞類標記類表,裡面記載了線上斷詞服務會使用到的精簡詞類列表,詞類所代表的意義請參閱中研院平衡語料庫詞類標記集
使用 CKIP 的 Web Service 所得到的斷詞結果除了精簡詞類列表中的詞性外,還包含了特殊符號,其代號為:

  • PARENTHESISCATEGORY:「 、」、(、)
  • ETCCATEGORY:…
  • COMMACATEGORY:,
  • COLONCATEGORY::
  • QUESTIONCATEGORY:?
  • SEMICOLONCATEGORY:;
  • PAUSECATEGORY:、
  • PERIODCATEGORY:。、.
  • EXCLANATIONCATEGORY:!
所以如果只是要句子解析成「 詞」+「 詞性」,只需要基本的字串解析就夠了。方法如下所示:
string[] seperatorTerm = { " " };
string[] seperatorWA = { "(", ")" };
string[] terms = s.Split(seperatorTerm, StringSplitOptions.RemoveEmptyEntries);

for (int i = 0; i < terms.Length; i++)
{
    string[] termAndWA = terms[i].Split(seperatorWA, StringSplitOptions.None);
    if (termAndWA[0] != "")
    {
        listBox1.Items.Add(termAndWA[0] + "\t詞性:" + termAndWA[1]);
    }
}


這樣就可以把詞和詞性給解析出來囉,如果還需要繼續處理的話,可以再自行新增類別來儲存每個詞的資訊!CKIPClientCS#2
有任何問題歡迎大家繼續跟我討論:D


下載執行檔或專案原始檔:
exe
  CKIPforCS#2.exe

20090518182136501
 CKIPforCS#2.rar



or Backup Links Here

15 則留言:

匿名 提到...

我有個小問題...就是檔案無法下載了...不知道是否可以麻煩版主重新再次分享檔案呢?

Brady 提到...

備用載點請至:Sky Drive

匿名 提到...

請問明明就已經申請了
可是一直出現authentication failed

匿名 提到...

謝謝分享~當完兵囉??

Brady 提到...

authentication failed 的話應該是 CKIP 線上服務的問題,建議您再去申請一次!(申請網址:http://ckipsvr.iis.sinica.edu.tw/reg.exe)


還沒退伍啊..真是漫長的等待 ...QQ

匿名 提到...

你好,想詢問一下,您的程式碼下面這一段,我傳去700個字元,但實際上卻只回來3、4百個字元,想請問一下大大要怎麼解決呢?用了好久還是解決不出來@@
string xmlString = setXmlString(str);
byte[] msg = Encoding.Default.GetBytes(xmlString);
byte[] bytes = new byte[1024];
_conn.Send(msg);
_conn.Receive(bytes);
recieve = recieve + Encoding.Default.GetString(bytes);

Brady 提到...

sorry 這麼晚才回啊 XD
看起來您的程式碼應該是沒錯,請問您用什麼樣的文章當 sample呢?
有試過不同的文章嗎?傳回的結果都一樣嗎?

匿名 提到...

你好,我隨便找個新聞(試過不同文章)貼到textbox(待斷詞文章)上,但是傳回已斷詞過的詞性,不到一半@@
是不是要將這些字切成300字後~再分別傳送呢?

Brady 提到...

發現 bug 囉,請參考CKIP Client for C# (part II - Bug 修正)

jimmt 提到...

你好為什麼我也是會出現authentication failed 我也有註冊了

Brady 提到...

To jimmt :
authentication failed 的話應該是 CKIP 線上服務的問題,建議您再去申請一次!(申請網址:http://ckipsvr.iis.sinica.edu.tw/reg.php)

jimmt 提到...

你好,我有發現你還有BUG ,就是如果要是連續兩次執行斷詞就會出現錯誤: byte[] msg = Encoding.Default.GetBytes(xmlString);
byte[] bytes = new byte[1024];
int i = _conn.Send(msg);
// Get reply from the server.
i = _conn.Receive(bytes);
string recieve = Encoding.Default.GetString(bytes);
string sucessMsg = "Success";

if (!recieve.Contains(sucessMsg))
{
string[] seperator = { "\">", "" };
string[] sepResult = recieve.Split(seperator, StringSplitOptions.RemoveEmptyEntries);
errorMsg = sepResult[2];
}
else
isSuccess = true;

jimmt 提到...

第二次執行 string recieve = Encoding.Default.GetString(bytes); 錯誤

jimmt 提到...

今天翻開報紙,小編看到自己的母校世新大學爆發肺結核群聚感染,搞得人心惶惶。其實肺結核沒那麼可怕,只要堅持服藥兩週就不具傳染力,服藥六個月後即可治癒,親友的支持陪伴是病人撐下去的最大動力,請一起努力抗結核吧!更多關於結核病的訊息,請參照:http://goo.gl/HVOEd。

斷字這斷話,

jimmt 提到...

斷出來的也不完整

張貼留言