regex for Korean - Being free from ord/chr in Hangeul analysis.
Project description
ko_re: regex for Korean - Being free from ord/chr in Hangeul analysis.
소개
ko_re는 한국어(한글)을 분석하기 위해 regex(정규표현식)에 문법을 추가한 패키지입니다. ko_re로는 한글과 관련한 많은 추가 기능을 사용할 수 있습니다.
import ko_re
regex = ko_re.compile(r'\b[^ ]+(?=[::^0]).\b')
print(regex..findall(...))
설치
ko_re는 pip를 통해 설치하실 수 있습니다.
pip install -U ko_re
상세
기본적으로 ko_re는 bracket expression에서 특정한 조건을 발생시켰을 때 작동하는 추가적인 기능을 가미한 것입니다. 해당 조건을 제외한 나머지 상황에서는 파이썬의 기본 re 라이브러리와 동작이 완전히 같습니다.
우선 ko_re를 불러오려면 ko_re.compile()을 사용합니다. ko_re는 현재로선 compile만 지원합니다. 나머지는 compile로 re 객체를 만든 뒤 사용하세요.
ko_re에서 처리되는 구문은 다음과 같습니다: [초성:중성]
(가
같은 종성이 없는 글자의 경우) 또는 [초성:중성:종성]
, 또한 이는 regex의 bracket expression처럼 글자를 죽 이어서 쓰거나 -
을 처리하는 것으로 여러 음소(소리의 최소 단위로, 자음과 모음을 의미합니다.)를 선택합니다.
예를 들어 [ㄱㄴ:ㅏ]
는 regex구문에서 [가나]
를 의미하고, [ㄹㅎ:ㅗ:ㄶㅈ]
은 [롢롲혾홎]
을 의미합니다. 또한 [ㄱ-ㄹ:ㅏ]
는 [가까나다따라]
를 의미합니다([가나다라]
가 아님에 주의하세요!).
# 예시 코드
import ko_re
some_regex = ko_re.compile('[ㄱㄴ:ㅏㅓㅣ:ㄶㄷㄹㅊ]')
print(some_regex) # re.compile('[갆갇갈갗걶걷걸겇긶긷길깇낞낟날낯넎넏널넟닎닏닐닟]')
some_regex.findall('길을 걷는 사람을 보았다. 그는 날 볼 낯이 없어서 멀리멀리 떠났다.') # ['길', '걷', '날', '낯']
또한 regex구문처럼 ^
도 지원합니다. 예를 들어 [^ㄷㄹㅉㅎ:ㅏ]
는 [가까나따마바빠사싸아자차카타파]
(ㅏ
조합 중 다,라,짜,하
없음.)입니다.
만약 해당 자리에 모든 구문을 일치시키고 싶다면 해당 자리를 비워두거나 .으로 나타낼 수도 있습니다. 예를 들어 [.:ㅏ]
는 가능한 모든 ㅏ
조합을 의미하고, [:ㅗ:ㄴ]
은 [곤꼰논돈똔...혼]
을 의미합니다. 비워두는 경우와 .으로 나타내는 경우는 완전히 동일하며 바꿔쓸 수 있습니다(단, 한 칸이 .으로 채워져 있다면 그 칸에는 다른 문자가 있어서는 안 됩니다.). 이를 응용하여 모든 한글 조합을 알아낼 수 있습니다. [::]
(혹은 [.:.:.])
이 바로 그 경우입니다.
고급
된소리를 제외한 조합형 음소는 괄호를 이용해서 표현할 수 있습니다. 예를 들어 ㅚ
는 (ㅗㅣ)
와 완전히 같은 구문이고, ㄶ
은 (ㄴㅎ)
과 완전히 같습니다. 예를 들어 [:ㅞㅢ:ㄶㄼ]
은 [:(ㅜㅔ)ㅢ:ㄶ(ㄹㅂ)]
과 같습니다.
0
은 해당 자리에 음소가 없다는 의미입니다. 예를 들어 [ㄱ:ㅏ:0ㄴㅎ]
은 [가간갛]
와 같습니다. 초성과 중성에는 기본적으로는 0
을 사용하는 것이 금지되지만 특별한 경우, 한 음소를 나타내고 싶을 때, 사용됩니다. 예를 들어 [0:ㅏ-ㅜ]
혹은 [0:ㅏ-ㅜ:0]
은 [ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜ]
를 의미합니다. 또한 [ㄱ-ㄹ:0]
또는 [ㄱ-ㄹ:0:0]
은 [ㄱㄲㄴㄷㄸㄹ]
를 의미합니다. 하지만 초성과 중성에 0
이 들어가는 경우는 몇 가지 제약이 있는데요, 우선 0
이 들어가면 그 자리에는 0
외에 다른 음소를 작성할 수 없습니다. 다음은 몇 가지 조합은 0
을 사용할 수 없다는 것입니다. 예를 들어 [ㄱ:0:ㅎ]
을 생각해 봅시다. 이런 한글은 곰곰히 생각해도 사용할 수 있는 형태는 아닙니다. 이것 뿐만 아니라 [0:ㅏ:ㅎ]
나 [0:0:0]
도 금지됩니다.
정규 음운 후행 자모순
regular_first
자모순('정규 음운 후행 자모순' 이하 '후행 자모순')은 된소리나 자음군, 합용자들이 뒤로 보내진 순서입니다.
비교하면 기본 순서(유니코드순서아지 사전순)은 다음과 같습니다:
초성: ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ
중성: ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ
종성: ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ
하지만 후행 자모순은 다음과 같습니다:
초성: ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎㄲㄸㅃㅆㅉ
중성: ㅏㅑㅓㅕㅗㅛㅜㅠㅡㅣㅐㅒㅔㅖㅘㅙㅚㅝㅞㅟㅢ
종성: ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎㄲㄳㄵㄶㄺㄻㄼㄽㄾㄿㅀㅄㅆ
이 순서는 -
를 통해 값에 접근할 때 사용되지만, 정렬은 일반적인 유니코드 순서(사전 순서)대로 정렬됩니다.
예를 들어 [ㄱ-ㅎ:0:0]
은 기본 순서에서는 모든 초성을 포함하는 [ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ]
이지만, 후행 자모순에서는 [ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ]
입니다.
이 자모순은 특히 된소리가 아닌 일반적으로 알고 있는 순서를 사용하고 싶을 때 유용하게 사용할 수 있습니다.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for korean_regex-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d23134b14616a320a88a50b3c34e66f50e2f8f8fa26d5182d300644b2e30a472 |
|
MD5 | e7641bfc830a3b894229a23495027f34 |
|
BLAKE2b-256 | 033d6607cc3fae03230234400d5ecbec06374b4b7ea15a68309f05aa5e8d7abb |