<aside> 💡 “핫플”, “피큐레잇”과 같은 단어의 경우 mecab 사전에 등록된 단어들로 쪼개어지기 때문에 “핫”과 “플”로 원하지 않는 방식으로 분해되는 문제가 발생하였다. 이러한 문제를 해결하기 위해서 mecab에 사용자 사전을 추가하는 방법을 알아보자
</aside>
다음은 mecab-ko-dict의 폴더 구조이다.
mecab-ko-dic-2.1.1-20180720
├── ...
├── user-dic/
│ ├── person.csv
│ ├── nnp.csv
│ └── place.csv
├── ...
└── ...
단어의 추가는 csv 파일에 각 항복별로 요구하는 내용을 집어넣으면 된다. 각 필드별 의미하는 바는 아래와 같다.
단어, 좌문맥ID, 우문맥ID, 가중치(단어비용), 품사태그, 의미분류, 종성유무, 타입, 첫 품사, 마지막 품사, 표현
nnp.csv 파일에 고유어(NNP)에 대한 내용을 적은 예시이다.
고유어 사전 추가 예시
단어에 사전을 추가하였을 경우 다시 컴파일 하여 등록된 단어를 mecab이 인식하도록 해야 한다.
# mecab-ko-dic-2.1.1-20180720/
tools/add-userdic.sh
make install
하지만 사용자 사전에 등록한 단어라도 토큰화를 해보면 원하는 방식으로 쪼개지지 않는 것을 볼 수 있는데, 이는 단어에 설정된 가중치에 의해서 우선순위에 밀려 제대로 토큰화가 이루어지지 않은 것이다.
단어의 가중치 설정
단어비용의 경우는 낯추면 검색의 우선순위가 올라간다.
위의 사진처럼 가중치가 작을 수록 우선순위로 토큰화가 되기 때문에 여전히 핫플이 되는 것이다. → 더 작은 수로 바꾸어 주어야 한다.
가중치 수정
<aside>
⚠️ 경로에 주의하자 user-dic/
폴더 내부에 단어를 추가하고 컴파일을 하게되면 메인 디렉토리 안에 user-<filename>.csv
라는 이름으로 컴파일된 단어가 추가된다. 단어의 가중치 설정은 컴파일된 사전 내에서 해야한다.
</aside>
아래의 사질과 같이 초록색으로 색칠된 컬럼이 단어의 가중치를 설정하는 부분이다. 원래의 경우는 마이너스(-)가 없이 양수였지만 고유어의 경우 무조건 적인 추출을 위해서 음수로 바꿔주자
검색비용을 매우 작게 하였다.
위의 결과를 적용하여 아래와 같은 내용의 토큰화가 진행되었다.