최근에 활용해본 적이 있는 형태소 분석을 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 아버지가방에들어가신다
결과로 아버지,가,방,에,들어가,신다 로 분석된 것을 확인할 수 있습니다. 자 다음으로는 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);
});
요래놓고 실행하면?
오...오...올 꽤나 보람차군요. 암튼 이런식으로 문장이나 글을 분석하여 각 형태소로 쪼개어 무언가로 활용할 수 있는 방법을 알아보았습니다.
'dev > node.js' 카테고리의 다른 글
node.js : self signed certificate in certificate chain 해결방법 (0) | 2022.04.26 |
---|---|
These dependencies were not found - tls, net in ./node_modules/.../...js (0) | 2021.05.10 |
nuxt.js + vuetify 개발 환경 설정하는 방법 (0) | 2021.03.31 |
node 스케줄러 - cron vs node-cron vs node-schedule 비교 (0) | 2021.03.06 |
헤로쿠(heroku) don't sleep, 잠들지마~(with node-cron) (3) | 2021.01.13 |
헤로쿠(heroku) 가입부터 node.js 배포까지 (5) | 2021.01.13 |
vscode node.js 실행(launch.json 및 env 설정) (0) | 2020.04.25 |
Nodejs 8+ Cannot debug JavaScript via Nodeclipse (Failed to connect to Standalone V8 VM) (2) | 2020.01.03 |