您好,登錄后才能下訂單哦!
怎么用Python代碼寫一個語言檢測器,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
你有沒有曾經好奇過Chrome瀏覽器是如何知道一個網頁的語言,并對外國文字的網頁提供翻譯服務的?或者,Facebook是如何翻譯你朋友用寫在你主頁上的外國文字?檢測一種語言實際上非常簡單,改進了用戶體驗,而且不需要用戶做任何的事情。
我無意中發現的 ActiveState recipe for a language detector in Python這是非常不錯的一段程序,但是我決定做點小小的改進。提供一些背景知識給那些不熟悉自然語言處理或者是程序語言學的人。
如果你是有經驗的程序員,你也許可以直接跳到這段文字最下端的程序部分。出奇的簡單。
你需要熟悉Python語法。
什么檢測到了一種語言?
在你寫區分語言的程序之前,你需要回答一個問題:什么區別了兩種語言?
有趣的是,這個問題的答案會根據不同的比較語言而有所不同。比如:
女性が牛乳を飲んだ。 (譯者注: 日語:女性喝牛奶。)
你是怎么知道這句話不是英文的?你也許不熟悉日文,但是你肯定知道這些字符不是英文,你甚至不需要知道具體哪個字符不存在于英文字母中。
La femme boit du lait. (譯者注: 法語:女性喝牛奶。)
你怎么知道這句話不是英文的?有一點麻煩。每個字母都在英文中。甚至每一個字母和句型結構都和英文的同一個意思的那句話很相似—— “The woman drank milk.” (譯者注: 英語:女性喝牛奶。) 。 你的大腦用了另一個特性去判斷這個:盡管字母很相似,這兩句話發音沒有任何相似之處。
還有很多更復雜的方式去檢測兩種不同的語言(例如,語法、句法等等)上面提到的兩個特性似乎足夠用來區分很多的書寫文字。
提問:你可以想到一個相反的例子嘛? 兩種不能用字符或者發音而區分的語言?(譯者注:這是我想到的,和編者沒有任何關系。Hindi 和Nepali 的區分度極低,印度的一種語言和尼泊爾的官方語言的區別度非常低,字符區別很低而發音更高達50%的相似度。當然,他們兩個是同一語系的語種。)
如何用計算機檢測到這些特性?
***個特性已經存在于任何一臺現代化的機器里 ——character encodings 字符解碼允許任何一臺計算機去通過二進制碼而呈現每一個字符。我們要用unicode 在Python 的程序中。
第二個特征更有意思。如何能讓一臺電腦檢測到字符串的發音呢?答案比想象的簡單點:字符串順序是按照聲音解碼的!他們有直接的穩定的對應關系- 語言改變的非常緩慢。
因此,你可以用下面的兩個特性去檢測一行文本語言:
單個字符的重復性
字符串的重復性
實際上,這兩個特性濃縮到了一個特性中:字符串的順序。單個字符的重復性只是字符串的重復性。
快速知識補充:在計算機語言學中,字符串的長度 n 被定義為 n-gram。 “a” 是一個gram, 1-gram. “bc”是兩個gram,2-gram or bigram。 “def” 是三個gram, 3-gram 或者trigram,以此類推。
用python 實現
首先,我們需要計算某個字符串在特定文本中出現的次數。為了封裝結果,我們將建立一個NGram 類。
看完上述內容,你們掌握怎么用Python代碼寫一個語言檢測器的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。