• 【Python】Python与文本处理langid工具包的文本语言检测和歧视


     1.问题的叙述性说明

    使用Python文本处理。文字有时被包括中国、英语、在日本和其他语言文字,进行处理。这个时候就须要判别当前文本是属于哪个语系的。

    Python中有个langid工具包提供了此功能。langid眼下支持97种语言的检測,很好用。


    2.程序的代码

    下面Python是调用langid工具包来对文本进行语言检測与判别的程序代码:

    import langid                                                         #引入langid模块
    
    def translate(inputFile, outputFile):
    	fin = open(inputFile, 'r')                                    #以读的方式打开输入文件
    	fout = open(outputFile, 'w')                                  #以写的方式打开输出文件
    
    	for eachLine in fin:                                          #依次读入每一行
    		line = eachLine.strip().decode('utf-8', 'ignore')     #去除每行的首位空格等。并统一转化成Unicode
    		lineTuple = langid.classify(line)                     #调用langid来对该行进行语言检測
    		if lineTuple[0] == "zh":                              #假设该行语言大部分为中文,则不进行不论什么处理
    			continue
    
    		outstr = line                                         #假设该行语言为非中文,则准备输出
    		fout.write(outstr.strip().encode('utf-8') + '
    ')     #输出非中文的行,从Unicode转化成utf-8输出
    
    	fin.close()
    	fout.close()
    
    if __name__ == '__main__':                                            #相当于main函数
    	translate("myInputFile.txt", "myOutputFile.txt")
    
    		

     以上代码是用来处理一个文本。将不属于中文的行依次输出到一个新的文件。


    3.注意

    第9、10行代码。langid.classify(line)的输出结果是一个二元组,二元组的第一项表示该文本所属的语系,如:zh表示中文、en表示英语、等等;二元组的第二项表示该文本中属于第一项中语系的所占比例。

     

    希望对大家有所帮助。





    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    python中的运算符的分类以及使用方法
    python的变量的命名规则以及定义
    C#和Java在重写上的区别
    IIS6 伪静态
    【读书笔记】Linux源码注释
    计算机是如何启动的?
    XSHELL下直接下载文件到本地(Windows)
    [转载]Linux 环境下编译 0.11版本内核 kernel
    虚拟化技术
    CentOS 6.4 编译安装LLVM3.3,Clang和Libc++
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4707671.html
Copyright © 2020-2023  润新知