mecab-ko Windows 빌드

5,985 views
Skip to first unread message

윤원섭

unread,
Jul 1, 2017, 8:30:11 AM7/1/17
to 은전한닢 프로젝트

안녕하세요?


많은 분들이 mecab-ko Windows에서 사용하고 싶어 하지만 빌드가 어려워 사용하지 못하는 것으로 알고 있습니다.


역시도 어려움을 겪다가 최근에 빌드에 성공하여 관련 자료를 공유하고자 합니다.


상세한 내용, 소스코드와 빌드한 바이너리는 아래 링크에서 배포하고 있습니다. 프로젝트의 README.md 참고하시면 됩니다.


mecab-ko-msvc: https://github.com/Pusnow/mecab-ko-msvc

mecab-ko-dic-msvc: https://github.com/Pusnow/mecab-ko-dic-msvc

mecab-python-msvc: https://github.com/Pusnow/mecab-python-msvc


감사합니다.


Yong-woon Lee

unread,
Jul 17, 2017, 10:55:22 PM7/17/17
to 은전한닢 프로젝트
항상 윈도우 지원 안되냐고 질문 하실 때 안타까웠는데... 좋은 프로젝트 만들어주셔서 감사합니다. ^^

Boktae

unread,
Aug 10, 2017, 4:24:15 AM8/10/17
to 은전한닢 프로젝트
Elasticsearch에 올려 주신 mecab-kr windows 버전을 사용해보려고 합니다.

elasticsearch-analysis-mecab-ko 플러그인과 올려주신 mecab-ko-msvc, mecab-ko-dic-msvc 을 설치하였습니다.

mecab.exe로 테스트 시 정상동작 하였고, Elasticsearch에서 확인해보려고하는데 아래와 같이 에러로그를 남기고 죽는 증상이 있습니다.

[2017-08-10T17:10:58,764][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [] fatal error in thread [elasticsearch[sCit7pq][index][T#1]], exiting
java.lang.UnsatisfiedLinkError: Cannot load the native code.
Make sure your LD_LIBRARY_PATH contains MeCab.so path.

혹시 LD_LIBRARY_PATH 관련하여 어떻게 설정하셨는지 여쭈어 봐도 될까요


윤원섭

unread,
Aug 10, 2017, 9:06:31 AM8/10/17
to 은전한닢 프로젝트
안녕하세요?
Windows 환경 ElasticSearch에서 MeCab-Ko를 사용하기 위해서는 먼저 mecab-java를 윈도우에서 빌드해야 합니다.

이 역시 Mecab-ko의 다른 프로젝트처럼 빌드가 조금 어렵습니다.
이를 위해서 mecab-java-msvc라는 프로젝트를 새로 만들었습니다.
Release에서 JDK 1.8을 이용한 바이너리를 배포하고 있습니다. (https://github.com/Pusnow/mecab-java-msvc

또, 윈도우 ElasticSearch에서 사용하기 위해서는 몇가지 세팅이 더 필요합니다. 아래 설명을 첨부했으니 한번 따라해 보시고 문제가 있으면 알려주세요.

제 개인 PC에서는 성공적으로 ElasticSearch에서 MeCab-Ko를 불러왔습니다.


환경

* Windows 10 Enterprise x64 1703
* Oracle JDK 1.8 (jdk1.8.0_141)
* ElasticSearch 5.5.0

mecab-java 설치

1. mecab-ko-msvc을 C:\mecab 에 설치
2. mecab-ko-dic-msvc을 C:\mecab 에 설치
3. mecab-java-msvc에서 MeCab.dll을 C:\mecab 으로 복사


elasticsearch 플러그인 설치

1. C:\mecab 을 환경변수 PATH에 추가
2. ElasticSearch 5.5.0 MSI 설치
3. 5.5.0 버전 플러그인 설치 
    1. 관리자의 권한으로 CMD 실행
    2. 다음 명령어를 실행하여 플러그인 설치
    4. ElasticSearch 재시작

POSTMAN을 이용해 테스트

1. 혹시 있을 eunjeon 제거
2. 인데스 추가 리눅스 버전과 다르게 mecab_args로 사전 경로를 지정해 주어야 합니다.
    BODY(JSON):
    {
        "settings": {
            "index": {
            "analysis": {
                "analyzer": {
                "korean_index": {
                    "type": "custom",
                    "tokenizer": "mecab_ko_standard_tokenizer"
                },
                "korean_query": {
                    "type": "custom",
                    "tokenizer": "korean_query_tokenizer"
                }
                },
                "tokenizer": {
                "mecab_ko_standard_tokenizer": {
                    "type": "mecab_ko_standard_tokenizer",
                    "mecab_args": "-d C:/mecab/mecab-ko-dic"
                },
                "korean_query_tokenizer": {
                    "type": "mecab_ko_standard_tokenizer",
                    "compound_noun_min_length": 100,
                    "mecab_args": "-d C:/mecab/mecab-ko-dic"
                }
                }
            }
            }
        }
    }

3. 테스트
    BODY(text) : 은전한닢 프로젝트

4. 결과
{
    "tokens": [
        {
            "token": "은전",
            "start_offset": 0,
            "end_offset": 2,
            "type": "NNG",
            "position": 0
        },
        {
            "token": "한",
            "start_offset": 2,
            "end_offset": 3,
            "type": "NR",
            "position": 1
        },
        {
            "token": "닢",
            "start_offset": 3,
            "end_offset": 4,
            "type": "NNG",
            "position": 2
        },
        {
            "token": "프로젝트",
            "start_offset": 5,
            "end_offset": 9,
            "type": "NNG",
            "position": 3
        }
    ]
}

Boktae

unread,
Aug 10, 2017, 7:30:44 PM8/10/17
to 은전한닢 프로젝트
와 정말 감사드립니다.

아침에 출근하자마자 적용해보았는데 잘  동작 합니다.

회사개발환경이 윈도우즈 환경이라 은전한닢을 설치하는데 어려움이 있었는데 덕분에 쉽게 사용 할 수 있을 것 같습니다.

감사히 잘 쓰도록 하겠습니다.

정수열

unread,
Sep 11, 2017, 2:58:35 AM9/11/17
to 은전한닢 프로젝트
안녕하세요.
윤원섭님, 

엘라스틱서치 윈도우 구축을 하기 위해 자료를 찾던 중, 님께서 작성하신 글을 봤습니다.
정리를 잘 해주셔서 감사합니다.

하지만 공유해주신 내용을 토대로 엘라스틱서치를 윈도우에 구축을 해보려고 테스트를 해봤는데, 
정상적으로 되지 않아 질문을 드리게 됐습니다. 

기본적인 에러 내용은 위에서 Boktae님이 질문 했던 내용과 동일한 것 같습니다.

그래서 윤원섭 님께서 환경설정하는 방법을 작성해준 대로 설정 후, 
Test.Java를 실행할 때 여전히 같은 오류가 나타나는 것 같습니다.


환경상의 문제나 부족한 라이브러리가 있는 것 같은데 해결 방법을 아시면 답변 부탁 드리겠습니다.
감사합니다.



테스트 환경은 아래와 같습니다.
 - 윈도우 8.1 Pro K x64 (6.3.9600)
 - JDK 1.8.0 (144) x64
 - ElasticSearch 5.5.0 x64
 - mecab & mecab-dic : 게시글에 git에 있는 Binary x64  
 - mecab-java : 게시글 git에 있는 Binary x64


Test.java 를 실행했을 때 나오는 오류 입니다.

============================ 오류 내용 ============================
C:\mecab>java test
Cannot load the example native code.
Make sure your LD_LIBRARY_PATH contains '.' 
java.lang.UnsatisfiedLinkError: C:\mecab\MeCab.dll: Can't find dependent libraries
================================================================

정수열

unread,
Sep 11, 2017, 3:49:14 AM9/11/17
to 은전한닢 프로젝트
이것 저것 해보다가  자문 자답하게 되네요.

VS2015 재배포 패키지가 설치 되 있지 않아 발생한 문제 같습니다. (vcruntime140dll 없음)

아래 링크에서 재배포패키지 설치하니 정상 동작하네요!

아직 ElasticSearch에서는 테스트 하지는 못해봤지만 일단 test 코드는 실행이 되네요.
감사합니다! 잘 사용하겠습니다.


PS.
빌드를 어떻게 해야할지 몰라서 직접 빌드는 못해봤는데, 
예전에 VS2013에서 C++ 빌드 했을때 기억으로는 재배포 패키지 없이 빌드 할 수 있는 옵션이 있었던 것 같습니다.
해당 옵션으로 빌드를 해둘 경우 재배포 패키지 없이 사용가능하지 않을까 싶습니다. (http://giyatto.tistory.com/41)

Tk Yoon

unread,
Sep 12, 2017, 2:14:25 AM9/12/17
to 은전한닢 프로젝트
많은 도움이 되었습니다. 감사합니다. 

윤원섭

unread,
Sep 30, 2017, 12:19:12 PM9/30/17
to 은전한닢 프로젝트
정수열 선생님께

안녕하세요. 
우선 피드백 감사드립니다.
저 또한 동일한 증상을 확인하여 방금 빌드 옵션을 조정하여 재배포 패키지 없이도 실행될 수 있게 수정했습니다.
또 사용상에 문제가 있으면 피드백은 언제든지 환영입니다.

감사합니다.
윤원섭 올림

김철현

unread,
Oct 17, 2017, 4:15:10 AM10/17/17
to 은전한닢 프로젝트
안녕하세요.
윤원섭님, 

엘라스틱서치 윈도우 구축을 하기 위해 자료를 찾던 중, 님께서 작성하신 글을 봤습니다.
정리를 잘 해주셔서 감사합니다.
한가지 질문드리겠습니다.
윈도우 버전의 경우 tokenizer의 user_words 설정이 적용되나요?
user_words 설정 했는데, 적용이 안되는 것 같아서 질문드립니다.

좋은 하루 되세요^^

윤원섭

unread,
Oct 17, 2017, 4:31:22 AM10/17/17
to 은전한닢 프로젝트
user_words 옵션은 elasticsearch-analysis-seunjeon 에 있는 옵션 같습니다. 이 플러그인은 mecab-java와 연동되는 elasticsearch-analysis-mecab-ko 와는 다른 플러그인입니다.

사용자 사전을 사용하고 싶으신 것이면  elasticsearch-analysis-seunjeon  을 사용하시고 user_words 옵션을 사용하시거나  elasticsearch-analysis-mecab-ko 를 사용하시면서 mecab-ko-dic을 업데이트 하셔야 합니다.
mecab-ko-dic에 사용자 사전을 추가하는 방법은 링크 에 설명되어 있습니다. 한가지 문제는 add-userdic.sh 파일이 윈도우와 호환되지 않습니다. 리눅스에서 사용자 사전을 추가하거나 윈도우의 경우 mecab-dict-index.exe 파일로 add-userdic.sh 내용을 파워셀 등을 이용하여 적용해 사용자 사전을 업데이트 하셔야 할 것입니다. 

추후에 시간이 되면 add-userdic 의 윈도우용 배치 파일을 한번 만들어 보겠습니다.

윤원섭

unread,
Feb 26, 2018, 12:12:17 PM2/26/18
to 은전한닢 프로젝트
Powershell을 이용한 윈도우용 사전 추가 스크립트를 제작하여 업데이트 했습니다.

혹시 필요하신 부분 mecab-ko-dic-msvc를 최신버전 으로 업데이트 하시고 아래 링크의 지침을 따라 주시면 됩니다.

Message has been deleted

janerim oh

unread,
Dec 11, 2019, 11:44:06 PM12/11/19
to 은전한닢 프로젝트
안녕하세요, mecab을 윈도우에서 보게되다니 매우 기쁘네요~
적용해보는 중인데 mecab-java 빌드 중에 에러가 나서요..

JAVA 환경도 다 맞춰서 진행했는데 추가로 설치하거나 적용해야하는 설정이 있을까요? 


캡처.PNG


Reply all
Reply to author
Forward
0 new messages