티스토리 뷰

반응형

Ubuntu 18.04 + Python3.6 을 기준으로 작성된 글 입니다.

KoNLPy 가 설치가 되었다는 가정하에 Mecab 설치 방법부터 정리를 해본다.

설치는 konlpy 공식 문서에 나온 방법으로 하면 의존성까지 모두 체크하고 한국어 사전까지 설치를 해주기 때문에 편리하게 설치 가능하다.

sudo apt-get install curl git
bash <(curl -s https://raw.githubusercontent.com/konlpy/konlpy/master/scripts/mecab.sh)

설치하는데 시간이 조금 걸리고, 설치가 끝나면 아래와 같은 메시지를 볼수 있다.

done!
echo To enable dictionary, rewrite /usr/local/etc/mecabrc as \"dicdir = /usr/local/lib/mecab/dic/mecab-ko-dic\"
To enable dictionary, rewrite /usr/local/etc/mecabrc as "dicdir = /usr/local/lib/mecab/dic/mecab-ko-dic"
make[1]: Nothing to be done for `install-exec-am'.
 ./install-sh -c -d '/usr/local/lib/mecab/dic/mecab-ko-dic'
 /usr/bin/install -c -m 644 model.bin matrix.bin char.bin sys.dic unk.dic left-id.def right-id.def rewrite.def pos-id.def dicrc '/usr/local/lib/mecab/dic/mecab-ko-dic'
Install mecab-python
/tmp /tmp/mecab-ko-dic-2.1.1-20180720
Cloning into 'mecab-python-0.996'...
Unpacking objects: 100% (17/17), done.
/tmp/mecab-ko-dic-2.1.1-20180720

사용자 사전을 편집 하기 위해서는 원본 소스파일이 필요하기 때문에 위의 경로를 참고 한다.

tmp 폴더는 언제든 삭제 될수 있으니 자연어 처리 프로젝트 파일 폴더로 옮겨 온다.

mv /tmp/mecab-ko-dic-2.1.1-20180720 .

사용자 사전은 mecab-ko-dic-2.1.1-20180720/user-dic/ 폴더에 위치한다.

user-dic 폴더 내에는 

README.md
nnp.csv
person.csv
place.csv 

파일이 있으며 README 를 보면 예제가 들어있다. 

https://github.com/Pusnow/mecab-ko-dic-msvc/blob/master/user-dic/README.md

 

GitHub - Pusnow/mecab-ko-dic-msvc: mecab-ko-dic for mecab-ko-msvc

mecab-ko-dic for mecab-ko-msvc. Contribute to Pusnow/mecab-ko-dic-msvc development by creating an account on GitHub.

github.com

git 에서도 확인이 가능하다.

사용자 사전을 추가할때 *.csv 파일을 참고하므로 자신이 원하는 파일을 생성해서 관리를 해도 된다.

필자는 브랜드명 고유명사와 뷰티분야의 일반 명사들, 그리고 인터넷 신조어를 관리하기 위해 파일 3개를 추가했다.

brand.csv, beauty.csv 등 

그리고 체계적인 관리를 위해 엑셀로 원본 파일을 관리하고 csv 로 내보내기로 했다.

사용자 사전을 만들기 위해 먼저 참고 해야 할것은 당연히 어떤 양식으로 등록 해야 하는지 참고 해야 할것이다.

그러기 위해 먼저 태그의 종류를 참고하고

https://docs.google.com/spreadsheets/d/1-9blXKjtjeKZqsf4NzHeYJCrr49-nXeRF6D80udfcwY/edit#gid=589544265

 

mecab-ko-dic 품사 태그 설명

태그 v2.0 실질의미유무,대분류(5언 + 기타),세종 품사 태그,mecab-ko-dic 품사 태그 태그,설명,태그,설명 실질형태소,체언,NNG,일반 명사,NNG,일반 명사 NNP,고유 명사,NNP,고유 명사 NNB,의존 명사,NNB,의존

docs.google.com

양식을 참고한다.

https://docs.google.com/spreadsheets/d/1-9blXKjtjeKZqsf4NzHeYJCrr49-nXeRF6D80udfcwY/edit#gid=1718487366

 

mecab-ko-dic 품사 태그 설명

태그 v2.0 실질의미유무,대분류(5언 + 기타),세종 품사 태그,mecab-ko-dic 품사 태그 태그,설명,태그,설명 실질형태소,체언,NNG,일반 명사,NNG,일반 명사 NNP,고유 명사,NNP,고유 명사 NNB,의존 명사,NNB,의존

docs.google.com

 

위를 참고하여 아래와 같은 엑셀 문서를 만들었다.

 

품사 태그 종류 NNP 는 고유명사 NNG 는 일반 명사이다.

그리고 종성 유무 T,F 로 잘 체크하여 문서를 작성하고 csv 로 내보낸다.

그리하여 user-dic 폴더에 넣어주는데 csv 파일이 아래와 같은 결과가 나오면 된다.

3CE,,,,NNP,브랜드,F,3CE,*,*,*,*,*
NYX,,,,NNP,브랜드,F,NYX,*,*,*,*,*
RMK,,,,NNP,브랜드,F,RMK,*,*,*,*,*
fmgt,,,,NNP,브랜드,F,fmgt,*,*,*,*,*
구찌,,,,NNP,브랜드,F,구찌,*,*,*,*,*
글로시에,,,,NNP,브랜드,F,글로시에,*,*,*,*,*
끌레드뽀,,,,NNP,브랜드,F,끌레드뽀,*,*,*,*,*
끌레드뽀 보떼,,,,NNP,브랜드,F,끌레드뽀 보떼,*,*,*,*,*

파일을 넣은 후 다시 컴파일 해주면 끝!

./mecab-ko-dic-2.1.1-20180720/tools/add-userdic.sh

done! 메시지가 보이면 잘 된것이다.

 

python 코드 실행해서 해보니 너무 잘되고, okt 보다 관리도 편리하고 빠르고 잘된다 .

-----------------------------------
Mecab 품사 태깅 : [('수정', 'NNG'), ('용', 'XSN'), ('으로', 'JKB'), ('들', 'VV'), ('고', 'EC'), ('다니', 'VV'), ('는', 'ETM'), ('쿠션', 'NNG'), ('입니다', 'VCP+EF'), ('.', 'SF'), ('-', 'SY'), ('세미', 'NNG'), ('매트', 'NNG'), ('제형', 'NNG'), ('-', 'SY'), ('얇', 'VA'), ('게', 'EC'), ('밀착', 'NNG'), ('하', 'XSV), ('-', 'SY'), ('심플', 'NNP'), ('한', 'MM'), ('케이스', 'NNG'), ('수정', 'NNG'), ('용', 'XSN'), ('으로', 'JKB'), ('저', 'MM'), ('세', 'MM'), ('가지', 'NNBC'), ('특징', 'NNG'), ('을', 'JKO'), ('선호', 'NNG'), ('하', 'XSV'), ('는데', 'EC'), ('마침', 'MAG'), ('광고', 'NNG'), ('도', 'JX'), ('많이', 'MAG'), ('보이V+EC'), ('구매', 'NNG'), ('했', 'XSV+EP'), ('어요', 'EF'), ('.', 'SF'), ('첨', 'MAG'), ('봤', 'VV+EP'), ('을', 'ETM'), ('때', 'NNG'), ('는', 'JX'), ('케이스', 'NNG'), ('가', 'JKS'), ('살짝', 'MAG'), ('장난감', 'NNG'), ('마냥', 'JKB'), ('유치', 'NNG'), ('해', 'XSV+EC'), ('보이', 'VV'), ('긴', 'ETN+JX'), ('했', ', ('는데', 'EC'), ('그래도', 'VV+EC'), ('계속', 'MAG'), ('보다', 'MAG'), ('보', 'VV'), ('니', 'EC'), ('괜찮', 'VA'), ('은', 'ETM'), ('것', 'NNB'), ('같', 'VA'), ('아요', 'EF'), ('ㅎㅎ', 'IC'), ('작', 'VA'), ('아서', 'EC'), ('들', 'VV'), ('고', 'EC'), ('다니', 'VV'), ('기', 'ETN'), ('도', 'JX'), ('좋', 'VA'), ('', 'VCP'), ('라서', 'EC'), ('파우', 'NNG'), ('치', 'XSV+EC'), ('안', 'NNG'), ('에서', 'JKB'), ('공간', 'NNG'), ('차지', 'NNG'), ('도', 'JX'), ('많이', 'MAG'), ('안', 'MAG'), ('합니다', 'VV+EF'), ('.', 'SF'), ('모공', 'NNG'), ('은', 'JX'), ('신경', 'NNG'), ('써서', 'VV+EC'), ('잘', 'MAG'), ('올리', 'VV'), ('면', 'VX'), ('는', 'ETM'), ('정도', 'NNG'), ('입니다', 'VCP+EF'), ('(', 'SSO'), ('원래', 'NNG'), ('모공', 'NNG'), ('이', 'JKS'), ('크', 'VA'), ('지', 'EC'), ('는', 'JX'), ('않', 'VX'), ('아요', 'EF'), ('.', 'SF'), ('.)', 'SY'), ('주근깨', 'NNG'), ('나', 'JC'), ('잡티', 'NNG'), ('정도', 'NNG'), ('도', 'JX'), ('약하'', 'VV+EF'), ('.', 'SF'), ('한', 'MM'), ('가지', 'NNBC'), ('아쉬운', 'VA+ETM'), ('점', 'NNG'), ('은', 'JX'), ('저', 'NP'), ('는', 'JX'), ('21', 'SN'), ('호', 'NNBC'), ('정도', 'NNG'), ('의', 'JKG'), ('피부', 'NNG'), ('이', 'VCP'), ('고', 'EC'), ('21', 'SN'), ('c', 'SL'), ('컬러', 'NNG'), ('를', 'JKO'), ('샀', ' ('좀', 'MAG'), ('회색빛', 'NNG'), ('이', 'JKS'), ('도', 'VV'), ('는', 'ETM'), ('것', 'NNB'), ('같', 'VA'), ('아요', 'EF'), ('ㅠ', 'UNKNOWN'), ('분명히', 'MAG'), ('핑크', 'NNG'), ('베이스', 'NNG'), ('이', 'VCP'), ('긴', 'ETN+JX'), ('한데', 'VX+EC'), ('좀', 'MAG'), ('부자연', 'XR'), ('스럽', 'XSA'), ('고', 'EC')), ('느낌', 'NNG'), ('이', 'JKS'), ('들', 'VV'), ('어요', 'EF'), ('.', 'SF'), ('.', 'SY'), ('근데', 'MAJ'), ('어차피', 'MAG'), ('수정', 'NNG'), ('용', 'XSN'), ('으로', 'JKB'), ('쓰', 'VV'), ('기', 'ETN'), ('때문', 'NNB'), ('에', 'JKB'), ('감수', 'NNG'), ('하', 'XSV'), ('고', 'EC'), ('들', 'VV'), ('고', 'EC'), ('), ('첫', 'MM'), ('화장', 'NNG'), ('용', 'XSN'), ('으로', 'JKB'), ('쓰', 'VV'), ('고', 'EC'), ('싶', 'VX'), ('지', 'EC'), ('는', 'JX'), ('않', 'VX'), ('은', 'ETM'), ('컬러', 'NNG'), ('감', 'XSN'), ('이', 'VCP'), ('에요', 'EF'), ('ㅎㅎ', 'IC'), ('세미', 'NNG'), ('매트', 'NNG'), ('-', 'SY'), ('매트', 'NNG'), ('이ETN'), ('때문', 'NNB'), ('에', 'JKB'), ('광', 'MAG'), ('나', 'NP'), ('는', 'JX'), ('표현', 'NNG'), ('은', 'JX'), ('아닙니다', 'VCN+EF'), ('.', 'SF'), ('원래', 'MAG'), ('광', 'MAG'), ('나', 'NP'), ('는', 'JX'), ('표현', 'NNG'), ('을', 'JKO'), ('별로', 'MAG'), ('좋', 'VA'), ('아', 'EC'), ('하', 'VV'), ('지', 'EC'), ('개인', 'NNG'), ('적', 'XSN'), ('으로', 'JKB'), ('는', 'JX'), ('괜찮', 'VA'), ('습니다', 'EF'), ('ㅎㅎ', 'IC'), ('아', 'IC'), ('마스크', 'IC'), ('묻', 'VV'), ('어', 'EC'), ('남', 'NNG'), ('정도', 'NNG'), ('.', 'SF'), ('.?', 'SY'), ('거의', 'MAG'), ('안', 'MAG'), ('묻', 'VV'), ('긴', 'ETN+JX'), ('하', 'VX'), ('그래도', 'VV+EC'), ('코', 'NNG'), ('근방', 'NNG'), ('은', 'JX'), ('묻어나', 'VV'), ('는', 'ETM'), ('편', 'NNB'), ('이', 'VCP'), ('에요', 'EF'), ('ㅎㅎ', 'IC')]
-----------------------------------
Mecab 명사 추출 : ['수정', '쿠션', '세미', '매트', '제형', '밀착', '느낌', '심플', '케이스', '가지', '특징', '선호', '광고', '구매', '때', '장난감', '유치', '것', '사각형', '파우', '안', '공간', '차지', '모공', '신경', '정도', '원래', '주근깨', '잡티', '점', '저', '호', '피부', '컬러', '회색빛', '핑크', '베이스', '때문', '감수', '화장', '나', '표현', '개인', '남', '데', '코', '근방', '편']
-----------------------------------
-----------------------------------
Mecab 명사 불용어 + 중복 제거 : ['수정', '쿠션', '세미', '매트', '제형', '밀착', '느낌', '심플', '케이스', '가지', '특징', '선호', '광고', '구매', '장난감', '유치', '사각형', '파우', '공간', '차지', '모공', '신경', '정도', '원래', '주근깨', '잡티', '피부', '컬러', '회색빛', '핑크', '베이스', '때문', '감수', '화장', '표현', '개인', '데', '코', '근방', '편']
-----------------------------------
OKT 명사 불용어 + 중복 제거 : ['수정', '쿠션', '세미', '매트', '형', '밀착', '느낌', '심플', '케이스', '세', '가지', '특징', '선호', '마침', '광고', '보이', '구매', '살짝', '장난감', '마냥', '유치', '계속', '기도', '사각형', '파우치', '공간', '차지', '모공', '신경', '정도', '원래', '주근깨', '잡티', '피부', '컬 '별로', '개인', '마스크', '거의', '코', '근방', '편이']
-----------------------------------
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함