Background
在预处理大模型数据集时,有时需要区分prompt是中文还是英文。考虑到目前我们运用的大多数双语言数据集都是中英双语,所以判定非中文即英文。
中文prompt往往用unicode表示,\u转义+4位数字,即类似"\u9492"。
What Does Not Work
尝试问AI,几个Available的AI都不能给出可行方案。错误如下:
直接用startwith('\u')报错,因为\u后必须跟着4个数字。
startwith(r'\u')则无效,因为'\u9492'已经转义为汉字“钒”,不包含字符串r'\u'。
My Method
取Unicode串第一位,如
text = '\u8fd9\u5bb6\u5e97\u7684\u540d\u5b57\u662f\u4ec0\u4e48?'
print(text[0]) # "这"
只要检查text[0]是否在英语字母之中即可。制作字母表,用in函数判定。
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
if not text[0] in alphabet:
print("Chinese")
else:
print("English")
能够起作用。
方法不好,只能做中英双语判定,但也许对需要者有帮助。目前还不会更好的方法,求路过大佬不吝指教,谢谢!