当前位置:   article > 正文

python实现多语言语种识别_用Python进行语言检测

python判断是否包含日文

最近正好碰到这个需求,总结一下用Python进行语言检测的方法。

1.用unicode编码检测

汉字、韩文、日文等都有对应的unicode字符集范围,只要用正则表达式匹配出来即可。

在判断的时候,往往需要去掉一些特殊字符,例如中英文标点符号。可以用下列方法去除:

# 方法一,自定义需要去掉的标点符号,注意这个字符串的首尾出现的[]不是标点符号'[]',

# 而是正则表达式中的中括号,表示定义匹配的字符范围

remove_nota = u'[’·°–!"#$%&\'()*+,-./:;<=>?@,。?★、…【】()《》?“”‘’![\\]^_`{|}~]+'

sentence = '测试。,[].?'

print(re.sub(remove_nota, '', sentence))

# 方法二,只能去掉英文标点符号

remove_punctuation_map = dict((ord(char), None) for char in string.punctuation)

print(sentence.translate(remove_punctuation_map))

输出:

测试

测试。,

还可以把数字也去掉:

# 方法一

sentence = re.sub('[0-9]', '', sentence).strip()

# 方法二

remove_digits = str.maketrans('', '', string.digits)

sentence = sentence.translate(remove_digits)

然后就可以进行语言检测了。

这里的思路是匹配句子的相应语言字符,然后替换掉,如果替换后字符串为空,表示这个句子是纯正的该语言(即不掺杂其它语言)。

也可以用正则表达式查询出句子中属于该语言的字符

s = "English Test"

re_words = re.compile(u"[a-zA-Z]")

res = re.findall(re_words, s) # 查询出所有的匹配字符串

print(res)

res2 = re.sub('[a-zA-Z]', '', s).strip()

print(res2) # 空字符串

if len(res2) <= 0:

print("This is English

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/571578
推荐阅读
相关标签
  

闽ICP备14008679号