Mecab 사용자 단어 사전 추가 in R, windows 10
Page content
개요
- Mecab에서 사용자 단어를 추가하고 직접 사용하는 예제를 만들어본다.
- 사전에 Mecab은 설치가 되어 있다고 가정한다. 만약 처음 설치한다면, 다음 참조 링크에서 설치를 진행한다.
문제점
- 아래그림과 같이 ‘사회적경제’라는 단어가 잡히지 않는 것을 확인할 수 있다.
해결방법
- 먼저, 사전 위치를 찾는다.
- mecab > user-dic 폴더 내에 nnp.csv 파일을 찾는다.
- 서식에 관한 구체적인 내용을 참조링크를 확인한다.
- nnp.csv 파일을 메모장으로 열고 수정한다.
- 사용자 사전 수정 적용하기 위해
Window PowerShell을 관리자 권한
으로 연다
- mecab 폴더로 이동해야 하기 위해 아래와 같이 입력을 한다.
PS C:\WINDOWS\system32> cd C:\mecab\
PS C:\mecab>
- mecab 폴더에서 아래와 같이
.\tools\add-userdic-win.ps1
실행한다. 그런데 최초 아래와 같은 에러가 나타날 것이다.
PS C:\mecab> .\tools\add-userdic-win.ps1
.\tools\add-userdic-win.ps1 : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\mecab\tools\add-userdic-win.ps1 파일을 로
드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오
.
위치 줄:1 문자:1
+ .\tools\add-userdic-win.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : 보안 오류: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
- 이럴 경우, 보안 정책을 완화해야 하는데, 명령어로 가능하다.
- 아래 명령어는 Restricted, 즉 제한이 걸렸다는 뜻이다.
PS C:\mecab> executionPolicy
Restricted
- 이제 다음 명령어를 실행한다.
PS C:\mecab> Set-ExecutionPolicy Unrestricted
실행 규칙 변경
실행 정책은 신뢰하지 않는 스크립트로부터 사용자를 보호합니다. 실행 정책을 변경하면 about_Execution_Policies 도움말
항목(https://go.microsoft.com/fwlink/?LinkID=135170)에 설명된 보안 위험에 노출될 수 있습니다. 실행 정책을
변경하시겠습니까?
[Y] 예(Y) [A] 모두 예(A) [N] 아니요(N) [L] 모두 아니요(L) [S] 일시 중단(S) [?] 도움말 (기본값은 "N"): Y
PS C:\mecab>
- 그 후에 다시
executionPolicy
를 실행한다.
PS C:\mecab> executionPolicy
Unrestricted
- 이제 다시 실패했던 명령어를 다시 실행한다.
PS C:\mecab> .\tools\add-userdic-win.ps1
generating userdic...
C:\mecab\mecab-ko-dic\model.def is not a binary model. reopen it as text mode...
reading C:\mecab\user-dic\nnp.csv ...
done!
C:\mecab\mecab-ko-dic\model.def is not a binary model. reopen it as text mode...
reading C:\mecab\user-dic\person.csv ...
done!
C:\mecab\mecab-ko-dic\model.def is not a binary model. reopen it as text mode...
reading C:\mecab\user-dic\place.csv ...
done!
reading mecab-ko-dic\unk.def ... 13
emitting double-array: 100% |###########################################|
reading mecab-ko-dic\CoinedWord.csv ... 148
reading mecab-ko-dic\EC.csv ... 2547
reading mecab-ko-dic\EF.csv ... 1820
reading mecab-ko-dic\EP.csv ... 51
reading mecab-ko-dic\ETM.csv ... 133
reading mecab-ko-dic\ETN.csv ... 14
reading mecab-ko-dic\Foreign.csv ... 11690
reading mecab-ko-dic\Group.csv ... 3176
reading mecab-ko-dic\Hanja.csv ... 125750
reading mecab-ko-dic\IC.csv ... 1305
reading mecab-ko-dic\Inflect.csv ... 44820
reading mecab-ko-dic\J.csv ... 416
reading mecab-ko-dic\MAG.csv ... 14242
reading mecab-ko-dic\MAJ.csv ... 240
reading mecab-ko-dic\MM.csv ... 453
reading mecab-ko-dic\NNB.csv ... 140
reading mecab-ko-dic\NNBC.csv ... 677
reading mecab-ko-dic\NNG.csv ... 208524
reading mecab-ko-dic\NNP.csv ... 2371
reading mecab-ko-dic\NorthKorea.csv ... 3
reading mecab-ko-dic\NP.csv ... 342
reading mecab-ko-dic\NR.csv ... 482
reading mecab-ko-dic\Person-actor.csv ... 99230
reading mecab-ko-dic\Person.csv ... 196459
reading mecab-ko-dic\Place-address.csv ... 19301
reading mecab-ko-dic\Place-station.csv ... 1145
reading mecab-ko-dic\Place.csv ... 30303
reading mecab-ko-dic\Preanalysis.csv ... 5
reading mecab-ko-dic\Symbol.csv ... 16
reading mecab-ko-dic\user-nnp.csv ... 12
reading mecab-ko-dic\user-person.csv ... 1
reading mecab-ko-dic\user-place.csv ... 2
reading mecab-ko-dic\VA.csv ... 2360
reading mecab-ko-dic\VCN.csv ... 7
reading mecab-ko-dic\VCP.csv ... 9
reading mecab-ko-dic\VV.csv ... 7331
reading mecab-ko-dic\VX.csv ... 125
reading mecab-ko-dic\Wikipedia.csv ... 36762
reading mecab-ko-dic\XPN.csv ... 83
reading mecab-ko-dic\XR.csv ... 3637
reading mecab-ko-dic\XSA.csv ... 19
reading mecab-ko-dic\XSN.csv ... 124
reading mecab-ko-dic\XSV.csv ... 23
emitting double-array: 100% |###########################################|
reading mecab-ko-dic\matrix.def ... 3822x2693
emitting matrix : 100% |###########################################|
done!
PS C:\mecab>
- 그러나, 이 상태에서 R 코드를 실행해도 달라지지 않는다. 왜냐하면 가중치를 수정하지 않았기 대문이다.
- 즉, 가중치 수정은
mecab-ko-dic
폴더 내부에 있는user-nnp.csv
파일의 가중치를 수정해야 한다.
- user-nnp.csv 파일을 메모장으로 열면 기본적으로 아래와 같이 등록이 되어 있을 것이다.
- 이제 이 파일을 아래와 같이 수정한다.
- 수정 후, 이번에는 아래와 같이 명령어를 실행한다.
PS C:\mecab> .\tools\compile-win.ps1
reading mecab-ko-dic\unk.def ... 13
emitting double-array: 100% |###########################################|
reading mecab-ko-dic\CoinedWord.csv ... 148
reading mecab-ko-dic\EC.csv ... 2547
reading mecab-ko-dic\EF.csv ... 1820
reading mecab-ko-dic\EP.csv ... 51
reading mecab-ko-dic\ETM.csv ... 133
reading mecab-ko-dic\ETN.csv ... 14
reading mecab-ko-dic\Foreign.csv ... 11690
reading mecab-ko-dic\Group.csv ... 3176
reading mecab-ko-dic\Hanja.csv ... 125750
reading mecab-ko-dic\IC.csv ... 1305
reading mecab-ko-dic\Inflect.csv ... 44820
reading mecab-ko-dic\J.csv ... 416
reading mecab-ko-dic\MAG.csv ... 14242
reading mecab-ko-dic\MAJ.csv ... 240
reading mecab-ko-dic\MM.csv ... 453
reading mecab-ko-dic\NNB.csv ... 140
reading mecab-ko-dic\NNBC.csv ... 677
reading mecab-ko-dic\NNG.csv ... 208524
reading mecab-ko-dic\NNP.csv ... 2371
reading mecab-ko-dic\NorthKorea.csv ... 3
reading mecab-ko-dic\NP.csv ... 342
reading mecab-ko-dic\NR.csv ... 482
reading mecab-ko-dic\Person-actor.csv ... 99230
reading mecab-ko-dic\Person.csv ... 196459
reading mecab-ko-dic\Place-address.csv ... 19301
reading mecab-ko-dic\Place-station.csv ... 1145
reading mecab-ko-dic\Place.csv ... 30303
reading mecab-ko-dic\Preanalysis.csv ... 5
reading mecab-ko-dic\Symbol.csv ... 16
reading mecab-ko-dic\user-nnp.csv ... 12
reading mecab-ko-dic\user-person.csv ... 1
reading mecab-ko-dic\user-place.csv ... 2
reading mecab-ko-dic\VA.csv ... 2360
reading mecab-ko-dic\VCN.csv ... 7
reading mecab-ko-dic\VCP.csv ... 9
reading mecab-ko-dic\VV.csv ... 7331
reading mecab-ko-dic\VX.csv ... 125
reading mecab-ko-dic\Wikipedia.csv ... 36762
reading mecab-ko-dic\XPN.csv ... 83
reading mecab-ko-dic\XR.csv ... 3637
reading mecab-ko-dic\XSA.csv ... 19
reading mecab-ko-dic\XSN.csv ... 124
reading mecab-ko-dic\XSV.csv ... 23
emitting double-array: 100% |###########################################|
reading mecab-ko-dic\matrix.def ... 3822x2693
emitting matrix : 100% |###########################################|
done!
테스트
- 이제 R 코드를 실행한다.
- 정상적으로 NNP로 분류가 된 것을 확인할 수 있다.