0

(这与如何检测字符串的语言不重复? )

我需要能够通过语言/字母特定字符来确定给定字符串(单个单词)的字母表。例如,如果字符串包含:

  • 'Ü' 应该被识别为德语,
  • 'ش' 为阿拉伯语,
  • 'Φ' 作为希腊语等

我正在寻找按语言/字母列出的特定于字母的字符列表。由于使用 GoogleTranslate API 或其他基于字典的解决方案的单个非字典单词将不起作用

(虽然问题不是特定于编程语言,但实际代码是用 C# 编写的)

4

1 回答 1

3

您可以从每个字符的 unicode 名称开始。例如(在 Python 中):

>>> import unicodedata
>>> unicodedata.name(u'Φ')
'GREEK CAPITAL LETTER PHI'
>>> unicodedata.name(u'ش')
'ARABIC LETTER SHEEN'
>>> unicodedata.name(u'Ü')
'LATIN CAPITAL LETTER U WITH DIAERESIS'

您可能必须对拉丁字符进行特殊处理,因为 Unicode 不会将它们分配给特定语言的字母表。它们中的大多数出现在几种使用基于拉丁字母的语言中,但如果您确信您的数据仅在它是德语时才包含 Ü,那么您可以出于您的目的将该字符识别为德语。只有几十个拉丁字符需要担心。

同样,大量语言使用 UnicodeCYRILLIC字母,因此在大多数情况下,它们的存在并不能告诉您语言。有些被 Unicode 描述为属于特定语言。在http://www.unicode.org/charts/PDF/U0400.pdfCYRILLIC SMALL LETTER YI中有注释“乌克兰语” 。我不知道这些注释是否详尽,即乌克兰语是否是唯一使用该字符的语言。而且我敢肯定,有很多乌克兰语单词中没有那个字符。从根本上说,您不能仅仅通过乌克兰语特定字母的存在与否来区分乌克兰语单词和俄语单词。

我希望 Unicode 中的其他字母也是如此。如果您真的很幸运,您可能会找到一个 Unicode 数据库,其中包含每个字符的任何此类注释,因此您可以挖掘它以提及特定语言。

于 2012-11-08T12:34:03.713 回答