2012-05-17 77 views
2

如果我有一個給定的文本(無論是長文本還是短文本),那麼您通常會使用哪種方法來檢測其寫入的語言?用什麼方法識別文本被寫入的語言?

這是明確表示:

  • 你需要訓練語料庫來訓練你使用模型(如神經網絡,如果使用的話)

最簡單的辦法來參加我的頭腦:

  • 檢查文本中使用的字符(例如,平假名僅用於日語,變音符號可能只用於歐洲語言,ç用法語,土耳其語,...)
  • 加大檢查,以兩個或三個字母對找到一個語言
  • 查找字典的特定組合來檢查哪些詞出現在語言(大概只有不制止,如制止取決於語言)

但我想有更好的方法去。我不是在尋找現有的項目(這些問題已經得到解答),但是對於像隱馬爾可夫模型,神經網絡這樣的方法......可以用於這項任務。

+0

可能重複的[返回給定字符串的語言](http://stackoverflow.com/questions/1192768/return-the-language-of-a-given-string)(和其他許多人) –

+0

在這情況下,有一個(未被接受的)答案給出了更多的細節,但這些問題的常見答案是:「你可以在Python中使用項目A或者在C++中使用項目B」而不給出任何關於使用什麼方法的細節一般來說(見我的最後一句話)。 – Aufziehvogel

+0

我很確定[Cavnar&Trenkle算法](http://www.nonlineardynamics。在SO上多次提到過。 –

回答

2

在產品我正在使用我們使用基於字典的方法。 計算訓練語料庫中所有詞的第一個相對概率,並將其存儲爲模型。

然後逐字處理輸入文本以查看特定模型是否給出最佳匹配(好於其他模型)。

在某些情況下,所有模型都提供相當差的匹配。

幾個有趣的要點:

  1. 由於我們與社交媒體都標準化和非標準化的匹配工作在嘗試(在這種情況下正常化是符號去除變音符號)。非標準化的比賽有更高的權重
  2. 此方法效果相當糟糕的很短的短語(1-2個字)特別是當這些話是有在幾種語言,這是爲數不多的歐洲語言的情況下

同樣爲了更好的檢測,我們正在考慮按照您所描述的方式添加每字符模型(某些語言具有某些獨特字符)

順便說一下,我們使用ICU庫來分割單詞。適用於歐洲和東方語言(目前我們支持中文)的效果相當好