郭倩倩
(新疆大學(xué)信息科學(xué)與工程學(xué)院,烏魯木齊 830046)
語(yǔ)言識(shí)別;langid模型;微博
計(jì)算機(jī)技術(shù)日益成熟,互聯(lián)網(wǎng)的浪潮席卷著地球每一寸土地。越來(lái)越多的文化、教育等活動(dòng)延伸到不同的民族、不同的國(guó)家。學(xué)者們走出國(guó)門參加國(guó)際學(xué)術(shù)會(huì)議,不僅是對(duì)個(gè)人工作的認(rèn)可,也加速了各國(guó)學(xué)術(shù)技術(shù)之間的交流;跨國(guó)企業(yè)先后在全球范圍內(nèi)尋求最具優(yōu)勢(shì)的合作伙伴:越來(lái)越多的國(guó)內(nèi)人為了感受異域風(fēng)情從而選擇境外旅游。這些活動(dòng)使人與人之間的交往更密切,以及促進(jìn)了科技文化等的共同進(jìn)步。然而語(yǔ)言之間的難以溝通障礙阻礙著時(shí)代的發(fā)展。Freeno?de Network的創(chuàng)始人Rober Levin曾說(shuō)過(guò):The last barri?er for global E-Commerce is the language barrier[1]。如今處在全球化的時(shí)代,這句話完全可以擴(kuò)展到商業(yè)以外的各個(gè)領(lǐng)域。但值得慶幸的是,計(jì)算機(jī)技術(shù)的迅猛發(fā)展,使借助計(jì)算機(jī)進(jìn)行自動(dòng)語(yǔ)言識(shí)別的研究一直未離開研究者們的視線[2]。
自動(dòng)語(yǔ)言識(shí)別是許多應(yīng)用程序中關(guān)鍵的一步,但對(duì)每個(gè)應(yīng)用程序建立一個(gè)定制的解決方案,是非常昂貴的,特別是針對(duì)應(yīng)用領(lǐng)域,人類注釋標(biāo)記語(yǔ)料庫(kù)從而獲得培訓(xùn)語(yǔ)料。因此,我們需要的是這樣的一種通用的、可用的、現(xiàn)成的語(yǔ)言識(shí)別技術(shù)的工具。在本文中,我們提出了使用langid模型。langid是一個(gè)現(xiàn)有的語(yǔ)言識(shí)別工具,被視為有監(jiān)督的機(jī)器學(xué)習(xí)任務(wù),并極大地受到文本分類研究的影響[3]。同時(shí),langid.py是一個(gè)全監(jiān)督的、基于多項(xiàng)式的樸素貝葉斯分類器。它用共包括97種語(yǔ)言的多場(chǎng)景(domain)的語(yǔ)料對(duì)模型進(jìn)行了訓(xùn)練,場(chǎng)景包括五類:政府文件、軟件文檔、新聞電訊、在線百科和網(wǎng)絡(luò)爬蟲[4]。
但針對(duì)本文的多語(yǔ)言微博進(jìn)行識(shí)別分離研究,現(xiàn)有識(shí)別工具langid模型并不能直接使用。首先,現(xiàn)有識(shí)別工具langid模型語(yǔ)料庫(kù)大多是針對(duì)比較正式的、長(zhǎng)文本數(shù)據(jù),并不直接適用于本文的多語(yǔ)言短文本微博數(shù)據(jù)。為了解決以上問題,本文需要構(gòu)建適合本文研究的語(yǔ)料庫(kù),并通過(guò)反復(fù)實(shí)驗(yàn),訓(xùn)練出適合本文多語(yǔ)言短文本微博數(shù)據(jù)識(shí)別分離的模型。
將微博爬蟲與模擬登錄、網(wǎng)絡(luò)爬蟲和Web內(nèi)容解析相結(jié)合,爬取微博信息。根據(jù)微博的特點(diǎn),新浪需要分析微博登錄協(xié)議,通過(guò)模擬程序登錄到微博瀏覽器獲取用戶登錄信息,獲取種子集,根據(jù)采集的URL使用URL調(diào)度器進(jìn)行排序,并按照一定的策略對(duì)網(wǎng)頁(yè)收集器分配URL。網(wǎng)頁(yè)收集器使用GET方法通過(guò)HTTP協(xié)議收集數(shù)據(jù)[5]。最后,通過(guò)頁(yè)面分析提取所獲取的數(shù)據(jù)。詳細(xì)流程圖如圖1所示。
圖1 基于微博爬蟲的信息采集流程圖
本文是手動(dòng)篩選出多語(yǔ)言微博,并將其作為種子詞,采用自編爬蟲程序爬取更多的微博數(shù)據(jù),爬取的微博數(shù)據(jù)包含:微博正文、點(diǎn)贊數(shù)、轉(zhuǎn)發(fā)數(shù)、評(píng)論數(shù)、時(shí)間、來(lái)源和地點(diǎn),如下表1所示:
爬取博文步驟具體如下:
表1 保存樣例
(1)模擬登錄,首先獲取客戶端的 cookie,利用cookie進(jìn)行模擬登錄,用于用戶驗(yàn)證。
(2)頁(yè)面抓取,利用Python中requests庫(kù)的get函數(shù),把相應(yīng)用戶ID的網(wǎng)頁(yè)下載到本地。
(3)頁(yè)面解析,利用Python中的Beautiful庫(kù)提供的函數(shù),對(duì)下載到本地的網(wǎng)頁(yè)進(jìn)行網(wǎng)頁(yè)元素處理,主要是利用find_all()方法。
(4)在步驟(3)的結(jié)果上,利用 Beautiful的find_all('span',class_='ctt')方法,把含有標(biāo)題的文本取出來(lái)。
(5)利用正則表達(dá)式和find_all('a',href=re.compile('^http://*'))過(guò)濾含有超鏈接的標(biāo)簽,把點(diǎn)贊數(shù)、轉(zhuǎn)發(fā)數(shù),評(píng)論數(shù)取出來(lái)。
(6)同理,利用Beautiful的find_all('span',class_='ct')把發(fā)表微博的日期和消息來(lái)源取出來(lái)。
(7)爬取內(nèi)容的保存,把爬取到的標(biāo)題、點(diǎn)贊數(shù)、轉(zhuǎn)發(fā)數(shù)、評(píng)論數(shù)、日期和消息來(lái)源作為一條完整的數(shù)據(jù),寫入到txt文本中保存下來(lái)。
(8)接下來(lái),依次爬取該用戶的所有微博頁(yè)面的數(shù)據(jù),并把這些數(shù)據(jù)寫入到txt文本中。
(9)依次對(duì)所有的用戶ID進(jìn)行爬?。磳?duì)每個(gè)用戶ID執(zhí)行步驟(2)-步驟(8)的操作),并把取得的數(shù)據(jù)保存到txt文本中。
圖2 爬取微博步驟
許多應(yīng)用程序都能夠從自動(dòng)語(yǔ)言識(shí)別任務(wù)上受益。如果人類自動(dòng)標(biāo)注語(yǔ)種語(yǔ)料庫(kù)來(lái)建立一個(gè)自動(dòng)語(yǔ)言識(shí)別處理程序從而應(yīng)用到這些應(yīng)用領(lǐng)域,那么代價(jià)是非常昂貴的。因此,我們急需一個(gè)沒有人類標(biāo)注參與,低配置的這樣一個(gè)現(xiàn)成的、可用的語(yǔ)言識(shí)別工具。研究表明,在微博方面,現(xiàn)有的語(yǔ)言識(shí)別系統(tǒng)中在性能方面表現(xiàn)相當(dāng)不錯(cuò),但針對(duì)微博的具體語(yǔ)言識(shí)別系統(tǒng)langid似乎做得更好[6]。
langid.py是基于樸素貝葉斯分類器模型,是一個(gè)有監(jiān)督分類器。langid模型主要包括7個(gè)模塊index.py、tokenize.py、DFfeatureselect.py、IGweight.py、LDfea?tureselect.py、scanner.py、NBtrain.py,工具包使用情況如下所示:
(1)準(zhǔn)備語(yǔ)料庫(kù),把相應(yīng)的語(yǔ)料以及與其對(duì)應(yīng)的語(yǔ)言把到規(guī)定的文件下,其中每個(gè)文本是一個(gè)單獨(dú)的文件,每個(gè)文件放到兩層深的目下,./corpus/domain1/en/File1.txt,通過(guò)命令python index.py./corpus來(lái)建立相應(yīng)訓(xùn)練語(yǔ)料及其語(yǔ)言對(duì)。
(2)分別對(duì)每種語(yǔ)言的每個(gè)文件進(jìn)行分詞處理,使用的分詞模型是N-Gram,這里的N分別取值是1、2、3、4,經(jīng)過(guò)分詞后形成詞的集合,使用的命令為python tokenize.py corpus.model。
(3)通過(guò)采用文檔頻率DF,來(lái)選擇特征值,把一些信息貢獻(xiàn)少的詞過(guò)濾掉,主要是進(jìn)行特征值的降維,使用的命令為python DFfeatureselect.py corpus.model。
(4)對(duì)選擇的特征值進(jìn)行權(quán)重的賦值,這里使用信息增益來(lái)給每個(gè)特征值進(jìn)行賦值,使用命令為python IGweight.py-d corpus.model。
(5)在特征值的權(quán)重基礎(chǔ)上,求出每個(gè)特征值的LD分?jǐn)?shù),然后根據(jù)LD分?jǐn)?shù),選擇最終的特征值出來(lái)進(jìn)行訓(xùn)練樸素貝葉斯分類器,使用的命令為python LD?featureselect.py corpus.model。
(6)通過(guò)建立一個(gè)掃描器,用來(lái)求出每個(gè)特征值的詞頻以及貝葉斯分類器的相關(guān)參數(shù),使用的命令為py?thon scanner.py corpus.model。
(7)用這些選擇出來(lái)的特征值進(jìn)行貝葉斯分類器的訓(xùn)練,使用的命令為python NBtrain.py corpus.model。
(8)利用訓(xùn)練好的貝葉斯分類器進(jìn)行分類,先導(dǎo)入langid模塊,使用langid.classify方法把帖子中的維吾爾語(yǔ)、音譯維吾爾語(yǔ)、英語(yǔ)以及漢語(yǔ)識(shí)別并分離出來(lái)。
基于樸素貝葉斯的langid模型分類器,其工作原理如下:
確定目標(biāo)函數(shù)。使用langid進(jìn)行語(yǔ)種分類,目的是對(duì)于一篇包含n個(gè)特征的x1,x2,...xn的文檔D,計(jì)算出屬于閉集C中某一分類Ci的概率,并將其分配給最可能的分類[7]。
根據(jù)貝葉斯定理:
其中P(D)是常數(shù),P(Ci)根據(jù)最大似然法得到。為了得到P(D|Ci),假設(shè)每一項(xiàng)是條件獨(dú)立,即:
ND,ti是ti項(xiàng)在D中出現(xiàn)的頻率。
使用多項(xiàng)式貝葉斯分類模型,將上述問題放在貝葉斯學(xué)習(xí)框架中建立一個(gè)參數(shù)模型,使用訓(xùn)練數(shù)據(jù)估計(jì)出貝葉斯最優(yōu)的參數(shù)模型[8]。設(shè)參數(shù)為θ,由上式可以得到:
根據(jù)訓(xùn)練數(shù)據(jù)我們最終可以得到θND,ti|cj的0≤θND,ti|cj≤1最大似然估計(jì)值θ∧。
確定目標(biāo)文檔的分類。根據(jù)給定的參數(shù)值,我們可以通過(guò)計(jì)算目標(biāo)文檔對(duì)每個(gè)分類后的檢驗(yàn)概率,并選擇最大概率值作為目標(biāo)文檔的分類,即:
由于微博的短而雜亂以及微博中常含有結(jié)構(gòu)比較相似的音譯維吾爾語(yǔ)和英語(yǔ),因此本節(jié)主要目的是通過(guò)langid模型識(shí)別漢語(yǔ)、維吾爾語(yǔ)、英語(yǔ)、音譯維吾爾語(yǔ)。本文通過(guò)反復(fù)實(shí)驗(yàn)發(fā)現(xiàn)langid模型語(yǔ)言識(shí)別效果主要與以下幾種情況有關(guān):
①訓(xùn)練語(yǔ)料大小會(huì)影響語(yǔ)言的識(shí)別效果,語(yǔ)料規(guī)模大,會(huì)相應(yīng)的提高語(yǔ)言的識(shí)別率;
②當(dāng)音譯維語(yǔ)和英語(yǔ)比例會(huì)影響語(yǔ)言的識(shí)別效果;
③訓(xùn)練文本都是長(zhǎng)文本時(shí),對(duì)短文本的識(shí)別效果不佳;
④增加分組會(huì)提高語(yǔ)言的識(shí)別效果;
⑤增加域會(huì)影響語(yǔ)言的識(shí)別效果;
⑥特征的選擇會(huì)影響語(yǔ)言的識(shí)別效果。
實(shí)驗(yàn)結(jié)果表明,因?qū)嶒?yàn)數(shù)據(jù)全部來(lái)源于新浪微博,因而域增加,相應(yīng)的訓(xùn)練語(yǔ)料增加,使langid模型提取的特征更能夠較全面地反映出語(yǔ)言的特性,從而直接影響語(yǔ)言的識(shí)別效果,如表2所示。
表2 實(shí)驗(yàn)結(jié)果與域數(shù)
實(shí)驗(yàn)結(jié)果表明,英語(yǔ)和音譯維吾爾語(yǔ)訓(xùn)練語(yǔ)料比例會(huì)影響對(duì)英語(yǔ)和音譯維吾爾語(yǔ)的識(shí)別效果。英語(yǔ)和音譯維吾爾語(yǔ)都是以拉丁字母書寫的一種語(yǔ)言,因結(jié)構(gòu)相似、書寫相似,則langid模型對(duì)這兩種語(yǔ)言提取的特征也比較相似,故英語(yǔ)和音譯維吾爾語(yǔ)語(yǔ)料比例會(huì)直接影響識(shí)別效果。
表3 英語(yǔ)和音譯維吾爾語(yǔ)的比例
實(shí)驗(yàn)結(jié)果表明,langid模型中訓(xùn)練語(yǔ)料的長(zhǎng)短對(duì)長(zhǎng)文本、短文本的識(shí)別效果有直接影響,如表4所示。相對(duì)長(zhǎng)文本而言,短文本數(shù)據(jù)稀疏且雜而亂,直接把比較規(guī)范的長(zhǎng)文本特征應(yīng)用到短文本識(shí)別方面,不能夠較全面地反映出短文本特性。
表4 實(shí)驗(yàn)結(jié)果與訓(xùn)練文本的長(zhǎng)短
表5 實(shí)驗(yàn)結(jié)果與分組數(shù)
實(shí)驗(yàn)結(jié)果表明,預(yù)訓(xùn)練的langid模型在實(shí)驗(yàn)過(guò)程中,分組數(shù)會(huì)影響實(shí)驗(yàn)結(jié)果,分組數(shù)增加會(huì)相應(yīng)的提高對(duì)語(yǔ)言的識(shí)別效果,特別是對(duì)短文本的識(shí)別效果影響較大。因?yàn)楸灸P驮诿總€(gè)分組內(nèi)提取等量的特征,分組越多,每種語(yǔ)言提取的特征數(shù)越多,語(yǔ)言的識(shí)別率也相應(yīng)的提高。
表6 實(shí)驗(yàn)結(jié)果與特征提取的數(shù)量
實(shí)驗(yàn)結(jié)果表明,因langid模型對(duì)語(yǔ)言的識(shí)別依賴于所提取的特征,特征數(shù)越多越能夠較全面的反映出特定語(yǔ)言的特性,特征數(shù)相對(duì)來(lái)說(shuō)對(duì)語(yǔ)言的識(shí)別效果有直接影響。
結(jié)合實(shí)驗(yàn) 1、2、3、4、5,本實(shí)驗(yàn)采用的語(yǔ)料庫(kù)是采用自編爬蟲程序爬取來(lái)自多語(yǔ)言微博用戶的微博數(shù)據(jù),該數(shù)據(jù)集包含4w條微博樣本(音譯維吾爾語(yǔ)1w,英語(yǔ)1w,漢語(yǔ)1w條,維語(yǔ)1w條)。本文的實(shí)驗(yàn)數(shù)據(jù)全部來(lái)源于多語(yǔ)言用戶發(fā)布的新浪微博,以下的domain中數(shù)據(jù)全部來(lái)源于基于多語(yǔ)言用戶發(fā)布的新浪微博,本文通過(guò)4w條微博樣本進(jìn)行反復(fù)實(shí)驗(yàn),將實(shí)驗(yàn)結(jié)構(gòu)設(shè)計(jì)如下效果最好:
domain1(en,yug,zh,ug):每種語(yǔ)言各 2000 條,共8000條
domain2(en,yug,zh,ug):每種語(yǔ)言各 2000 條,共8000條
domain3(en,yug,zh,ug):每種語(yǔ)言各 2000 條,共8000條
domain4(en,yug,zh,ug):每種語(yǔ)言各 2000 條,共8000條
domain5(en,yug,zh,ug):每種語(yǔ)言各 2000 條,共8000條
表7 實(shí)驗(yàn)結(jié)果
表8 語(yǔ)言識(shí)別模型準(zhǔn)確率對(duì)比
表9 傳統(tǒng)語(yǔ)言識(shí)別工具
傳統(tǒng)的機(jī)器學(xué)習(xí)模型中,相比TextCat模型[9]、CLD模型[10]、LangDetect模型[11],langid 獲得了最優(yōu)的性能,準(zhǔn)確率最低達(dá)到了95%。這與基于多項(xiàng)式的樸素貝葉斯分類器模型的訓(xùn)練目標(biāo)有關(guān),它追求結(jié)構(gòu)風(fēng)險(xiǎn)最小化。該方法降低了數(shù)據(jù)規(guī)模和數(shù)據(jù)分布的要求,在小樣本條件下獲得了較好的性能。同時(shí)發(fā)現(xiàn)對(duì)短文本微博維吾爾語(yǔ)和音譯維吾爾語(yǔ)識(shí)別率可達(dá)100%,對(duì)結(jié)構(gòu)比較相似的短文本英語(yǔ)和音譯維吾爾語(yǔ)而言,在識(shí)別過(guò)程中會(huì)相互影響。一方面,音譯維吾爾語(yǔ)和英語(yǔ)都是以拉丁字母書寫的一種語(yǔ)言,結(jié)構(gòu)比較相似,書寫比較相似。另外,音譯維吾爾語(yǔ)和英語(yǔ)在書寫方面,某些單詞通用,例如“man”等,導(dǎo)致提取的特征比較相似,為后期模型訓(xùn)練埋下了隱患;另一方面,langid模型提取的特征難以反映詞與詞之間的語(yǔ)義關(guān)系,使提取的特征無(wú)法滿足這種結(jié)構(gòu)相似的語(yǔ)言識(shí)別分類。
本文根據(jù)微博的特點(diǎn),綜合考慮了影響langid模型識(shí)別效果的影響因子,通過(guò)反復(fù)實(shí)驗(yàn)驗(yàn)證了langid模型對(duì)微博數(shù)據(jù)的有效性和可行性,同時(shí)對(duì)結(jié)構(gòu)比較相似、書寫相似的英語(yǔ)和音譯維吾爾語(yǔ)識(shí)別效果俱佳。
另外,雖然該方法在維吾爾語(yǔ)和漢語(yǔ)識(shí)別準(zhǔn)確率為100%。但在英語(yǔ)和音譯維吾爾語(yǔ)識(shí)別效果上相對(duì)來(lái)說(shuō)較弱一些,未來(lái)的工作將考慮在英語(yǔ)和音譯維吾爾語(yǔ)上做進(jìn)一步的研究。