2012-09-12 166 views
2

我正在考慮用C語言來做一個語言識別程序。我已經在互聯網上搜索並找到了基於N-Gram的文本分類文章,並且我還創建了自己的一套實用程序來處理我的一些編程需求。現在,我想嘗試首先創建一個簡單的程序,用平假名,片假名和漢字寫成的printf日語單詞。我相信這可以用C語言完成,但我不確定如何實現它,也許這與unicode編程有關。任何人都可以嘗試向我解釋我需要首先學習什麼,需要什麼樣的庫(包括),或者可以使用哪些實用工具作爲我的基礎來實現和實施此計劃。語言識別

+0

這聽起來有點不符合經驗。 – unwind

+0

你爲什麼選擇C來完成那項任務? – ThomasMore

+0

@ThomasMore,只是爲了好玩和體驗。 – chrismsawi

回答

0

我不認爲C是這個項目的最佳選擇。 IMO你應該考慮使用高級語言(如C#),其中有一些驚人的內置支持,只是一個簡單的例子:

C#:

byte[] buffer = new byte[] { 0xE8, 0x82, 0xB2, 0xE5, 0x84, 0xBF }; 
string s = Encoding.UTF8.GetString(buffer); 

繁榮。完成。

現在在C中,據我所知,沒有簡單的標準編碼/解碼庫或實用程序。你必須手工製作這些東西。我自己一開始就這樣做,但意識到這是浪費我的時間。 :)

如果你堅持使用C,我建議你先閱讀關於不同類型的編碼(多字節/寬字節編碼)的所有內容。網上有很多關於Unicode的很好的教程,幫助您入門(這裏是我使用的good one)。

編輯:好的,如果沒有C#,接下來就讓我們在C「短」的例子......再次,這是假定你瞭解編碼(注意,使用了寬字符的:爲wchar_t):

#include <stdio.h> 
#include <stdlib.h> 
#pragma import(__use_utf8_ctype) 
#include <wchar.h> 
#include <locale.h> 

int main(int argc, char *argv[]) 
{ 
    wchar_t water = 27750; 
    setlocale(LC_ALL, ""); 

    printf("%lc",water); 
    return 0; 
} 

[email protected]:~> ./a.out 
汦 

這就是中國...我認爲這是相同的日本漢字,但我對日語不太好... 有如何打印,現在存儲類似的作品,你將存儲在一個wchar_t,然後做你的比較。

+0

執行時間非常短,而且非常棒。但有一件事阻礙我這樣做,那就是我的盒子是linux,我相信C#是.NET框架的一部分。不管怎麼說,還是要謝謝你! – chrismsawi

+0

恕我直言OP是要求一個分類器,而不是一種方式來轉換(iconv在Linux上)表示/編碼/字符集之間。 – wildplasser

+0

@chrismsawi .NET(純粹的ms部分除外)和linux混合使用[mono](http://www.mono-project.com/Main_Page) – Kwariz