2014년 3월 12일 수요일

새로운 사전 추가 방법

사전 추가는 mecab-0.996-ko-0.9.1 이상에서 동작합니다. 사전 형식은 mecab-ko-dic-1.6 을 따르고 있습니다.

새로운 사전 추가
1. 특정위치에 user_in.csv 파일 생성. 두번째, 세번째,네번째 필드는 빈값으로 둡니다. 일반적으로 고유명사 추가는 품사를 NNP로 하고 의미부류를 사람이름일 경우 "인명" 또는 지명일 경우 "지명" 모두 아닐 경우에는 "*"로 합니다.
  품사와 사전형식은 여기를 참고하세요.(시트를 확인하세요.)
아주대,,,,NNP,*,F,아주대,*,*,*,*,*  
 2. 좌/우문맥ID와 비용생성
$ /usr/local/libexec/mecab/mecab-dict-index \
-m <dic-path>/model.def \
-d <dic-path> \
-u <dic-path>/user.csv \
-f utf-8 \
-t utf-8 \
-a user_in.csv
  • <dic-path>: 다운로드 받은 mecab-ko-dic 디렉토리 위치
  • -m FILE: 모델파일
  • -d DIR : 시스템 사전이있는 디렉토리
  • -u FILE : output FILE
  • -f charset : input 사전파일 문자 코드
  • -t charset : output 사전파일 문자 코드

3. 새로 생성된 <dic_path>/user.csv 확인. 좌/우문맥ID와 비용이 자동 생성되었습니다.
아주대,1092,1681,2528,NNP,*,F,아주대,*,*,*,*,*
4. 사전 컴파일
$ cd <dic_path>
$ make clean;make
그 외 다양한 방법에 대해서는 mecab홈페이지를 참고하세요.

댓글 11개:

  1. 아래 예제에서 NNP,* 뒤의 F는 뭔가요? T로 기입된 것도 있던데..

    ex)
    아주대,,,,NNP,*,F,아주대,*,*,*,*,*

    답글삭제
    답글
    1. http://eunjeon.blogspot.kr/2014/06/blog-post.html
      여기에 설명에 나오기는 하는데.. 아무튼 마지막 글자가 받침을 가지느냐 안가지느냐로 T는 True, F는 False. 입니다.
      ('아주대'는 '대'가 받침이 없는 글자라 F 입니다.)

      꽤 오래되었는데 답이 안달리길래 혹시나 해서 달아봅니다.ㅋ

      삭제
    2. 노파심에 첨언하자면, 마지막 글자의 종성유무가 필요한 이유는 이후 조사가 이/가, 을/를 등등 무엇이 올지 정하려는 목적이라 생각하시면 됩니다.
      >> 아주대(가):F → 아주대학원(이):T

      삭제
  2. 작성자가 댓글을 삭제했습니다.

    답글삭제
  3. 안녕하세요. https://bitbucket.org/eunjeon/mecab-ko-dic/src/a1f024a62668e68ba404c3cec3f2b9ba5f8c29b4/final/user-dic/?at=master 여길르 보시는게 좋을 것 같고요. NNP 뒤에 * 는 의미부류입니다. * 또는 "지명" 또는 "인명" 이 들어갑니다.

    답글삭제
  4. 작성자가 댓글을 삭제했습니다.

    답글삭제
  5. 안녕하세요. 시스템 사전보다 사용자 사전을 우선 적용하고 싶은데, 방법 문의 드립니다.
    "신혼여행"의 경우 아래와 같이 하나로 의미를 부여하고 싶어서 사용자 사전에 추가했습니다.
    신혼여행,*,*,*,NNG,*,T,신혼여행,*,*,*,*,*
    하지만 적용되지 않고 계속 나라+여행으로 분석이 되네요.
    나라 NNG,*,F,나라,*,*,*,*
    여행 NNG,*,T,여행,*,*,*,*
    작성일에서 꽤 지났는데 혹시 가능하시면 답변 부탁 드립니다.

    답글삭제
    답글
    1. 제 PC에서는 재현되지 않네요..

      아래 스크립트로 n-best 결과를 한번 확인해보시겠어요? "나라여행"으로 분석되는게 신기하네요..

      mecab-ko-dic-2.0.1-20150920/tools/mecab-bestn.sh

      삭제
  6. 작성자가 댓글을 삭제했습니다.

    답글삭제
    답글
    1. 안녕하세요. mecab을 잘 사용하고 있음에 먼저 감사드립니다.
      사용자 사전 추가 후 분석 관련하여 여쭈어볼것이 있어서 문의드립니다.
      현재 약 2만개의 데이터를 사용자 사전에 추가 후에 add-userdic.sh 실행 후 make clean;make 과정까지 모두 마친 후에도 사용자 사전에는 올라가있지만, 약 800개의 단어는 인식이 잘 되는데 그 이후의 단어들은 인식이 잘 안되는 문제가 있습니다. 혹시 이 문제에 대한 해결방법이 있을까요?

      삭제
  7. 안녕하세요. 사용자 사전 관련 글이 시간이 많이 지났지만 종성유무 입력에 대해 여쭤볼 것이 있어서 찾아오게되었습니다.
    일단 pos tag가 명사인것들만 추출하여 사용하려고 하고 있어서 명사인데 분석결과가 이상하거나 추가 해야할 단어들은 사용자 사전에 추가하여 사용하고 있습니다.
    그런데 데이터가 너무 많은데 종성유무의 경우를 꼭 입력해야하하는지에 대한 의문이 들었습니다.
    데이터가 많아 일단은 "*"로 표기를 해두었는데 나중을 위해 입력을 해두려고 하는데, 코딩밖에는 방법이 없을까요??

    답글삭제