최근 전산 영어학 관련 업무를 하다보니 어간 추출(Stemming)이나 원형 복원(Lemmatization)을 할 일이 많습니다. 이미 이쪽 분야는 많이 연구되어서 쉽게 사용할 수 있는 자바 라이브러리(LingPipe, Stanford Core NLP, OpenNLP 등등)가 널려 있습니다. 문제는 제가 필요한 건 오직 영어 동사의 원형을 복원하는 작업인데, 대부분의 라이브러리에서는 Lemmatizer를 단독으로 제공하지 않고, Stemmer, POS Tagger 등과 함께 제공한다는 것이었지요. 용량이 작은 서버에 올려야 했기에 이런 추석종합선물세트 같은 라이브러리 패키지를 사용하기에는 어려웠습니다. 그래서 동사만 원형복원하는 코드를 간단하게 작성해봤습니다. (다행히도 영어 동사의 굴절 법칙은 아주아주 단순합니다.)
다들 잘 아시겠지만 굳이 다시 정리하자면
따라서 영어 동사를 원형 복원하는 작업은 먼저 불규칙 목록에서 일치하는 게 있는 경우 해당 동사를 반환하고, 그렇지 않은 경우는 규칙에 따라 복원해 가면서 동사 목록에서 일치하는게 있는지 확인하면 되겠습니다. 간단하죠?
함수 부분은 이렇게 되겠습니다. 간단하죠? 불규칙 목록을 파일에서 읽어오도록 하면 좋겠지만, java 파일 하나로 끝내고 싶었던 관계로 데이터를 모두 코드에 넣어보았습니다. 함부로 열지 마세요! 무지막지하게 깁니다. ^^
이렇게 가볍게 영어 동사 원형 복원기를 만들어서 사용한 결과 용량 작은 서버에서 아주 잘 돌아가서 서버랑 레마타이저는 행복하게 오래오래 살았답니다...!
[Python3] 손상된 ZIP 압축 파일 복구하기 (25) | 2018.06.24 |
---|---|
SIMD를 이용한 깁스 샘플링 연산 최적화(SSE2, AVX) (0) | 2018.05.06 |
동시출현빈도 제대로 계산하기! (10) | 2018.03.04 |
[Python] TextRank 구현 코드 (55) | 2017.04.20 |
[Python] 특정 분포가 멱법칙(Power-law Distribution)을 따르는지 확인하기 (0) | 2017.04.11 |
[Python] 네이버 영화 한줄평 크롤링 코드 (14) | 2017.03.17 |
댓글 영역