2

我正在寻找一种方法来删除文本中的变音符号和其他字母标记,并以适合文本搜索索引的方式对其进行简化。

为了删除变音符号,我已经找到了这些:

  • PHP的问题1、2
  • Java的问题:1,相关:2
  • Bash的问题:1
  • .Net 的问题1、2
  • Javascript问题:1
  • Python的问题:1

我想知道一个通​​用的解决方案,独立于语言。(此外,此参考列表可能对某些人有用。)

删除变音符号适用于äöüò等。但我也想要:

  • Ø → Ø
  • Я → R
  • Ł → L
  • ɲ → n
  • æ → a(也可以是“ae”,但在我的情况下,“a”更有意义,因为我也想用“a”替换“ae”)

例如,我想索引名称 Røyksopp,有时也出现在简化名称 Royksopp 下的 Röyksopp。或者 KoЯn 应该是 KoRn。

4

2 回答 2

3

一些ICU魔法:

echo "ë ö ø Я Ł ɲ æ å ñ 開 당" | uconv -x any-name | perl -wpne 's/ WITH [^}]+//g;' | uconv -x name-any | uconv -x any-latin -t iso-8859-1 -c | uconv -f iso-8859-1 -t ascii -x latin-ascii -c

产量

e o o A L n ae a n ki dang

这使用 cmdline 工具 uconv,但同样可以使用 ICU 的 Java 或 C 或 C++ API 完成,并且 ICU 具有几乎任何语言的绑定。

Note Я -> A because that is the correct behavior. What you want is not how Unicode defines that character - blame KoЯn for abusing it.

于 2012-11-27T14:52:34.023 回答
0

在特定于 Python 的问题中,提出了一种通用解决方案来至少删除变音符号:

  • 将 unicode 字符串转换为其长规范化形式(字母和变音符号使用单独的字符)
  • 删除所有 unicode 类型为“变音符号”的字符

不过,这不适用于 ø。

于 2012-11-24T15:06:56.633 回答