1.問(wèn)題的描述
用Python進(jìn)行文本處理時(shí),有時(shí)候處理的文本中包含中文、英文、日文等多個(gè)語(yǔ)系的文本,有時(shí)候不能同時(shí)進(jìn)行處理,這個(gè)時(shí)候就需要判別當(dāng)前文本是屬于哪個(gè)語(yǔ)系的。Python中有個(gè)langid工具包提供了此功能,langid目前支持97種語(yǔ)言的檢測(cè),非常好用。
2.程序的代碼
以下Python是調(diào)用langid工具包來(lái)對(duì)文本進(jìn)行語(yǔ)言檢測(cè)與判別的程序代碼:
?
import langid #引入langid模塊 def translate(inputFile, outputFile): fin = open(inputFile, 'r') #以讀的方式打開(kāi)輸入文件 fout = open(outputFile, 'w') #以寫(xiě)的方式打開(kāi)輸出文件 for eachLine in fin: #依次讀入每一行 line = eachLine.strip().decode('utf-8', 'ignore') #去除每行的首位空格等,并統(tǒng)一轉(zhuǎn)化成Unicode lineTuple = langid.classify(line) #調(diào)用langid來(lái)對(duì)該行進(jìn)行語(yǔ)言檢測(cè) if lineTuple[0] == "zh": #如果該行語(yǔ)言大部分為中文,則不進(jìn)行任何處理 continue outstr = line #如果該行語(yǔ)言為非中文,則準(zhǔn)備輸出 fout.write(outstr.strip().encode('utf-8') + '\n') #輸出非中文的行,從Unicode轉(zhuǎn)化成utf-8輸出 fin.close() fout.close() if __name__ == '__main__': #相當(dāng)于main函數(shù) translate("myInputFile.txt", "myOutputFile.txt")
?以上代碼是用來(lái)處理一個(gè)文本,將不屬于中文的行依次輸出到一個(gè)新的文件。
?
3.注意
第9、10行代碼,langid.classify(line)的輸出結(jié)果是一個(gè)二元組,二元組的第一項(xiàng)表示該文本所屬的語(yǔ)系,如:zh表示中文、en表示英語(yǔ)、等等;二元組的第二項(xiàng)表示該文本中屬于第一項(xiàng)中語(yǔ)系的所占比例。
?
希望對(duì)大家有所幫助。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
