O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

mecab-ko-dic 사용자 사전

153 visualizações

Publicada em

* mecab-ko, mecab-ko-dic 환경에서 사용자 사전 추가 과정을 정리
* 사용자 사전 추가 과정에서 LEFT-ID, RIGHT-ID 검색 문제 해결 과정 정리

1. mecab-ko-dic
2. 사용자 사전 반영 과정
3. 사용자 사전 반영 중 발생 문제 정리
4. 최종 사전 반영 과정

Publicada em: Dados e análise
  • Seja o primeiro a comentar

mecab-ko-dic 사용자 사전

  1. 1. mecab-ko-dic 사용자 사전 이찬희 2020. 02. 25.
  2. 2. 1. mecab-ko-dic
  3. 3. MeCab • MeCab • 일본어를 토큰화하고 품사를 부착하기 위한 오픈 소스 라이브러리 • Conditional Random Fields(CRFs) 알고리즘을 통해 학습 • mecab-ko • MeCab 엔진에 한국어 특성에 맞는 기능을 추가한 은전한닢 프로젝트의 결과물 • 일본어는 없으나 한국어에는 존재하는 띄어쓰기의 비용 처리가 포함되어 있음 • mecab-ko-dic • 세종 말뭉치를 사용하여 학습한 형태소 목록과 단어/연접 비용이 정의된 사전 • mecab-ko에서 참조하여 형태소 분석을 진행 • MeCab: https://taku910.github.io/mecab • 은전한닢 프로젝트: http://eunjeon.blogspot.com/ • mecab-ko: https://bitbucket.org/eunjeon/mecab-ko • mecab-ko-dic: https://bitbucket.org/eunjeon/mecab-ko-dic
  4. 4. mecab-ko-dic 사용자 사전 • 시스템 사전과 사용자 사전의 형식이 동일 • 사용자 사전 작성 시 작성이 힘든 연접 비용과 단어 비용 산출은 관련된 부분은 제공하는 쉘 스크립트가 (./tools/add-userdic.sh) 처리해 줌 • 사용자 사전으로 등록된 단어라도 강제로 출력되는 것은 아님 시스템 사전의 단어들과 비용 경쟁을 통해 결과로 출력됨 • 연접 비용: 형태소가 결합할 때 발생하는 비용 • 단어 비용: 단어 자체가 가지고 있는 비용 • 연접 비용과 단어 비용을 통해 입력받은 문자열에 최소 비용을 가진 경로로 형태소 분석을 진행
  5. 5. mecab-ko-dic 사전 형식 • mecab-ko-dic 품사 태그 설명: https://docs.google.com/spreadsheets/d/1-9blXKjtjeKZqsf4NzHeYJCrr49-nXeRF6D80udfcwY/edit#gid=1718487366 표층형 사전 내용이 연결될 문자열 품사 태그 표층형을 구성하는 형태소의 품사 (여러 형태소가 합쳐진 문자열이면 '+' 기호로 구분) 의미 부류 개체명과 유사 (mecab-ko-dic 학습 과정에서 의미 부류 목록이 정의) 종성 유무 표층형의 마지막 글자의 종성 존재 여부 읽기 한글의 경우에만 존재하고 표층형과 동일
  6. 6. mecab-ko-dic 사전 형식 • mecab-ko-dic 품사 태그 설명: https://docs.google.com/spreadsheets/d/1-9blXKjtjeKZqsf4NzHeYJCrr49-nXeRF6D80udfcwY/edit#gid=1718487366 타입 *(없음) / Inflect(활용) / Compound(복합 명사) / Preanalysis(기분석)의 네 가지 타입을 지정할 수 있음 첫번째 품사 / 마지막 품사 Inflect, Preanalysis 타입인 경우 작성되며, 구성하는 첫 번째 형태소와 마지막 형태소의 품사를 작성 (Compound 타입이나 타입이 없는 경우에는 내부 비용 산출 과정에서 영향이 없음) 표현 타입이 지정 시(=복합 형태소일 때) 작성하며 표층형을 구성하는 형태소들의 (표층형/품사/의미 부류)를 작성
  7. 7. mecab-ko-dic 사전 형식 • mecab-ko-dic 품사 태그 설명: https://docs.google.com/spreadsheets/d/1-9blXKjtjeKZqsf4NzHeYJCrr49-nXeRF6D80udfcwY/edit#gid=1718487366 LEFT-ID / RIGHT-ID 해당 형태소의 전/후 연접 비용 계산을 위해 사용되는 ID 단어 비용 단어 자체의 비용 - LEFT-ID, RIGHT-ID, 단어 비용은 mecab-ko-dic 프로젝트에서 제공하는 사용자 사전 반영 쉘 스크립트에 의해 자동으로 부착 LEFT-ID RIGHT-ID 단어 비용
  8. 8. 2. 사용자 사전 반영 과정
  9. 9. 사용자 사전 반영 과정 • 사전 추가 • 사전 컴파일 • 설치 • mecab-ko-dic/user-dic/README.md: https://bitbucket.org/eunjeon/mecab-ko-dic/src/master/final/user-dic/
  10. 10. 사전 컴파일 • 사용자 사전 검색 • LEFT/RIGHT-ID 부착, 단어 비용 부착 • 컴파일 • ./tools/add-userdic.sh 소스: https://bitbucket.org/eunjeon/mecab-ko-dic/src/df15a487444d88565ea18f8250330276497cc9b9/final/tools/add-userdic.sh ./tools/add-userdic.sh 소스 중 일부 사용자 사전 검색 LEFT/RIGHT-ID 부착, 단어 비용 할당 컴파일
  11. 11. LEFT/RIGHT-ID 부착, 단어 비용 할당 • LEFT/RIGHT-ID는 left-id.def, right-id.def 파일을 검색하여 할당 • 단어 비용은 수동으로 할당할 수 있는 방법이 마땅치 않음 • 은전한닢 프로젝트 - 기분석 데이터에 대한 질문: https://groups.google.com/forum/#!searchin/eunjeon/%EB%82%B1%EB%A7%90%7Csort:date/eunjeon/nSIjKkhSRTU/K5ecLWU4CgAJ Q. 말씀해주신 대로 ID와 비용을 수동으로 입력해 보려고 합니다. 그런데 id는 right-id.def와 left- id.def에서 검색하지만 단어비용은 어느 파일에서 참조해야 하는지 모르겠습니다. A. 이미 정의 되어 있는 사전의 단어들을 보시고 유사한 단어의 비용을 참고하시어 정의하는 방법이 있을 것 같습니다. (깔끔한 방법은 없네요) left-id.def right-id.def ID 키 단어 비용 부착 관련 Q&A '*'는 Wildcard로 모든 값에 대해 매칭됨
  12. 12. LEFT/RIGHT-ID 부착 과정 (단일 형태소) ID 검색 키 생성 키 기준 left-id.def, right-id.def 파일 검색 LEFT-ID, RIGHT-ID 부착 단일 형태소의 경우, LEFT-ID 검색 키 = <품사 태그>,<의미 부류>,*,<읽기> RIGHT-ID 검색 키 = <품사 태그>,<의미 부류>,<종성 유무>,<읽기> '제당,,,,NNG,행위,T,제당,*,*,*,*'의 경우 • LEFT-ID 검색 키: 'NNG,행위,*,제당' • RIGHT-ID 검색 키: 'NNG,행위,T,제당' • LEFT-ID: 1785 • RIGHT-ID: 3544
  13. 13. LEFT/RIGHT-ID 부착 과정 (복합, Compound) 복합 형태소 + Compound 타입의 경우, LEFT-ID 검색 키 = <품사 태그>,<의미 부류>,*,* RIGHT-ID 검색 키 = <품사 태그>,<의미 부류>,<종성 유무>,* '제일제당,,,,NNP,인명,T,*,Compound, NNG,NNG,제일/NNG/*+제당/NNG/행위' 의 경우 • LEFT-ID 검색 키: 'NNP,인명,*,*' • RIGHT-ID 검색 키: 'NNP,인명,T,*' • LEFT-ID: 1786 • RIGHT-ID: 3546 ID 검색 키 생성 키 기준 left-id.def, right-id.def 파일 검색 LEFT-ID, RIGHT-ID 부착
  14. 14. LEFT/RIGHT-ID 부착 과정 (복합, Preanalysis) 복합 형태소 + Preanalysis 타입의 경우, LEFT-ID 검색 키 = <첫번째 품사>,<의미 부류>,*,* RIGHT-ID 검색 키 = <마지막 품사>,<의미 부류>,<종성 유무>,* 'CJ제일제당,,,,NNP,인명,T,*, Preanalysis,SL,NNG, CJ/SL/*+제일/NNG/*+제당/NNG/행위' 의 경우 • LEFT-ID 검색 키: 'SL,인명,*,*' • RIGHT-ID 검색 키: 'NNG,인명,T,*' ID 검색 키 생성 키 기준 left-id.def, right-id.def 파일 검색 LEFT-ID, RIGHT-ID 부착
  15. 15. LEFT/RIGHT-ID 부착 과정 중 에러 복합 형태소 + Preanalysis 타입의 경우, LEFT-ID 검색 키 = <첫번째 품사>,<의미 부류>,*,* RIGHT-ID 검색 키 = <마지막 품사>,<의미 부류>,<종성 유무>,* 'CJ제일제당,,,,NNP,인명,T,*, Preanalysis,SL,NNG, CJ/SL/*+제일/NNG/*+제당/NNG/행위' 의 경우 • LEFT-ID 검색 키: 'SL,인명,*,*' • RIGHT-ID 검색 키: 'NNG,인명,T,*' • LEFT-ID: <검색 불가> • RIGHT-ID: <검색 불가> ID 검색 키 생성 키 기준 left-id.def, right-id.def 파일 검색 LEFT-ID, RIGHT-ID 부착 Preanalysis 타입 항목 LEFT/RIGHT-ID 부착 중 에러 발생
  16. 16. 3. 사용자 사전 반영 중 발생 문제 정리
  17. 17. LEFT/RIGHT-ID 부착 과정 중 에러 - 잘못된 '의미 부류'로 검색 복합 형태소 + Preanalysis 타입의 경우, LEFT-ID 검색 키 = <첫번째 품사>,<의미 부류>,*,* RIGHT-ID 검색 키 = <마지막 품사>,<의미 부류>,<종성 유무>,* 'CJ제일제당,,,,NNP,인명,T,*, Preanalysis,SL,NNG, CJ/SL/*+제일/NNG/*+제당/NNG/행위' 의 경우 • LEFT-ID 검색 키: 'SL,인명,*,*' • RIGHT-ID 검색 키: 'NNG,인명,T,*' • LEFT-ID: <검색 불가> • RIGHT-ID: <검색 불가> ID 검색 키 생성 키 기준 left-id.def, right-id.def 파일 검색 LEFT-ID, RIGHT-ID 부착 Preanalysis 타입 항목 LEFT/RIGHT-ID 부착 중 에러 발생
  18. 18. LEFT/RIGHT-ID 부착 과정 중 에러 - 잘못된 '의미 부류'로 검색 복합 형태소 + Preanalysis 타입의 경우, LEFT-ID 검색 키 = <첫번째 품사>,<의미 부류>,*,* RIGHT-ID 검색 키 = <마지막 품사>,<의미 부류>,<종성 유무>,* 'CJ제일제당,,,,NNP,인명,T,*, Preanalysis,SL,NNG, CJ/SL/*+제일/NNG/*+제당/NNG/행위' 의 경우 • LEFT-ID 검색 키: 'SL,인명,*,*' • RIGHT-ID 검색 키: 'NNG,인명,T,*' • LEFT-ID: <검색 불가> • RIGHT-ID: <검색 불가> ID 검색 키 생성 키 기준 left-id.def, right-id.def 파일 검색 LEFT-ID, RIGHT-ID 부착 실제 첫 번째, 마지막 형태소의 의미 부류가 아님 LEFT-ID 검색 키: 'SL,*,*,*' RIGHT-ID 검색 키: 'NNG,행위,T,*' 실제 첫 번째, 마지막 형태소의 의미 부류로 키 생성 시
  19. 19. LEFT/RIGHT-ID 부착 과정 중 에러 - 잘못된 '읽기'로 검색 • 품사 중 조사, 접사 등의 경우 형태소 개수가 한정되어 있기 때문에 left-id.def, right-id.def 파일에 '읽기' 컬럼에 대한 Wildcard '*'가 존재하지 않음 • Preanalysis 타입은 '읽기' 컬럼을 Wildcard 처리하고 키 검색을 하기 때문에 오류가 발생 '읽기' 컬럼에 Wildcard가 없어 에러 발생 left-id.def, right-id.def 파일에 '읽기' 컬럼 Wildcard가 없음
  20. 20. • 복합 형태소 중 Preanalysis 타입은 LEFT/RIGHT-ID 검색 키가 잘못 생성되고 있었음 • 정확한 검색을 위해 '표현' 컬럼에 작성된 '의미 부류', '읽기' 정보를 사용하여 검색 키를 생성해야 에러 없이 좀 더 정확한 값을 찾을 수 있음 • '의미 부류'는 첫 번째, 마지막 형태소의 '의미 부류' 정보를 가지고 키를 생성해야 함 • left-id.def, right-id.def 파일에서 특정 품사에 대한 Wildcard를 제공하지 않기 때문에, 단순히 '읽기' 정보를 Wildcard '*'로 처리하면 에러가 발생 • 변경한 LEFT-ID 키 값 = <품사 태그>,<첫번째 품사>,<첫번째 형태소 의미 부류>, <첫번째 품사의 표층형> • 변경한 RIGHT-ID 키 값 = <품사 태그>,<마지막 품사>,<마지막 형태소 의미 부류>, <마지막 품사의 표층형> • 해당 키 값을 가지고 left-id.def, right-id.def 파일을 직접 검색하여 ID 부착 LEFT/RIGHT-ID 부착 에러 정리 및 해결
  21. 21. LEFT/RIGHT-ID 부착 에러 처리 전후 예시 기존 구분 변경 CJ제일제당,,,, NNP, 인명, T, *, Preanalysis, SL, NNG, CJ/SL/*+제일/NNG/*+제당/NNG/행위 SL,인명,*,* LEFT-ID 검색 키 SL,*,*,* NNG,인명,T,* RIGHT-ID 검색 키 NNG,행위,T,제당 검색 불가 LEFT-ID 1796 (SL,*,*,*) 검색 불가 RIGHT-ID 3544 (NNG,행위,T,*) 현재가,,,, NNG+XSN, *, F, *, Preanalysis, NNG, XSN, 현재/NNG/*+가/XSN/* NNG,*,*,* LEFT-ID 검색 키 NNG,*,*,현재 XSN,*,F,* RIGHT-ID 검색 키 XSN,*,F,가 (NNG,*,*,*) 1780 LEFT-ID 1780 (NNG,*,*,*) 검색 불가 RIGHT-ID 3588 (XSN,*,F,가)
  22. 22. 4. 최종 사전 반영 과정
  23. 23. 단어 비용 부착 • 단어 비용은 직접 붙일 방법이 없어 기존 쉡 스크립트 처리를 이용 • 기존 과정 이용 시 첫번째 품사, 마지막 품사를 임의로 변경하면 오류를 피할 수 있음 • 첫번째 품사, 마지막 품사를 임의로 변경하고 뒤에 원래 품사를 둔 상태로 단어 비용 부착 • 다만, 위의 변경이 비용 산출에 영향을 주진 않는지 확인이 필요했음 단어 비용 부착 시 에러를 회피하기 위한 변경 예시 ■: 임의로 생성한 품사, ■: 원래 품사
  24. 24. 단어 비용 부착 변수 추적 테스트 후 자동 부착되는 단어 비용은 '품사 태그'에만 영향 받음을 확인 (정확하지 않음) 의미 부류, 읽기, 종성 유무, 첫번째/마지막 품사를 변경 시: 단어 비용이 달라지지 않음 품사 태그 변경 시: 단어 비용 차이 존재
  25. 25. 시스템/사용자 사전 동일 항목 비용 조정 • 시스템 사전에 등록된 (표층형, 품사) 조합에 대해 사용자 사전에서 정의한 결과로 대체하여 출력하기 위함 • 사용자 사전의 중복된 항목은 시스템 사전의 단어 비용을 사용하도록 변경 (자동으로 부착되는 단어 비용과 시스템 사전의 학습에 의해 부착되는 비용은 다름) • 시스템 사전의 단어 비용은 임의로 증가 (기존 단어 비용에 +10000으로 진행) 중복된 ('삼성전자', 'NNP') 조합에 대해 사용자 사전을 사용하도록 비용 조정한 결과 (위는 원래 시스템 사전, 아래는 변경 후 시스템 사전과 사용자 사전)
  26. 26. 최종 사전 반영 과정 • 사전 추가 • LEFT/RIGHT-ID 부착, 단어 비용 할당 • 사전의 첫번째 품사, 마지막 품사 컬럼 임의로 조정 (LEFT-ID, RIGHT-ID 검색 에러 회피) • 단어 비용 할당 • 사전 LEFT, RIGHT-ID 수정 • 시스템 사전과 중복된 항목 비용 수정 • 사용자 사전의 단어 비용은 시스템 사전과 같게, • 시스템 사전의 단어 비용은 증가 • 설치

×