2017년 4월 14일 금요일

mecab 윈도우 빌드

http://legendfinger.tistory.com/625

mecab-ko 윈도우에서 빌드하기

Posted 2014.07.07 10:47


댓글 하나가 운영자에겐 커다란 힘이 됩니다!
"mecab-ko는 은전한닢 프로젝트에서 사용하기 위한 MeCab의 fork 프로젝트입니다."

은전한닢 프로젝트는 C++ 기반의 오픈소스 한국어 형태소 분석기를 찾다가 발견한 프로젝트이다. 국가에서 지원 받아 국민의 혈세로 진행된 여러가지 프로젝트들이 있었지만 라이브러리만 배포하고 소스코드를 공개하지 않는 현실에서 이렇게 훌륭한 결과물을 아무런 조건없이 공개하는 은전한닢 프로젝트, 기여하신 모든 분들께 존경을 표합니다.


mecab-ko는 Windows 버전을 아직 지원하지 않기 때문에 MinGW를 이용하여 빌드 해보았다. 그 과정에 대한 기록이다.

  1. MinGW와 MSYS를 설치한다.
    MinGW는 마이크로소프트 윈도로 포팅한 GNU 소프트웨어 도구 모음이다. mingw32로도 알려져 있다. MinGW는 윈도 API를 구현할 수 있는 헤더 파일들을 가지고 있으며 이로써 개발자들이 "자유롭게 쓸 수 있는" 컴파일러인 GCC를 사용할 수 있다. 위키백과
    MSYS는 MinGW 프로젝트의 일부로서, 콘솔 기반 빌드 시스템이다.
    • MinGW 인스톨러 다운로드. http://sourceforge.net/projects/mingw/files/Installer/
    • 적당히 Next 또는 Continue를 하면 아래 그림과 같은 Installation Manager 화면이 나타난다.
    • 체크박스에 install표시를 한다.
    • Installation - Apply Changes 메뉴를 선택하여 install한다.
    • 설치하는데 시간이 좀 걸린다.
    • MSYS를 실행 해보자. (나의 경우, 다음 경로에 설치 되었다. C:\MinGW\msys\1.0)
    • 에러 메시지가 출력되면서 모든 명령이 실행되지 않는다. 이 문제는 azza님이 블로그에 해결 방법을 자세히 설명해 놓으셨다. 참고하여 해결하였다. * rebase를 이용한 dll의 base address 수정하기
    • 다시 MSYS를 실행하면 에러 메시지가 안보인다. home 디렉토리도 생성 되었다.
  2. mecab-ko 빌드
    • 이제 MSYS를 이용하여 mecab-ko를 빌드 해보자.
    • mecab-ko 다운로드 페이지에서 mecab-ko의 소스를 다운로드 한다.
    • 압축을 풀어서 home 디렉토리에 복사하자.
    • MSYS를 실행하고 해당 복사한 디렉토리로 이동하여 ./configure를 실행!
    • 아래 그림처럼 에러가 발생했다!
    • 에러 내용을 보니 몇가지 프로그램을 찾을 수 없다는 것이다. 그러고 보니 MinGW를 설치만 했지 환경변수에 등록하지 않았다.
    • MinGW의 bin 디렉토리를 환경변수에 등록하자. 나의 경우에는 디록토리 경로가 C:\MinGW\bin이다.
    • 변경된 환경변수 값이 적용 될 수 있도록 MSYS를 다시 실행하고 ./configure를 실행!
    • 성공! 이제 라이브러리를 빌드해야한다. /src 디렉토리를 확인하면 make.bat 파일이 확인 할 수있다.
    • VisualStudio Tool에 있는 명령 프롬프트를 이용하여 make.bat 파일을 실행하면, 아래와 같이 library 파일들과 실행 파일들이 생성이 된 것이 확인된다.
  3. mecab-ko-dic 빌드
    • mecab-ko-dic-1.4.3-20131115를 사용하였다.
    • 이제 사전 파일인 mecab-ko-dic을 빌드 해보자
    • mecab-ko-dic 다운로드 페이지에서 최신 버전을 다운로드 한다.
    • 압축을 풀어서 home 디렉토리에 복사하자.
    • MSYS를 실행하고 해당 복사한 디렉토리로 이동하여 ./configure를 실행!
    • mecab-config 파일은 mecab-ko를 configure 했을때 생성된다. 복사한 후 다시 ./configure
    • make 를 실행해보자
    • /mingw/bin/autom4te-2.68 상대경로를 찾지 못한다.
    • 디렉토리를 생성.
      • mkdir /mingw
    • MinGW의 하위 디렉토리들을 링크한다.(msys 디렉토리를 자기 자신이기 때문에 제외한다)
      • ln -s /c/mingw/bin /mingw
      • ln -s /c/mingw/include /mingw
      • ln -s /c/mingw/lib /mingw
      • ln -s /c/mingw/libexec /mingw
      • ln -s /c/mingw/mingw32 /mingw
      • ln -s /c/mingw/share /mingw
      • ln -s /c/mingw/var /mingw
    • 다시 빌드(make)
    • 이번에는 mecab-dict-index 실행 파일을 못찾았다고 한다. 빌드만 하고 install은 안했으니 당연한 결과이다.
    • 그냥 Makefile 열어서 mecab-dict-index의 상대 경로를 수정 해버렸다.
      • mecab_dict_index = <mecab-ko 빌드로 생성된 실행 파일 경로>
      • dicdir = <dic 소스 디렉토리>
    • 성공이다. 사전 파일들이 생성된 것을 확인 할 수 있다.
  4. 테스트
    • 먼저 mecab-ko 관련 파일들을 d:\librarys\mecab-ko 디렉토리에 옮겨놓고 사전 파일들을 mecab-ko의 하위에 dic\mecab-ko-dic라는 이름으로 디렉토리를 생성하여 옮겨 놓았다.
    • Windows Cosole에서 제대로된 결과가 출력되지 않기 때문에 테스트 문서를 인풋파일(UTF-8형식)로 받고 형태소 분석 결과를 아웃풋 파일로 받는 형태로 테스트 한다.
    • test.txt 파일(UTF-8형식)을 생성한다. 내용은 다음과 같다.
    • mecab-ko 경로상에서 Command창을 띄운다.
    • mecab-ko -h 명령으로 사용법을 확인할 수 있고 사전 파일의 경로를 지정하여 mecab을 실행 하였다.
    • 다음은 실행 결과로 생성된 아웃풋 파일이다.
* Mecab 64bit로 빌드하기
  • VS** x64 네이티브 도구 명령 프롬프트를 이용하여 make.bat 실행
  • 에러 발생!
  • feature_index.cpp 파일을 열어서 수정한다.
    case 't':  os_ << (size_t)path->rnode->char_type;     break; 를 아래와 같이 수정한다.
    case 't':  os_ << path->rnode->char_type;     break;
  • 다시 make.bat 실행
  • 또 다시 에러 발생!
  • writer.cpp 파일을 열어서 수정한다.
    case 'L': *os << lattice->size(); break; 를 아래와 같이 수정한다.
    case 'L': *os << (char)lattice->size(); break;
  • 성공!



출처: http://legendfinger.tistory.com/625 [I am Developer!]

출처: http://legendfinger.tistory.com/625 [I am Developer!]

댓글 2개:

  1. 안녕하세요 좋은 정보 감사합니다. 궁금한 게 있는데 이렇게 윈도우에 적용하면 자바에서 라이브러리 사용이 가능한가요?

    답글삭제
  2. 혹시 makefile 주소 바꾸신거 스샷 추가해주실 수 있나요..? 계속 Command not found라고 떠서.. ㅠㅠ

    답글삭제

centos7 kernel update

퍼옴 :  https://deepcell.co.kr/m/101?category=803342 CentOS 7.x 의 경우 Linux Kerne Version이 3.10입니다. 참고로 최신 Linux Kernel Version은 5.6(2020년 2월 현...