Python: 检查某自然语言字符串是否以中文(Unicode)开头

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")

能够起作用。

方法不好,只能做中英双语判定,但也许对需要者有帮助。目前还不会更好的方法,求路过大佬不吝指教,谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值