テキスト正規化用PythonライブラリをMATLABからコール


はじめに

テキスト解析をする上で、他言語で書かれた既存のテキスト解析関数を使いたいケースがあるのでやってみました。
neologdnというPythonベースの文書初期化ツールをMATLABから呼んでみます。筆者はPython初心者なので色々間違っていたらすみません。

環境

MATLAB R2020a
Python 3.6

手順

「Python ライブラリ関数の呼び出し」という公式ページがあるのでこちらを参考に準備をします。MATLABとPythonの両環境が必要になってくるわけですが、一言にPythonと言っても、MATLABからの呼び出しにサポートしているものがあり、そちらの方が簡単そうなので公式ページの通りにインストールしました。

試しにMATLAB側で下記を入力します。

MATLAB
py.os.listdir('.')

すると、Python側のos.listdirを使ってファイルの一覧を表示することができました。

次に、neologdnという、日本語を正規化してくれるツールを使用する準備をします。

neologdn is a Japanese text normalizer for mecab-neologd. The normalization is based on the neologd's rules: https://github.com/neologd/mecab-ipadic-neologd/wiki/Regexp.ja

neologdをインストールします。

コマンドプロンプト
py -m pip install neologdn

これで準備完了です。

neologdのreadmeにある例文をMATLABで実行してみましょう。

MATLAB
>> py.neologdn.normalize("ハンカクカナ")

ans = 

  Python str にはプロパティがありません。

    ハンカクカナ

>> py.neologdn.normalize("全角記号!?@#")

ans = 

  Python str にはプロパティがありません。

    全角記号!?@#

>> py.neologdn.normalize("全角記号例外「・」")

ans = 

  Python str にはプロパティがありません。

    全角記号例外「・」

>> py.neologdn.normalize("長音短縮ウェーーーーイ")

ans = 

  Python str にはプロパティがありません。

    長音短縮ウェーイ

>> py.neologdn.normalize("チルダ削除ウェ~∼∾〜〰~イ")

ans = 

  Python str にはプロパティがありません。

    チルダ削除ウェイ

>> py.neologdn.normalize("いろんなハイフン˗֊‐‑‒–⁃⁻₋−")

ans = 

  Python str にはプロパティがありません。

    いろんなハイフン-

>> py.neologdn.normalize("   PRML  副 読 本   ")

ans = 

  Python str にはプロパティがありません。

    PRML副読本

>> py.neologdn.normalize(" Natural Language Processing ")

ans = 

  Python str にはプロパティがありません。

    Natural Language Processing

>> py.neologdn.normalize("かわいいいいいいいいい", pyargs('repeat',6))

ans = 

  Python str にはプロパティがありません。

    かわいいいいいい

>> py.neologdn.normalize("無駄無駄無駄無駄ァ", pyargs('repeat',1))

ans = 

  Python str にはプロパティがありません。

    無駄ァ

>> 

readmeの通りに処理できていますね。
ちなみに結果はstr型で返ってくるようです。

Text Analytics Toolboxでトークンに分ける前に、こんな感じでノーマライズできると便利そうですね。