使用不同的字母检测相同的单词?

时间:2016-10-23 21:34:06

标签: python

Python对单词МАМАMAMA的处理方式不同,因为其中一个是使用拉丁语而另一个是使用西里尔语编写的。

如何让python将它们视为一个相同的字符串?

我只关心同形异形体。

3 个答案:

答案 0 :(得分:3)

有一个python库可以执行称为transliterate

的西里尔语到拉丁语的unicode翻译
>>> from transliterate import translit
>>> 
>>> cy = u'\u041c\u0410\u041c\u0410'
>>> en = u'MAMA'
>>> cy == en
False
>>> cy_converted = translit(cy, 'ru', reversed=True)
>>> cy_converted == en
True
>>> cy_converted
u'MAMA'

答案 1 :(得分:2)

音译无济于事(它将把西里尔语P变成拉丁语R)。乍一看,Unicode兼容形式(NFKD或NFKC)看起来很有希望,但是将U + 041C(CYRILLIC CAPITAL LETTER EM)变成U + 041C(而不是U + 004D(LATIN CAPITAL LETTER EM)) - 所以不会工作

唯一的解决方案是构建自己的allomorphs表,并在比较之前将所有字符串转换为规范形式。

注意:当我说“Cyrillic P”时,我欺骗并使用了拉丁文allomorph - 我没有一种简单的方法可以进入西里尔语。

答案 2 :(得分:0)