본문 바로가기
Study/NLP

[Mecab] 사전 우선순위 설정

by uiydlop 2023. 2. 24.

https://uiydlop.tistory.com/20

 

[Mecab] 사용자 사전 단어 추가 방법

mecab을 사용해서 형태소분석하고 나면, 중요 token들이 인식되지 않을 때가 있다. 기본적으로 mecab은 제공하는 사전 외에, 사용자가 직접 입력해서 단어를 인식할 수 있도록 하는 ‘사용자 사전’

uiydlop.tistory.com

앞서 사용자 사전 추가할 때 우선순위를 설정하지 않아, 원하는 단어가 출력되지 않은 경우들이 있다.

이경우에는 아래와 같이 우선순위(가중치)를 지정해 주면 된다.


일반적으로 사용자 사전에 단어를 등록할 때 우선순위(가중치)를 지정해 주지 않았음.

✅ 단어 추가 양식 : 추가할 단어, 0, 0, 우선순위(가중치), 품사태그, 의미분류, 종성유무(단어의 끝 글자 받침 유무로 T, F 입력), 읽기(발음), 타입, 첫 번째 품사, 마지막 품사, 인덱스 표현

하지만 💢

mecab 사용자 사전에 단어를 등록하였는데도

사전에 입력한 대로 결과가 나오지 않고 단어가 분리되어 나올때가 있음 !

 

예) ‘한글날’ → ‘한글’, ‘날’

‘오리불고기’ → ‘오리’, ‘불고기’

token = mecab.pos('독거노인 복지')
print(token)

[('독거', 'NNG'), ('노인', 'NNG'), ('복지', 'NNG')]

[('독거', 'NNG'), ('노인', 'NNG')] <- 이렇게 사전에 등록한 '독거노인'이 아닌, '독거', '노인'으로 분리되어 나옴

 

 

사전 추가가 실패한 것은 아님 !

mecab 은 각 단어별로 단어비용이란 것이 존재하는데, 이 비용이 낮은 순서대로 우선순위를 부여해서 기준에 따라 출력을 하는 것이다.

따라서 기존 단어에 대한 비용이 사용자 사전으로 등록한 단어보다 낮게 되면

우선순위가 기존단어 > 사전에 등록한 단어가 되어 출력되지 않음.

우선순위를 조정해 주면 된다.

 


⭐ 우선순위 조정 방법

 

기존 C:\mecab\user-dic\nnp.csv 파일이 아닌 C:\mecab\mecab-ko-dic\user-nnp.csv 파일을 열면

우리가 등록한 단어가 등록되어있는데, 임의의 우선순위 값 2953~3275으로 지정되어 있음.

→ 우선순위를 0으로 바꿔줌 !! 

(우선순위 값은 낮을수록 가중치가 올라감 → 즉, 값이 0이면 무조건적인 단어분리 해줌)


다시, Windows PowerShell을 관리자 권한으로 실행한 후 명령어 입력

.\tools\compile-win.ps1

➡ done! 되면 완료 


다시 테스트해보면,

pos = mecab.pos('독거노인 복지')
print(pos)

[('독거노인', 'NNP'), ('복지', 'NNG')]

[('독거노인', 'NNP')]  <- 적용되어 잘 나오는 것을 확인할 수 있다.

댓글