자연어처리에서 가장 많은 시간을 소요하는 것이 무엇일까? 현업이라면 아마 이런 말을 하지 않을까 싶다. 바로 사전을 만드는 작업이다. 자연어처리는 사전을 만들면 만들수록 품질이 좋아지게 되는데 이는 현재 존재하는 오픈 품사 사전이 매우 적으며, 개체명과 신조어 같은 것들이 포함이 되어 있지 않기 때문이다. 일반적으로 상용 검색엔진에서 제공하는 사전은 약 100만개 이상의 품사를 지원하고 활용하게 되는데 이는 이전 포스팅에서 작성한 형태소 분석 확인 사이트에서 엑소브레인(Exobrain)과 코모란(Komoran)의 형태소 분석 품질을 보면 쉽게 알 수 있다. 오픈소스를 활용해서 구축해야 하는 경우 일반적으로 사용자사전을 상황에 따라 많이 구축하게 되며, 이를 별도로 맡는 분들이 따로 계신다. 마치 딥러닝에..
코모란은 Java에서 사용하는 대표적인 오픈소스 형태소 분석기 중 하나이다. 사용하기가 매우 편리하고, 형태소 분석 성능 역시 뛰어나기 때문에 Java든 Python이든 많이 사용하고 있다. Pom.xml 우선 코모란을 설정하기 위해서 pom.xml 디펜던시(dependency)를 설정해야 하는데 코모란 디펜던시를 위해서 레파지토리도 추가해야 한다. Repository jitpack.io https://jitpack.io Dependency com.github.shin285 KOMORAN 3.3.4 위와 같이 pom.xml 설정이 완료되면, pom.xml을 업데이트하여, 디펜던시 jar 파일을 다운로드 한다. repository -> com -> github -> shin285 -> KOMORAN -> ..
형태소 분석을 하기 위해서는 당연히 형태소 분석기를 돌리면 되지만, 형태소 분석기를 교차검증 해야 될 필요도 있고 다른 형태소 분석기는 어떻게 분석을 하는지 알아야 될 때도 있다. 각설하고, 우리나라에는 대표적으로 형태소 분석을 확인할 수 있는 사이트가 여럿있지만 여기서는 2가지를 설명해보고자 한다. 엑소브레인(Exobrain) 엑소브레인은 한국전자통신연구원(ETRI, 에트리)와 국내 인공지능 및 검색업체와 같이 프로젝트를 한 사업으로 참여한 업체는 와이즈넛(Wisenut)과 솔트룩스(Saltlux) 등이 있다. 와이즈넛과 솔트룩스는 상용 검색엔진을 만드는 업체로 국내 다섯손가락 안에 드는 업체이기 때문에 자연어처리 기술이 매우 잘 발달되어 있다. 엑소브레인은 에트리와 국내 굴지의 업체들이 함께 만들었으..
바로 이전 포스팅에서는 형태소 분석기별 가장 중요한 명사를 추출하는 성능(속도 측면)을 비교해 봤습니다. 품사 태깅(pos-tagging)은 우리가 흔히 형태소 분석기라는 말과 동의어로 생각하는 기능으로 명사만 추출하는게 아니라 문장의 모든 품사를 분석하게 됩니다. 명사만 추출하는 것은 사실 어렵지 않습니다. 단어안에 명사를 그냥 찾으면 그만이니까요. 하지만 pos-tagging은 한국어 문법을 제대로 이해해야 하고, 분석 방법과 퀄리티에 따라 속도에 큰 영향을 주게 됩니다. 즉, 명사만 추출하는 것으로 속도가 오래 걸리지 않지만 대다수 pos-tagging 작업으로 인해서 형태소 분석기가 오래 걸리게 되는 것이죠. 예를 들어, 자모 단위로 분리해서 분석을 한다면 상당히 큰 cpu 자원을 사용할 수도 있..
최근 konlpy 사이트에 적혀 있는 형태소 분석기의 분석 속도와 실제로 느꼈던 kolnpy의 개별 형태소 분석기의 성능이 맞지 않는 것 같아서 비교적 용량이 많은 문장을 기반으로 형태소 분석기의 성능을 체크해보려고 합니다. 실험에 사용된 형태소 분석기는 총 3종인 코모란(Komoran), 꼬꼬마(Kkma), Okt(Open korean text)이며 꼬꼬마는 분석속도가 나쁜 것이 체감이 날 정도로 좋지 않지만 코모란과 okt의 분석 속도도 예상 밖인것 같아서 제대로 시간을 체크하고자 하였습니다. 공통코드 import urllib.request import time from konlpy.tag import Okt from konlpy.tag import Komoran from konlpy.tag impo..
자연어처리(NLP)에서 토크나이징(Tokenizing)이란 데이터를 처리하기 위해서 최소한의 의미를 기반으로 토큰(Token)을 뽑는 것을 말한다. 형태소(Morpheme)는 언어에서 의미를 가지는 가장 작은 단위이기 때문에 토크나이징을 한다는 것은 사실 형태소를 기반으로 쪼개는 경우가 가장 많고, 결국 필드에서 형태소 분석는 토크나이징(자연어처리에 한함)과 유사한 의미로 사용된다. 그리고 형태소 분석(Morphological analysis)은 품사 기준으로 데이터를 분석하기 때문에 품사 태깅(part-of-speech tagging, POS tagging)과 거의 동의어(토크나이징 = 품사태깅 = 형태소 분석)로 사용한다. 실제로 필드에서 형태소 분석이란 대부분 단어를 품사 기준으로 분리하고 품사로 ..