String unicode字符

String unicode字符,string,unicode,codepages,String,Unicode,Codepages,在我的应用程序中,我有unicode字符串,我需要告诉字符串使用哪种语言, 我想通过确定字符串的字符在哪个范围内来缩小可能的语言列表 我从 和可能的语言 问题是算法必须检测所有语言,有人知道unicode范围到语言的更广泛的映射吗 谢谢 Wojciech由于以下几个原因,这实际上是不可能的: 许多语言共享相同的书写系统。以英语和荷兰语为例。两者都使用基本的拉丁字母。仅通过查看代码点的范围,您根本无法区分它们 有些语言使用更多的字符,但不能保证 特定的文本段包含它们。例如,德语使用 基本拉丁字母

在我的应用程序中,我有unicode字符串,我需要告诉字符串使用哪种语言, 我想通过确定字符串的字符在哪个范围内来缩小可能的语言列表

我从

和可能的语言

问题是算法必须检测所有语言,有人知道unicode范围到语言的更广泛的映射吗

谢谢 Wojciech

由于以下几个原因,这实际上是不可能的:

  • 许多语言共享相同的书写系统。以英语和荷兰语为例。两者都使用基本的拉丁字母。仅通过查看代码点的范围,您根本无法区分它们

  • 有些语言使用更多的字符,但不能保证 特定的文本段包含它们。例如,德语使用 基本拉丁字母加上“ä”、“ö”、“ü”和“ß”。当这些信 不是特别少见,你可以很容易地创造完整的句子 没有他们。因此,短文本可能不包含它们。因此,, 光看代码点是不够的

  • 文本并不总是“纯粹的”。英语文本可能包含法语字母 因为一个法语外来词(例如“déjávu”)。或者它可能包含 外来词,因为课文谈论的是外来事物(例如。 “格特德·默隆是理查德·瓦格纳的歌剧……”或“伟大的 中国之墙(万里长城) 是…)。单独查看代码点将是 误导

总之,不,您无法可靠地将代码点范围映射到语言

你可以做的是:计算每个字符在文本中出现的频率,并试探性地与已知语言的统计数据进行比较。或者分析单词结构,例如使用马尔可夫链。或者在字典中搜索单词(考虑词形变化、构词等)。或者这些组合


但这很难,而且工作量很大。你应该使用现有的解决方案,如deceze和Esailija推荐的解决方案。

我喜欢使用谷歌翻译之类的建议,因为他们会为你做所有的工作

你也许可以建立一个基于规则的系统,让你在这方面有所收获。为语言建立启发式规则,看看这是否足够。某些藏文字符确实表示藏文,而且许多语言中有一些独特的字符是可以放弃的。但正如另一个答案所指出的那样,有限的文本样本可能无法满足你的需要e这是准确的,因为您可能没有一个明确的指标

但是,语言在每个字符出现的频率上会有所不同,因此您可以拥有需要分类的每种语言的基本指纹,并根据字母频率进行猜测。这可能比基于规则的系统更进一步。可能构建此系统的一个好工具是a,它将为您完成所有分析。Y你可以在不同的语言上训练一个算法,而不必自己表达实际的规则


更复杂的版本大概就是谷歌所做的。

书写系统!==语言。许多语言共享相同的书写系统。使用统计分析仪(如Tika项目)来检测语言。你无法可靠地检测语言,甚至谷歌翻译也不能。最简单的方法是使用谷歌翻译api,然后看看它表明文本使用的是什么语言。自己做这个算法…可能不那么容易=我意识到我无法根据unicode字符范围检测出准确的语言,我想把可能性的列表缩小到几种语言。