mecab-unidic-NEologdは、先ほどインストールしたUniDicに含まれていない語句も採録しているので、これを使えば「鬼滅の刃」もうまく単語として認識されるかもしれません。
なお、これをインストールするには、mecab-python3に同梱のMeCabに頼らずに、きちんとMeCabをインストールする必要があるようです。というわけで、Webを検索して「Google ColabにMeCabとipadic-NEologdをインストールする」を参考に以下のコードを実行することで、MeCabとmecab-unidic-NEologdをインストールしました(主に「ipa」を「uni」にしたり、インストール時の出力の破棄をやめたりするなどの変更を行っています)。
!apt-get -q -y install mecab libmecab-dev file
!git clone --depth 1 https://github.com/neologd/mecab-unidic-neologd.git
!echo yes | mecab-unidic-neologd/bin/install-mecab-unidic-neologd -n
このコマンドを実行すると、MeCabとmecab-unidic-NEologdのインストールが完了します。ここで重要なのは辞書がインストールされる場所です。これは出力の最後の方に次のように表示されています。
上の画像の真ん中付近に「Usage:」という出力があります。その下にある「$ mecab -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-unidic-neologd」というのはMeCabをコマンドラインから実行する際の辞書指定です。ここで指定している、「-d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-unidic-neologd」オプションをMeCab.Taggerクラスのインスタンス生成時に指定します(「!mecab-config --dicdir」コマンドを実行することでも確認できます)。ここでは2つのインスタンスを生成して、振る舞いの違いを見てみましょう。
tagger1 = MeCab.Tagger()
dicdir = '-d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-unidic-neologd'
tagger2 = MeCab.Tagger(dicdir)
sample_txt = '鬼滅の刃もいいけれど、約束のネバーランドもね'
print(tagger1.parse(sample_txt))
print(tagger2.parse(sample_txt))
実行結果を見てください。
上側の出力がMeCab.Taggerクラスのインスタンス生成で何も指定しなかった場合の結果で、下側の出力がmecab-unidic-NEologd辞書を使うように指定した場合の結果です。ご覧の通り、mecab-unidic-NEologdを使用した方では、2つの作品名がきちんと名詞(固有名詞)として認識されたことが分かります。
確認のために分かち書きもしてみましょう。
Copyright© Digital Advantage Corp. All Rights Reserved.