【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した(Janomeのインストール)【Part.3】

機械学習シリーズですが、今回は MeCab の替りとして「Janome」をインストールして「形態素解析」をしてみます。

更に Janome で mecab-ipadic-neologd を利用する手順を説明します。

 

以下、前回までのパートです。

 

【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した【Part.1】

 

【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した【Part.2】

 

【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した(Janomeのインストール)【Part.3】

 

【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した(Janome&mecab-ipadic-neologd で解析)【Part.4】

 

 

 

Janome とは何か?

Janome は「形態素解析エンジン」です。

エンジンとは、以下の解説の通り「ある特定の処理を行うための機能を提供する、ひとまとまりになった処理装置」のことです。

「エンジン」とは、イメージとしては、ある機能を提供する「関数一式」とか「プログラム一式」です。

 

IT用語辞典バイナリより

http://www.sophia-it.com/content/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3

エンジンとは、一般的には内燃機関を指すが、IT用語としては、ある特定の処理を行うための機能を提供する、ひとまとまりになった処理装置のことである。プログラムを指す場合が多いが、カスタムICなどのハードウェアを指す場合もある。

エンジンと呼ばれる代表的な例として、検索エンジンや、データベースエンジン、画像エンジンなどを挙げることができる。検索エンジンはWeb上で公開されているWebページをはじめとする情報をデータベース化し、キーワードなどで検索できる機能を提供する。データベースエンジンは、データベースソフトウェアにおいてデータを削除したり更新したりするための機能を提供する。また、画像エンジンは、デジタルカメラやデジタルビデオカメラにおいて、イメージセンサーから得られた電気信号を画像データに変換する処理能力を提供する。

 

 

Janome の特徴

■Janome のメリット(長所)

  • Python のみで記述されているため MeCab が必要ない
  • pip コマンドで簡単にインストールができる
  • 形態素解析に使用する辞書一式が Janome のインストールパッケージに含まれている
  • 辞書は MeCab と同じものを利用している

 

■Janome のデメリット(短所)

  • Python で開発されているので、形態素解析の処理速度が MeCab の10倍くらい遅い

 

 

Janome のインストール

Janome のインストールは簡単です。

pip コマンドでインストールできます。

[test@SAKURA_VPS ~]$ sudo pip3.6 install janome
Collecting janome
Installing collected packages: janome
Successfully installed janome-0.3.6
[test@SAKURA_VPS ~]$

 

 

 

mecab-ipadic-neologdをインストールする

以下のサイトを参考にしてインストールしました。

 

(very experimental) NEologd 辞書を内包した janome をビルドする方法

https://github.com/mocobeta/janome/wiki/(very-experimental)-NEologd-%E8%BE%9E%E6%9B%B8%E3%82%92%E5%86%85%E5%8C%85%E3%81%97%E3%81%9F-janome-%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95

 

 

ページの中盤にビルド手順が記載されていますが、結構時間が掛かり大変です。

私がビルドをした際は、AWS の EC2 インスタンスタイプ「t2.large」を利用しても1時間は掛かりました。

ちなみに「t2.large」

  • CPU : 2コア
  • メモリ : 8GB

となかなかのスペックです。

 

 

簡単に「NEologd 辞書を内包した janome」をインストールできるお勧めの方法

実は上記ページにはすでにビルドしたパッケージをダウンロードできます。

しかも定期的に最新版をビルドしてくれています。

これを利用しない手はありません。

 

以下、簡単に「NEologd 辞書を内包した janome」をインストールする手順です。

 

以下、URLにアクセスします。

https://github.com/mocobeta/janome/wiki/(very-experimental)-NEologd-%E8%BE%9E%E6%9B%B8%E3%82%92%E5%86%85%E5%8C%85%E3%81%97%E3%81%9F-janome-%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95

 

 

以下のように「ビルド済みパッケージを こちら からダウンロードできます。」をクリックします。

【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した(Janomeのインストール)【Part.3】

 

 

 

以下のページに移動したら「Janome-X.X.X...」のパッケージを選択して右クリックし「ダウンロード」を選択します。

【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した(Janomeのインストール)【Part.3】

 

 

 

ファイルのサイズが大きいので下図のような警告が表示されますが「エラーを無視してダウンロード」ボタンをクリックします。

【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した(Janomeのインストール)【Part.3】

 

 

手元のパソコンにダウンロードしたファイル「Janome-0.3.6.neologd-20171218.tar.gz(2018年1月16日現在)」をインストールしたいコンピュータにアップロードします。

Tera Term を使ってリモートアクセスをしている場合は、パソコンから Tera Term 経由で「SSH SCP」を使ってファイルをアップロードします。

 

 

pip コマンドでインストールします。

ubuntu@AWS_TEST: ~] pwd
/home/ubuntu
ubuntu@AWS_TEST: ~] ls
Janome-0.3.6.neologd-20171218.tar.gz    _old
ubuntu@AWS_TEST: ~] sudo pip3.6 install Janome-0.3.6.neologd-20171218.tar.gz --no-compile

 

 

/usr/local/ ディレクトリ配下の所有権を普段利用するアカウント(今回の場合は ubuntu)に割り当てます。

ubuntu@AWS_TEST: /usr] pwd
/usr

ubuntu@AWS_TEST: /usr] ls
bin  games  include  lib  local  sbin  share  src
ubuntu@AWS_TEST: /usr] sudo chown -R ubuntu:ubuntu local

 

以上でインストールは完了です。

 

 

Janome & mecab-ipadic-neologd の動作確認

Janome & mecab-ipadic-neologd の動作確認をします。

ubuntu@AWS_TEST: ~] python3.6
Python 3.6.3 (default, Oct  6 2017, 08:44:35)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from janome.tokenizer import Tokenizer
>>> t = Tokenizer(mmap=True)
>>> s = u'渋谷ヒカリエは、東京都渋谷区の渋谷駅東口に位置する東急文化会館跡地に建設された複合商業施設 。 東急百貨店や飲食店、事務所のほか、ミュージカル劇場「東急シアターオーブ」などが入居している。'
>>> for token in t.tokenize(s):
...     print(token) ← インデントを付けます。
...
渋谷ヒカリエ    名詞,固有名詞,一般,*,*,*,渋谷ヒカリエ,シブヤヒカリエ,シブヤヒカリエ
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
、      記号,読点,*,*,*,*,、,、,、
東京都渋谷区    名詞,固有名詞,地域,一般,*,*,東京都渋谷区,トウキョウトシブヤク,トーキョートシブヤク
の      助詞,連体化,*,*,*,*,の,ノ,ノ
渋谷駅  名詞,固有名詞,地域,一般,*,*,渋谷駅,シブヤエキ,シブヤエキ
東口    名詞,一般,*,*,*,*,東口,ヒガシグチ,ヒガシグチ
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ
位置    名詞,サ変接続,*,*,*,*,位置,イチ,イチ
する    動詞,自立,*,*,サ変・スル,基本形,する,スル,スル
東急文化会館    名詞,固有名詞,一般,*,*,*,東急文化会館,トウキュウブンカカイカン,トーキューブンカカイカン
跡地    名詞,一般,*,*,*,*,跡地,アトチ,アトチ
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ
建設    名詞,サ変接続,*,*,*,*,建設,ケンセツ,ケンセツ
さ      動詞,自立,*,*,サ変・スル,未然レル接続,する,サ,サ
れ      動詞,接尾,*,*,一段,連用形,れる,レ,レ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
複合商業施設    名詞,固有名詞,一般,*,*,*,複合商業施設,フクゴウショウギョウシセツ,フクゴーショーギョーシ セツ
        記号,空白,*,*,*,*, ,*,*
。      記号,句点,*,*,*,*,。,。,。
東急百貨店      名詞,固有名詞,組織,*,*,*,東急百貨店,トウキュウヒャッカテン,トーキューヒャッカテン
や      助詞,並立助詞,*,*,*,*,や,ヤ,ヤ
飲食店  名詞,固有名詞,一般,*,*,*,飲食店,インショクテン,インショクテン
、      記号,読点,*,*,*,*,、,、,、
事務所  名詞,一般,*,*,*,*,事務所,ジムショ,ジムショ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
ほか    名詞,副詞可能,*,*,*,*,ほか,ホカ,ホカ
、      記号,読点,*,*,*,*,、,、,、
ミュージカル    名詞,一般,*,*,*,*,ミュージカル,ミュージカル,ミュージカル
劇場    名詞,一般,*,*,*,*,劇場,ゲキジョウ,ゲキジョー
「      記号,括弧開,*,*,*,*,「,「,「
東急シアターオーブ      名詞,固有名詞,一般,*,*,*,東急シアターオーブ,トウキュウシアターオーブ,トーキュー シアターオーブ
」      記号,括弧閉,*,*,*,*,」,」,」
など    助詞,副助詞,*,*,*,*,など,ナド,ナド
が      助詞,格助詞,一般,*,*,*,が,ガ,ガ
入居    名詞,サ変接続,*,*,*,*,入居,ニュウキョ,ニューキョ
し      動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
て      助詞,接続助詞,*,*,*,*,て,テ,テ
いる    動詞,非自立,*,*,一段,基本形,いる,イル,イル
。      記号,句点,*,*,*,*,。,。,。
>>> exit()
ubuntu@AWS_TEST: ~]

 

渋谷ヒカリエ」や「東急シアターオーブ」など固有名詞がキチンと認識されています。

 

 

Janome だけの場合

比較するために Janome だけの場合、どのような解析になるのか以下に記載します。

root@AWS_TEST: ~] pyhthon3.6
Python 3.6.3 (default, Oct  6 2017, 08:44:35) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from janome.tokenizer import Tokenizer
>>> t = Tokenizer(mmap=True)
>>> s = u'渋谷ヒカリエは、東京都渋谷区の渋谷駅東口に位置する東急文化会館跡地に建設された複合商業施設 。 東急百貨店や飲食店、事務所のほか、ミュージカル劇場「東急シアターオーブ」などが入居している。'
>>> for token in t.tokenize(s):
...     print(token)
... 
渋谷   名詞,固有名詞,地域,一般,*,*,渋谷,シブヤ,シブヤ
ヒカリエ 名詞,一般,*,*,*,*,ヒカリエ,*,*
は    助詞,係助詞,*,*,*,*,は,ハ,ワ
、    記号,読点,*,*,*,*,、,、,、
東京   名詞,固有名詞,地域,一般,*,*,東京,トウキョウ,トーキョー
都    名詞,接尾,地域,*,*,*,都,ト,ト
渋谷   名詞,固有名詞,地域,一般,*,*,渋谷,シブヤ,シブヤ
区    名詞,接尾,地域,*,*,*,区,ク,ク
の    助詞,連体化,*,*,*,*,の,ノ,ノ
渋谷   名詞,固有名詞,地域,一般,*,*,渋谷,シブヤ,シブヤ
駅    名詞,接尾,地域,*,*,*,駅,エキ,エキ
東口   名詞,一般,*,*,*,*,東口,ヒガシグチ,ヒガシグチ
に    助詞,格助詞,一般,*,*,*,に,ニ,ニ
位置   名詞,サ変接続,*,*,*,*,位置,イチ,イチ
する   動詞,自立,*,*,サ変・スル,基本形,する,スル,スル
東急   名詞,固有名詞,組織,*,*,*,東急,トウキュウ,トーキュー
文化   名詞,一般,*,*,*,*,文化,ブンカ,ブンカ
会館   名詞,一般,*,*,*,*,会館,カイカン,カイカン
跡地   名詞,一般,*,*,*,*,跡地,アトチ,アトチ
に    助詞,格助詞,一般,*,*,*,に,ニ,ニ
建設   名詞,サ変接続,*,*,*,*,建設,ケンセツ,ケンセツ
さ    動詞,自立,*,*,サ変・スル,未然レル接続,する,サ,サ
れ    動詞,接尾,*,*,一段,連用形,れる,レ,レ
た    助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
複合   名詞,サ変接続,*,*,*,*,複合,フクゴウ,フクゴー
商業   名詞,一般,*,*,*,*,商業,ショウギョウ,ショーギョー
施設   名詞,サ変接続,*,*,*,*,施設,シセツ,シセツ
      記号,空白,*,*,*,*, ,*,*
。     記号,句点,*,*,*,*,。,。,。
東急   名詞,固有名詞,組織,*,*,*,東急,トウキュウ,トーキュー
百貨店  名詞,一般,*,*,*,*,百貨店,ヒャッカテン,ヒャッカテン
や    助詞,並立助詞,*,*,*,*,や,ヤ,ヤ
飲食   名詞,サ変接続,*,*,*,*,飲食,インショク,インショク
店    名詞,接尾,一般,*,*,*,店,テン,テン
、    記号,読点,*,*,*,*,、,、,、
事務所  名詞,一般,*,*,*,*,事務所,ジムショ,ジムショ
の    助詞,連体化,*,*,*,*,の,ノ,ノ
ほか   名詞,副詞可能,*,*,*,*,ほか,ホカ,ホカ
、    記号,読点,*,*,*,*,、,、,、
ミュージカル 名詞,一般,*,*,*,*,ミュージカル,ミュージカル,ミュージカル
劇場   名詞,一般,*,*,*,*,劇場,ゲキジョウ,ゲキジョー
「    記号,括弧開,*,*,*,*,「,「,「
東急   名詞,固有名詞,組織,*,*,*,東急,トウキュウ,トーキュー
シアターオーブ 名詞,一般,*,*,*,*,シアターオーブ,*,*
」    記号,括弧閉,*,*,*,*,」,」,」
など   助詞,副助詞,*,*,*,*,など,ナド,ナド
が    助詞,格助詞,一般,*,*,*,が,ガ,ガ
入居   名詞,サ変接続,*,*,*,*,入居,ニュウキョ,ニューキョ
し    動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
て    助詞,接続助詞,*,*,*,*,て,テ,テ
いる   動詞,非自立,*,*,一段,基本形,いる,イル,イル
。    記号,句点,*,*,*,*,。,。,。
>>> exit()
root@AWS_TEST: ~] 

 

1つ1つの単語が細かく区切られていて、せっかくの固有名詞が単語の集まりのようになっています。

この比較を見ると、やはり「mecab-ipadic-neologd」は精度が高いですね。

 

 

参考にした書籍

現在以下の書籍で機械学習のさわり部分を勉強しています。

まだまだ学ぶべき部分は多いですが、「Pythonによるスクレイピング&機械学習 開発テクニック」は機械学習のための様々なライブラリを分かりやすく解説しています。

専門的な部分まで取り扱っていませんが、機械学習初心者にとって、本書は入り口としては最適だと思います。

いきなり難しい専門書を読んでもすぐに挫折すると思うので、最初にこの本を読んでおくのがいいと思います。

Pythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみよう

 

 

今までの記事

【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した【Part.1】

 

【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した【Part.2】

 

【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した(Janomeのインストール)【Part.3】

 

【AWS】【機械学習】Deep Learning AMI(Ubuntu)で【形態素解析】を試した(Janome&mecab-ipadic-neologd で解析)【Part.4】

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人