溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么用Python代碼寫(xiě)一個(gè)語(yǔ)言檢測(cè)器

發(fā)布時(shí)間:2021-10-28 16:48:09 來(lái)源:億速云 閱讀:169 作者:柒染 欄目:編程語(yǔ)言

怎么用Python代碼寫(xiě)一個(gè)語(yǔ)言檢測(cè)器,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

你有沒(méi)有曾經(jīng)好奇過(guò)Chrome瀏覽器是如何知道一個(gè)網(wǎng)頁(yè)的語(yǔ)言,并對(duì)外國(guó)文字的網(wǎng)頁(yè)提供翻譯服務(wù)的?或者,F(xiàn)acebook是如何翻譯你朋友用寫(xiě)在你主頁(yè)上的外國(guó)文字?檢測(cè)一種語(yǔ)言實(shí)際上非常簡(jiǎn)單,改進(jìn)了用戶體驗(yàn),而且不需要用戶做任何的事情。

我無(wú)意中發(fā)現(xiàn)的 ActiveState recipe for a language detector in Python這是非常不錯(cuò)的一段程序,但是我決定做點(diǎn)小小的改進(jìn)。提供一些背景知識(shí)給那些不熟悉自然語(yǔ)言處理或者是程序語(yǔ)言學(xué)的人。

如果你是有經(jīng)驗(yàn)的程序員,你也許可以直接跳到這段文字最下端的程序部分。出奇的簡(jiǎn)單。

你需要熟悉Python語(yǔ)法。

什么檢測(cè)到了一種語(yǔ)言?

在你寫(xiě)區(qū)分語(yǔ)言的程序之前,你需要回答一個(gè)問(wèn)題:什么區(qū)別了兩種語(yǔ)言?

有趣的是,這個(gè)問(wèn)題的答案會(huì)根據(jù)不同的比較語(yǔ)言而有所不同。比如:

女性が牛乳を飲んだ。 (譯者注: 日語(yǔ):女性喝牛奶。)

你是怎么知道這句話不是英文的?你也許不熟悉日文,但是你肯定知道這些字符不是英文,你甚至不需要知道具體哪個(gè)字符不存在于英文字母中。

La femme boit du lait.   (譯者注: 法語(yǔ):女性喝牛奶。)

你怎么知道這句話不是英文的?有一點(diǎn)麻煩。每個(gè)字母都在英文中。甚至每一個(gè)字母和句型結(jié)構(gòu)都和英文的同一個(gè)意思的那句話很相似—— “The  woman drank milk.” (譯者注: 英語(yǔ):女性喝牛奶。) 。  你的大腦用了另一個(gè)特性去判斷這個(gè):盡管字母很相似,這兩句話發(fā)音沒(méi)有任何相似之處。

還有很多更復(fù)雜的方式去檢測(cè)兩種不同的語(yǔ)言(例如,語(yǔ)法、句法等等)上面提到的兩個(gè)特性似乎足夠用來(lái)區(qū)分很多的書(shū)寫(xiě)文字。

提問(wèn):你可以想到一個(gè)相反的例子嘛?  兩種不能用字符或者發(fā)音而區(qū)分的語(yǔ)言?(譯者注:這是我想到的,和編者沒(méi)有任何關(guān)系。Hindi 和Nepali  的區(qū)分度極低,印度的一種語(yǔ)言和尼泊爾的官方語(yǔ)言的區(qū)別度非常低,字符區(qū)別很低而發(fā)音更高達(dá)50%的相似度。當(dāng)然,他們兩個(gè)是同一語(yǔ)系的語(yǔ)種。)

如何用計(jì)算機(jī)檢測(cè)到這些特性?

***個(gè)特性已經(jīng)存在于任何一臺(tái)現(xiàn)代化的機(jī)器里 ——character encodings 字符解碼允許任何一臺(tái)計(jì)算機(jī)去通過(guò)二進(jìn)制碼而呈現(xiàn)每一個(gè)字符。我們要用unicode 在Python 的程序中。

第二個(gè)特征更有意思。如何能讓一臺(tái)電腦檢測(cè)到字符串的發(fā)音呢?答案比想象的簡(jiǎn)單點(diǎn):字符串順序是按照聲音解碼的!他們有直接的穩(wěn)定的對(duì)應(yīng)關(guān)系- 語(yǔ)言改變的非常緩慢。

因此,你可以用下面的兩個(gè)特性去檢測(cè)一行文本語(yǔ)言:

  • 單個(gè)字符的重復(fù)性

  • 字符串的重復(fù)性

實(shí)際上,這兩個(gè)特性濃縮到了一個(gè)特性中:字符串的順序。單個(gè)字符的重復(fù)性只是字符串的重復(fù)性。

快速知識(shí)補(bǔ)充:在計(jì)算機(jī)語(yǔ)言學(xué)中,字符串的長(zhǎng)度 n 被定義為 n-gram。 “a” 是一個(gè)gram, 1-gram. “bc”是兩個(gè)gram,2-gram or bigram。 “def” 是三個(gè)gram, 3-gram 或者trigram,以此類推。

用python 實(shí)現(xiàn)

首先,我們需要計(jì)算某個(gè)字符串在特定文本中出現(xiàn)的次數(shù)。為了封裝結(jié)果,我們將建立一個(gè)NGram 類。

看完上述內(nèi)容,你們掌握怎么用Python代碼寫(xiě)一個(gè)語(yǔ)言檢測(cè)器的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI