Juliaで形態素解析(2)SageMaker Studio Lab

技術
この記事は約5分で読めます。

はじめに

 前回、Juliaで形態素解析を行う方法を紹介しましたが、その方法では、SageMaker Studio Lab上では形態素解析が使えません。SageMaker Studio LabはUbuntu上で動いているのですが、そもそも前回紹介した方法でMeCabをインストールする際に使用した「sudo」が使えないのです。
 そこで、今回は、SageMaker Studio Lab上でMeCabをインストールする方法、および、Awabiの呼び出し方を紹介します。

MeCabのインストール

 Linux上でMeCabをインストールする場合は、Sudoを使ってすべてのユーザに使用できるフォルダにインストールするのですが、そもそもSageMaker Studio Labの場合は、ユーザは自分ひとりなので、特権ユーザになる必要性がありません。任意のフォルダにインストールして、そのパスがわかっていれば使うことができるわけです。
 次の記事を参考にしてインストールをしてみます。

 この記事は、Awabi作者が「pyawabi」をSageMaker Studio Labで使う際に使用した設定です。この最初のセルをPythonのランタイムで実行するとMeCabがインストールされます。実際には、シェルを呼び出して実行しているだけなので、SageMaker Studio Lab上ではTerminalを起動してLinuxコマンドとして実行すれば同じことができます。実行すべきコマンドを記しておきます。

MECAB_ROOT="${HOME}/mecab"
mkdir -p ${MECAB_ROOT}

mkdir -p ~/source

cd ~/source
git clone https://github.com/taku910/mecab.git
cd mecab/mecab
./configure --prefix=${MECAB_ROOT} --enable-utf8-only
make
make install

cd ../mecab-ipadic
./configure --with-mecab-config=${MECAB_ROOT}/bin/mecab-config --with-charset=utf8
make
make install

 途中でWarningのメッセージが出る場合があるかもしれませんが、基本的に無視して実行していけばインストールできます。
 なお、インストール後の、「mecabrc」のパスは「/home/studio-lab-user/mecab/etc/mecabrc」、辞書のフォルダは、「/home/studio-lab-user/mecab/lib/mecab/dic/ipadic」になります。

使い方

 mecabrcのパスを指定する例を次に示します。mecabrcにはユーザ辞書のパスなども記述しておくことで、それをMeCabが参照して形態素解析をすることができます。(ただし、ユーザ辞書の設定やmecabrcへの記載などは、自分自身で行う必要があります。)

julia> using Awabi

julia> rcfile = "/home/studio-lab-user/mecab/etc/mecabrc"
"/home/studio-lab-user/mecab/etc/mecabrc"

julia> tokenize(Tokenizer(rcfile), "すもももももももものうち")
7-element Vector{Tuple{String, String}}:
 ("すもも", "名詞,一般,*,*,*,*,すもも,スモモ,スモモ")
 ("も", "助詞,係助詞,*,*,*,*,も,モ,モ")
 ("もも", "名詞,一般,*,*,*,*,もも,モモ,モモ")
 ("も", "助詞,係助詞,*,*,*,*,も,モ,モ")
 ("もも", "名詞,一般,*,*,*,*,もも,モモ,モモ")
 ("の", "助詞,連体化,*,*,*,*,の,ノ,ノ")
 ("うち", "名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ")

 MeCabの辞書が格納されているフォルダを指定する方法を次に示します。基本的には、前回のWindowsの場合と同じ方法で、辞書フォルダのパスが違っているだけです。

julia> using Awabi

julia> dic = Dict("dicdir" => "/home/studio-lab-user/mecab/lib/mecab/dic/ipadic")
Dict{String, String} with 1 entry:
  "dicdir" => "/home/studio-lab-user/mecab/lib/mecab/dic/ipadic"

julia> tokenize(Tokenizer(dic), "すもももももももものうち")
7-element Vector{Tuple{String, String}}:
 ("すもも", "名詞,一般,*,*,*,*,すもも,スモモ,スモモ")
 ("も", "助詞,係助詞,*,*,*,*,も,モ,モ")
 ("もも", "名詞,一般,*,*,*,*,もも,モモ,モモ")
 ("も", "助詞,係助詞,*,*,*,*,も,モ,モ")
 ("もも", "名詞,一般,*,*,*,*,もも,モモ,モモ")
 ("の", "助詞,連体化,*,*,*,*,の,ノ,ノ")
 ("うち", "名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ")

コメント

タイトルとURLをコピーしました