私がMATLABでのテキスト解析をオススメする3つの理由
本日は、MathWorks Japanでデータサイエンス関係を広く担当している田口さんに、自然言語処理について投稿して頂きます。記事をヒントに是非遊んでみてください!
—
こんにちは。アプリケーションエンジニアリング部の田口と申します。今回ゲストブロガーとして、単発ですが記事を書かせていただきます。普段は機械学習、ディープラーニングといった分野でお客様の技術サポートをさせて頂いています。また、その中でも、テキスト解析や医療データ解析、強化学習といった技術のサポートに特に注力しています。
私事で恐縮なのですが、7 月にディープラーニングG検定なるものを受験しまして、難しかったーという感想はさておき、結構テキスト解析や強化学習の分野からの出題が多かったなぁと感じています。正直、少し前までは、テキスト解析がどんな風に使えるのかあまりイメージが湧かなかったと思います。しかし、最近では有名なところだと、Google 翻訳や Siri といったサービスもありますし、ロボティクスでマルチモーダル解析(画像・音声・テキスト等をまとめて解析)を行うという文脈でテキスト解析が登場するようです。そんなこともあって、テキスト解析は近頃ますますホットなトピックなのではとお見受けしています。
そこで今日は、MATLAB の Text Analytics Toolbox について、MATLAB でテキスト解析を行う魅力について個人的な視点から語りたいと思います!テキスト解析に興味のある方、テキスト解析のツールを選定中の方や、MATLAB のテキスト解析でできることを日本語でざっと確認したい方など少しでもお役に立てたら嬉しいです。テキスト解析の専門用語も出てきますが、用語についての説明は省略していますのでその点はご了承ください。
【目次】
1.解析環境のセットアップが簡単
これからテキスト解析を始めたいという方には朗報ですが、Text Analytics Toolbox では解析環境のセットアップが非常に簡単です。これはMATLAB 製品群全体に言えることなのですが、MATLAB および Toolbox インストール用のファイルを実行して頂ければ、パスの設定など小難しいことをする必要なく、自動でセットアップが完了します。
[参考] YouTube: MATLAB のインストール方法
Text Analytics Toolbox は R2018b 以降、日本語の解析にも対応しており、形態素解析エンジン MeCab を使用した形態素解析が可能です。Text Analytics Toolbox の中に MeCab が同梱されているような形ですので、ツールを入れて頂くだけで使用可能です!
▼使用例はこんな感じです。
既に MeCab ユーザー様がいらっしゃれば既にお気づきかもしれませんが、デフォルトの関数では、通常の MeCab で得られる全ての情報は出力されません。というのも、この Text Analytics Toolbox では、日本語のみならず英語やドイツ語、韓国語も解析の対象としているからです。もし、通常の MeCab と同じ出力を得たい場合は、こちらのラッパー関数がお勧めです!出力結果の右側に、動詞の活用形や、読み仮名の情報が追加されていることがわかります。
2.解析が簡単
私が MATLAB でのテキスト解析をお勧めする 2 つ目の理由として、解析が簡単であることを挙げたいと思います。例えば、ディープラーニング G 検定の受験に際して読んでいた「これ1冊で最短合格 ディープラーニングG検定ジェネラリスト要点整理テキスト&問題集」には、テキスト解析のキーワードとして以下の①~⑦が挙げられていますが、こちらはほとんど MATLAB で実施できます!
①形態素解析
②構文解析
③意味解析
④文脈解析
⑤分散表現
⑥トピックモデル
⑦機械翻訳
厳密に言うと、半分以上が Text Analytics Toolbox の関数でサポートされていて、その他は少しカスタマイズして頂くことで MATLAB 上で実行可能です。Text Analytics Toolbox でサポートされているものは、こちらのセクションでそれぞれ該当するリンクやスクリプトをご紹介しますので使ってみてください。少しカスタマイズが必要なものは3.小回りが利くをご覧ください。
①形態素解析
トークン化や品詞の表示は1.解析環境のセットアップが簡単にてご説明の通りですが、形態素解析で分割した単語を活用した BagOfWords や TF-IDF の作成はこちらに例題があります。
もちろん、ストップワードの削除や句読点の削除など、前処理系の関数も充実しています。
②構文解析
係り受け解析に代表される構文解析ですが、残念ながら R2020a 時点ではサポートされていません。しかし、例えば CaboCha のような係り受け解析器を MATLAB から呼び出すことは可能です。3.小回りが利くの章でも色々と回避策をご紹介しています。
③意味解析
意味解析の1つである感情解析(Sentiment Analysis)は、vaderSentimentScores という関数でポジティブ・ネガティブのスコアを簡単に表示することができます。
残念ながらこの関数は R2020a 時点ではまだ日本語に対応していませんが、日本語で感情解析を行うサンプルもこちらにあります。また、機械学習を使って感情の分類学習を行う例やディープラーニングを使って感情の分類学習を行う例などもあり、色々と使うことができます。
④文脈解析
照応解析など、文章全体の意味を解析する文脈解析ですが、残念ながらこちらも R2020a 時点ではサポートされていません。しかし、例えば COTOHA API のような外部 API を MATLAB から呼び出すことは可能です。COTOHA API では照応解析以外にも様々な解析に対応しています。3.小回りが利くの章でもご紹介していますので是非ご覧ください!
⑤分散表現
分散表現を行うものとして、単語をベクトル化する word2vec や、トークン化されたドキュメントをベクトル化する doc2sequence があります。こちらに色々とまとまっています。また、関数1行で呼び出せるコーパスもあります。関数1行で呼び出すコーパスに関しては、R2020a 時点では英語のものしか公開されていませんが、分散表現は勿論日本語にも対応しています(②痒い所に手が届く便利機能編をご参照ください)。
⑥トピックモデル
トピックモデルの代表的な方法として潜在的ディリクレ配分法(LDA)や潜在的意味解析(LSA)がありますが、いずれも Text Analytics Toolbox で対応しています。こちらに「吾輩は猫である」のトピック分類を行った例題があります。
⑦機械翻訳
機械翻訳については、かねてから研究がなされており様々な手法がありますが、近年注目されているニューラル機械翻訳ではリカレントニューラルネットワークが用いられています。こちらは、Text Analytics Toolbox と Deep Learning Toolbox を組み合わせて頂くことで実装が可能で、LSTM ネットワークを使用した例題が複数(①、②)存在します。また、長文の翻訳精度をあげるためのメカニズムとして注目を集めている注意機構(アテンション機構)も対応しています。こちらに注意機構を使用して、数字をローマ数字に変換する例題もあり、こんな感じで新しいアルゴリズムも対応しているので面白いプログラムが作れそうです!。
以上見て頂いたように、Text Analytics Toolbox には沢山の機能があります。一部、他のツールボックスが必要なものもありますが、全て MATLAB という同一プラットフォームの上で一気通貫で解析ができます。もし複数のツールをまたぐと、データのやり取りなどが大変になってきますので、一気通貫で色々とできるというのはかなり魅力的ではないでしょうか?
3.小回りが利く
2.解析が簡単 では Text Analytics Toolbox でサポートされている機能についてご紹介しましたが、ここではそれ以外の機能についても併せてご紹介していきます。MATLAB はプログラミング言語でもあるので色々と小回りが利き、決められた機能以外使えない…なんてことはなく色々と回避策があります。MathWorks が正式な製品としてご提供しているものではありませんが、様々なユーザ様に便利な・面白いスクリプトを作っていただいています。ここでは、技術情報共有サービス Qiita で既に公開されているものを、カテゴリに分けていくつか紹介します。ユーザー様のスクリプトはこれ以外にも逐次アップデートされていきますので、皆さんも是非探してみてくださいね!
①外部ツールとの連携編
2.解析が簡単で残念ながらサポートされていなかった係り受け解析や照応解析は、外部ツールとの連携で実現できます。また、それ以外のツールも呼び出すことができるので、色々なことができそうですね!
- CaboCha を MATLAB からコールして係り受け解析できるか試してみた
- MATLAB から COTOHA API をコールしてみた
- 【COTOHA API x MATLAB】Qiita 投稿記事の要約
- 【COTOHA API x MATLAB】形態素解析と文節可視化:やっぱり辞書は重要
- MATLAB で競艇の解析を始めよう(ピットレポート解析)
- テキスト正規化用 Python ライブラリを MATLAB からコール
②痒い所に手が届く便利機能編
実際に解析を進めていく中でつまづきそうなポイントの解になるような記事をまとめました。「こういう機能欲しかった~」にきっと出会えるはずです!
- MATLAB で mecab-ipadic-NEologd を使ってテキスト解析
- MATLAB で mecab-ipadic-NEologd をシステム辞書として使う
- MATLAB で mecab-ipadic-NEologd をシステム辞書として使う:自動化スクリプト
- MATLAB で MeCab の品詞分類を活用する
- MATLABでMeCabの品詞細分類を活用する:その2
- 表記ゆれ対策を力業で実装
- 【MATLAB】半角カナ <-> 全角カナ 変換
- 日本語で Word2Vec
③面白いアプリ・イベント編
MathWorks 社員も驚きのアプリケーションや、面白いイベントについてご紹介します。言語処理100本ノックは第1章以降も続々と記事がアップされています。
- 任意キーワードで Web スクレイピングして効率的に情報収集
- MATLAB で株価データ自動取得 その3 アプリの作成
- MATLAB でスタバのフードを選ぼう
- 言語処理 100 本ノックで MATLAB 入門!第1章: 準備運動 00-09
- MATLAB/Simulink Advent Calendar 2019(※終了)
以上、私が MATLAB を選ぶ理由 3 つ挙げさせていただきました。色々と機能があったと思いますが、根本的には、一度テキストを的確な数値に変換することで、その後のアプリケーションにはかなり幅広い可能性があると思っています。ツイートからの金融予測、マーケティング、故障ログの解析、電子カルテの分析など…色々想像が膨らみますね。
皆さんも、こんな使い方ができるのでは?というアイデアがありましたら、是非ともコメント欄で教えて頂けると嬉しいです!
▼ご参考:MathWorks公式の製品紹介ページです。
https://jp.mathworks.com/products/text-analytics.html
https://jp.mathworks.com/discovery/text-mining.html
最後まで読んで頂きありがとうございました!
Comments
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.