레이블이 mecab-ko-dic인 게시물을 표시합니다. 모든 게시물 표시
레이블이 mecab-ko-dic인 게시물을 표시합니다. 모든 게시물 표시

2019년 2월 11일 월요일

lucene-analysis-nori 사전교체 방법

(환경)
Windows7, solr-7.6.0, apache-ant-1.10.5, mecab-ko-dic-2.1.1-20180720


(JDK 미설치시)

  • JAVA설치
  • %JAVA_HOME% 시스템변수 추가
  • %ANT_HOME% 시스템변수 추가
  • Path에 각각 실행경로 추가
    • %JAVA_HOME%\bin
    • %ANT_HOME%\bin





(SOLR 미설치시)

  1. solr zip파일 다운로드 (http://lucene.apache.org/solr/mirrors-solr-latest-redir.html)
  2. 원하는 곳에 압축해제 (%JAVA_HOME%\solr-7.6.0)
  3. 콘솔실행(CMD) 후 solr start
  4. solr create -c [CoreName] (코어 이름은 원하는대로..)
  5. solr restart



(SSL 인증서 오류가 발생하는 경우 → https)

  1. cd %JAVA_HOME%\Java\jdk버전\jre\lib\security
  2. ..\..\bin\keytool -import -alias HQSSL -file "%JAVA_HOME%\HQSSL.cer" -keystore cacerts -storepass changeit
    • 이 인증서를 신뢰합니까? [아니오]: 
    • 인증서가 키 저장소에 추가되었습니다.



  • 참고) npm config set cafile %JAVA_HOME%\HQSSL.cer (https://www.npmjs.com/get-npm)



(첫실행시)

  1. 디렉토리생성 mkdir -p ~\lucene\analysis\nori\src\resources\org\apache\lucene\analysis\ko\dict
  2. cd %JAVA_HOME%\lucene\analysis\nori
  3. ant ivy-bootstrap
  4. ant regenerate



(이후 사전갱신 시)

  1. cd %JAVA_HOME%\lucene\analysis\nori
  2. %JAVA_HOME%\lucene\build\analysis\nori\mecab-ko-dic-2.1.1-20180720 (이곳에 csv파일 복사)
  3. ant regenerate
  4. cd ..
  5. ant nori
  6. %JAVA_HOME%\lucene.analyzers.nori\lucene\build\analysis\nori\lucene-analyzers-nori-7.6.0.jar (jar 생성됨)
  7. %JAVA_HOME%\solr-7.6.0\server\solr-webapp\webapp\WEB-INF\lib\lucene-analyzers-nori-7.6.0.jar (jar파일 이곳으로 복사)


잡담) 설정 잡는거나 설치하는게 개짜증이네. 이래서 JAVA가 싫어. ㅠㅠ




2018년 12월 7일 금요일

Mecab-ko-dic 사전관리 방법


mecab-ko-dic 사전관리

Mecab-ko-dic 사전은 아주 간편한 몇가지 규칙으로 관리된다.
비전문가라 하여도 다른 형태소분석기에 비해, 간단하게 배우고 관리할 수 있다는 장점이 있다.
(사전 설치/추가 방법은 본 포스트 하단참고)


레코드 구조
단어, left-ID, right-ID, Weight, 품사, 의미분류, 종성유무, 읽기, 타입, 첫번째품사, 마지막품사, 표현, 색인표현
  • 진한 청색글자 부분이 핵심, 나머지는 mecab-ko 사전 엔진이 일아서 처리해주는 부분이거나 작성치 않아도 문제가 되지 않는부분. 

Excel형식을 예로들어 설명하도록 하겠다. (어이쿠; 엄청 쪼마나네; '클릭확대로 볼것')


단어

  • 새로이 추가될 단어를 써넣는 부분.

Left & Right ID

  • 사용자 사전 관리시 ID는 빈칸으로 두어도 무방하다. 컴파일 할때 알아서 처리해 준다.

가중치(Weight)

  • 값은 낮을수록 가중치가 올라간다. 즉, 값이 0 이면 (왠만하면) 무조건적인 단어분리를 한다. (마이너스 값도 가능하긴 하다.)
  • 사용자관리시 보통 빈값 내지는 0을 주는경우가 많다. 하지만 너무 낮은 값은 다른 결과에도 영향을 미칠 가능성이 크기에 확실한 키워드가 아닌이상 10이하 적용은 지양한다.

품사 (사용자 사전의 경우엔 일반적으로 NNG or NNP)

  • 품사를 작성하는 부분이다. (참고: 품사 태그 사전 (MeCap) )
  • 보통 추가하는 키워드의 타입이 일반명사나 복합명사일 것이고 사용자사전일 것이기에, NNG(일반명사), NNP(고유명사)외에는 거의 쓰지않을 것이다. 
  • (상식적으로, 부사나 동사같은 단어가 신조어로 등장할 가능성은 제로에 가까울 것이다.)

의미분류

  • 인명, 혹은 지명 (아니면 *), 
  • (인명/지명 외에는 사용할 가능성이 거의 없다.ㅎㅎ)
  • "인명"의 경우에는 반드시 품사를 "NNP"로 해 준다. "지명"의 경우는 되도록 "NNP"로 해 준다.

종성유무

  • 글자 마지막 종성이 존재하면 T(True) 아니면 F(False)를 준다. "김탁"는 종성이 없어서 F, "용주"은 종성이 있어서 T 이다.

읽기

  • '단어'와 동일하게 적어주면 쉽다

타입

  • Inflected, Compound, Preanalysis. (아니면 *)
※ 타입별 각 쓰임새
  • Inflected: 품사분석시 변형이 일어나는 경우
    • 예☞ 가까와졌으나,1804,3,-573,VA+EC+VX+EP+EC,*,F,가까와졌으나,Inflect,VA,EC,가깝/VA/*+어/EC/*+지/VX/*+었/EP/*+으나/EC/* ☞ "가깝어지었으나"
    • ※ 조금 비약해서 설명하자면, 원래의 단어는 "식사하셨사옵니까?" 였으나 실제 단어는 "식사해쪄요?"와 같이 
    • 단어의 모습이 단축되거나 늘어나거나 변경되는 경우, Inflected를 사용한다고 생각하면 쉽게 이해할 수 있을 것이다.ㅎㅎ
  • Compound: 복합명사의 경우 적용해 준다. (가장 흔함)
    • 예☞ 가곡선,1786,3546,3123,NNP,*,T,가곡선,Compound,*,*,가곡/NNG/*+선/NNG/*
  • Preanalysis: 기분석처리? 이렇게 말하면 이해가 어려울거 같아 쉽게 말하자면, 인터파크 같은 경우 "인터+파크"가 아니기에 이경우 "인터파크"로 명시되게 하기위해 Preanalysis를 적용한다.
    • 예☞ 월드와이드웹,1780,3534,2953,NNP,*,T,월드와이드웹,Preanalysis,NNG,NNG,월드/NNG/*+와이드/NNG/*+/NNG/*
    • "월드와이드웹"은 하나의 단어로 의미를 지니나 월드, 와이드, 웹이 제각각 존재해서는 그 의미를 상실함.
※ Compound, Preanalysis 의 차이점

  • "충전케이블"처럼 "충전+케이블"로서 각 단어요소('충전'과 '케이블')가 나뉘어 존재해도 그 의미를 잃지않는 경우는 복합명사(Compound)로서 정의한다.
  • "인터파크"처럼 "인터+파크"로 나뉘어지기는 하지만, (각 단어의 구성요소 의미와는 달리 새로이 만들어진 단어이기에) 각 단어요소('인터'와 '파크')가 나뉘어지면 원래의 의미를 상실하는 경우, 즉 '인터'와 '파크'가 반드시 붙어 "인터파크"로 되어야만 의미를 지니는 경우는 기분석(Preanalysis)로서 정의한다.

첫번째품사 & 마지막품사: 무시해도됨

  • 표현 부분의 품사구조 중 첫번째와 마지막을 각각 입력해준다. (아니면 *)
  • ※ 하지만 실제 작성시에는 그냥 *만 찍어도(무시해도) 알아서 처리된다.

표현


  • 단어의 형태소 구조를 임의로 정의할때 사용한다. (없으면 *)
  • 예를들어, "대학생선교회"의 경우, Type을 Compound로 해준 후 여기에 "대학생/NNG/*+선교회/NNG/*"로 작성해주면 "대학/NNG/*+생선/NNG/*+교회/NNG/*"와 같은 오분석을 피할 수 있다.

색인표현(DEFECTED): 2.x버전 이후 사용되지않음. 무시해도됨.

색인될때의 키워드를 입력하는데 * 이면 단일단어로 색인한다. (없으면 *)
"인터파크"는 "인터+파크"로 색인될 이유가 없으니 "인터파크"로만 색인되도 되지만, "우육포"의 경우 "우육+육포+우육포"와 같이 색인되어야 할 것이다.
따라서 "우/NNG/*/1/1+우육/NNG/*/0/2+육/NNG/*/1/1+육포/NNG/*/0/2+포/NNG/*/1/1"와 같이 기입해준다.


작성팁 요약
  • 관리자 입장에서 기초적인 신조어를 입력할 경우엔 파란색 요소(단어, 가중치, 품사, 읽기, 타입, 표현)만 알아두면 된다.
  • 특히 단일키워드의 경우엔 단어, 가중치, 품사, 읽기만 알아도 된다. (나머지는 모두 *)




Mecab-ko & Mecab-ko-dic 설치에 대해

Mecab-ko 설치

mecab-ko 프로젝트


설치과정

$ tar zxfv mecab-ko-XX.tar.gz
$ cd mecab-ko-XX
$ ./configure
$ make
$ make check
$ su
# make install
※ make check 는 생략해도 됨.

mecab-ko 사용자정의 설치방법

원하는 디렉터리에 설치를 하기 위해서는 configure에 옵션을 잡아줘야 한다. 즉 위의 일반설치 과정 중 configure 부분에 다음과 같은 옵션을 추가한다.

Configure option
$ ./configure --prefix=/tmp/mecab/dir/mecab-0.996-ko-x.x.x
(/tmp/mecab/dir/mecab-0.996-ko-x.x.x 에 설치된다. 입맛따라 설치위치를 고쳐주면 된다.)


mecab-ko-dic 프로젝트

일반 설치과정
$ tar zxfv mecab-ko-dic-XX.tar.gz
$ cd mecab-ko-dic-XX
$ ./configure
$ make
$ su
# make install

주요참고사항1) 만약, 이후 make 시 automake 버전 문제로 설치 도중 error가 발생한다면, 설치디렉터리에 있는 autogen.sh 를 실행해주고 다시 make 하면 에러가 사라진다.



사용자정의 설치 과정

$ tar zxfv mecab-ko-dic-XX.tar.gz
$ cd mecab-ko-dic-XX
$ ./autogen.sh
$ ./configure
$ make
# make install

주요참고사항2) 만약, make시 libmecab.so.2를 찾을 수 없는 에러가 발생한다면, 라이브러리를 PATH에 잡아줘야 할거다.
해당 계정에 PATH가 제대로 설정(라이브러리 링크)되었는지 확인하고, ldconfig 를 해 준다.


mecab-ko-dic 사용자정의 설치방법

원하는 디렉터리에 설치를 하기 위해서는 configure에 옵션을 잡아줘야 한다. 즉 위의 일반설치 과정 중 configure 부분에 다음과 같은 옵션을 추가한다.
이는 mecab-ko의 설치위치와 맞춰주는 것이 좋다. (아니면 기본위치인 /usr/local/ ... 에 설치하려 할거다.)


Configure option

$ ./configure --prefix=/tmp/mecab/dir/mecab-ko-dic-x.x.x
--with-dicdir=/tmp/mecab/dir/mecab-0.996-ko-x.x.x/mecab-ko-dic
--with-mecab-config=/tmp/mecab/dir/mecab-0.996-ko-x.x.x/bin/mecab-config
(/tmp/mecab/dir/mecab-0.996-ko-x.x.x 에 설치된다. 입맛따라 설치위치를 고쳐주면 된다.)


Option 세부설명:
  • --prefix = mecab-ko 설치위치를 정의한다. (※ 설치위치만 다르게할때는 이거만 해줘도 된다.)
  • --with-dicdir = 사전정보가 위치할 곳을 정의한다. (※ 사전디렉터리를 결정한다. 여러버전의 사전을 보유한 경우 유용하다.)
  • --with-mecab-config = mecab config가 위치하는 곳을 정의한다.







2016년 7월 22일 금요일

mecab-ko-dic 품사 태그 설명

mecab-ko-dic 품사 태그 설명

대분류세종 품사 태그mecab-ko-dic 품사 태그
태그설명태그설명
체언NNG일반 명사NNG일반 명사
NNP고유 명사NNP고유 명사
NNB의존 명사NNB의존 명사
NNBC단위를 나타내는 명사
NR수사NR수사
NP대명사NP대명사
용언VV동사VV동사
VA형용사VA형용사
VX보조 용언VX보조 용언
VCP긍정 지정사VCP긍정 지정사
VCN부정 지정사VCN부정 지정사
관형사MM관형사MM관형사
부사MAG일반 부사MAG일반 부사
MAJ접속 부사MAJ접속 부사
감탄사IC감탄사IC감탄사
조사JKS주격 조사JKS주격 조사
JKC보격 조사JKC보격 조사
JKG관형격 조사JKG관형격 조사
JKO목적격 조사JKO목적격 조사
JKB부사격 조사JKB부사격 조사
JKV호격 조사JKV호격 조사
JKQ인용격 조사JKQ인용격 조사
JX보조사JX보조사
JC접속 조사JC접속 조사
선어말 어미EP선어말 어미EP선어말 어미
어말 어미EF종결 어미EF종결 어미
EC연결 어미EC연결 어미
ETN명사형 전성 어미ETN명사형 전성 어미
ETM관형형 전성 어미ETM관형형 전성 어미
접두사XPN체언 접두사XPN체언 접두사
접미사XSN명사 파생 접미사XSN명사 파생 접미사
XSV동사 파생 접미사XSV동사 파생 접미사
XSA형용사 파생 접미사XSA형용사 파생 접미사
어근XR어근XR어근
부호SF마침표, 물음표, 느낌표SF마침표, 물음표, 느낌표
SE줄임표SE줄임표 …
SS따옴표,괄호표,줄표SSO여는 괄호 (, [
SSC닫는 괄호 ), ]
SP쉼표,가운뎃점,콜론,빗금SC구분자 , · / :
SO붙임표(물결,숨김,빠짐)SY 
SW기타기호 (논리수학기호,화폐기호)
한글 이외SL외국어SL외국어
SH한자SH한자
SN숫자SN숫자