在 Java 中,有没有办法检测名称是汉字还是中文?

In Java, is there a way to detect if a name is Kanji or Chinese?

提问人:Miguel Ike 提问时间:10/25/2023 最后编辑:Miguel Ike 更新时间:10/26/2023 访问量:41

问:

我一直在试图弄清楚如何正确音译汉字名称和中文名称。我尝试使用 ICU4J,但汉字正在被音译为中文版本。

例: 佐藤健是一个用汉字写成的名字,相当于根据谷歌翻译的Satōtakeru或Ken Satoenter image description here

当我在谷歌上搜索这个名字时,它显示佐藤健。

当我将 ICU4J 与以下代码一起使用时:

final String icuInstanceId = "Any-Latin; [^\\u0000-\\u00FF] Latin-ASCII";
final Transliterator transliterator = Transliterator.getInstance(icuInstanceId)
transliterator.transform("佐藤健")

这将返回“zuo téng jiàn”

我能够首先使用Kuromoji正确音译汉字名称,然后使用ICU4J,但问题仍然存在于如何区分汉字和中文名称。

我也尝试过 lingua,但它仍然将汉字名称检测为中文。

final LanguageDetector detector = LanguageDetectorBuilder.fromLanguages(CHINESE, JAPANESE).build();
final Language detectedLanguage = detector.detectLanguageOf("佐藤健");
java cjk icu 汉字 黑路

评论

0赞 hippietrail 11/6/2023
一般来说,没有办法做到这一点。您可以基于中文中未使用的汉字字符进行启发式设计,反之亦然。如果您需要处理繁体中文和简体中文,这将是更多的工作,如果您需要处理 Kyujitai 和 Shinjitai 汉字,这将需要更多的工作。当然,如果你在日语文本中寻找中文名字,汉字已经被转换为汉字,如果它不仅仅是剪切+粘贴的话。那么,你唯一的希望就是基于每种语言的通用名称的启发式方法。

答: 暂无答案