Juliaで形態素解析

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

はじめに

 ここでは、Juliaで形態素解析を行う方法を紹介します。
 次の二つの方法があります。

  • 「MeCab.jl」:形態素解析システム「MeCab」のラッパー
  • 「Awabi.jl」:Juliaで書かれた形態素解析器(ただし、辞書は「MeCab」のものを使う)

 以下では、形態素解析のすべてをJuliaで記述されたPackage「Awabi.jl」を使います。
 また、「Awabi.jl」のドキュメントにはLinux/MacのUsageしか書かれていないので、Windowsでの使い方についても紹介します。

「Awabi.jl」

 今回使用するパッケージは「Awabi.jl」です。

 MeCab辞書を使って形態素解析を行う形態素解析器で、解析処理自体もJuliaで書かれています。解析結果がMeCabと同じになることを目指しているそうです。
 なお、awabiには様々な言語で書かれたものが存在します。詳細は次を参照ください。

使い方(Linux/Mac)

 基本的な使い方は、ドキュメントの通りですが転記しておきます。
 まず、MeCabの本体および辞書をインストールします。インストール方法はそれぞれ次の通りです。

Debian/Ubuntu

$ sudo apt install mecab mecab-ipadic-utf8

Mac OS X (homebrew)

$ brew install mecab
$ brew install mecab-ipadic

 これで、MeCabのインストールができたので、あとは「Awabi.jl」を呼び出せば、形態素解析の結果を得ることができます。

julia> using Awabi

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

使い方(Windows)

 MeCabをインストールするには、最新の「mecab-0.996.exe」をダウンロードして実行します。

 Windows版では、MeCab本体と辞書(ipadic)が同梱されているのでこれのみをインストールすれば大丈夫です。インストール途中でエンコードを聞かれたら、「UTF-8」を指定してください。

 実行の手順も、Linuxの場合とは異なります。Linuxでは「mecabrc」という設定ファイルから辞書の格納先を取得していましたが、Windowsではこれがうまく動作しません。(内部で指定している「mecabrc」格納場所が、Windowsに対応していないだけでなく、「mecabrc」の内部記述にも問題があるようです。)
 そこで、次のようにしてAwabiの初期化で辞書の格納フォルダを認識させてやります。手元のPCでは「C:\Program Files (x86)\MeCab\dic\ipadic」に辞書が格納されているので、このフォルダを指定します。
 具体的な操作は次のようになります。

julia> using Awabi

julia> dic = Dict("dicdir" => "C:\\Program Files (x86)\\MeCab\\dic\\ipadic")
Dict{String, String} with 1 entry:
  "dicdir" => "C:\\Program Files (x86)\\MeCab\\dic\\ipadic"

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

追記

 なお、SageMaker Studio Labでは、ここまでの方法では形態素解析が動きません。
 別途、記事を書きましたので、そちらを参照ください。

参照リンク

コメント

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