한자 추출 및 인식하기
- 인공지능 및 데이터과학/자연어처리
- 2021. 7. 2.
보통 문자열을 인식하는 기능등은 많은 라이브러리나 정규표현식으로 쉽게 가져올 수 있지만 한자만 가지고 오는 방법은 별도의 작업을 수행해야 한다.
사실 한자라는 것이 무궁무진한 글자이고 한글과 다르게 무한대로 확장이 가능한 글자라서 컴퓨터 영역에서는 표현하기가 상당히 까다로운데 이럴땐 유니코드를 이용해서 추출하거나 인식할 수 있다.
Java 소스 코드
public static void main( String[] args ) {
String text = "가불有 大韓民國";
for(int i = 0; i < text.length(); i++) {
int charAt = (int)text.charAt(i);
if((charAt >= '\u2E80' && charAt <= '\u2EFF') ||
(charAt >= '\u3400' && charAt <= '\u4DB5') ||
(charAt >= '\u4E00' && charAt <= '\u9FBF')) {
System.out.println(text.charAt(i) + " -> 한자");
} else {
System.out.println(text.charAt(i) + " -> 그외");
}
}
}
아스키코드의 범위에 따라서 한자는 다양한 조합들이 만들어 질 수 있다.
구분 | 시작 | 끝 |
한중일 부수 보충 | 2E80 | 2EFF |
한중일 통합 한자 확장 - A | 3400 | 4DBF |
한중일 통합 한자 | 4E00 | 9FBF |
한중일 호환용 한자 | F900 | FAFF |
한중일 통합 한자 확장 | 20000 | 2A6DF |
한중일 호환용 한자 보충 | 2F800 | 2FA1F |
이와 같이 다양한 한자 구분이 존재할 수 있으나, 국내에서 사용하는 한자의 경우 대다수는 "한중일 통합 한자" 영역안에서 뽑게 되어 있다.
위의 소스를 실행하면 아래와 같이 한자가 잘 인식되는 것을 알 수 있다.
가 -> 그외
불 -> 그외
有 -> 한자
-> 그외
大 -> 한자
韓 -> 한자
民 -> 한자
國 -> 한자
이 포스팅에서는 Java 기반으로 설명했지만 아스키코드 혹은 유니코드를 가지고 인지를 하는 것이기 때문에 Python이나 C 등등 어느 언어로 개발을 하던간에 동일하다.
'인공지능 및 데이터과학 > 자연어처리' 카테고리의 다른 글
문자열 유사도 측정, 편집거리 알고리즘(Levenshtein Distance) 개념 및 Java, Python 예시 (0) | 2023.03.15 |
---|---|
[konlpy] 형태소 분석기별 품사 태깅(Pos-Tagging) 비교 (0) | 2021.06.12 |
[konlpy] 형태소 분석기별 명사(noun) 분석 속도 비교 (0) | 2021.06.12 |
패스트텍스트(FastText) #1, 개념 이해하기 (0) | 2021.06.06 |
[Java] TF-IDF 개념과 자바로 구현 (0) | 2021.05.27 |