“같은 의미의 키워드”를 잘 찾아내기 위해서는 단어 중에서도 핵심적인 뜻을 찾아내는 것이 중요하다고 판단했다. 따라서 한국어 용언을 분석하는 방법에 대해서 찾아봤다. 그 과정에서 맞춤법과 띄어쓰기를 함께 교정했다.

Untitled

Untitled

한국어 용언을 분석하는 tool은 KoNLPy에서 library 형태로 제공하는데, time performance는 첫번째 사진과 같다. 첫번째 그래프만 봤을 때는 Mecab이 가장 뛰어나고 Twitter가 그 다음인 것처럼 보인다. 두번째 예시 문장에 대해 Twitter package가 분석한 내용이 가장 합리적으로 보였고, Kkma가 가장 잘게 쪼개주는 것으로 보여 Twitter와 Kkma를 활용해보기로 선택했다.

다음은 해당 패키지를 사용하기 위해 필요한 환경설정이다.

pip install tweepy==3.10.0
apt-get update
apt install default-jdk

"날아왔습니다 날아왔어요 날아왓음 날아옴” 4가지 단어에 대해 용언을 분석해봤을 때, 각각 다른 결과를 도출할 수 있었다.

[('날아왔습니다', 'Verb'), ('날아왔어요', 'Verb'), ('날아왓음', 'Noun'), ('날아옴', 'Verb')] #okt
['날아오', '았', '습니다', '날으', '아', '오', '았', '어요', '날으', '아', '왓', '음', '날아오', 'ㅁ'] #Kkma

keyword를 매칭할 때 Kkma쪽이 조금 더 정교한 결과값을 도출해낼 수 있을 것으로 예상하는데, ‘날아음’이 눈에 띄었다. Twitter 용언 분석을 활용했을 때 이 단어가 Noun(명사)으로 분류된 것도 사전에서 의미를 찾지 못해 명사겠거니 하고 분류해버린 것 같다는 예상도 있었다. 그래서 용언 분석기 진입 이전 맞춤법 교정 용도로 py-hanspell을 사용해봤다.

pip으로 설치할 경우 오류가 교정되지 않은 버전으로 설치되어 에러가 발생하므로, 공식 github에서 폴더를 다운받아서 직접 설치를 진행해야 한다.

git clone <https://github.com/ssut/py-hanspell.git>
cd py-hanspell/
python setup.py install

동일한 text에 대해 hanspell을 사용해 교정해보니 올바른 단어로 교정되는 것을 확인할 수 있었다.

Checked(result=True, original='날아왔습니다 날아왔어요 날아왓음 날아옴', 
checked='날아왔습니다 날아왔어요 날아왔음 날아옴',
 errors=1, 
words=OrderedDict([('날아왔습니다', 0), ('날아왔어요', 0), ('날아왔음', 1), ('날아옴', 0)]), 
time=0.035533905029296875)

교정을 거치고 용언 분석을 진행했을 때, Okt에서 정상적으로 분류되는 것을 확인할 수 있었다.

[('날아왔습니다', 'Verb'), ('날아왔어요', 'Verb'), ('날아왔음', 'Verb'), ('날아옴', 'Verb')] #okt
['날아오', '았', '습니다', '날으', '아', '오', '았', '어요', '날으', '아', '오', '았', '음', '날아오', 'ㅁ'] #Kkma

위에서 사용한 hanspell의 대체재로 문장 띄어쓰기를 위주로 학습된 PyKoSpacing이 있는데, 성능이 잘 나오지 않을 경우 대체재로 활용할 수 있다. 다음과 같이 설치 후 사용하면 된다.

pip install git+https://github.com/haven-jeon/PyKoSpacing.git