CygwinでMeCabインストール。

Created in: 2015-07-24 Author: iray_tno Category: Tags: Computer_a, MeCab_a, Cygwin_a, 自然言語処理_a

はじめに

日本語の自然言語処理に欠かせない形態素解析エンジンMeCabをCygwinにインストールします。

MeCabの最新バージョンは0.996ですが、Cygwinでは0.996がビルドに失敗するため、0.98を使ってる人が多いようです。

少し前までは、0.99xをビルドできるようにするパッチを公開している方が居たようですが、現在は非公開になってしまいました。

僕もずっとそのパッチを探していたのですが、見つからなかったので作りました。

依存の解決

以下のパッケージをcygwinのsetup.exeからインストールしてください。

  • gcc-g++
  • make
  • expat
  • gettext
  • gettext-devel
  • libiconv
  • libtool

 引用:http://www.mk-mode.com/octopress/2012/03/06/06002013/

パッチ

パッチを以下のURLからダウンロードするか、下にあるものをコピペしてmecab-0.996.patchという名前で、/usr/src以下に保存しましょう。

https://gist.github.com/iray-tno/c0f00363fc2553218d5d

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
diff -ur mecab-0.996/src/dictionary.cpp mecab-0.996_new/src/dictionary.cpp
--- mecab-0.996/src/dictionary.cpp  2013-02-16 11:50:46.000000000 +0900
+++ mecab-0.996_new/src/dictionary.cpp  2015-07-24 21:27:47.671159100 +0900
@@ -5,6 +5,7 @@
 //  Copyright(C) 2004-2006 Nippon Telegraph and Telephone Corporation
 #include <fstream>
 #include <climits>
+#include <vector>
 #include "connector.h"
 #include "context_id.h"
 #include "char_property.h"
diff -ur mecab-0.996/src/feature_index.cpp mecab-0.996_new/src/feature_index.cpp
--- mecab-0.996/src/feature_index.cpp   2012-11-25 14:35:33.000000000 +0900
+++ mecab-0.996_new/src/feature_index.cpp   2015-07-24 21:28:32.020428600 +0900
@@ -7,6 +7,7 @@
 #include <cstring>
 #include <fstream>
 #include <string>
+#include <vector>
 #include "common.h"
 #include "feature_index.h"
 #include "param.h"
diff -ur mecab-0.996/src/tagger.cpp mecab-0.996_new/src/tagger.cpp
--- mecab-0.996/src/tagger.cpp  2013-02-18 01:55:30.000000000 +0900
+++ mecab-0.996_new/src/tagger.cpp  2015-07-24 21:25:32.112288000 +0900
@@ -6,6 +6,7 @@
 #include <cstring>
 #include <iostream>
 #include <iterator>
+#include <vector>
 #include "common.h"
 #include "connector.h"
 #include "mecab.h"
diff -ur mecab-0.996/src/tokenizer.cpp mecab-0.996_new/src/tokenizer.cpp
--- mecab-0.996/src/tokenizer.cpp   2013-01-23 23:58:03.000000000 +0900
+++ mecab-0.996_new/src/tokenizer.cpp   2015-07-24 21:27:12.790503000 +0900
@@ -3,6 +3,7 @@
 //
 //  Copyright(C) 2001-2011 Taku Kudo <taku@chasen.org>
 //  Copyright(C) 2004-2006 Nippon Telegraph and Telephone Corporation
+#include <vector>
 #include "common.h"
 #include "connector.h"
 #include "darts.h"
diff -ur mecab-0.996/src/viterbi.cpp mecab-0.996_new/src/viterbi.cpp
--- mecab-0.996/src/viterbi.cpp 2013-02-18 01:00:26.000000000 +0900
+++ mecab-0.996_new/src/viterbi.cpp 2015-07-24 21:24:20.645948500 +0900
@@ -7,6 +7,7 @@
 #include <iterator>
 #include <cmath>
 #include <cstring>
+#include <vector>
 #include "common.h"
 #include "connector.h"
 #include "mecab.h"
diff -ur mecab-0.996/src/winmain.h mecab-0.996_new/src/winmain.h
--- mecab-0.996/src/winmain.h   2012-10-28 13:07:01.000000000 +0900
+++ mecab-0.996_new/src/winmain.h   2015-07-24 23:19:06.803341500 +0900
@@ -2,7 +2,7 @@
 //
 //  Copyright(C) 2001-2011 Taku Kudo <taku@chasen.org>
 //  Copyright(C) 2004-2006 Nippon Telegraph and Telephone Corporation
-#if defined(_WIN32) || defined(__CYGWIN__)
+#if defined(_WIN32) && !defined(__CYGWIN__)

 #include <windows.h>
 #include <string>

インストール

以下のURLから、mecab-0.996.tar.gzと、IPA 辞書をダウンロードして、おなじく/usr/src以下に置きましょう。

http://taku910.github.io/mecab/#download

あとは以下のコマンドでインストールできます。(CPPFLAGS=-DNOMINMAX LIBS=-liconvはつけなくて大丈夫っぽい)

1
2
3
4
5
6
7
8
$ cd /usr/src
$ tar zxvf mecab-0.996.tar.gz
$ tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz
$ patch -p1 -d ./mecab-0.996/ < ./mecab-0.996.patch
$ cd ./mecab-0.996
$ ./configure --with-charset=utf-8; make; make install
$ cd ../mecab-ipadic-2.7.0-20070801
$ ./configure --with-charset=utf-8; make; make install

サンプル

1
2
3
4
5
6
7
8
9
10
$ mecab
すもももももももものうち
すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
うち    名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

パッチを作るコマンド

よく忘れる。

1
$ diff -ur ./mecab-0.996 ./mecab-0.996_new/ > mecab-0.996.patch
comments powered by Disqus