# 定义一个函数,检查字符串中是否包含中文字符

def contains_chinese(s):

for ch in s:

if u'\u4e00' <= ch <= u'\u9fff':

return True

return False

这个判断字符串中是否包含中文字符的算法,会把日文看成中文😂

Reply to this note

Please Login to reply.

Discussion

因为日语中会有纯汉字,编码是一模一样的。

所以应该还要结合profile和其它的post来筛选,出现过片假名就可以一票否决了。

这个是一个日本用户的元数据,是否可以用name来判断是否包含片假名,来检测是否是日本用户?

{"id":"1ede94a90be721b027eac95b6671547d2938b0b3a57bbc36c405d829766c41d3","kind":0,"pubkey":"269e6f57aa9a200c814e6b98721819dde038ca60c0390b87b658d300ab6d0d04","tags":[],"created_at":1679053245,"content":"{\"name\":\"ゆうひまわり\",\"nip05\":\"yuuhimawari@yuuhimawariero.net\",\"picture\":\"\",\"banner\":\"\",\"about\":\"illust/イラスト/格ゲー\",\"lud06\":\"\",\"lud16\":\"itchyfood23@walletofsatoshi.com\",\"display_name\":\"ゆうひまわり\",\"nip05valid\":true,\"webOfTrustScore\":11.799999999999974,\"followingCount\":179,\"followersCount\":135}","sig":"fe55e192413ff26d94ed966564a6a0278f15b7e5414f06038b7440e28ec650574006573c90e6e95e78cb4f4e5923c3c077a61972389f993eebbf35caff41124b"}

name displayname about 过往的各种post,任何地方检测到比如超过30%的假名就可以否决了,可以试试不同阈值。

综合考量的信息越多越准确,其实最好的方法还是基于贝叶斯概率分类,你手动标注几个之后,就能算出来一个用户是中文用户还是日文用户的概率,然后你给定一个阈值即可,比如95%以上概率是中文用户的收集出来。

这事儿@npub1vj0wlergmkcs0sz7hfks2ywj555c2s87f40squ4sqcmqpr7897fqn6mfew 熟悉啊,他的relay支持语言过滤功能。