2013-10-31 2 views
0

두 개 이상의 언어로 된 텍스트를 포함하는 텍스트 문서의 코퍼스가 있습니다.파이썬에서 유니 코드 문자 범위를 감지하는 방법은 무엇입니까?

내가 읽는 각 줄에 대해 작성한 언어를 알아야합니다.이 언어는 힌디어 (U + 0900-U + 097F)와 텔루구 어 (U + 0C00- U + 0C7F).

내 프로그램이 다른 스크립트로 줄을 필터링하도록하려면 어떻게합니까? 사용되는 가장 높은 코드 포인트를 골라

답변

8

사용 max(), 당신의 범위에 대한 일치 :

def detect_language(line): 
    maxchar = max(line) 
    if u'\u0c00' <= maxchar <= u'\u0c7f': 
     return 'telugu' 
    elif u'\u0900' <= maxchar <= u'\u097f': 
     return 'hindi' 
    return 'english' 

데모 :

>>> detect_language(u'Hello world!') 
'english' 
>>> detect_language(u'తెలుు') 
'telugu' 
>>> detect_language(u'हिन्दी') 
'hindi' 
+0

안녕 @Martijin 왜 당신이 고려하는 경우에만 최대 문자? 그것에 빛을 비추십시오. –

+0

@RajanChauhan : 가장 높은 코드 포인트가 텔루구 어 범위에 없다는 것을 알고 있으면 다른 코드 포인트도 테스트 할 필요가 없으며 텍스트에 다른 텔루구 코드 포인트가 없습니다. 이 최대 코드 포인트가 힌디어 범위에서 발견되지 않으면 다른 코드 포인트도 다시는 나타나지 않습니다. 공백이나 줄 바꿈과 같은 '영어'코드 번호는 텔루구 어와 힌디어에서도 사용되므로 다른 코드 포인트 (최대 값이 아닌)를 보면 오 탐지 (false positive)가 발생할 수 있습니다. –