从UTF8获取语言

时间:2014-09-24 16:32:04

标签: java utf-8

我有几个utf8字符串,需要根据使用的字符找出语言。使用德语,荷兰语和英语等拉丁字母来区分语言并不重要。出现的语言是阿拉伯语,韩语,中文,日语,即具有明确字符集的语言。在大多数情况下,字符串本身就是名称,可以假设第一个字符足以识别。

3 个答案:

答案 0 :(得分:1)

最简单的方法是使用icu4j库和方法UScript.getScript(int)

它检测每个字符的脚本。对于标点符号和间距,它返回UScript.COMMON。对于拉丁语,它返回UScript.LATIN。对于中文和日文汉字,它返回UScript.HAN。对于日语假名,它会返回UScript.KATAKANAUScript.HIRAGANA(因此一个HAN不会证明文字是中文而不是日文。)

建议您迭代字符串的代码点,但在大多数情况下,迭代char就足够了。

这里还有一些理论:https://en.wikipedia.org/wiki/Script_%28Unicode%29

这里的表格包含为所有角色定义的脚本:http://www.unicode.org/Public/UNIDATA/Scripts.txt

答案 1 :(得分:0)

理论上,你可以在java中使用德语和中文的字符串(unicode 16)

你可以维护一份经常出现的中文字符列表,如果它们存在,则假设它的中文字符等

答案 2 :(得分:0)

对于每种语言,一种方法是保留有序对(c,f)的列表,其中c是来自语言的唯一字符,f是某个合理语料库中该字符的出现频率从那种语言。 (称这些列表为“字符直方图”。)

然后,对于每个文档,从文档中计算字符直方图,并将其与所有已知语言进行比较。选择最接近的匹配。

更好的方法是比较 word 直方图。

实用方式将是......我不知道。