티스토리 뷰

dev/node.js

형태소 분석(node.js, mecab)

IT's me 2021. 7. 10. 23:02

최근에 활용해본 적이 있는 형태소 분석을 node.js로 해보려고 합니다. 형태소에 대해서 간략하게 알아봅시다. 

1. 형태소란.
문장을 의미가 있는 가장 작은 단위로 나누는 것이죠. 예를 들어 '아버지가방에들어가신다.' 라고 있다면 ['아버지', '가', '방','에','들어가신다'] 머 이런식으로 나눈다는 거죠. 가방은 어미의 '가'와 '방'으로 나뉠수도 있고 '가방'으로 분리될 수도 있는거구요.

개발쪽에서 봤을 때는 일정한 글에서 가장 많이 사용되는 단어를 파악하는 용도라던지 유사 글을 찾는다던지 할 때 사용할 수 있을 것 같습니다. 형태소로 나누어 활용하려는 방안이 있다면 무엇에든 사용할 수 있겠죠. ?

 

형태소를 나누어 구름형태로 분석한 이미지

그럼 기본적인 node.js 설치가 되어있다는 가정 하에 node.js 버전으로 형태소 분석을 해봅니다. 우선 한글 형태소 분석기는 여러가지가 있는데 mecab-ko, 한나눔, 꼬꼬마, 루씬(아리랑), KoNLPy, KLT, 초고속 한국어 형태소 분석기 MACH, KOMORAN 와 이것저것 많이 있네요. 저는 넷상에서 평가가 괜찮아보이는 mecab-ko를 이용해보기로 했습니다.

mecab-ko는 일본어 형태소 분석기인 MeCab을 기반으로 개발된 한국어 형태소 분석기 입니다.  진행해봅시다.


1. MeCab 설치

우선 MeCab은 윈도우를 지원하지 않으므로 윈도우만 가지고 계신분이 이용하기 위해서는 가상환경에 리눅스를 설치하여 개발하면 될듯 합니다. 

 

리눅스 설치 방법

 

$ wget https://bitbucket.org/eunjeon/mecab-ko/downloads/mecab-0.996-ko-0.9.2.tar.gz
$ wget https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.1-20150920.tar.gz
$ gzip -d .gz
$ tar xvf mecab.tar
$ cd mecab-(version)
$ ./configure
$ make
$ make install
$ cd mecab-ko-dic-(version)
$ ./autogen.sh mecab
$ ./configure
$ make
$ make install

 

맥OS 설치 방법

  - 맥은 brew를 이용하면 아주 초 간단하게 설치할 수 있습니다. 

 

$ brew install mecab-ko
$ brew install mecab-ko-dic

 

설치를 했으면 아래처럼 쉘에서 확인을 하면 됩니다. 

 

mecab 아버지가방에들어가신다

 

아버지가방에들어가신다를 mecab을 통해 분석

 

결과로 아버지,가,방,에,들어가,신다 로 분석된 것을 확인할 수 있습니다. 자 다음으로는 node.js에서 사용할 수 있게 라이브러리를 설치해봅니다. 라이브러리는 mecab-ya가 좋은 것 같습니다. 한국 능력자분인것 같은데 https://github.com/golbin/node-mecab-ya 이런 좋은 라이브러리를 만들어주셨습니다. 기쁜 마음으로 가져다가 사용합시다. 깃헙에 사용방법까지 친절하게 설명해주니 좋게 좋게 따라가지요. 

 

$ npm install mecab-ya

그다음 엔진과 언어팩 같은것을 설치한다.

 

$ node_modules/mecab-ya/bin/install-mecab
$ node_modules/mecab-ya/bin/install-mecab ko

 

여기서 mecab를 설치하는 것 보니 앞서 mecab를 설치하지 않아도 동작이 잘 될것이라 생각이 드는 군요. 사실 mecab-ffi 라이브러리를 쓰려다 실패하고 mecab-ya로 건너왔습니다요.

 

그 다음 세상 간단한 샘플 만들어보기.

 

var mecab = require('mecab-ya');
var text = '아버지가방에들어가신다';
mecab.pos(text, function (err, result) {
    console.log(result);
});

mecab.morphs(text, function (err, result) {
    console.log(result);
});

mecab.nouns(text, function (err, result) {
    console.log(result);
});

 

요래놓고 실행하면?

 

node.js를 통한 mecab

 

오...오...올 꽤나 보람차군요. 암튼 이런식으로 문장이나 글을 분석하여 각 형태소로 쪼개어 무언가로 활용할 수 있는 방법을 알아보았습니다. 


댓글
최근에 올라온 글
최근에 달린 댓글