MeCabをAmazonLinux2023にインストールする方法(mecab-ipadic-neologd辞書の追加方法も解説)

MeCabは日本語の文章を単語に分ける形態素解析エンジンで、本記事ではAmazon Linux 2023へのインストール手順を解説します。標準辞書に加え、新語に強いNEologd辞書の導入方法や、メモリ不足環境での具体的な対処法まで、システムエンジニア初心者向けに詳しくご紹介します。

作成日: 更新日:

本番環境

  • AmazonLinux2023
  • mecab of 0.996

MeCabをAmazonLinux2023にインストールする手順

MeCabは、日本語の文章を単語単位に分割するための「形態素解析エンジン」と呼ばれるソフトウェアです。自然言語処理の分野で広く利用されています。 この手順では、MeCabのソースコード(プログラムの設計図)から、実際にコンピュータで動くプログラムを生成(コンパイル)し、システムに導入(インストール)する方法を解説します。

必要パッケージのインストール

まず、ソースコードからプログラムをビルド(構築)するために必要なツール群をインストールします。ビルドとは、人間が読めるソースコードを、コンピュータが実行できる形式に変換する作業のことです。

dnfはAmazon Linux 2023で使われるパッケージ管理ツールで、ソフトウェアのインストールや管理を行います。以下のコマンドは、git(ソースコードのダウンロード用)、gccmake(ビルド用)などの必須ツールを一括でインストールします。

必要パッケージのインストール
1sudo dnf install -y git gcc gcc-c++ make automake autoconf libtool

ソースコードの取得

次に、MeCabのソースコードをインターネット上のリポジトリ(保管場所)であるGitHubからダウンロードします。

一般的に、ソースコードからソフトウェアをインストールする場合、/usr/local/srcというディレクトリにソースコードを置く慣習があります。まずcdコマンドでそのディレクトリに移動し、git cloneコマンドでソースコードを取得します。

ソースコードの取得
1cd /usr/local/src
2sudo git clone --depth 1 https://github.com/taku910/mecab.git

ロケールの確認・設定

MeCabは日本語を扱うため、システムが使用する言語設定(ロケール)が日本語になっているか確認する必要があります。

localeコマンドを実行して、現在の設定を表示します。

ロケールの確認・設定
1locale

以下のように、LANGC.UTF-8など日本語以外になっている場合があります。

出力結果
1LANG=C.UTF-8
2LC_CTYPE="C.UTF-8"
3LC_NUMERIC="C.UTF-8"
4LC_TIME="C.UTF-8"
5LC_COLLATE="C.UTF-8"
6LC_MONETARY="C.UTF-8"
7LC_MESSAGES="C.UTF-8"
8LC_PAPER="C.UTF-8"
9LC_NAME="C.UTF-8"
10LC_ADDRESS="C.UTF-8"
11LC_TELEPHONE="C.UTF-8"
12LC_MEASUREMENT="C.UTF-8"
13LC_IDENTIFICATION="C.UTF-8"
14LC_ALL=

このままでは文字化けなどの問題が発生する可能性があるため、以下のコマンドで言語設定を一時的に日本語(ja_JP.UTF-8)に変更します。

ロケールの設定
1export LANG=ja_JP.UTF-8
2export LC_ALL=ja_JP.UTF-8

MeCab 本体と辞書 (mecab-ipadic) のコンパイル・インストール

ソースコードの準備ができたので、いよいよコンパイルとインストールを行います。MeCabは、単語を分割するためのルールが書かれた「辞書」とセットで動作します。そのため、「MeCab本体」と「辞書(今回はmecab-ipadicという標準的な辞書)」の両方をインストールする必要があります。

ここで行う./configuremakemake installは、ソースコードからソフトウェアをインストールする際の標準的な手順です。

  1. ./configure: ご利用のシステム環境をチェックし、ビルドに必要な設定ファイル(Makefile)を自動で生成します。--with-charset=utf8は、文字コードをUTF-8に指定するための重要なオプションです。
  2. make: configureで生成された設定ファイルに従って、ソースコードをコンパイルし、実行可能なプログラムを生成します。
  3. make install: 生成されたプログラムや関連ファイルを、システムの適切な場所にコピーしてインストールを完了させます。

まずはMeCab本体からインストールします。

MeCab本体のコンパイル・インストール
1cd /usr/local/src/mecab/mecab
2sudo ./configure --with-charset=utf8
3sudo make
4sudo make install

続いて、辞書(mecab-ipadic)をインストールします。

辞書(mecab-ipadic)のコンパイル・インストール
1cd /usr/local/src/mecab/mecab-ipadic
2sudo ./configure --with-charset=utf8
3sudo make
4sudo make install

動作確認

最後に、MeCabが正しくインストールされたかを確認します。

whichコマンドは、指定したコマンドがシステムのどこにインストールされているか(パス)を表示します。以下のようにパスが表示されれば、コマンドが実行できる状態になっています。

動作確認
1which mecab
出力結果
1/usr/local/bin/mecab
動作確認
1which mecab-config
出力結果
1/usr/local/bin/mecab-config

mecab-configコマンドを使うと、MeCabの設定情報を確認できます。ここでは設定ファイルと辞書の場所を確認しています。

動作確認
1mecab-config --sysconfdir
出力結果
1/usr/local/etc
動作確認
1mecab-config --dicdir
出力結果
1/usr/local/lib/mecab/dic/ipadic

最終確認として、実際にMeCabに文章を渡し、形態素解析を実行してみます。<<<は、右側の文字列を左側のmecabコマンドの入力として渡すための記述です。

文章が単語ごとに分割され、品詞などの情報と共に出力されていれば、インストールは成功です。EOSは文の終わり(End of Sentence)を意味します。

動作確認
1mecab <<< "すもももももももものうち"
出力結果
1すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ
2も      助詞,係助詞,*,*,*,*,も,モ,モ
3もも    名詞,一般,*,*,*,*,もも,モモ,モモ
4も      助詞,係助詞,*,*,*,*,も,モ,モ
5もも    名詞,一般,*,*,*,*,もも,モモ,モモ
6の      助詞,連体化,*,*,*,*,の,ノ,ノ
7うち    名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
8EOS

辞書 (NEologd) をAmazonLinux2023にインストールする手順

このセクションでは、NEologdという特別な日本語辞書をAmazon Linux 2023というサーバー環境にインストールする手順について説明します。NEologdは、インターネット上で日々生まれる新しい言葉や専門用語、固有名詞などを効率よく処理するために開発された辞書です。日本語の文章をコンピューターで分析する「形態素解析」という処理を行う際に、より正確な結果を得るために役立ちます。

必要パッケージのインストール

NEologdをインストールするためには、事前にいくつか必要なツール(パッケージ)をコンピューターに準備する必要があります。

必要パッケージのインストール
1sudo dnf install -y xz patch openssl
  • sudo: 管理者権限でコマンドを実行する際に使用します。システムの重要な設定を変更するときなどに必要です。
  • dnf: Amazon Linux 2023でソフトウェアをインストール、更新、削除するためのコマンドです。Windowsでいう「アプリストア」のような役割を果たします。
  • install: 指定したパッケージをインストールする指示です。
  • -y: インストールの途中で「本当にインストールしますか?」といった確認の質問が出た場合、自動的に「はい」と答えるオプションです。
  • xz, patch, openssl: これらはNEologdのソースコードを展開したり、修正を適用したり、セキュアな通信を行ったりするために必要な基本的なツールやライブラリです。

ソースコードの取得

次に、NEologdの元となるプログラムの設計図(ソースコード)をインターネットからダウンロードして、自分のコンピューターに保存します。

ソースコードの取得
1cd /usr/local/src
2sudo git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
  • cd /usr/local/src: cdは「Change Directory」の略で、指定したディレクトリ(フォルダ)に移動するコマンドです。/usr/local/srcは、一般的にソフトウェアのソースコードを保存する場所として使われます。
  • git clone: インターネット上にあるプログラムのソースコード(リポジトリと呼びます)を自分のコンピューターにコピーしてくるコマンドです。
  • --depth 1: ソースコードの全ての更新履歴ではなく、最新版のコードだけを取得するオプションです。これにより、ダウンロードの時間が短縮されます。
  • https://github.com/neologd/mecab-ipadic-neologd.git: NEologdのソースコードが公開されている場所のURLです。GitHubは、世界中の開発者がプログラムを公開し、共同で開発を進めるためのプラットフォームです。

辞書(mecab-ipadic-neologd)のコンパイル・インストール

ソースコードをダウンロードしたら、それを実際にコンピューターで使える辞書の形に変換し、システムに組み込む作業を行います。この変換作業を「コンパイル」と呼びます。

辞書(mecab-ipadic-neologd)のコンパイル・インストール
1cd /usr/local/src/mecab-ipadic-neologd
2sudo ./bin/install-mecab-ipadic-neologd -n -y
  • cd /usr/local/src/mecab-ipadic-neologd: 先ほどgit cloneでダウンロードしたNEologdのソースコードが保存されているディレクトリに移動します。
  • ./bin/install-mecab-ipadic-neologd -n -y: これは、NEologdをインストールするための専用のスクリプト(自動化されたプログラム)を実行するコマンドです。
    • ./: 現在いるディレクトリ内のファイルを実行することを示します。
    • -n: 辞書をコンパイルする(ソースコードを実行可能な形式に変換する)オプションです。
    • -y: インストール途中の質問に自動的に「はい」と答えるオプションです。

正常に終了すると、NEologd の辞書パスが表示されます

出力結果
1[install-mecab-ipadic-NEologd] : Install completed.
2[install-mecab-ipadic-NEologd] : When you use MeCab, you can set '/usr/local/lib/mecab/dic/mecab-ipadic-neologd' as a value of '-d' option of MeCab.
3[install-mecab-ipadic-NEologd] : Usage of mecab-ipadic-NEologd is here.
4Usage:
5    $ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd ...
6
7[install-mecab-ipadic-NEologd] : Finish..
8[install-mecab-ipadic-NEologd] : Finish..

この出力結果は、NEologdのインストールが無事に完了したことを示しています。特に重要なのは、辞書がインストールされた場所 /usr/local/lib/mecab/dic/mecab-ipadic-neologd を示している部分です。このパスは、後でNEologd辞書を使うときに必要になります。

動作確認

NEologdが正しくインストールされ、機能するかどうかを確認します。ここでは「形態素解析」という処理を実行してみます。

動作確認
1mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd <<< "すもももももももものうち"
  • mecab: 日本語の形態素解析を行うためのコマンドラインツールです。
  • -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd: mecabコマンドに対して、どの辞書を使って解析を行うかを指定するオプションです。ここでは、先ほどインストールしたNEologd辞書のパスを指定しています。
  • <<< "すもももももももものうち": これは「ヒアドキュメント」という機能で、二重引用符で囲まれた文字列(ここでは「すもももももももものうち」)をmecabコマンドの入力として直接渡しています。
出力結果
1すもももももももものうち        名詞,固有名詞,一般,*,*,*,すもももももももものうち,スモモモモモモモモノウチ,スモモモモモモモモノウチ

この結果を見ると、「すもももももももものうち」という一見区切りが難しいフレーズが、NEologdによって「名詞,固有名詞,一般」として正確に一つのまとまりと認識されていることがわかります。これは、NEologdが通常の辞書では対応しきれない新しい言葉や複雑な表現も適切に解析できる能力を持っていることを示しています。

NEologdのアップデート

NEologdは日々新しい言葉が追加されたり、既存の単語の情報が修正されたりするため、定期的に最新の状態に更新することが推奨されます。

NEologdのアップデート
1cd /usr/local/src/mecab-ipadic-neologd
2sudo ./bin/install-mecab-ipadic-neologd -u
  • cd /usr/local/src/mecab-ipadic-neologd: NEologdのソースコードがダウンロードされているディレクトリに移動します。
  • sudo ./bin/install-mecab-ipadic-neologd -u: インストール時と同じスクリプトを実行しますが、今回は -u オプションを使用します。-uは「update」(更新)を意味し、辞書データを最新のものに更新します。

更新頻度の目安として、小規模な修正は月に数回から十数回行われます。これには、新語や固有名詞、カタカナ英語の追加・修正、タイポ修正、文字コードの修正、重複データの削除などが含まれます。

また、半年から1年に1回程度、大型更新が行われることがあります。この更新では、品詞情報(単語の種類)の改善や、辞書の内部構造の大幅な変更など、より広範囲な修正が行われます。定期的にアップデートすることで、常に最新の日本語に対応した形態素解析が可能になります。

メモリが少ない環境でのインストール方法

t2.micro や t3.micro といったクラウド環境の仮想サーバーでは、メモリが 1GB 未満という比較的小さい容量のものが多く存在します。このような環境で「MeCab-IPADIC-NEologd」という、日本語の文章を解析するための特別な辞書をインストールしようとすると、メモリ不足が原因でインストールが失敗してしまうことがあります。

このような場合でも、コンピューターのディスクの一部を一時的にメモリのように利用する「スワップ領域」を作成することで、メモリ不足を解消し、インストールが成功することがあります。

スワップ領域の作成

スワップ領域は、ディスクの空き容量を借りて、一時的なメモリとして使用する領域のことです。以下のコマンドでスワップ領域を作成し、有効化します。

スワップ領域の作成
1sudo fallocate -l 2G /swapfile
2sudo chmod 600 /swapfile
3sudo mkswap /swapfile
4sudo swapon /swapfile
  1. sudo fallocate -l 2G /swapfile: fallocate コマンドは、指定したサイズのファイルをすぐに作成します。ここでは /swapfile という名前で 2GB(-l 2G)のファイルを、管理者権限(sudo)で作成しています。このファイルがスワップ領域として使われます。
  2. sudo chmod 600 /swapfile: chmod コマンドは、ファイルのアクセス権限を変更します。600 は、ファイルを作成したユーザー(所有者)のみが読み書きでき、他のユーザーからは読み書きも実行もできないようにする設定です。セキュリティのために、スワップファイルへのアクセスを制限します。
  3. sudo mkswap /swapfile: mkswap コマンドは、先ほど作成した /swapfile をスワップ領域として利用できるようにフォーマットします。
  4. sudo swapon /swapfile: swapon コマンドは、指定したファイルをシステムのスワップ領域として有効にします。これにより、OSがメモリ不足になった際に、このスワップファイルを一時的に利用できるようになります。

スワップ領域の確認

スワップ領域が正しく作成され、有効になっているかは free -h コマンドで確認できます。

スワップ領域の確認
1free -h
出力結果
1               total        used        free      shared  buff/cache   available
2Mem:           949Mi       130Mi       609Mi       0.0Ki       209Mi       681Mi
3Swap:          2.0Gi          0B       2.0Gi

この出力結果の Swap: の行を見ると、total2.0Gi となっており、2GB のスワップ領域が利用可能になっていることがわかります。used0B なので、まだ使用されていない状態です。

MeCab-IPADIC-NEologdのインストール

スワップ領域が有効になったら、MeCab-IPADIC-NEologdのインストールを行います。

MeCab-IPADIC-NEologdのインストール
1cd /usr/local/src
2sudo git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
3cd mecab-ipadic-neologd
4sudo nice -n 10 ./bin/install-mecab-ipadic-neologd -n -y
  1. cd /usr/local/src: /usr/local/src は、一般的にソフトウェアのソースコードを置くためのディレクトリです。まずこのディレクトリに移動します。
  2. sudo git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git: git clone コマンドを使って、GitHubにあるMeCab-IPADIC-NEologdのリポジトリをダウンロードします。--depth 1 オプションは、プロジェクトの全履歴ではなく、最新のバージョンのみをダウンロードすることで、ダウンロード時間とディスク使用量を節約できます。
  3. cd mecab-ipadic-neologd: ダウンロードしたプロジェクトのディレクトリに移動します。
  4. sudo nice -n 10 ./bin/install-mecab-ipadic-neologd -n -y: インストールスクリプトを実行します。
    • nice -n 10: nice コマンドは、プログラムの実行優先度を設定します。-n 10 は、通常よりも少し低い優先度で実行することを意味します。これにより、CPUへの負荷を抑えながら、バックグラウンドでゆっくりとインストールを進めることができます。
    • ./bin/install-mecab-ipadic-neologd: インストールを実行するスクリプトです。
    • -n -y: スクリプトのオプションで、質問に対して自動的に「はい」と答えるなど、対話なしでインストールを進めるためのものです。

これらの手順で、MeCab-IPADIC-NEologdのインストールが完了するはずです。

終了後にスワップを削除する場合

MeCab-IPADIC-NEologdのインストールが完了し、もうスワップ領域が不要になった場合は、作成したスワップ領域を削除してディスク容量を元に戻すことができます。

スワップ領域の削除
1sudo swapoff /swapfile
2sudo rm /swapfile
  1. sudo swapoff /swapfile: swapoff コマンドは、指定したスワップ領域を無効にします。これにより、システムはこのファイルを一時的なメモリとして使わなくなります。
  2. sudo rm /swapfile: rm コマンドはファイルを削除します。これで、スワップファイルとして作成した /swapfile がディスクから完全に削除されます。

スワップ領域の確認

スワップ領域が削除されたことを、再度 free -h コマンドで確認します。

スワップ領域の確認
1free -h
出力結果
1               total        used        free      shared  buff/cache   available
2Mem:           949Mi       120Mi       722Mi       2.0Mi       106Mi       705Mi
3Swap:             0B          0B          0B

出力結果の Swap: の行が 0B となっていることから、スワップ領域が完全に削除され、利用できなくなっていることが確認できます。

おわりに

本記事では、Amazon Linux 2023に日本語形態素解析エンジンMeCabとその標準辞書をインストールする基本的な手順を学びました。 さらに、新語に対応するための強力なNEologd辞書の導入方法や、定期的なアップデートの重要性を確認できました。 また、メモリが少ない環境ではスワップ領域を作成し、niceコマンドを活用してインストール時の負荷を軽減する具体的な対処法も習得できました。