파이썬은 그 중 하나가 라틴어를 사용하고 다른 하나는 키릴 어를 사용하여 작성 되었기 때문에 МАМА
과 MAMA
을 다르게 취급합니다.다른 단어를 사용하여 같은 단어를 탐지합니까?
파이썬으로 그들을 어떻게 하나의 동일한 문자열로 취급하게 만드시겠습니까?
나는 동형만을 염려합니다.
파이썬은 그 중 하나가 라틴어를 사용하고 다른 하나는 키릴 어를 사용하여 작성 되었기 때문에 МАМА
과 MAMA
을 다르게 취급합니다.다른 단어를 사용하여 같은 단어를 탐지합니까?
파이썬으로 그들을 어떻게 하나의 동일한 문자열로 취급하게 만드시겠습니까?
나는 동형만을 염려합니다.
음역은 (는 라틴어 R에 키릴 문자 P 변합니다) 도움하지 않을이라는 라틴어 유니 코드 변환에 키릴 할 것입니다 파이썬 라이브러리가있다. 언뜻보기에 유니 코드 호환성 형식 (NFKD 또는 NFKC)은 희망적으로 보입니다.하지만 U + 041C (CYRILLIC CAPITAL LETTER EM)는 U + 041C (U + 004D (라틴 대문자))가 아닙니다. 작업.
유일한 해결책은 자신의 알모폼 표를 작성하고 비교하기 전에 모든 문자열을 표준 형식으로 변환하는 것입니다.
참고 : "키릴 문자 P"라고 말하면 나는 속임수를 사용하고 라틴어 동형을 사용했습니다. 키릴 문자를 입력하는 쉬운 방법이 없습니다.
확인. 감사. 나는 이것이 유일한 방법이라고 생각한다. –
표준화 방법을 사용하는 것이 좋습니다. https://docs.python.org/2/library/unicodedata.html#unicodedata.normalize
>>> 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'
"ДРП"를 "DRP"로 간주하지 않겠습니까? OP는 동형이 동등하다고 생각하는 것처럼 들리는 것 같습니다. 이것은 또한 "РАРА"가 "RARA"로 음역 할 것 같은데, 나는 OP가 원하지 않는다고 생각합니다. – Paul
파이썬에서 문자열의'encoding'과'decoding'에 대한 검색 –
@jonrsharpe 비슷하게 생겼지 만 공통점이없는 문자에 대해서는 질문입니다. 유니 코드 문자열을 ASCII 표현으로 "압축"하는 것이 아닙니다. – vpekar
@vpekar하지만 그건 * 어떻게 * 당신이 그들이 같은 문자열이라고 확신하는지, 그렇지 않으면 당신을 믿지 않을 것입니다. – jonrsharpe