我正在尝试查找可用于将Languages(或更可能是Scripts)连接到Unicode字符块的资源。这样的资源将用于查找诸如“法语中使用什么Unicode块?”之类的问题。或“什么语言使用0A80-0AFF(http://unicodinator.com/#Block-Gujarati)中的块?”你知道这样的资源吗?
我希望能够在unicode.org轻松找到这些信息。我很快就找到了一个将国家代码与语言(http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/territory_language_information.html)联系起来的好桌子。但是我花了很多时间来寻找与Unicode Blocks to Languages相关的东西。可能我有一个术语问题阻止我在这里连接点......
在这种情况下,我并不挑剔“语言”(Java语言环境代码或ISO 639代码或其他)的含义。我也理解可能没有确切的答案,例如,除了阿拉伯语块(http://unicodinator.com/#Block-Arabic,http://unicodinator.com/#Block-Arabic_Supplement)中的字符外,阿拉伯文档还可以包含拉丁文和其他文本。但肯定有一些表格说“这些语言与这些块一起使用”......我也不挑剔格式(XML,CSV等等),我可以轻松地将其转换为我可以用于我的应用程序的数据。而且,我确实意识到引用可能会将 Scripts 连接到Blocks,而不是语言(尽管Scripts可以映射到Languages)。
我确实知道这将是一个多对多的表(因为许多语言使用来自多个块的字符,并且许多块被多种语言使用);我确实意识到这无法准确回答,因为Unicode代码点不是特定于语言的 - 但是,“这个国家的语言是什么”这个问题也没有(对大多数国家而言,答案可能是“大部分”),像这样(http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/territory_language_information.html)仍然可以创造,有意义和有用。
关于为什么我想要这样的事情:我想用代码块的全局热图和语言列表来增强http://unicodinator.com;我也有一个我正在修补的游戏概念。除此之外,其他人可能还有许多其他用途(字体创建?启发式,快速,最佳猜测的语言检测现在谷歌翻译API正在消失?研究项目?)。
答案 0 :(得分:12)
我自己收到了Unicode.org的回复!在CLDR子项目中,有以下文档:
为每个语言ID,您可以搜索“exemplarCharacters”:
<exemplarCharacters>[\u064B \u064C \u064D \u064E \u064F \u0650 \u0651 \u0652 ء آ أ ؤ إ ئ ا ب ت ة ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي ى]</exemplarCharacters>
<exemplarCharacters type="auxiliary">[\u200C\u200D\u200E\u200F]</exemplarCharacters>
<exemplarCharacters type="currencySymbol" draft="contributed">[a b c d e f g h i j k l m n o p q r s t u v w x y z]</exemplarCharacters>
<exemplarCharacters type="index" draft="contributed">[ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي]</exemplarCharacters>
或者,有这个页面:http://unicode.org/repos/cldr-tmp/trunk/diff/by_type/misc.exemplarCharacters.html看起来像所有这些。我将努力将这些数据重组为一个langid - &gt;某种类型的blockid地图,我可能会知道@borrible的“答案”(而不是让我的答案)。
答案 1 :(得分:3)
如何自己生成(近似)数据?一个例子可以是使用不同的language wikipedias - 在每种语言中下载足够的数据,生成一个包含计数的文档中使用的字符列表,并设置一个阈值来摆脱其他借来的文本的小实例语言。这将是近似的,但可能是一个很好的起点。
答案 2 :(得分:2)
我不认为CLDR的示例字符会给出准确的结果。
您可以从multiprocessing
的UCD project和Scripts.txt文件中找到每个字符的脚本属性。欲了解更多信息(ScriptExtensions.txt)
获得脚本后,可以使用supplementalData.xml的languageData部分将其与CLDR中的语言相关联
答案 3 :(得分:0)
没有这样的资源,原因很简单:Unicode代码点分配与语言无关。因此,每个代码点都可以被多种语言使用。
当然,某些字符直接映射到一种语言,但通常每个代码点都要共享。因此,创建代码指向语言表没有多大意义。
如果您正在寻找检测语言的方法,那么这绝对是 的方法。