text mining with machine learning vector toビルドしたfasttext...

99
1 Text Mining with Machine Learning Vector topowered by fastText for Linux, macOS リファレンスマニュアル ver. 1.7 竹岡 志朗 ©2018 TAKEOKA, Shiro

Upload: others

Post on 03-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

1

Text Mining with Machine Learning

『Vector to』

powered by fastText

for Linux, macOS

リファレンスマニュアル ver. 1.7

竹岡 志朗

©2018 TAKEOKA, Shiro

Page 2: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

2

目次 Vector to0.2.1 で行った大きな修正とお詫び ........................................................................ 4 はじめに ............................................................................................................................... 5 セットアップについて .......................................................................................................... 7

macOS(High Sierra) ...................................................................................................... 14 Vector to を使った分析のチュートリアル .......................................................................... 20 分析ファイル(教師データ)の登録 ................................................................................... 20 プロジェクトの登録 ........................................................................................................ 22 形態素解析と分散表現の取得 ......................................................................................... 24 データの分析 .................................................................................................................. 29 類似度 .......................................................................................................................... 29 類似語検索................................................................................................................... 30 単語の加減算 ............................................................................................................... 31 テキストの分類 ........................................................................................................... 32 知覚マップの作成 ........................................................................................................ 33

Vector to の使用方法 .......................................................................................................... 36 Vector to の起動 .............................................................................................................. 36 プロジェクトの作成 ........................................................................................................ 37

bin 形式の学習済みファイルでプロジェクトを作成 ................................................... 37 csv ファイルを分析ファイルとして登録し、プロジェクトを作成 .............................. 38

登録済みのプロジェクトを開く ...................................................................................... 40 テキストデータの前処理 ................................................................................................. 41 テキストのクリーニング ............................................................................................. 41 サンプリング ............................................................................................................... 41 fastText による学習 .................................................................................................... 42

分析 ................................................................................................................................. 45 カテゴリー横断文章分析 ............................................................................................. 45 類推問題(analogy task)を解くことによる特徴の可視化 ........................................ 53 代理変数を用いた特徴の抽出 ...................................................................................... 55 単語の共起関係に注目した分析 .................................................................................. 61

グラフによる可視化 ........................................................................................................ 65 PCA(主成分分析)グラフの作成 ................................................................................... 65 t-SNE グラフの作成 .................................................................................................... 67

ハイパーパラメーターの確認 ......................................................................................... 70 データのエクスポート .................................................................................................... 71 プロジェクトの削除 ........................................................................................................ 72

Page 3: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

3

機械学習を用いたテキストマイニングの分析事例 ............................................................. 73 文章分類に基づくカテゴリー横断分析 ........................................................................... 73 類推問題を用いた特徴分析 ............................................................................................. 78 外形的データを併用した分析 ......................................................................................... 81 分析結果の活用時の注意 ................................................................................................. 85

分散表現テキストマイニングについて ............................................................................... 86 テキストマイニングと分散表現テキストマイニング ...................................................... 86 分散表現による意味へのアプローチ ............................................................................... 88 分散表現テキストマイニングの問題点-計量テキスト分析との比較の観点から ........... 90 分散表現テキストマイニングの問題点―再現性の観点から ........................................... 92

ライセンスや外部ソフトウェアについて ........................................................................... 95 ライセンスについて ........................................................................................................ 95 Vector to が使用している主な外部ソフトウェアおよびモジュール ............................... 95

おわりに ............................................................................................................................. 96 参考文献 ............................................................................................................................. 98

Page 4: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

4

Vector to0.2.1 で行った大きな修正とお詫び fastText には 3 つの学習手法が実装されています。Vector to では、このなかで、Skip-gram と supervised を利用しています。このどちらの学習手法でも単語の分散表現が計算

され、それが様々な分析で利用可能です。そのため、0.2.0 までの Vector to では単語分散表

現を用いた様々な分析を行えるように実装し、また、開発者も研究を行ってきました。 しかし、supervised による学習で計算された単語分散表現は、分散表現を算出する際の

基本思想である分布仮説とは関係なく、分類のために構築する単純なニューラルネットワ

ークによって算出されるものであることが分かりました。そのため、supervised で行った

学習済みモデルでは単語分散表現を用いた分析は削除するというアップデートを行いまし

た。 竹岡(2018a)の 5.2 および竹岡(2019)の 4 の分析結果は誤りです。開発者であり執筆者で

ある私の不勉強が招いた結果です。訂正し、お詫び申し上げます。今後はこのようなことが

起こらないよう細心の注意を持って活動を継続してきます。

Page 5: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

5

はじめに Vector to は Facebook 社の公開している機械学習、より具体的には分散表現(distributed representation)を用いたテキストマイニング・ソフトウェア fastText を基本に、fastText1

の計算結果を応用することで、これまでとは異なるテキストマイニングを可能にすること

を目的に構築されたアプリケーションソフトウェアです。対応する OS は Linux(Ubuntu 64bit)と macOS(High Sierra)です。Windows に関しては、Vector to 自体は対応できてい

るのですが、分散表現の獲得に使用する fastText が対応しておらず、また開発者が独自に

ビルドした fastText やインターネット上で公開されている fastText には不具合 2があり、

今回は公開を見送りました。 現在はまだ開発の途上にあり、現在公開されている ver. 0.2.1 はβ版になります。今後、

様々な機能を実装する予定ですが、発見できていないバグ等も多くあることが考えられま

す。ご使用に際しては、細心の注意を払って、また何らかの不具合が生じた際にはターミナ

ル上に残ったエラーログ等を報告していただく等、正式版の開発に向けてご協力いただけ

ると幸いです。 このリファレンスマニュアルでは Vector to の使い方について説明しますが、加えて後半

で分散表現テキストマイニングの簡単な説明も行います。この中で KH Coder といったソ

フトウェアを用いた計量テキストマイニングと Vector to を用いた分散表現テキストマイニ

ングの違いについても説明しています。分散表現テキストマイニングの分析事例に関する

部分は竹岡(2018a)3、竹岡(2018b)、高木・竹岡(2018)4、竹岡(2018c)、竹岡(2018d)、竹岡

(2019)を大部分そのまま使用しています。論文等で参考にされる場合にはこれをあげていた

だけると幸いです。 日進月歩の先端技術が基本となっているため開発者も十分に理解できていないところが

1 fastText と同様に分散表現を用いた機械学習ソフトウェアとしては Word2vec などもあ

りますが、fastText は他のソフトウェアと比較して正確性や速度の点で優れているとされ

ています。また、プログラミング言語 python などを使用すれば、複数のモジュールがす

でに用意されており、容易に使用することができます。また、ターミナル上から直接

fastText で分析することも可能です。 2 不具合としては、処理が重たい場合に強制終了する点、ターミナルからの「echo "word" | fasttext print-word-vectors model.bin」コマンドで bin ファイルから取得した単語ベク

トルと vec ファイルに記載されている単語ベクトルが異なっている点があり、特に後者は

重大な欠陥であることから、今回は公開を見送ることとしました。Windows 版は複雑なイ

ンストール作業がいらず、非常に簡単に使用を開始できることから、今後は、不具合が解

消され次第公開したいと思います。 3 https://stars.repo.nii.ac.jp/?action=pages_view_main&active_action=repository_view_main_item_detail&item_id=8915&item_no=1&page_id=13&block_id=67 でダウンロード

いただけます。 4 https://toyama.repo.nii.ac.jp/?action=repository_uri&item_id=16734&file_id=18&file_no=1 でダウンロードいただけます。

Page 6: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

6

あります。もし間違っている点があればご指摘いただければ幸いです。

Page 7: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

7

セットアップについて

Vector to は python で開発されており、Linux(Ubuntu5)、macOS でご使用いただけま

すが、それぞれの OS によってセットアップの方法が異なりますので、ご使用の環境に合わ

せてセットアップをお願いします。 Windows しか手元にない方も Oracle 社の VirtualBox 等を使用すれば Windows 上に無

料で Linux の仮想環境を簡単に構築することができます。インターネット上には画像付き

での解説も多く見つけられます。今後も継続して機械学習に関わる諸技術を利用していき

たいと考えておられる場合には Linux でのご使用をお勧めします 6。 Linux と macOS では python7関連ライブラリや MySQL をご自身でインストールしてい

ただく必要がありますが、それについても下記で説明しています。 下記ではターミナル上で入力が必要な個所に関しては黄色のマーカーを入れています。

これらを参考にしてください。なお、下記の方法でのインストールで動作を保証しているわ

けではありませんので、ご了承ください 8。 Linux 版、macOS 版ともにソースコードからそのままご使用いただく形になっています。

初めての方にはわかりにくい点もあるかとは思いますが、ご自身でソースコードを書き換

えることで簡単に様々な変更を行えるという利点もあります。

5 Ubuntu では動作確認済みですが、他の Linux ディストリビューションでは確認してお

りません。 6 機械学習を行う環境として python が最も注目されていますが、Windows は python を

使用する環境としてはあまりおすすめできません。最も不便だと感じるのが文字コードの

違いと改行コードです。python や Ubuntu などの Linux を含む unix 環境では utf-8 とい

う文字コードが使用されています。他方 Windows は cp932 という shift-jis が使用されて

います。どちらも広く普及していますが、Windows 上で収集した情報を python で使用す

る場合、初めから utf-8 で保存する(デフォルトは cp932)か、あるいは文字コードを変更す

る必要があります。他のプログラムとの連携を行う場合など、エラーが生じる可能性があ

るため、今後も機械学習などを使用したいと考えている場合には、Linux の環境を構築す

ることをお勧めします。なお、Vector to では、shift-jis で作成したテキストファイルも直

接読み込めるようにはしていますが、不具合がある場合には、ご自身で utf-8 に変換した

ものをご使用ください。 7 python はインストールされています。ターミナルで python3 --version というコマンド

を実行することで、現在インストールされている python3 のバージョンを確認することが

できます。 8 Ubuntu はバージョンなどによって全く異なる動作をします。開発者がリファレンスマ

ニュアルを作成した時点でも、動作しないことがありました。バージョンを変更する等で

対応してみてください。

Page 8: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

8

Linux(Ubuntu16.04 64bit) Linux(Ubuntu)では OS をインストールするだけで python39がインストールされていま

す。現在 Ubuntu の最新バージョンは 18 です。ですが、バージョン 18 は安定していない

ところもあり、今回は比較的安定しているバージョン 16 での操作方法です。しかし、環境

によっては Ubuntu16 で Vector to を使用すると IME が起動せず、日本語入力ができない

場合があります(コピー&ペーストでの入力は可能です)。その場合は 17、18 をインストー

ルしてみてください。以下では、17、18 をインストールする際の注意点も記入しています。 Vector to のご使用に際しては MySQL、Mecab と辞書、python のモジュールのインスト

ールも必要です。 インストールはターミナルにコマンドを入力することで実行します。 ターミナルの起動の方法

9 Vector to は python2 ではご使用いただけません。python3 をご使用ください。

1. クリック 2. terminal と入力

Page 9: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

9

各ソフトウェアとモジュールのインストール 10

ダウンロードした Vector to を任意のフォルダーに解凍してください。 インストールを進めると頻繁に Yes/No 型の質問やパスワードの入力が求められますの

10 初めて Ubuntu をインストールされた方は sudo apt update と sudo apt upgrade を先

に行ってください。sudo は unix 系のコマンドで、ルート権限で実行する場合に使用しま

す。

3. 端末をクリック

4. ターミナルが

起動 5. 右クリックし

Launcher に

登録しておく

と今後はここ

をクリックす

るだけで端末

を起動できま

Page 10: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

10

で、随時入力してください。 ターミナルを起動 sudo apt-get install mysql-server #MySQL のダウンロードとインスト

ール インストール中にパスワードの設定

を求められますので、各自で設定して

ください。 それが root のパスワードになります。

sudo apt install git #git のインストール sudo apt-get install build-essential g++ #c++コンパイラのインストール

(既にインストール済みの場合も

ありますが、上書きしても問題はあ

りません) sudo apt-get install curl #web 言語のインストール sudo apt-get install mecab libmecab-dev mecab-ipadic mecab-ipadic-utf8

#Mecab のダウンロードとインス

トール git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git #Mecab 辞書のダウンロード cd mecab-ipadic-neologd #Mecab の辞書フォルダーに移動 ./bin/install-mecab-ipadic-neologd -n -a #辞書ファイル 11のインストール。 インストール中に Yes or No を尋

ねられますので Yes と入力してく

ださい。 インストール終了後にターミナル

上に辞書ファイルのインストール

先が表示されます。次のデフォルト

辞書ファイルの変更では、ここで表

示されているアドレスを入力して

ください。Ubuntu のバージョンに

よって異なるようです。 次に Mecab のデフォルトの辞書ファイルを変更します。手順が複雑ですので画像付きで

11 辞書ファイルは頻繁に更新されていますので、研究などで使用される場合は、辞書のバ

ージョンを記載することをお勧めします。辞書のバージョンは更新日で代用するのが一般

的なようです。

Page 11: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

11

確認します 12。

12 Ubuntu17.10 では、一度ログアウトし、ログイン時の設定を Ubuntu on Xorg に変更

の上再ログインしてください。そのうえで上記の方法で修正してください。 Ubuntu on Xorg の設定に関する詳細は

https://www.youtube.com/watch?v=_YKCW8lAkd8 をご覧ください。

1. ターミナルに

sudo nautilus /root と入力。 #root 権限でフォ

ルダーやファイル

を編集するモード

に入る 2. コンピューター→

etc フォルダ→

mecabrc ファイル

を開く

3. アドレスを修正。このアド

レスは Ubuntu16.04 環境

下でのものです。

Ubuntu17.10 環境下では

異なるアドレスにインスト

ールされていましたので、

先ほど確認した辞書ファイ

ルのインストール先を記入

してください。 4. テキストエディターを閉じ

る 5. フォルダーを閉じる 6. ターミナルに戻り ctrl+z で

root 権限での編集モードを

終了 7. ターミナルを閉じる

dicdir = /usr/lib/mecab/dic/debian dicdir = /usr/lib/mecab/dic/mecab-ipadic-neologd

Page 12: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

12

python ライブラリのインストール 次に python が使用するライブラリをインストールします。複数あるので順番に入れてい

きます。下記コマンドの実行に際して「You are using pip version 8.1.1, however version 9.0.3 is available. You should consider upgrading via the 'pip install --upgrade pip' command.」のようなエラーメッセージがターミナル上に出る場合がありますが、インスト

ールには問題ありませんので、続けてください。

新しくターミナルを開く sudo apt install python3-pip #ライブラリを簡単にインストー

ルするためのソフトウェアをイ

ンストールする pip3 install PyQt5 #GUI ライブラリ sudo apt-get install libmysqlclient-dev #MySQL ライブラリ pip3 install mysqlclient #上記に同じ pip3 install numpy #ベクトル行列の計算 pip3 install scipy #上記に同じ pip3 install matplotlib #グラフ描画ライブラリ sudo apt-get install python3-tk #GUI ライブラリ pip3 install pandas #データ解析 pip3 install scikit-learn #機械学習ライブラリ pip3 install cython #python 拡張ライブラリ pip3 install pyfasttext #学習済みファイルを開くライブ

ラリ pyfasttext のインストールに失敗する場合は「pip3 install --upgrade setuptools」を先に実行してみてください。

fastText 本体(v0.1.0)のコンパイル

wget https://github.com/facebookresearch/fastText/archive/v0.1.0.zip #fastText のソースコードのダウン

ロード unzip v0.1.0.zip #ZIP ファイルの解凍 cd fastText-0.1.0 #カレントディレクトリの移動 make #コンパイル

Page 13: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

13

作成された「fastText-0.1.0(home フォルダーにあると思います)」フォルダーの名前を

「fastText(2 つ目の「T」は大文字です。)」に変更し、Vector_to フォルダー内に移動させ

てください。 MySQL でのユーサーの作成と権限の変更

MySQL は、ID に「vector」、パスワードに「to」でユーザーを作成し、すべての権限を

付与してください。

ターミナルを起動 mysql -u root -p #MySQL にルート権限でログイン

MySQLl にログイン後(下記コマンドはセミコロンまで入力してください) create user vector@localhost identified by "to"; #ユーザーの作成 grant all privileges on *.* to vector@localhost; #権限の変更 exit #MySQL からのログアウト

以上で Vector to の使用の準備は整いました。

Page 14: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

14

macOS(High Sierra) 以下では macOS(High Sierra)のインストール手順を記しています。macOS は Linux と

同じ UNIX 系の OS のため、基本的には Linux 版と同じ手順になります。まず、ダウンロ

ードした Vector to を任意のフォルダーに解凍してください。 インストールを進めると頻繁に Yes/No 型の質問やパスワードの入力が求められますの

で、随時入力してください。 ターミナルの起動の方法

#Launchpad を起動

#「その他」をクリック

#「ターミナルをクリック」

各ソフトウェアとモジュールのインストール ソフトウェアのインストールは Homebrew を使用して行いますので、インストールされ

て い な い 方 は 、 こ ち ら を 先 に イ ン ス ト ー ル し て く だ さ い 。 ブ ラ ウ ザ ー で

https://brew.sh/index_ja にアクセスしてください。

Page 15: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

15

続いて、python をインストール行いますが、その前に python のインストールの有無と、

そのバージョンを確認します。

ターミナルを起動 python3 -V

このコマンドで「python 3.×.×」が出た場合にはインストールが済んでいますので、モ

ジュールのインストールに進んでください。 python のインストール python3 がインストールされていない場合は、下記を実行します。

ターミナルを起動 brew install python3 #python のインストール

python ライブラリのインストール

次に python が使用するライブラリをインストールします。複数あるので順番に入れてい

きます。ターミナルで下記コマンドを実行してください。 pip3 install PyQt5 #GUI ライブラリ pip3 install numpy #ベクトル行列の計算 pip3 install scipy #上記に同じ pip3 install matplotlib #グラフ描画ライブラリ

1. この部分をコピー

し、ターミナルに張

り付けて実行してく

ださい。

Page 16: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

16

pip3 install pandas #データ解析 pip3 install scikit-learn #機械学習ライブラリ pip3 install chardet #文字コード判定ライブラリ pip3 install pillow #画像ファイル表示 pip3 install cython #python 拡張ライブラリ pip3 install pyfasttext #学習済みファイルを開くライブ

ラリ pip3 install mysqlclient #MySQL 関連ライブラリ brew install tcl-tk #GUI ライブラリ

MySQL のインストール

brew install mysql #MySQL のインストール mysql.server start #MySQL の起動 mysql_secure_installation #MySQL の設定の開始 mysql.server stop #MySQL の終了

MySQL の設定の変更 my.cnf という MySQL の設定ファイルの一部を書き換えます。

Finder でコンピュータに移動 command + shift + .(ドット)を同時押し #隠しファイルの表示 /usr/local/etc/に移動 #フォルダーを移動 my.cnf ファイルをコピーして名前を変えて残しておく #下記スクリーンショットでは

「my2.cnf」というファイル名に変

更して元になるファイルを残して

います。

my.cnf ファイルを開く #「テキストエディット」等で開い

Page 17: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

17

てください。 「bind-addres = 127.0.0.1」の下に

character-set-server=utf8mb4 validate-password=OFF socket=/tmp/mysql.sock [mysqldump] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4

を加えてください。

入力を終えましたら、保存して終了してください。 Mecab のインストール

ターミナルを開く brew install mecab #Mecab のインストール cd ~/Downloads #downloard フォルダーに移動 git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git #辞書のダウンロード cd mecab-ipadic-neologd #フォルダーの移動 ./bin/install-mecab-ipadic-neologd -n #辞書のインストール ターミナルを閉じる

Mecab の設定の変更

command + shift + .(ドット) #隠しファイルの表示 /usr/local/etc/に移動 Mecabrc ファイルを開く #「テキストエディット」等で開い

てください。 ファイル内の

Page 18: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

18

dicdir = /usr/local/lib/mecab/dic/ipadic をコメントアウト(先頭に「;」を打つ)し、下の行に dicdir = /usr/local/lib/mecab/dic/mecab-ipadic-neologd

を入力してください。 入力を終えましたら、保存して終了してください。 これで Mecab で使用する辞書ファイルが変更されます。ターミナルを閉じて終了し

てください。 fastText のインストール

cd vector_to #カレントディレクトリの変更(実

際にはもう少し長いアドレスにな

ります。分からない場合は、Vector to のフォルダーを 2 本指クリック

し、コンテキストメニューが出たと

ころで「option」キーを押し、

「Vector to のパス名をコピー」を

選んでください。ターミナル上で

「cd (cd の後にスペースを忘れず

に)」と入力したのちに、貼り付け

を行い、実行するとカレントディレ

クトリを変更できます。) brew install wget #ダウンローダーのインストール wget https://github.com/facebookresearch/fastText/archive/v0.1.0.zip #fastText のダウンロード unzip v0.1.0.zip #fastText の解凍 cd fastText-0.1.0 #解凍したフォルダーに移動 make #fastText のビルド Vector to フォルダー内に「fastText-0.1.0」フォルダーができていると思います。最

後にフォルダー名を「fastText-0.1.0」から「「fastText(2 つ目の「T」は大文字です。)」」

Page 19: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

19

に変更してください。 MySQL でのユーザーの作成

MySQL は ID に「vector」、パスワードに「to」でユーザーを作成し、すべての権限を付

与してください。

ターミナルを起動 mysql.server start #MySQL の起動 mysql -u root -p #MySQL にルート権限でログイン MySQLl にログイン後(下記コマンドはセミコロンまで入力してください) create user vector@localhost identified by "to"; #ユーザーの作成 grant all privileges on *.* to vector@localhost; #権限の変更 exit #MySQL からのログアウト mysql.server stop #MySQL の停止

以上 Vector to 使用の準備が終わりました。

Page 20: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

20

Vector to を使った分析のチュートリアル

「習うより慣れよ」で、実際に分析を行い、Vector to の基本的な使い方を説明します。 練習に使用するのは宮沢賢治の「風の又三郎」、夏目漱石の「こころ」、太宰治の「走れ

メロス」と「列車」です 13。この中で「風の又三郎」「こころ」「走れメロス」を教師デー

タとし、「列車」の各段落を「風の又三郎」「こころ」「走れメロス」に分類したいと思い

ます。小説などに対してテキストマイニングを用いる研究の歴史は古く、シェイクスピア

がフランシスコ・ベーコンではないかという説を否定するために用いられたりもしていま

す(西内, 2013)。この際のテキストマイニングは計量テキスト分析であり、筆者の予測が目

的となっていましたが、Vector to で行う分散表現テキストマイニングは文章の内容により

分類を行うものであり、これまでの分析とは異なります。 先に結論から書きますと、この分析には何も意味はありません。本来であればクチコミ

データなどを分析することで理解を深めていただきたいのですが、著作権の問題があり 1次データを配布することができず、意味のあるデータを用いての練習はできません。その

点をご了承ください。また、このチュートリアルで説明できなかった事柄に関しましては

チュートリアルの後に説明します。 分析に入る前に、分析対象となるファイルの作成について触れておきます。Vector to で

の分析の基本は段落単位になります。文章の分類を行う場合には、教師データは段落単位

でラベルを張る必要があり、また分類を行う対象も段落単位になります。分析に使用する

ファイルを作成する場合にはこの点に注意してください。例えばクチコミを分析する場

合、1 件のクチコミが複数段落にわたる場合がありますが、分析の目的によっては前もっ

て複数段落にわたる 1 件のクチコミを 1 段落に変換する処理を行うほうが良いでしょう。 分析ファイル(教師データ)の登録 vector to フォルダー内の tutrial フォルダーに kazeno.txt、kokoro.txt、merosu.txt、ressya.txt というテキストファイルがあります。このなかで kazeno.txt、kokoro.txt、merosu.txt を教師データとして登録します。まず Vector to を起動してください。 Vector to の起動 起動の方法は OS によって異なります。

Linux ターミナルを起動し vector_to フォルダーに移動後、python3 vector_to.py と入力し

てください。

13 これらの小説はすべて「青空文庫(http://www.aozora.gr.jp/)」にアップロードされて

いるものを分析可能な形に変換の上使用しています。

Page 21: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

21

例:personal フォルダーに Vector to を解凍した場合 cd /home/personal/vector_to #Vector_to フォルダーに移動 python3 vector_to.py #Vector to の起動

macOS ターミナルを起動し、Vector to フォルダーに移動後、python3 vector_to.py と入力し

てください。 例:Documents フォルダーに Vector to を解凍した場合 cd /Users/〇〇〇〇 /Documents/vector_to # Vector_to フォルダーに移動 python3 vector_to.py # Vector to の起動

Page 22: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

22

プロジェクトの登録 Vector to では教師データなどの分散表現の取得に用いるファイルをプロジェクトとして

登録する必要があります。今回は複数のテキストファイルを登録しますので、メニューバ

ーの「プロジェクト」から「新規プロジェクトの作成」、「テキストデータを登録」と進ん

でください。

1. 「テキストデータを登

録」を選択

2. プロジェクト名を入力

してください。プロジェ

クト名は半角英数字で

登録してください。日本

語を用いますとバック

グラウンドでエラーが

発生します。 ここでは「syosetu」と入

力します。 3. 「学習用ファイルを追

加」をクリック。

Page 23: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

23

以上でプロジェクトと、分散表現の取得に使用するファイルの登録は終了です。続い

て、前処理に入ります。ここでは形態素解析、テキストのサンプリング、分散表現の取得

を行います。

4. 「ファイルの参照」をク

リックし、テキストファ

イルを登録します。テキ

ストファイルは 1 つず

つ登録してください。ま

ず、kazeno.txt を選択し

ます。 5. ファイル名をラベル名

として使用にチェック

を入れてください。ラベ

ル名をご自身で登録し

たい場合はご自身で入

力してください。ラベル

名には学習時の分類名

を入力します。半角英数

字をご使用ください 6. 「プロジェクトに追加」

をクリック 7. 同じように kokoro.txt、

merosu.txt も登録して

ください。必ずラベル名

kokoro、merosu と入力

しておいてください。

8. 「登録する」をクリック

します

Page 24: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

24

形態素解析と分散表現の取得 続いて、形態素解析と分散表現の取得を行います。これらはテキストマイニングのため

の前処理に当たります。

1. メニューバーの「前処理」から「形態

素解析」を選択してください

形態素解析を行う前に、分析対象となる文

章に対して前処理を行うことができます。 長音記号を修正する

インターネット上のクチコミな

どでは長音記号に「-」「ー」「‐」

など様々な記号が使われていま

す。この欄にチェックを入れると

まとめて修正できます。 記号を削除する

文章中では様々な記号が使用さ

れていますが、これらを削除する

ことができます。 半角・全角変換処理をする

カタカナ文字を全角に、アルファ

ベットとアラビア数字を半角に

変換します 表層形・基本形

たとえば、文章中には「見」、「見

る」、「見れ」という単語が登場し

ます。これらを基本形の「見る」

に変換して処理するのか、それと

も「見」、「見る」、「見れ」として

処理するのかを選択します。表層

形は文中の表現を使用します どういった単語を学習に利用するか

を選択できます。内容語は名詞、動詞、

形容詞といったそれだけで意味を持

つ単語です。助動詞は否定表現などで

す。内容語の存在しない段落が存在す

る場合、エラーが発生しますので、そ

の場合は、全出現語にするか、そうい

った段落を削除してください。

Page 25: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

25

2. 今回は長音記号の修正、記号の削除、

半角・全角処理にチェックを入れ、表

層形、全出現語で形態素解析を行いま

すので、左図のようにチェックを入れ

てください。 3. 「実行」をクリックすると形態素解析

が始まります。この処理は文章が長い

ほど時間がかかります。終了すると、

左図のウィンドウが自動的に閉じら

れメイン画面に戻りますので、メイン

画面に戻るまでお待ちください。 4. Ubuntu17 では「”vector_to の応答が

ありません”」というメッセージが出る

ことがありますが、「応答を待つ」をク

リックしてください。以下同じです。

5. 形態素解析が終わるとダイア

ログボックスがあらわれま

す。この中で表示される原文

と分かち書き済みの文が同じ

ものであることを確認してく

ださい。これが異なる場合に

は登録したテキストファイル

に問題があります。テキスト

ファイルを修正して、再度、形

態素解析を行ってください。

また、終了時にターミナル上

にエラーが表示される場合が

あります。この場合にもテキ

ストファイルを修正して、再

度形態素解析を行ってくださ

い。記号だけの段落や内容語

の存在しない段落がある場合

にエラーが発生します。

原文

分かち書き済みの文

Page 26: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

26

6. 続いてテキストのサンプリングを行

います。メニューバーの「前処理」か

ら「テキストのサンプリング」を選択

してください

7. サンプリング画面が開くと

merosu ラベルのファイルには

テキストが 74、kokoro には

1218、kazeno には 553 段落あ

ることが表示されています。サ

ンプリング機能はすべてのラベ

ルが同数になるように調整を行

います。今回の場合は、段落数の

最も少ない merosu に合わせて

74以下になるように設定できま

す。 8. 今回はサンプル数を 74 にして、

「実行」をクリックしてくださ

い。 9. 「実行」をクリックするとサン

プリングがバックグラウンドで

行われ、終了するとメイン画面

に戻ります。

10. 続いて分散表現を

取得します。今回は

「分散表現の取得

(supervised)」を

選択してください。

ラベル名が登録さ

れている場合には、

こちらでパラメー

ターを調整するこ

とで学習の精度を

高めることができ

ます。

Page 27: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

27

11. ここでハイパーパラメーターを調整し学

習の精度を高めます。初期値は fastText のデフォルト値になっていますが、このまま

では不十分な成果しか得られません。下記

ハイパーパラメーターを調整することで

適合率を上げてください。 最小出現回数

文章全体で何回以上出現した単語を

分散表現の計算の対象にするかを設

定します。 分散表現の次元数

何次元のベクトル表現にするかを設

定します。 学習回数

全文章を何回学習するかを設定しま

す。[推奨値:5-50] 学習率

学習ごとにモデルをどの程度更新す

るのかの設定。大きいほど最適解に早

く近づくことができるが、最適解を飛

ばしてしまう可能性もある。[推奨値:

0.1-1] 単語 N-gram

分散表現を取得するにあたって、左右

何単語を考慮に入れるかを設定しま

す。語順が重要な役割を果たすような

分類作業で活用します。[推奨値:1-5] 教師データと検証用データの割合

教師データとして何%のデータを使

用するかを設定します。 適合率

全データから教師データを除いたデ

ータを用いて、学習成果の適合率を判

定します。

パラメーターとハイパーパラメーター パラメーターはニューラルネットワー

クを用いた分析では重みやバイアスと

いった自動的に調整されるものを指す

ことが多く、利用者が設定可能なものは

ハイパーパラメーターと呼ばれます。 単語 N-gram について 例えば「新しい 本 を 注文 した」とい

う文章は通常であれば「新しい」「本」

「を」「注文」「した」というように単語

ごとに分散表現を算出しますが、単語

N-gram を 2 に設定すると「新しい 本」

「本 を」「を 注文」「注文 した」とい

うように 2 語を 1 トークンとして分散

表現を算出します。

Page 28: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

28

以上で前処理と学習は終了です。

12. まず、デフォルト設定で文章分

類を行い、その適合率を確認し

ます。 13. 「実行」をクリックしてくださ

い。この処理は時間がかかりま

す。終了するとダイアログボッ

クスが出現し、検証画面に適合

率が表示されますので、お待ち

ください。

14. 開発者の環境ではデフォルト設

定での適合率は 33%でした。

fastText では学習の初期化に際

してランダム処理を行っていま

す。そのため、学習の試行ごとに

値は変わります。 15. 設定を変更することで精度を高

めます。 学習回数→50 学習率→1 に変更し、実行をクリックしま

す。開発者の環境では 58%まで

上がりました。 適合率はハイパーパラメーター

を調整することで上げることが

できます。しかし、過学習の可能

性も考慮して調整してくださ

い。単純に 100%まで上がればよ

いというわけではありません。 16. これ以上の向上は望めそうにあ

りませんので、これを学習成果

として「閉じる」をクリックして

学習を終了します。

Page 29: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

29

データの分析 類似度 (この分析手法は skip-gram で学習を行ったときにのみ有効です。)

1. 単語の類似度を計算しま

す。メニューバーの分析か

ら「類似度」を選択します。

2. 「頻出後の参照」をクリッ

クすると内容語(全出現語

も可)の中で出現回数の多

い語を確認することができ

ます(出現回数で絞ること

もできます。学習済み binファイルを用いている場合

は頻出語の参照機能は使用

できません)。 3. 「先生」と「私」の類似度

を調べてみます。単語 1 に

「先生」を、単語 2 に「私」

を入力し「計算」をクリッ

クします。 4. 類似度の計算結果が表示さ

れます。「先生」と「私」の

類似度は 0.39183 でした。

チュートリアルはデータ数が少ないため、分

析結果にかなりばらつきが生じます。チュー

トリアルにある単語や数値情報とご自身の

分析結果に違いがあっても、ターミナルにエ

ラー表示などがない場合、ソフトウェアのエ

ラーではなく、正常な分析を行えています。

Page 30: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

30

類似語検索 (この分析手法は skip-gram で学習を行ったときにのみ有効です。)

1. 単語を指定して、それと類

似する単語を検索します。

メニューバーの分析から

「類似語検索」を選択しま

す。

2. 検索語に「私」と入力しま

す。 3. 「検索」をクリックすると

下部に「私」と類似度の高

い語の一覧が表示されま

す。今回の場合、関係のな

いと思われる語が出ていま

すが、これは学習に利用し

た文章数が少ない(サンプ

リングと精度分析で検証デ

ータとして一部データを利

用しており、実際に学習に

利用しているデータが 198件と少ない)ためです。1 万

件以上のデータがあれば分

析精度は高まります。

投入済みテキスト数:1842 サンプリングにより 74×3=222 教師データは 74×0.9×3=198

(四捨五入の処理あり)

Page 31: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

31

単語の加減算 (この分析手法は skip-gram で学習を行ったときにのみ有効です。)

1. 加法構成性を利用して、単

語の加減算を行います。メ

ニューバーの分析から「単

語の加減算」を選択します。

2. 計算式欄に「私‐先生+メ

ロス」と入力します。計算

式は単語をプラス記号やマ

イナス記号でつないで記入

してください。単語とプラ

ス記号やマイナス記号の間

はスペースで区切ってくだ

さい。 3. 「計算」をクリックしてく

ださい。 4. Positive は計算式の中で

「 + 」 記 号 の も の 、

Negative は「-」記号のも

のです。 5. 下部に類似語と類似度が表

示されます。今回は教師デ

ータが少ないためこのよう

な結果になりましたが、十

分なデータ数があれば、「王

様-男+女=女王」のよう

な計算も可能です。

Page 32: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

32

テキストの分類 次に太宰治の「列車」の各段落を「風の又三郎」「こころ」「走れメロス」に分類しま

す。

1. メニューバーの分析

から「テキストの分

類」、「テキストの分

類」を選択します。

2. 「参照」をクリック

し、ressya.txt を選択

してください。 3. 「実行」をクリック

すると分類が始まり

ます。終了するまで

しばらくお待ちくだ

さい。 4. 分類が終わると結果

が下部に表示されま

す。「列車」の第一段

落は 0.53125 で「走

れメロス」と推定さ

れています。

Page 33: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

33

知覚マップの作成 Vector to では学習済みのデータを用いて簡単に知覚マップ(ポジショニングマップ)を作

成することができます(分析事例も参照)(この分析手法は skip-gram で学習を行ったとき

にのみ有効です。)。

2. メニューバーの「分

析」から「グラフによ

る可視化」→「知覚マ

ップの作成」を選択

してください。

1. 「検索」をクリ

ックすると学

習データで使

用されている

単語の一覧が

候補の単語と

して表示され

ます。(学習済

み bin ファイ

ルを使用して

いるプロジェ

クトでは検索

機能はご利用

いただけませ

ん。直接入力

し、追加を行っ

てください) 今回は 3 回以

上登場してい

る内容語を対

象にしたいと

思います。

Page 34: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

34

3. 候補の単語欄からプ

ロットしたい単語を

選び「>」ボタンを

クリックします。 今回はプロットする

単語として「父」と

「母」を、軸として

使用する単語として

「笑っ」と「綺麗」

を選択します。 プロットする単語と

軸として使用する単

語は直接入力するこ

ともできます。その

際、複数の語を追加

する場合は、1語ご

とに1回追加を入力

するか、スペースで

区 切 っ て 入 力 し (「父 母」のように) 「追加」ボタンをク

リックしてくださ

い。 不要な単語は「<」

ボタンで候補一覧に

戻せます。 4. 「実行」をクリック

してください。少し

時間がかかりますの

で、お待ちください。

Page 35: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

35

14

14 表の見方 表には軸として使用する候補の単語、プロットする単語と軸として使用する単語の類似

度、プロットする各単語の類似度の分散が表示されています。 今回、グラフの中にプロッ

トされる単語は「父」と「母」で、知覚マップの軸として利用可能な単語が「綺麗」と「笑

っ」になります。 この表を見ると「父」と「綺麗」の類似度が-0.821301、「母」と「綺麗」

の類似度が-0.905946、「父×綺麗」と「母×綺麗」の類似度の分散が 0.0017912 であるこ

とが示されています。この結果から、「父」「母」ともに「綺麗」と逆のベクトルの要素を単

語の構成要因として強く持っており、また、綺麗を構成要因として考えた場合の「父」と「母」

には差がないことがわかります。登録されていない単語の場合 0 が表示されます。

5. 知覚マップの候補一

覧表が作成されま

す。 6. 「綺麗」を選択し左

側の「▼」ボタンを

クリックします。 7. 続いて「笑っ」を選

択し、右側の「▼」

ボタンをクリックし

ます。 8. 「プロット」をクリ

ックするとグラフが

作成されます。 このグラフは簡易的

なもので、綺麗なグ

ラフを作成したい場

合には「csv で出力」

し、あらためてグラ

フを作成してくださ

い。

Page 36: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

36

Vector to の使用方法

以下ではチュートリアルでは触れることのできなかった操作について簡単に説明と解説

を行います。

Vector to の起動 起動の方法は OS によって異なります。

Linux ターミナルを起動しカレントディレクトリを Vector to にし、python3 Vector_to.pyと入力

例:personal フォルダーに Vector to を解凍(unzip)した場合

cd /home/personal/vector_to #Vector_to フォルダーに移動 python3 vector_to.py #Vector to の起動

macOS ターミナルを起動し、Vector to フォルダーに移動後、python3 vector_to.py と入力

例:Documents フォルダーに Vector to を解凍(unzip)した場合

cd /Users/〇〇〇〇 /Documents/vector_to # Vector_to フォルダーに移動 python3 vector_to.py # Vector to の起動

Page 37: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

37

プロジェクトの作成 まず、プロジェクトの作成と分析に使用するテキストファイルや csv ファイルを登録し

ます。Vector to では第 3 者が作成した学習済みファイル(bin ファイル 15)を使用して類似度

の計算などを行うこともできます。 Vector to では fastText にはないカテゴリーという枠組みが存在します。これは文章分類

に基づくカテゴリー横断分析で使用するものです。 bin 形式の学習済みファイルでプロジェクトを作成 第 3 者の作成した学習済みファイル 16を使用して類似度の計算を行う場合、この方法で

プロジェクトの登録を行ってください。登録する bin ファイルは必ず vector to フォルダ内

fastText フォルダーに置いてください。この方法で作成したプロジェクトではメニューバ

ーの分析にある「類似度」「類似語検索」「単語の加減算」「知覚マップの作成」が可能です。

15 gensim で利用可能な vec 形式の学習済みファイルも配布されていますが、Vector to で

はご使用いただけません。bin 形式のファイルをご使用ください。 16 例えば Facebook research が次の URL で wikipedia を利用した学習済みファイルを公

開しています。この中で Japanese の bin+text をダウンロードして Vector to に登録すれ

ば使用できます。https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md また、pixiv inside では pixiv 小説の本文を学習データとして用いて作成したファイルを公

開しています。https://devpixiv.hatenablog.com/entry/2016/09/13/161454 学習対象の違いによる意味の違いなども確認できると思います。

1. メニューバーから「新規

プロジェクトの作成」→

「学習済みデータを使

用」と選択してくださ

い。

Page 38: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

38

以上でプロジェクトの登録は終了です。学習済みファイルを使用する場合、前処理は必要

ありませんので、続いて分析に進んでください。 csv ファイルを分析ファイルとして登録し、プロジェクトを作成 分析対象ファイルに Excel などでラベリングを行った csv ファイルを登録することがで

きます。csv ファイルを用いて分析ファイルを登録する際には、不要なカンマが本文中に存

在していないかを十分にチェックしてください。不要なカンマが存在する場合は Vector toでそれが存在する行をエラーメッセージの形で出力しますので、修正のうえ、再度登録して

ください。

2. 「開く」をクリックし、

学習済みbinファイルを

選択してください。 bin ファイルのファイル

名がプロジェクト名に

なります。ファイル名に

不要な「.(ドット)」があ

る(「file.name.bin」のよ

うなファイル名)場合は

削除してください。 3. 「登録」をクリックして

ください

1. 「ラベル付き csvデータ

を登録」を選択

Page 39: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

39

CSV ファイルの作成例

2. プロジェクト名を入力

してください(半角英数

字)。 3. 「参照」をクリックし、

登録する csvファイルを

選択してください。 4. csv ファイル上でラベル

名やカテゴリー名を付

けている場合はチェッ

クを入れてください。 5. csv ファイルの「A 列」

「B 列」「C 列」が「テキ

スト(本文)」、「ラベル」、

「カテゴリー」のどれに

当たるかを選択してく

ださい。 6. 「登録」をクリックして

ください

CSV ファイルでプロ

ジェクトを作成する場

合は、ひとつのファイ

ルにまとめてくださ

い。 見出し行は作成しない

でください。 ラベル名、カテゴリー

名は半角英数字をご使

用ください。 1 行が分析の単位にな

りますので、ラベル名

やカテゴリー名はすべ

ての行に入力する必要

があります。

列車

風の又三郎

こころ ラベル 本文(分析対象)

Page 40: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

40

登録済みのプロジェクトを開く 以前に登録したプロジェクトなど、すでに Vector to に登録しているプロジェクトを開く

場合はメニューバーの「プロジェクト」から「プロジェクトを開く」を選択してください。

1. 「プロジェクトを開く」

を選択

2. プロジェクトを選択 3. 「選択」をクリック

Page 41: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

41

テキストデータの前処理 前処理ではテキストのクリーニング、サンプリング、単語および文章の分散表現化を行い

ます。 テキストのクリーニング Vector to では①長音記号の統一、②不要な記号の削除といったテキストのクリーニング

を行えます。これによってかなりの程度、以後の結果を正確なものにすることができます。

しかし、表記ゆれの修正には対応しておりませんので、これへの対応は後述の分散表現化の

後に分散表現化の過程で作成される vec ファイルを確認のうえ、ご自身で修正をお願いし

ます。vec ファイルは fasttext フォルダー内に作成されており、ベクトル表現化されたデー

タも確認することができます。

サンプリング 文章分類を行うためには、教師データとして用いる各文章にラベルを張り、それを学習さ

せる必要があります。教師データに用いる文章数に偏りがある、たとえば A というラベル

を張った文章数が 2000、B というラベルを張った文章数が 1000 ある場合、文章数の多寡

によるバイアスが学習結果に影響をおよぼす可能性があります。Vector to ではサンプリン

グ機能を用いて各ラベルで学習に使用する文章数をそろえることが可能です。

チュートリアルの中でも

説明していますので、ここで

は補足説明だけにとどめま

す。 削除する記号ですが、「記

号を削除する」チェックボッ

クスにチェックを入れると、

削除する記号をご自身で変

更することができます。一部

記号(「,」)は削除できません

のでご注意ください。(半角

と全角の区別は便宜上のも

のです。)

Page 42: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

42

fastText による学習 fastText には 2 種類の機能があります。ひとつは単語を分散表現(数百次元のベクトル)

に変換し類似度の計算を可能にする機能、もうひとつは教師データに基づいたテキストの

分類学習の機能です。fastText には学習方法(コマンド)として supervised、Skip-gram、

CBOW があり、Vector to では、supervised と Skip-gram に対応しています 17。すべての

学習方法で単語の分散表現化は行われますが、supervised による学習で得られた単語の分

散表現は単語間の類似度の計算やそれにもとづく様々な機能を用いることには適していま

せん。分散表現の取得には後述の分布仮説という考えが背景にあります。Skip-gram や

CBOW はこの分布仮説に基づいて分散表現を計算しています。これらの考えに基づいた分

散表現の取得は、指定された周辺語を(から)予測するという方法で分散表現を算出してい

ます。言い換えれば、ある意味、周辺語を教師データとして用いることで分散表現を算出し

ているのです。しかし、supervised では、文章に出現する全単語のベクトル(分散表現)の

合計が与えられた教師データ、つまりラベルに応じて 1 or 0 になるように単語の分散表現

が算出されます。ゆえに、付与されたラベルに応じてバイアスがかかり、かつ文脈語が文章

に登場する全単語ということになるため、単語の分散表現の算出に際する誤差の修正も、

Skip-gram や CBOW と比べると精度の低いものとなっています。そのため、Vector to で

は単語の分散表現を用いた分析は Skip-gram で行った学習済みモデルでのみ可能という設

17 fastText のチュートリアルによれば、subword 情報を用いた場合、Skip-gram の方が

より効果があるとされているため、簡略化もあって CBOW には対応せず Skip-gram だけ

に対応する形にしています。インターネット上では日本語の subword 情報には対応してい

ないという意見もありますが、pyfasttext モジュールの「model.get_subwords」コマンド

で確認したところ、対応していました。

解除ボタンをクリックす

ると、以前に行ったサンプリ

ングを解除することができ

ます。しかし、学習済みのデ

ータ等はすべて失われます

ので注意してください。 解除後に、再度分散表現の

取得を行ってください。

Page 43: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

43

定にしてあります。 Skip-gram で行った単語の分散表現化では subword 情報を活用しています。subword と

は単語を文字の羅列と考え、この羅列の中から取り出した一部の文字の羅列のことです。こ

れを利用することで未知の単語にも対応できるようになります。これによって、学習済みの

単語と学習されていな単語(未知語)との類似度も計算することができます。 テキスト分類も必要だが、subword 情報も活用したいという要求もあるかとは思います

が、supervisedでの文章ベクトルの算出方法は、文章を構成する単語のベクトルとEOS(end of sentence)「</s>」のベクトルを合計した後に文章を構成する単語数+1(この+1 は EOS)で除したものを用いています。これら単語ベクトルと文章ベクトルの関係に一貫性を持たせ

る必要がありますので、文章分類を行いたい場合には supervised で学習を行い、subword情報を用いた類似度の計算は、再度新しいプロジェクトの登録を行い、実行してください。

もし、supervised で学習を行い分析を行った後に、再度同じプロジェクトで Skip-gram で

学習を行うと、以前の学習内容はすべて失われます。同じデータであっても、異なる学習を

行う場合には十分に注意してください。また、先述の通り、fastText は初期化の処理の中で

ランダム処理が入っているので、同じ学習結果を得ることはほぼ不可能だと考えてよさそ

うです。再学習を行う際には、十分に注意してください。新しいプロジェクトを登録するこ

とをお勧めします。

Page 44: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

44

skip-gram による学習

1. 必ずラベル登録の

されていないプロ

ジェクトで行って

ください。ラベル登

録されている場合

に は 、 自 動 的 に

supervised で計算

されます。 2. 「分散表現の取得

(skip-gram)」を選択

します。

3. ハイパーパラメーターを調整すること

で分析の精度を上げることができます。 4. ここで学習率を上げ過ぎるとメモリ不

足のエラーが発生します。ターミナル上

で学習の進み具合が表示されています

が、一番左の列 Progress が 100%まで進

まない場合は、fastText が強制終了して

おり、Vector_to 上で「処理が終了しまし

た」と表示されても学習はされていませ

ん。学習率を小さくして、再度実行して

ください。 文字 Ngram

何文字単位で subword 情報として

活用するのかを決定します。日本語

の場合 3から 4あたりに設定するの

が妥当でしょうか。最小を 2 にする

と未知語に強いモデルを作成でき

ますが、日本語の単語は 2 文字で意

味を構成するものが多いため、類似

度を計算する際にノイズが多く入

るようです。 5. 「実行」をクリックします。

Page 45: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

45

分析 カテゴリー横断文章分析 チュートリアルでは、使用可能な文章の限界から、この分析手法の説明は省きました。こ

の分析手法を用いてできることに関しては分析事例を見ていただくこととし、ここでは簡

単な説明を行います 18。 この分析を行うにあたっては、各文章に対して、ラベルに加えてカテゴリーも登録します。

下記の表は、分析事例の中でのラベルとカテゴリーの関係です。東京ディズニーランドの各

クチコミには「東京ディズニーランドのラベル(実際の分析では半角英数字を使用します)」が、東京ディズニーシーの各クチコミには「東京ディズニーシー」のラベルが貼られ、それ

に加えて両ラベルのクチコミに対して「テーマパーク・レジャーランド」というカテゴリー

が貼られます。

fastText の通常の学習と分類機能では、ラベル付きテキストを教師として、テキストのラ

ベルごとの特徴を計算し、その後の分類ではラベルなしテキストが投入され、それが学習結

果に基づいて分類されます。これはラベルに「属するもの」という観点、つまり排他的な特

徴という観点からの分析になります。Vector to でのカテゴリー横断分析は、これとは反対

にどのラベルにも共通するため「分類できないもの」、あるいは「どのラベルにも属さない

18 この使用方法の説明の中でのデータと分析事例で使用しているデータは異なります。

Page 46: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

46

もの」という観点からの分析ということができます。 具体的な分析としては、学習に利用したテキストデータを、再度 fastText によって分類

させ、それぞれの文章がどのラベルになるのかを判定します。この判定では、「ラベルが一

致した」、「ラベルは一致しなかったが同一のカテゴリーのラベルが張られた」、「カテゴリー

も異なるラベルが張られた」、の 3 通りで判定します。そして、判定の結果をもとにカテゴ

リーが異なるラベルを張られたものを分析の対象として、それらに共通する要因を探り出

します。

8. メニューバーの「分

析」から「テキスト

の分類」→「カテゴ

リー横断文章分析」

を選択してくださ

い。

9. 学習に利用したフ

ァイルの再分類(ラベリング)を行いま

す。「実行」をクリッ

クします。 10. 再分類の結果を確

認します。「表示」を

クリックしてくだ

さい。

Page 47: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

47

fastText は各テキストを指定された次元のベクトルに変換し、それを教師データと

して学習し、分類に使用しています。そのため、分析者が、どのようなテキストが不一

致カテゴリーに分類されたのかを確認しようとしても、ベクトル形式でしか見ること

ができません。たとえば、下記は「走れメロス」の一節と、それを 100 次元のベクトル

表現に変換したものです。このベクトル表現から何らかの示唆を得ることは難しいと

思います。 例:

メロスは、単純な男であった。買い物を、背負ったままで、のそのそ王城には

いって行った。たちまち彼は、巡邏の警吏に捕縛された。調べられて、メロス

の懐中からは短剣が出て来たので、騒ぎが大きくなってしまった。メロスは、

王の前に引き出された。 「走れメロス」の一節

[ 0.00046942 0.0032485 0.00014361 -0.0027153 0.0035908 0.0044724 -0.0011215 -0.00088636 0.0037339 0.0038991 -0.0032646 0.0007755 -

0.00076629 0.0030221 -0.00051451 -0.0011642 0.0004482 -0.00053487 -0.0011027 1.2658e-05 0.0015936 0.0049606 0.00097712 -0.00045528 -0.0023102

0.00019531 0.0014424 -0.00063197 -0.0035805 0.0026032 -0.0011044 -0.00025962 -0.001738 -0.0024207 -0.0053958 0.0021536 -0.0013145 -0.00095922

3.1509e-05 0.0019281 -0.0018763 0.0038084 0.0017963 0.0024844 0.0050655 -0.000566 0.0050953 -0.0010162 -0.0012072 0.0027825 -0.0039259

0.0021719 -0.0016006 0.001074 -0.001168 0.00020393 -0.0018611 0.0014714 0.0027242 0.00065239 -0.0017154 0.0030112 0.0034748 0.0015612

0.00017073 0.00016752 -0.0045199 -0.0010992 -0.001105 -0.00078624 -0.0024343 0.0015289 0.0013716 -0.00079297 -0.0013762 -0.00056616 0.0020952

0.00091085 0.0029211 -0.0026901 -0.00029499 0.0014438 0.0022512 0.00057329 0.0028533 -0.00088012 0.00059071 0.002693 -0.0032757 -0.0003471

0.0028676 0.00054188 0.003604 -0.0011732 0.0016139 -0.0023582 -0.0012136 0.0016602 -0.0036149 -0.0033901 ]

11. ラベルが一致した

テキスト数、同一カ

テゴリーとして判

定されたテキスト

数、カテゴリーの異

なるラベルとして

判定されたテキス

ト数が表形式で出

力されます。続く分

析では、ここで不一

致と分類されたデ

ータを分析の対象

とします。

Page 48: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

48

しかし、ラベルだけではなくカテゴリーも不一致となったテキストの集合を分類す

ることができれば、どのラベルやカテゴリーにも分類できないテキストの特徴を抽出

することが可能です。そこで Vector to では、このようなテキストを k-means 法で分

類し、その分類結果を計量テキスト分析の手法で可視化できるようにしています。

12. エルボー図を確認

することで、不一致

だったテキストを

いくつに分類する

かを検討します。エ

ルボー図の作成に

は k-means 法を用

いています。

13. この図では 5 から 8クラスターに分類

することが妥当と

思われます。

Page 49: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

49

14. クラスター数を入

力し、「クラスタリ

ング」ボタンをクリ

ックすると、それぞ

れのクラスターに

分類されたテキス

ト数が表示されま

す。ここでクラスタ

ー数を判断するこ

とができます。 15. さらに「確認」ボタ

ンを押して、各クラ

スターの中身を頻

出語と、その頻出語

と共起する単語の

関係で確認するこ

とができます。

Page 50: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

50

16. 確認するクラスタ

ーを選択し、「検索」

ボタンをクリック

します。(クラスタ

ーバン後は「0」から

はじまります。) 17. 選択されたクラス

ターの中での頻出

語が表示されます。

カッコ内は出現数

です。出現数には総

出現回数ではなく、

出現テキスト数を

用いています。 18. 頻出語から単語を

選択し「>」ボタン

をクリックすると、

その頻出語と共起

する単語が表示さ

れます。間違って

「>」を押した単語

は「<」で戻すこと

ができます。

出現回数のカウント方法 ひとりの少女が、緋のマントをメロスに捧げた。

メロスは、まごついた。佳き友は、気をきかせて

教えてやった。 (「走れメロス」より)

この場合、「メロス」という単語の総出現回数は 2 回

ですが、ひとつのテキスト(段落)中なので 1 回と数え

ます。

Page 51: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

51

19. 頻出語として選ばれた単

語(「夕方」)と共起する語

が一覧で表示されます。 20. 「>」をクリックすると、

選択された共起語が右欄

に移ります。 21. 上記図の場合、頻出語と

して「夕方」が選択され、

「夕方」と共起する語と

して「景色」と「不便」が

選択されています。

Page 52: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

52

22. 「シートに追加」ボタン

をクリックすると下の表

に、選択した内容が移動

します。 23. 確認したいクラスターの

内容を確認し終えたのち

に「csv ファイルの作成」

ボタンをクリックすると

表の内容を csv ファイル

として保存することがで

きます。

Page 53: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

53

類推問題(analogy task)を解くことによる特徴の可視化 fastText など分散表現を用いた自然言語処理の基本的な機能として類推問題を解くとい

うものがあります。類推問題とは「王様」-「男性」+「女性」は?という単語間の関係を

推測するもので、上記の答えは「女王」になります。Vector to にはこの類推問題を解くこ

とから単語の特徴を可視化する機能が 2 つあります。 これまで使用してきた小説データを用いて行った事例が次のものです。 単語の加減算による近似化 (この分析手法は skip-gram で学習を行ったときにのみ有効です。) ひとつめの類推問題を用いた特徴の可視化では、単語を二つ指定し、第一語が第二語に近

づくためには、どのような単語を加算したり減産すればよいかを探索します。

1. 「分析」から「類似

度に基づく分析」

「特徴分析」「単語

の加減算による近

似化」と進んでく

ださい。 2. 今回は第一語に

「メロス」を第二

語に「セリヌンテ

ィウス」を入れて

分析しました。 3. この結果から、「メ

ロス」という概念

が「セリヌンティ

ウス」という概念

になるためには

「メロス」から「そ

れ」を減算し、さら

に「上」を減算する

ことで「セリヌン

ティウス」と 0.99の類似度を得る概

念になることがわ

かります

Page 54: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

54

単語の減算による近似化 (この分析手法は skip-gram で学習を行ったときにのみ有効です。) この機能は、指定した単語らしさをもっとも失わせる概念は何かを探索するものです。

1. 「分析」から「類似

度に基づく分析」

「特徴分析」「単語

の減算特徴探索」

と進んでくださ

い。 2. 特徴を探索する語

に「メロス」と入力

し「探索」をクリッ

クします。 3. ここでは「メロス」

から「待つ」と「殺

す」という概念を

減算すると「メロ

ス」から最も遠ざ

かることがわかり

ます。

Page 55: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

55

代理変数を用いた特徴の抽出 (この分析手法は skip-gram で学習を行ったときにのみ有効です。) これまでの計量に基づくテキストマイニングでは、分析対象の特徴を抽出するために、単

語の出現回数(例:「大きい」よりも「小さい」という単語の登場回数が多ければ、その分

析対象の特徴として「小さい」が強い)や共起関係(○○という単語と一緒に登場している)、

用いることでアプローチしてきました。分散表現テキストマイニングでは、これまでとは異

なる方法で分析対象の特徴にアプローチすることができます。 この新しいアプローチである相関分析の説明に入る前に、その前提となる特徴の代理変

数化について説明します。方法としては、文章中に登場する商品やサービスの特徴を、特徴

となる語と商品・サービス名の類似度で代理する、つまり商品・サービスの持つ特徴の代理

変数として類似度を用いる手法を採用するというものです。具体的にはテキスト中に登場

するサービス名や施設名と様々な出現語の類似度をサービスや施設の特徴の代理変数とし

て使用することで、施設の特徴を明確にする手法として採用します。ここで特徴とは「近い」

や「安い」、「デート」、「旅行」など文章中に出現する単語を指しています。 たとえば、後述の外形的データを併用した分析の節で使用する学習済みモデルを用いる

と、「海遊館」という単語と「デート」という単語の類似度は 0.45 で、同「海遊館」と「旅

行」の類似度は 0.30 です。また「沖縄美ら海水族館」と「デート」の類似度は 0.23 で、同

「沖縄美ら海水族館」と「旅行」との類似度は 0.41 です。

この計算結果から、海遊館と沖縄美ら海水族館の相対的な特徴としては、沖縄美ら海水族

館が海遊館と比較して旅行客が訪れる施設という特徴があり、海遊館がデートで訪れられ

る施設という特徴があるという可能性を推測することができます。このような分析は、単語

が様々な成分から構成されており、それら成分と、その影響の程度によって意味が決まって

Page 56: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

56

いることによって可能となります。 Vector to では、このように取得された様々な特徴と、他の要素との相関を計算すること

ができます。例えば、竹岡(2018b)および竹岡(2019)では 5 つの水族館の様々な特徴を上記

手法で測定し、それらの特徴と「入場者数」、「延べ床面積」、「飼育種類数」という外形的デ

ータとの相関を計算することで、消費者が水族館というサービスを消費するにあたってが

どのような要因が影響を与えているのかを分析しました。 外部データを用いた相関分析 今回は、これまで使用してきた小説では困難な分析なので、後述の「外形的データを併用

した分析」の事例を行った際の手順を説明します。

4. 「分析」から「相関

分析」と進み、「外

部データを用いた

相関分析」をクリ

ック。

1. 特徴を知りたい施設

名やサービス名を登

録します。 「検索」をクリ

ックすると学習

に使用した単語

を一覧で取得で

きます。 候補の単語を選

択し、矢印ボタ

ンで追加できま

す。 直接入力するこ

ともできます。

複数の語を直接

入力する場合は

スペースを入れ

てください。 2. 特徴として抽出する

概念を登録します。 3. 「実行」をクリック

します。

Page 57: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

57

5. 特徴を知りたい施設名などが表

示されますので、その横にデータ

を入力してください。今回は各施

設の「延べ床面積」を入力しまし

た。 6. 「実行」をクリックします。 7. 相関、あるいは逆相関の強い順に

リスト表示されます。 8. 入力データとの関係を散布図と

して表示する際には、単語を選択

し、「プロット」をクリックしてく

ださい。 9. この表は csv 形式で保存すること

ができます。

Page 58: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

58

出現語間の相関分析 続いて、代理変数を用いた特徴分析の中でも、出現語間の相関分析について説明します。

これは、様々な特徴間には、「かわいい」と「好き」のように関連のあるものが存在します。

このような特徴間の関係を相関分析によって明らかにするのが、この機能です。 今回もチュートリアルの小説データを用いて説明します。

10. 散布図が得ら

れました。 11. 散布図の確認

が終わりまし

たら、必ずウ

ィンドウを閉

じ て く だ さ

い。

1. 「分析」から

「相関分析」、

「単語類似度

の相関分析」

と進んで、ク

リックしてく

ださい。

Page 59: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

59

2. 今回は小説中に登場する人称名詞の特徴を分析してみた

いと思いますので、検索をクリックして候補の単語の一覧

を取得します。 3. 人称名詞をプロットする単語として選択し、「>」で「プロ

ットする単語」として登録してください。 4. 人称名詞の特徴となる語としては名詞、形容詞と動詞があ

ると思われますが、今回は人称名詞がどのような動作をす

る設定で扱われているのかを見たいと思いますので、動詞

を候補の単語から選択し「>」で「軸として使用する単語」

として登録してください。

Page 60: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

60

5. 相関、あるいは逆相関の関係の強

い順にリストが作成されます。今

回のリストでは「言う」と「聞く」

が逆相関の関係となっています。 6. 「プロット」をクリックすると散

布図が作成されます。 7. また、このリストは csv 形式で保

存することができます。

Page 61: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

61

単語の共起関係に注目した分析

テキストマイニングの基本的な考え方の一つに共起関係への注目があります。Vector toでは単純な共起関係への注目は行わず、注目語を指定したうえで、その後が出現する文章だ

けを抽出、K-means 法によって抽出された文章の分類を行い、その分類結果に出現する共

起関係を分析します。 今回はチュートリアルで使用した小説の学習済みモデルを使用します。

1. 「分析」から「共起

語検索」をクリッ

クします。 2. 意味探索したい語

を入力します。 3. エルボー図を描く

を「実行」すると先

ほど指定した語が

登場する文章だけ

がバックグラウン

ドで抽出され、分

類するクラスター

数を確認すること

ができます。(エル

ボー図の作成は必

須ではありませ

ん。不要な場合は

次のステップに進

んでください。)

Page 62: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

62

4. エルボー図を確認

するとクラスター

数は 3 or 4 あたり

が良さそうです。 5. 今回はクラスター

数を 3 で分析を進

めたいと思いま

す。クラスター数

を 3 にし、「クラス

タリング」をクリ

ックします。 6. それぞれのクラス

ターに分類された

文章数が表示され

ます。(ラベルが 0からはじまります

ので注意してくだ

さい。) 7. 「確認」をクリッ

クすると各クラス

ターに含まれる出

現語を確認するこ

とができます。こ

こで確認すること

ができる語は、「意

味探索する語」を

必ず含んでいます

ので、「意味探索す

る語」と共起する

語となります。

Page 63: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

63

8. 確認するクラスタ

ーを選択し、「検索」

ボタンをクリック

します。(クラスタ

ーバン後は「0」から

はじまります。) 9. 選択されたクラス

ターの中での頻出

語が表示されます。

カッコ内は出現数

です。出現数には総

出現回数ではなく、

出現テキスト数を

用いています。今回

は「意味探索する

語」として「私」を

指定していますの

で「私」が最も多い

語として登場しま

す。 10. 頻出語から単語を

選択し「>」ボタン

をクリックすると、

その頻出語と共起

する単語が表示さ

れます。間違って

「>」を押した単語

は「<」で戻すこと

ができます。

Page 64: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

64

11. 今回は「私」という単語が

含まれる文章の特徴を知

りたいので「私」を選択

し、「>」をクリックしま

す。 12. 頻出語として選ばれた単

語(「私」)と共起する語が

一覧で表示されます。 13. 「>」をクリックすると、

選択された共起語が右欄

に移ります。 14. さらに単語を選択し絞り

込むことができます。 15. 絞り込みの結果を csv 形

式で保存することができ

ます。

Page 65: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

65

グラフによる可視化

Vector to では fastText を使って単語を数次元のベクトル表現に変換しています。これに

よって単語間の関係を類似度として計算することができるようになっています。しかし、こ

のままでは単語 A と単語 B の関係など少数の単語間の関係しか把握することができず、複

数の単語間の関係を俯瞰的に確認することができません。そこで、Vector to では多次元の

ベクトル表現を 2 次元に削減し、散布図を描く機能を実装しています。

PCA(主成分分析)グラフの作成 (この分析手法は skip-gram で学習を行ったときにのみ有効です。) PCA(主成分分析)で作成されたグラフの特徴は、単語群 A(King, Queen)と単語群 B(Man, Woman)の間に明確な関係がある場合、またその関係性が分散を最大化するにあたって影響

の強いものである場合、単語間のオフセット関係が比較的明確に出現します。たとえば、

“King” - “Man” + “Woman”という単語の加減算ができるということは、それぞれの単語間

の関係にオフセット関係があるということです。

以下では、Vector to ホー

ムページで公開している

Wikipedia の学習済みモ

デル (Vector to-2)を使用

しています。 1. メニューバーの「分

析」から「グラフによ

る可視化」→「PCA グ

ラフの作成」を選択

してください。

Page 66: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

66

2. ご自身で学習モデル

を作成した場合はプ

ロットする単語を検

索することができま

す。 3. また、直接プロット

する単語を入力する

こともできます。複

数の単語を入力する

際は、スペースで単

語間をつないでくだ

さい。 4. 「追加」をクリック

するとプロットする

単語の一覧に単語が

追加されます。 5. 「実行」をクリック

してください。PCAで次元削減を行った

結果が作図されま

す。 6. このグラフから、国

名と首都のオフセッ

ト関係が明確にわか

ります。

Page 67: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

67

t-SNE グラフの作成 (この分析手法は skip-gram で学習を行ったときにのみ有効です。)

t-SNE では、元の多次元の単語間の関係をできる限り残したまま次元の削減を行います。

そのため、t-SNE を用いたグラフでは類似度の高いものは近くにプロットされ、低いもの

は遠くにプロットされます。このような性質から、t-SNE で作成されたグラフには単語間

の距離関係に基づくクラスターが形成されます。つまり、t-SNE を用いることで単語間の

類似度に基づくクラスターを確認することができます。 しかし、t-SNE には PCA ではなかった数々のパラメーターが存在し、また初期値にラン

ダムに生成された情報を使用しています。そのため、同じ結果を得ることが難しく、またパ

ラメーターをうまく設定しなければ、十分な結果を得ることはできません。

以下では、Vector to ホー

ムページで公開している

Wikipedia の学習済みモ

デル (Vector to-2)を使用

しています。 1. メニューバーの「分

析」から「グラフによ

る可視化」→「t-SNEグラフの作成」を選

択してください。 ※ 初期値にランダムに

生成された情報を使

用しているため、同

じ結果にはなりませ

ん。

Page 68: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

68

基本的な使用方法は PCA と同じです。以下では、ハイパーパラメーターの説明を行

います。 perplexity

各点に近接する点の数を推測する指標。プロットする単語の数よりも少なく

設定してください。クラスターが明確に分離されない場合は perplexity を

高く設定するとうまくいくことがあります。 [推奨値:5-50] 学習率

学習ごとにモデルをどの程度更新するのかの設定。大きいほど最適解に早く

近づくことができるが、最適解を飛ばしてしまう可能性もある。[推奨値:

10-1000] 学習回数

学習回数。250 以上に設定してください。 高速化

barnes_hut 法を用いることで解析速度を高速化します。しかし、barnes_hut法を用いない(チェック無の)ほうが正確な結果が得られます。

次元の削減 t-SNE 計算を行う scikit-learn の機能ではなく、Vector to の機能です。 PCA を用いてあらかじめ次元を削減し、その後に t-SNE 法でグラフを削減

します。あらかじめ次元を削減することで、余計なノイズを削減することが

できます。

Page 69: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

69

ハイパーパラメータ

ーを設定します。 2. perplexity:5

学習率:100 学習回数:2000 高速化:なし 次元の削減:0

この図から地域的な

クラスターが見て取

れます。

Page 70: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

70

ハイパーパラメーターの確認 学習に際して設定したハイパーパラメーターを確認することができます。

1. メニューバーの「前処理」

から「ハイパーパラメータ

ー」をクリック 2. CSV ファイルとしてエク

スポートすることができ

ます

Page 71: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

71

データのエクスポート 分析に使用しているテキスト、形態素解析済みのテキスト、分散表現化された文章のベク

トル、カテゴリー横断分析で再ラベリングを行った際の各文章の結果を出力することがで

きます。

1. メニューバーの「分析」から

「データのエクスポート」を

選択します。 2. 「csv 出力」をクリック

エクスポートするデータは分散表現の

獲得に使用した「分析に使用した文章」

と「全文章」を選択できます。Vector toでは登録した文章をすべて形態素解析

していますので、形態素解析の結果を

使って他の分析を行う場合にはこちら

で「全文章」を選択することで、エクス

ポートすることができます。 「登録されたテキスト」はインポート

したすべての文章です。 「形態素解析済みテキスト」は形態素

解析時に長音記号の修正などを行って

いる場合、それらを反映したものです。 「テキストの分散表現」は、各文章をベ

クトル表現にしたものです。 「カテゴリー横断分析の再ラベリング

の結果」はカテゴリー横断分析で再ラ

ベリングを行った際の結果です。0 から

3 が出力されます。 0:分析には使用していないテキスト、

1:ラベルが一致したもの、2:ラベルは

一致しなkったが、カテゴリーが一致

したもの、3:ラベルもカテゴリーも不

一致のもの

Page 72: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

72

プロジェクトの削除 不要になったプロジェクトはメニューバーのプロジェクトから削除できます。

ここで削除を行うと、登録しているデータや分析に使用した条件等すべて削除されます

が、登録するにあたって使用したファイルは削除されません。 以上が Vector_to の使用方法です。

Page 73: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

73

機械学習を用いたテキストマイニングの分析事例

文章分類に基づくカテゴリー横断分析 次に、自然言語を対象とした機械学習の中でも広く利用されているテキスト分類の機能

と、これまでの計量テキスト分析の手法を用いて各施設に共通して言及されている特徴を

可視化したいと思います。 機械学習におけるテキストの分類は教師あり学習で行われることが多く、各テキストに

ラベルを張り、それをもとにテキストの特徴を抽出、学習するというプロセスがとられます。

そして、このプロセスで学習された結果をもとにして、新たにテキストが投入された場合に

は、そのテキストがどのラベルに当てはまるのかを判定し、分類することが可能になります。

通常はこのように用いられるのですが、ここでは学習に使用したデータを再度 fastText に

投入し、分類器によって判定、その中で分類器が誤判定したラベルから、各施設に共通して

いる特徴について分析を行いたいと思います。

表 1 分類器による再ラベリングの結果

表 3 では、分類器の判定結果が元のラベルと一致する場合には一致、ラベルは一致しな

かったが、同一カテゴリーの施設のラベルが張られた場合には同一カテゴリー、カテゴリー

も一致しなかった場合には不一致として、それらの結果を集計しています。 表 3 の分類器による再ラベリングの結果から、「ユニバーサル・スタジオ・ジャパン」や

「三井アウトレットパーク滋賀竜王」のように、分類器がかなりの程度判定に成功している

一致 同一カテゴリー 不一致

ディズニーランド 7 894 99

ディズニーシー 930 70ユニバーサル・スタジオ・ジャパン 837 99 64横浜八景島シーパラダイス 631 262 107ナガシマスパーランド 401 505 94沖縄美ら海水族館 52 948鳥羽水族館 7 14 979鴨川シーワールド 44 10 946海遊館 19 981名古屋港水族館 8 12 980アドベンチャーワールド 115 660 225旭川市旭山動物園 727 170 103神戸市立王子動物園 174 718 108東山動植物園 539 296 165上野動物園 882 118神戸三田プレミアムアウトレット 976 24三井アウトレットパークジャズドリーム長島 927 73三井アウトレットパーク木更津 965 35三井アウトレットパーク滋賀竜王 966 34三井アウトレットパークマリンピア神戸 955 45

Page 74: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

74

クチコミもあれば、「沖縄美ら海水族館」、「鳥羽水族館」、「鴨川シーワールド」、「海遊館」、

「名古屋港水族館」の各水族館のように、他のカテゴリーの施設と判定されているものもあ

ります。このような結果からは、「ユニバーサル・スタジオ・ジャパン」や「三井アウトレ

ットパーク滋賀竜王」の場合には、他の施設と比較して何らかの特徴的なものが存在し、そ

れが分類器の判定を正確なものとしていることが推測されます。 以下では不一致カテゴリーに注目します。このカテゴリーに含まれているクチコミは先

述のとおり分類器によって再ラベリングした際に、異なるカテゴリーのサービス施設名が

ラベリングされたクチコミです。このようなクチコミに注目する理由としては、このような

クチコミにはサービスの業態を超えた共通点があると考えられるからです。つまり、ラベル

が一致したクチコミを分析すればその施設の特徴が、同一カテゴリーに含まれたクチコミ

を分析すればそのサービスカテゴリーの特徴が、そして不一致カテゴリーを分析すれば今

回の分析対象となった 4 つのサービスカテゴリーに共通する特徴が抽出できると考えられ

るからです。 しかし、このラベルが不一致のクチコミは全体で 6198 件存在します。これらを直接分析

することは困難です。そこで、これらのクチコミを共通の特徴に沿って複数のクラスターに

分割し、それを分析することで、消費者の意見を可視化したいと思います。先ほどの fastTextを用いたクラスタリングでは教師データを用いてクラスタリングを行いましたが、今回は

これらのラベル(施設名)を用いても意味はありません。なぜなら、クチコミを施設ごとに分

類するのが目的ではなく、クチコミ内に登場する何らかの特徴に基づいて分類することが

目的となるからです。そのため、教師データのない状態でクラスタリングを行う必要があり

ます。 今回は教師データなしでのクラスタリングに k-means 法を用います。k-means 法では

fastText が算出した文章の分散表現を用いてクラスタリングを行いました。図 3 のエルボ

ー図より、クラスター数は 8 から 15 が適正と推測されますので、今回は全クラスター内の

クチコミ数が 1000 以下となる分岐点、11 クラスターに分類するこにします。

Page 75: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

75

図 1 エルボー図 ここまでで共通話題のクラスタリングはできましたが、この各クラスターの中でどのよ

うな内容が書き込まれているのかを分析する必要があります。しかし、fastText では文章を

分散表現として要約してはいますが、分散表現は今回の分析の場合 100 次元の座標で表現

されており、人の目でこれら座標から中身を判断することは困難です。そこで、以下では計

量テキスト分析の手法を用いて、各クラスターの中でどのような話題が投稿されているの

かを見ていくことにします。 図 4 は各クラスターの頻出語(名詞、動詞 、形容詞)と出現回数を示しています。図中の

各表の左上にはクラスター名を、右上には各クラスターに分類されたクチコミ件数を、第 1列は頻出語上位 3 語を、第 2 列にはその出現回数を、第 3 列には各語との共起頻度の高い

上位 3 語を、そして第 4 列には共起語の共起数を記しています。たとえばクラスター0 の出

現回数 1 位は「ショー」で全 655 件のクチコミ中 420 件で登場しており、この「ショー」

と共起する形で「見」が 153 件登場しています。

Page 76: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

76

図 2 各クラスターの頻出語と共起語 19

この結果から、単語の出現数には偏りがあること、つまり各クラスターの特徴は抽出され

ていることがわかります。たとえば、クラスター1 は大きな水槽について、クラスター2 は

パンダについて、クラスター0 や 5、9 は水族館でのショーについて、クラスター8 は駐車

19 図 4 を見るとクラスター0、1、3、4、5、9 は人であれば水族館に分類するような単語

の出現の傾向であり、11 クラスター中の半数の 6 クラスターがこれにあたります。表 3 で

は水族館の各施設が不一致カテゴリーに分類される件数が多かったですが、その結果の偏

りがこのようなクラスターの偏りを生んだと考えられます。このように fastText が適切に

文章を分類できなかった理由としては、ラベル数が 20 と多いこと、またかなり類似する

施設を分類していること、そして最大の理由としてデフォルト設定で使用したことがあげ

られます。デフォルト設定で使用する場合でも、たとえば、「良い」と「悪い」という評

価を学習させて、それをもとに分類させれば、そこで出現する単語の分布の違いは明確で

あり、今回とは異なる結果になると考えらます。また、水族館という施設が他のサービス

施設と類似するサービスを提供しており、それへの言及への多さからこのような結果にな

ったとも考えられます。

655 件 594 件 115 件見 153 ジンベイザメ 182 行っ 16イルカ 142 大きな 140 弁当 14シャチ 138 見 125 平日 14ショー 112 水槽 182 見 6見 75 大きな 67 パンダ 5行っ 60 見 62 思い 5ショー 142 水槽 112 行っ 5シャチ 88 見 55 パンダ 14見 77 ジンベイザメ 49 食べる 9

持っ 8

267 件 361 件 658 件シャチ 164 水槽 141 思い 76イルカ 129 ジンベイザメ 79 行っ 69水族館 108 魚 58 行き 68ショー 164 水族館 141 水族館 34イルカ 101 ジンベイザメ 87 思い 31水族館 79 魚 76 イルカ 31ショー 129 水槽 87 水族館 59シャチ 101 水族館 79 イルカショー 28水族館 59 迫力 39 ショー 27

657 件 895 件 478 件行き 33 ショー 100 行く 17行っ 33 行っ 87 車 16見 27 行き 80 無料 16時間 29 ショー 78 楽しめる 15思い 27 行き 70 駐車場 14行っ 27 思い 68 良い 14思い 33 見 100 思い 12見 27 思い 81 駐車場 11行き 24 行っ 78 アウトレット 11

587 件 931 件シャチ 219 行っ 62イルカ 168 思い 61水族館 141 子供 60ショー 219 行き 62イルカ 88 子供 40見 85 思い 40ショー 141 行き 60シャチ 56 行っ 40行っ 54 楽しめる 40

行っ 232

子供 161

行き 69

水族館 207

クラスター10

行き 278

駐車場 91

ショー 482

思い 75

シャチ 270

行っ 124 ショー 246

クラスター8

クラスター9

思い 141 見 280

見 131 行っ 253

ジンベイザメ 118 楽しめ 126

クラスター6 クラスター7

水族館 249 水族館 346

水槽 240 ショー 136

弁当 18

イルカ 137

クラスター4 クラスター5

クラスター2

パンダ 84

クラスター3

ショー 246

動物 26

シャチ 178

水族館 235 ジンベイザメ 238

イルカ 199 水族館 164

クラスター0 クラスター1

ショー 420 水槽 446

Page 77: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

77

場について、クラスター10 は子供を連れての行き先として言及されていることが推測され

ます。 しかし、これらの特徴はそのクラスターの最大公約数的な特徴であり、細かな特徴をつか

みきることはできていません。たとえば、クラスター7 では、車いすに関する言及が 5 回、

ベビーカーに関する言及が 30 回、アレルギーに関する言及が 2 回あり、またクラスター10では観覧車やサンタマリア、明石海峡、繁華街など近隣施設への言及と思われる単語が複数

登場していました。これらはそれぞれのクチコミを人の目で確認することで抽出可能な特

徴といえます。

Page 78: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

78

類推問題を用いた特徴分析 2021 ここで扱うデータは、「じゃらん net」に掲載されているクチコミ東京ディズニーランド、

東京ディズニーシー、ユニバーサル・スタジオ・ジャパン、横浜・八景島シーパラダイス、

ナガシマスパーランドという 5 つのテーマパークに関するクチコミです。実際に分析した

データは、各施設のクチコミ数に偏りがあり、このような不均衡データを用いた学習の結果

には偏りが生じることが考えられることから、各施設のクチコミから 1500 件をサンプリン

グした計 7500 件です。 まず、単純に単語間の類似度をもとに 5 つの施設の類似度を計算すると、各施設の関係

は下記表 3 のようになります。表 3 からは、「ディズニーランド」と「ディズニーシー」の

類似度が高いこと、すなわちクチコミの中で類似する意味を持っていることが考えられま

す。言い換えると、多数いるクチコミ作成者の中では、同じテーマパークであっても、「デ

ィズニーランド」と「ディズニーシー」以外は比較的遠いものとして認識されていることが

考えられます。

表 3 施設間の類似度

当然ながら、クチコミの中には施設名以外にも無数の単語が含まれています。以下では、

この無数に含まれる単語から類似度の高い単語を抽出し、各施設の特徴を明らかにします。

今回は、出現回数上位 200 位までの単語を総当たりで計算し、各施設と類似度の高い単語

を抽出しました。その結果が、表 4 です。この結果から、「USJ」と「大阪」、「横浜・八景

島シーパラダイス」と「水族館」、「ナガシマスパーランド」と「アウトレットモール」など、

単語を入れ替えても意味が通りそうなものが上位にきていることがわかります。すなわち、

これらの単語がテキスト作成者の中では代替可能な言葉、類似する意味を持つ言葉として

認識されていると考えることができます。

表 4 類似度に基づく特徴の抽出

20 ここでのハイパーパラメーターは学習方法:skip-gram、次元数:100、学習回数:

30、学習率:0.05、文字 N-gram:2~4 です。 21 ここでの分析結果は竹岡(2018b)および高木・竹岡(2018)で発表されたものを再掲した

ものです。

ディズニーシー 0.724639 ディズニーランド 0.724639 年間パスポート 0.545035 水族館 0.641214 温泉 0.544516雰囲気 0.612989 お酒 0.651191 Potter 0.513558 鎌倉 0.605503 ナガシマ 0.538653比べる 0.609007 飲める 0.645726 Harry 0.509493 シロイルカ 0.561197 地区 0.531飲める 0.588506 雰囲気 0.530008 大阪 0.5051448 金沢八景 0.519127 西 0.518665お酒 0.580588 大人 0.514238 行く 0.473982 イルカ 516494 アウトレットモール 0.513082

ナガシマスパーランド横浜・八景島シーパラダイスUSJディズニーシーディズニーランド

Page 79: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

79

この他にも、単語の加減算から各施設の特徴を検討しているのが、表 5 と表 6 です。表 5は、各施設名からどのような単語を減算すると最も特徴が遠ざかるのかについて、出現回数

上位 200 位までの単語で総当たりによって計算を行っています。「ディズニーシー」は「お

酒」と「飲める」を減算すると、逆ベクトルの単語になり、「USJ」は「ハリーポッター」

がなくなると、逆ベクトルの単語になっていることがわかります。すなわち、テキスト作成

者にとって、「お酒が飲めること」こそが「ディズニーシー」の中核的な意味であり、「ハリ

ーポッター」こそが「USJ」の中核的な意味であると考えられます。

表 5 減算による特徴抽出

表 6 は、各施設に何を追加すれば、「ディズニーランド」に近似するのかを、出現回数上

位 200 位までの単語で総当たりによって計算を行っている。その結果、雰囲気などの言葉

が多いことから、テキスト作成者が認識するディズニーランドの最も特徴的な部分であり、

他の施設と最も違う部分は、物的なものではなく雰囲気という非常に曖昧なものではない

かと考えることができる。

Page 80: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

80

表 6 特徴の近似化

以上で示した分析結果は驚くべきものでは決して無いものです。むしろ、当然の結果であ

り、この結果自体には何ら面白みも新しさもないでしょう。しかし、裏を返せば、テキスト

データを Vector to に投入するだけで、かなりの程度現実をうまく写像した結果が得られる

ということがわかります。さらには、このような結果が得られる過程においては、分析者の

意図は介在せず、にもかかわらず、分析結果を得ることができるというプロセスです。 類推問題を解くという分析は、分散表現を用いたテキストマイニングにおいては最も単

純なものです。にもかかわらず、これだけの結果を得られるという点が、分散表現テキスト

マイニングの強みかもしれません。

ディズニーシー + 思う + 雰囲気  0.7940271

ディズニーシー + 思う + 違う 0.7886179

ディズニーシー + 大人 + ディズニー 0.7877395

ディズニーシー + ディズニー + 違う 0.7877291

ディズニーシー + ディズニー + 雰囲気 0.7876899

USJ + 雰囲気 + ディズニーシー 0.7415832

USJ + 大人 + ディズニーシー 0.7340913

USJ + ディズニーシー + 飲める 0.7241877

USJ + 違う + ディズニーシー 0.7241855

USJ + 気 + ディズニーシー 0.7176755

横浜・八景島シーパラダイス + ディズニーシー + 雰囲気 0.6634625

横浜・八景島シーパラダイス + ディズニーシー + 違う 0.6515939

横浜・八景島シーパラダイス + ディズニー + ディズニーシー 0.649789

横浜・八景島シーパラダイス + ディズニーシー + 飲める 0.6444271

横浜・八景島シーパラダイス + ディズニーシー + お酒 0.6360012

ナガシマスパーランド + ディズニーシー + 雰囲気 0.7373017

ナガシマスパーランド + ディズニーシー + お酒 0.725242

ナガシマスパーランド + ディズニーシー + 飲める 0.7249891

ナガシマスパーランド + ディズニーシー + 違う 0.7165409

ナガシマスパーランド + 夢の国 + ディズニーシー 0.7108018

ディズニーシー

USJ

横浜・八景島シーパラダイス

ナガシマスパーランド

Page 81: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

81

外形的データを併用した分析 2223

ここでは、水族館 5 施設(沖縄美ら海水族館、鳥羽水族館、鴨川シーワールド、海遊館、名

古屋港水族館)に分析対象をしぼり、これまでの分散表現に加えて外形的データ(仕様など)を用いた、つまり単語の類似度と外形的データを併用した分析をおこないます。これによっ

て、消費者の体験によって構築される意味と、客観的仕様から各施設の特徴を可視化したう

えで文えせ記することが可能になります。外形的データとしては Wikipedia に掲載されて

いる水族館の来場者数、飼育種類数、延べ床面積を利用しました 24。 具体的な方法としては、水族館に関するクチコミ 10000 件の中で上位出現回数 200 位ま

での単語を抽出(表 7、8、9 中最左列、3 行目以下)、それらと上記 5 施設名の類似度を計算

します(同右側の 5 列、3 行目以下)。このように類似度を計算することで各施設の特徴を表

す代理変数として扱うことが可能になります。 続いてこの計算された類似度と、各施設の外形的データ(同右側の 5 列、2 行目)の相関係数

(同左 2 列目、3 行目以下)を総当たりで計算します。表 7~9 は相関の強い 20 概念を抽出し

たものです 。

表 7 延べ床面積との相関

表 7 より、代理変数を用いて算出した各施設の特徴と各施設の延べ床面積から以下のこ

22 ここでのハイパーパラメーターは学習方法:skip-gram、次元数:100、学習回数:

30、学習率:0.05、文字 N-gram:2~4 です。 23 ここでの分析結果は竹岡(2018c)および竹岡(2019)で発表されたものを再掲したもので

す。 24 https://ja.wikipedia.org/wiki/日本の水族館 (最終確認日:2018 年 9 月 28 日)。名古屋

港水族館の飼育種類数については https://ja.wikipedia.org/wiki/名古屋港水族館(最終確認

日:2018 年 9 月 28 日)

Page 82: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

82

とがいえる。 「旅行」と延べ床面積は逆相関の関係にある(旅行と延べ床面積の相関係数は-0.993(以

下同じ)) 広い水族館は旅行で行くところではない あるいは、大都市内の水族館の延べ床面積が広い傾向にあるためか

「楽しむ」や「最高」と延べ床面積は逆相関の関係にある(楽しむ:-0.984、最高:-0.903) 広いと楽しめないということか

「家族」や「カップル」と延べ床面積は相関関係にある(家族:0.886、カップル:0.796) 大都市内の水族館なので家族やカップルには手軽ということか

表 8 飼育種類数との相関

続いて、表 8 では外形的データに飼育種類数を用いて相関関係を分析する。 「面白い」や「珍しい」は飼育種類数と相関関係にある(面白い:0.979、珍しい:0.884)

飼育種類数が多いと必然的に珍しい動物を飼育することになり、それが来場者に

面白いと認識され、相関関係が高くなっているか 「ジュゴン」や「セイウチ」が飼育種類数と相関関係にある(ジュゴン:0.953、セイ

ウチ:0.895) 日本では鳥羽水族館だけがジュゴンを飼育しているため、鳥羽水族館は値が大き

くなっているか セイウチは鳥羽水族館と鴨川シーワールドで飼育されているが鳥羽水族館だけが

類似度が高くなっており、これはショーを行っているかどうかの差があらわれて

いるか

Page 83: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

83

表 9 来場者数との相関

最後に表 9 では来場者数との相関を算出したものである。 「近い」と来場者数は逆相関の関係にある(近い:-0.977)

この「近い」が家から「近い」ことを指しているのか、あるいは人と動物の距離が

「近い」ことを指しているのかはわからない 「きれい」や「優雅」と来場者数は相関関係にある(きれい:0.948、優雅:0.944) 「巨大」や「規模」、「大きい」と来場者数が相関関係にある(巨大:0.877、規模:0.865、

大きい:0.859) 延べ床面積と「最高」や「楽しむ」は逆相関の関係にあったことから、「巨大」、「規

模」、「大きい」は水槽のサイズを指している可能性が高い(「水槽」と来場者数も

相関関係にあるため) 来場者数は「夕方」と相関関係にある(夕方:0.893) 以上、代理変数を用いて算出した各施設の特徴と外形的データである延べ床面積、飼育種

類数、来場者数との相関を算出し、相関、あるいは逆相関の関係が強いものについて考察し

ました(上記箇条書き➔)。これらの分析の結果(上記箇条書き●)はすべて仮説といえま

す。しかし、実務家がこれを用いる場合には、この結果を意思決定の際の根拠データとして

用いることも可能でしょう。 しかし、単語の意味を文脈なしに特定すること、つまり上記のような相関分析の結果だけ

では十分に内容を把握することが難しいこともあります。たとえば、「巨大」や「規模」、「大

きい」と来場者数が相関関係にある一方で、延べ床面積と「最高」や「楽しむ」は逆相関の

Page 84: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

84

関係にありました。「not 楽しむ」の施設の来場者数が多いとは思えないため、 「巨大」や

「規模」、「大きい」が延べ床面積(施設の広さ)を指しているとは考えられず、「巨大」、「規

模」、「大きい」は水槽のサイズを指している可能性が高い(「水槽」と来場者数の相関も強

いため)と推測されます。このように、相関関係を算出しただけでは、その結果を十分に把

握することは難しいこともあるということには注意を払う必要があります。

Page 85: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

85

分析結果の活用時の注意 以上、Vector to を用いた分析事例を見てきました。このように、分散表現を用いたテキ

ストマイニングによって、商品カテゴリー・サービスを超えた分析が可能となり、またアン

ケートを用いた調査のようにあらかじめ項目を決める必要がないため、効率の良い分析が

可能になります。しかし、クチコミというデータには、それが消費者の意見のごく一部でし

かないという問題も存在します。つまり、クチコミを投稿するのはその商品やサービスの利

用者のごく一部であり、またクチコミを投稿する際には、その商品やサービスにおける経験

を振り返り、そのすべてを書き込むのではなく、何らかの基準で選択した結果を書き込むこ

とになります。ゆえに、クチコミを分析した結果だけを結論を導き出す道具とすることは控

えるべきでしょう。しかし、分析者が本格的な分析を行う前のパイロットスタディとしては

大変有用です。これらの手法を用いて可視化された特徴をもとにアンケートを作成し、それ

を分析すれば、これまで以上に効率よく、様々なことが分析可能になると思われます。

Page 86: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

86

分散表現テキストマイニングについて

テキストマイニングと分散表現テキストマイニング 現在のテキストマイニングの主流は計量テキスト分析と呼ばれるものです。計量テキス

ト分析とは樋口(2014)によれば「計量的分析手法を用いてテキスト型データを整理または分

析し、内容分析(content analysis)を行う方法(p.15)」です。その基本は文章を分かち書きし、

出現する単語を集計すること、より進んだ分析としては文章内での単語の共起関係を集計

し、その集計値をもとに単語間の関係を共起ネットワークや階層的クラスターとして描い

たりすることです。これらの手法は多様な分野で広く用いられており、様々な質的データの

分析を定量的に行うことを可能にしています。このように、これまでは困難であった質的デ

ータへの量的アプローチを可能にした計量テキスト分析ですが、意味へのアプローチに弱

みがありました。 たとえば、「テキスト」という単語があります。この単語からどういう意味を読み取れば

よいでしょうか。大学生であれば「教科書」という意味を読み取るかもしれません。テキス

トマイニングを用いている人は「文」という意味を読み取るかもしれません。単語は文脈に

よって意味が異なります。しかし、シンプルな計量テキスト分析では、文脈によって異なる

意味を持っている単語を、形態素(意味を成す音素の最小単位)が同一であるということで、

同一のものみなしていました。ここでシンプルという形容表現を用いたのは、計量テキスト

分析自体が意味へのアプローチができない分析手法であると言いたいのではなく、使い方、

つまり単純な出現語数の集計によってはアプローチできないという意味だからです。計量

テキスト分析では、意味へのアプローチの方法として共起分析を行います。共起分析とは、

単語 A と単語 B が共通の文脈で登場するとき、単語 A と単語 B には何らかの関係があり、

この頻度や強さを測定することで、単語 A と単語 B の関係性を計測するというものです。

この関係性ですが、重要な点としては関係性の強さもありますが、複数の語が出現する共起

関係を明らかにすることで、それぞれの単語が持つ意味の広さを制限することができるこ

とがあげられます。つまり先ほどの「テキスト」が「経営学」という単語と同じ文章内で登

場していれば「教科書」という意味で使われていることが推測でき、また「分析」という語

と同じ文章で登場していれば「文」という意味で使われていることが推測できます。このよ

うな共起関係の性質を利用して樋口(2011)や竹岡(2016)では複数語による組み合わせでコ

ーディングルールを作成し、分析対象となる文章の意味を分析しています。 たとえばコーディングルールとしては

「メモリカード」 ∩ {「ファイル」 ∪ 「写真・動画」} ∩ 保存 のように出現単語の組み合わせを設定し、これに対して「メモリカード保存」というラベル

を張る、つまり、メモリカードとファイルあるいは写真・動画、そして保存という概念が文

章中に入っていれば、メモリカード保存についての話題に関する文章であると推定すると

Page 87: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

87

いうものです。ここで単語ではなく概念としたのは、「メモリカード」にはメモリカード、

SD、SD カード、ミニ SD、マイクロ SD、メモリスティックという単語が含まれるためで

す。このように頻出する類語に関しては概念としてまとめることで、より詳細な意味の抽出

が可能になります。 このような方法によってテキストの持つ意味にアプローチすることは可能になりますが、

限界もあります。そもそも計量テキスト分析は後述の one-hot ベクトル表現のようなもの

で、すべての文意を抽出するためには巨大かつ疎なベクトルデータを用いる必要があり、計

算数が出現単語数に合わせて増加するという問題があります 25。そこで、樋口(2011)や竹岡

(2016)では、コーディングルールに使用する単語を頻出語などに限定したうえで、頻出共起

関係だけを用いてコーディングルールを作成し、分析を行っています。しかし、このような

手法では、コーディングルールとして作成されたラベルの数が少なければ頻出共起関係だ

けを分析の対象とすることになり、多くの文章が分析の対象外になりかねません。これに対

応するためにはコーディングルールを相当数作成する必要がありますが、それは計算数の

増大を招くことになります。 このような問題に対するひとつの解決法がベクトルの次元を数百程度に圧縮し分析する

ことを可能にする分散表現を用いたテキストマイニングです。分散表現とは「任意の離散オ

ブジェクトの集合Ⅴに対して、各離散オブジェクトⅴ∈Ⅴにそれぞれ D 次元のベクトルを

割り当て、離散オブジェクトを D 次元ベクトルで表現したもの(鈴木他, 2017, p.58)」とさ

れ、また離散オブジェクトとは「人や物の名前、概念のように、物理的に計測できる量を伴

わず、通常、記号を用いて離散的に表現するもの(同上)」です。テキストマイニングの文脈

で分散表現を平易に表現すれば、分析対象としてある各文章や各単語を決められた次元の

ベクトルで表現したものといえます。

25 たとえば、1 万語の異なり語が登場するテキストを分析する場合には、1 万次元のベク

トルを用いる必要があります。

Page 88: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

88

図 3 文章のベクトル化-one-hot ベクトルと分散表現

文章や単語をベクトル化する方法には、局所表現と呼ばれるベクトルのすべての要素の

中である要素のみが 1、その他が 0 で表現された one-hot ベクトル表現もありますが、これ

は分析対象となるすべての文章に登場する異なり語数がベクトルの次元数となるため、巨

大かつ疎な行列を計算することになります。 他方、分散表現では、単語のベクトル化には Skip-gram や CBOW(continuous bag of

words)といった手法がとられ、これらによって各単語のベクトルが算出されます。これらの

手法を用いることによって各単語のベクトルの次元数を通常で 100 次元、wikipedia の全

データを用いた場合でも各単語を 300 次元で表現することが可能となり、局所表現と比べ

て大幅に次元数を圧縮することができます。 分散表現による意味へのアプローチ 分散表現を用いた分析においては単語をベクトル表現に変換する過程で単語に文脈情報

を持たすことができます。たとえば、図 2 左のような離散表現の場合、出現回数を集計した

だけでは単語間の類似度を測ることはできません。しかし、同図右のように Skip-gram や

CBOW26を用いてベクトル表現に変換すれば単語間の類似度をコサイン類似度 27で測定す

ることができます。

26 Vector to では CBOW を用いた分散表現への変換はできません。これは CBOW が

Skip-gram では可能な subword information (部分語情報)を利用できないためです。

Bojanowski et al.(2017)は、subword information を用いることで、まれにしか出現する

ことのないような単語でも信頼できる分散表現を得ることができるとしています。 27 コサイン類似度は次の式によって計算します。cos(A,B)=(A×B)/|A||B|

Page 89: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

89

図 4 離散オブジェクトとベクトル空間 (鈴木他, 2017, p.59 図 3.2 を一部改変)

このようなことを可能にしているのが Skip-gram や CBOW の背景にある分布仮説

(Harris, 1954, Rubenstein & Goodenough, 1965)です。分布仮説とは類似する文脈で出現

する単語は、意味的にも類似しているという考えであり、Skip-gram や CBOW はこの仮説

を背景に単語の分散表現、つまりベクトルを算出しています。ゆえに図 6 右のように「今

日」と「明日」という類似する文脈で出現する可能性の高い単語はベクトル空間上で近く、

「明日」と「山」のように同一文章で登場する可能性は高いが、類似する文脈で登場する可

能性の低い単語はベクトル空間上では遠くなります。 先述の通り、分散表現では各単語を Skip-gram などの手法でベクトル表現に変換するこ

とで、単語間の類似度をコサイン類似度として計算することができ、また、単語間の関係を

ベクトルのオフセットで推定することも可能となります(図 7 は二つの単語の単数形と複数

形の関係を図示したもの)。

図 5 単語のオフセット (Mikolov et al., 2013, p.749 figure2 を一部改変)

このような分散表現の最大の特徴は、加法構成性を持つベクトルの加減算による類推に

も応用することができる点にあります。たとえば図 8 のように「King」-「Man」+「Woman」

Page 90: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

90

は「Queen」に近似する(Mikolov & yin et al., 2013)といった類推が可能となります。

図 6 分散表現の加法構成性

分散表現テキストマイニングでは、先ほどの「テキスト」という単語の中に「教科書」と

いう意味も「文書」という意味も含みこんでいます。ゆえに「テキスト」と「教科書」の類

似度、「テキスト」と「文書」の類似度、これらがともに高い値で算出されるはずです(分析

対象=学習に使用したテキストによっては異なる可能性もあります)。このように、分散表現

テキストマイニングは、計量テキスト分析に比べて意味への接近が容易であるといえます。 以上のように、単語の分散表現には単語間の関係をコサイン類似度で算出したり、ベクト

ルの加法構成性を利用して意味の類推を行うことができます。ここまで単語の分散表現に

ついて説明してきましたが、fastText では学習の成果を用いた文章の分類も可能です。文章

のベクトル化 には、文章を構成する単語のベクトルと EOS(end of sentence)「</s>」のベ

クトルを合計した後に文章を構成する単語数+1(この+1はEOS)で除したものを用いていま

す。このように計算することですべての文章がベクトル表現化され、計量テキスト分析では

困難だったすべての文章の持つ意味を分析の対象にすることができます。なお、文章分類を

行う際の単語の分散表現化では Skip-gram や CBOW を使用せず、異なる手法を用いてい

るようです 28。 分散表現テキストマイニングの問題点-計量テキスト分析との比較の観点から 分散表現テキストマイニングと計量テキスト分析を用いたテキストマイニングの相違点

としては、計量テキスト分析が単語の出現回数に基づいて共起分析や階層的クラスター分

析を行うのに対して、分散表現テキストマイニングでは単語や文章のベクトルを加法構成

性に基づく加減算やコサイン類似度によって分析を行う点にあります。 単語や文章を分散表現にすることで、計量テキスト分析では困難であった単語や文章の

持つ意味への接近や、類推、分類が可能になる一方で、人の認識可能な特徴のかなりの部分

が失われることにもなります。たとえば、図 1 にあるように、すべての単語はベクトル表現

28 これについては白木義彦氏が説明したものが下記 web ページにあります。

https://www.slideshare.net/shirakiya/fasttext-71760059

Page 91: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

91

に変換されます。この数字の羅列を見て何かをそこから読み取ることのできる人間がどの

くらい存在するでしょうか。他方の計量テキスト分析であれば共起関係の分析過程で出現

するデータも集計値であり、大変理解しやすいものになっています。

図 7 計量テキスト分析と分散表現テキストマイニングの違い

ゆえに、文章分類に基づくカテゴリー横断分析においては、分類器によって分類された何

らかの特徴があると考えられる文章クラスターに対して、従来の計量テキスト分析の中で

も最もシンプルな頻度分析を行うことによって、分類器の結果だけではわからない文章ク

ラスターの特徴を抽出しました。しかし、クラスターの持つ特徴を計量テキスト分析するだ

けでは見落としてしまうものも存在します。なぜなら計量テキスト分析、特に出現頻度に基

づく分析は大きな特徴の抽出には向いていますが、ごく少数しか現れない特徴の抽出は苦

手としているからです。このような特徴は、共起ネットワークや階層的クラスター分析では

足切され、比較的多数の単語を分析の対象として使用することのできる自己組織化マップ

(樋口, 2014)においても、分析対象になりうるかどうかはコンピュータの性能に依存すると

ころがあります。 他方で、このような文章クラスターの特徴の抽出に関しては、教師データさえ用意すれば、

これまでの計量テキスト分析ではできなかった分類を、文章の分散表現への変換とそのク

ラスター化によって可能となります。また、機械学習の仕組みを用いることで、計量テキス

ト分析では人が出現単語を見渡したうえでコーディングルールを作成する必要がありまし

たが、分散表現テキストマイニングでは直感的にテキストに対してラベルを張りさえすれ

ば、コーディングルール自体はソフトウェアが自動的に作成し、かなりの精度での分類をし

てくれます。 今後ますます発展すると思われる機械学習の技術は、これまでには想像のできなかった

分析手法を我々に提供し、これまでとは異なる分析、あるいはこれまでと同じ分析であった

としても異なるルートから結果に到達することを可能にすると思われます。しかし、分散表

現テキストマイニングは万能ではありません。開発者自身も、別の研究では、現在も KH Coder を使用しています。ゆえに、今後は分散表現テキストマイニングについての応用を考

えるとともに、これまでの計量テキスト分析との相互補完的な併用についても検討する必

要があると考えます。

Page 92: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

92

分散表現テキストマイニングの問題点―再現性の観点から 29 分散表現テキストマイニングの最大の問題点は再現性に関する問題です。再現性とは「誰

もが、同じ手続きを用いて再び同じ測定ができ、最初の測定結果を追試できる可能性のこと

(May, 2001 邦訳書 p.107)」で、ニューラルネットワークを用いる際には、これを担保する

ことが難しいのです。 分散表現テキストマイニングを使用するにあたって、単語を分散表現化(ベクトルに変換)

する際、fastText では重みづけに用いる行列を生成する部分でランダムに初期値を生成す

る処理が行われます(図 9 内 Win と Wout)。そのため、全く同じテキストデータを fastTextで処理しても、毎回異なる結果が出力されることになります。ここでの結果とは、ひとつの

単語に対して設定した次元でベクトル表現されたものを指します。たとえば、「テキスト」

という単語を含むいくつかの文章を fastText で学習させた場合、「テキスト」という単語に

対して 1 回目は「(0.52, 0.73, 0.05)」であったものが 2 回目には「(0.35, 0.96, 0.76)」とい

う結果が出力されるということです。このようにベクトル表現化した場合の数値が異なる

ことで、これらを用いて計算する類似度も異なることになります。ある程度は epoch(学習

回数)を多く設定することで解消可能な問題ですが、結果を完全に一致させることは困難だ

と思われます。

図 10 fastText で用いるニューラルネットワーク図(簡略版) 同じデータを扱っても異なる結果が生じる、つまりその研究に再現性がないということ

になり、研究結果の信頼性を損なうことになりかねません。このような再現性の問題は、今

後、機械学習を含むニューラルネットワークを用いた AI 技術が研究方法に取り込まれる中

で、ひとつの論点になる可能性もあります。以下では、この問題に関する考察を行うことで、

29 ここは竹岡(2019)の内容を一部修正したものです。

Page 93: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

93

今後の研究につなげていきたいと思います。 研究の進め方は研究者や研究対象、そして選択する手法によって異なるが、テキストマイ

ニングにおいては、対象の決定から、考察にかけて、およそ図 11 のようなプロセスで進む

と思われます。この中で、分析対象の決定は再現性の対象にはならず、また、考察も再現性

の対象にはなりません。なぜなら、すでに決定されている分析対象について、その分析を再

現するのが再現性であり、また、分析の結果あらわれた数値などをもとに何らかのインプリ

ケーションを引き出すのが考察だからです。再現性の対象に含まれるのは、データの収集か

ら分析までの過程です。

図 11 テキストマイニングのプロセス 以下が、各プロセスにおける再現のために必要な要素です。 1. データの収集

収集を行った日、場所、データの境界、方法など 2. クリーニング、整形、サンプリング

表記ゆれを修正する場合には「A を B に変換」などの情報 何(記号など)を、どの順番で削除したのか

3. 分かち書き 通常何らかのソフトウェアを用いて行われるため、どのようなソフトウェアを使

用したのかといった情報 4. 集計と分散表現化

計量テキスト分析では単語ごとの集計が行われるだけなので特に問題はない 分散表現テキストマイニングでは単語のベクトル表現化が行われるが、ここで上

述のランダムに生成される初期値を用いた計算がなされるため、再現性の問題が

生じます 5. 分析

再現に必要な情報として分析の詳細な手順など 初期値をランダムに生成するK-means法のような機械学習技術を用いる場合には

再現性の問題が再び生じます 厳密な再現性があるとは、このすべてのプロセスを第三者が研究者と同一に行うと全く

同じ結果が得られる状態を指します。分散表現テキストマイニングを行う際に再現性の問

Page 94: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

94

題となるのは、この分散表現化のプロセスです。これは第三者の再現実験だけではなく、研

究者自身が行っても、完全に一致する結果は得られません。 この問題に関する結論としては、その他のプロセスは通常のテキストマイニングと同一

であり、問題となるのは分散表現化のプロセス、具体的にはこのプロセスで生成される学習

済みモデルが試行のたびにごくわずかに変わることのみであること、しかし、分散表現化に

使用した全単語およびその際のハイパーパラメーター(学習回数や学習率など、分析者が分

散表現化に際して設定する値)は把握可能であり、それゆえに近似することは可能であるこ

と、つまりおおよその追試・検証は可能であり、また他社も同一のモデルを用いれば同じ分

析の結果を得ることもできること、よってこの手法は、完全な厳密性を要求されるような分

析でない場合には、十分に採用する価値のあるものであると考えます。

Page 95: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

95

ライセンスや外部ソフトウェアについて

ライセンスについて Vector to は開発に python3.5 および 3.6 を使用しています。python は機械学習や AI の発展もあり、現在注目されている言語のひとつです。Vector to のライセンスは GPL です。

もし必要な機能が Vector to に存在しない場合には自由に改変することも可能です。特に学

生の皆さんにはどんどん Vector to を使用していただき、柔軟な発想力で Vector to を改良

していただければと思います。 Vector to が使用している主な外部ソフトウェアおよびモジュール Vector to は主に下記のソフトウェアやライブラリ等を用いることで機能しています。 fastText Mecab

mecab-ipadic-NEologd MySQL python

pyfasttext NumPy Matplotlib PyQt scikit-learn Pandas

Page 96: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

96

おわりに

最近では AlphaGo の発表や、その社会への貢献が目に見えるものとなってきていること

から、機械学習をはじめとする AI への関心が高まっています。「AI 人材の不足」という言

葉も頻繁にみられます。Vector to の開発前、初めて fastText に触れたときには、開発者も

「これからの時代は AI を使えるか使えないかが大きな差になる」と感じました。それほど

fastText の出す結果と、その結果への到達の容易さ、そして応用範囲の広さに衝撃を受けま

した。しかし、Vector to の開発を進める中で「簡単に使用することを可能にするインター

フェースがあれば、パラメーターを操作すること自体は容易であり、コンピュータの性能が

高い現在であれば、これまでの表計算ソフトを用いたデータ分析とそれほど大きく変わる

ものではないのではないか」と考えるようになりました。 大規模なデータを使用する場合には専門性が必要とされ簡単にはいかないかもしれませ

んが、100 万件程度のデータであれば現在のコンピュータでも十分に分析可能です。特に

fastText は近年の機械学習を用いたソフトウェアでよく用いられている GPU コンピュー

ティングではなく、CPU を用いて計算を行っており、導入のハードルが低いという特徴が

あります。このように、様々な側面から使用に向けたハードルを下げることができれば、使

用に限ればですが、誰もが使用可能なもの、つまり現在の表計算ソフトによるデータ分析の

レベルまでハードルを下げることができると思います。Vector to がこれに貢献できていれ

ば幸いです。 今回 Vector to をフリーソフトウェアとして公開した背景には、フリーソフトウェアとし

て公開され、現在も様々なアップデートがなされている計量テキストマイニング・ソフトウ

ェア KH Coder の存在があります。Vector to の開発者はこれまで 10 年近くの間、このソ

フトウェアを使用して様々な研究を行ってきました。KH Coder を使用する中でテキストマ

イニングという分析手法について深く考えるようになり、様々な経験と考察を行ってきま

した。その経験と考察が Vector to につながっています。開発者は KH Coder というソフト

ウェアに育てられ、その延長線上に Vector to が生まれたといってもおおげさではないかも

しれません。このような人と道具、学習、知識構築の連鎖が Vector to によっても起こるこ

とが研究者としての希望であり、大学教員としての希望でもあります。

Vector to の開発者はプログラマーではありません。経営学系統を専門とする研究者です。

また、プログラミングを始めて 1 年の、なかなかの初心者です。そのため本職の方から見れ

ば非常に拙いコードで全体が構成されており(オブジェクト指向がいまだにしっかりと理解

できていませんし、独学のため本職の人であればこう書くであろうというところが全く分

かっていません)、またインターネット上に存在する多くの方の知見を勝手に拝借すること

でこのような形で配布することができるようになりました。

Page 97: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

97

今回の開発過程で感じたことは、世界は平坦で、公平で、かつ親切であるということです。

様々な知識が無償で提供されており、それらを自由に改変して自分のプログラムの中に組

み込むことができる、また、様々な掲示板上では質問と回答のやり取りに加えて、異なる環

境下でのテストや教示なども行われており、相互作用的に新たな知識が構成されていく過

程を後追いすることができました。Vector to はこのような多くの巨人の無償の知への貢献

の上に出来上がり、成り立ったソフトウェアです。この Vector to がこれからの時代の学生

たち、企業内のデータサイエンティストや研究者のお役に立つことができれば幸いです。 最後に、先述の通り、Vector to の開発者は経営学領域を専門としており、その分析手法

や対象が経営実践における事象の可視化を目的としたものになる傾向があります。今後、

様々な分野で活用され、異なる観点からの意見が集まることで、さらなる改良や機能の実装

が進むことを切に願います。皆さんのご意見を頂ければ幸いです。 <謝辞> Vector to は科学研究費補助金による助成を受けた研究成果の一部です。末筆ながら感謝申

し上げます。

Page 98: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

98

参考文献 鈴木潤、海野裕也、坪井祐太 (2017) 「言語処理における深層学習の基礎」坪井祐太、海

野裕也、鈴木潤『深層学習による自然言語処理』pp.43-90 講談社. 竹岡志朗 (2016)「イノベーションの普及過程における非連続性と連続性‐テキストマイニ

ングにおける話題分析‐」竹岡志朗、井上祐輔、高木修一、高柳直弥『イノベーション

の普及過程の可視化 テキストマイニングを用いたクチコミ分析』pp.126-142 日科

技連出版社. 竹岡志朗 (2018a) 「機械学習を活用したテキストマイニング ―クチコミを活用した商

品・サービスカテゴリーの横断分析」『桃山学院大学経済経営論集』第 59 巻第 4 号 pp.101-122.

竹岡志朗(2018b)「機械学習を活用したテキストマイニング-特徴抽出の方法に関する検

討―」『日本情報経営学会第 76 回全国大会予稿集』pp.155-158. 竹岡志朗(2018c)「機械学習を活用したテキストマイニング-外形的データを併用するこ

とによる特徴分析―」『日本経営学会第 92 回大会報告要旨集』pp.143-146. 竹岡志朗(2018d)「機械学習を活用したテキストマイニング-概念間の相関分析による特

徴の確認―」『日本情報経営学会第 77 回全国大会予稿集』pp.161-164. 竹岡志朗 (2019) 「機械学習を活用したテキストマイニング(2) ―仮説の発見と検証―」

『桃山学院大学経済経営論集』第 60 巻第 4 号 pp.121-143. 竹岡志朗・高木修一 (2017) 「インターネットを用いた情報探索に関する検索エンジンと

web リンクの観点からの考察」日本情報経営学会第 75 回大会発表資料. 高木修一、竹岡志朗 (2018) 「経営学におけるテキストマイニングの可能性-仮説構築志向

の利用方法-」『富大経済論集』第 64 巻 2 号, 印刷中. 西内啓 (2013)『統計学が最強の学問である』ダイヤモンド社. 樋口耕一 (2011)「現代における全国紙の内容分析の有効性 -社会意識の探索はどこまで

可能か―」『行動計量学』Vol.38-1 pp.1-12. ―――― (2014)『社会調査のための計量テキスト分析』ナカニシヤ出版. Bojanowski, P., Grave, E., Joulin, A., & Mikolov, T. (2017) “Enriching Word Vectors with

Subword Information,” in Transactions of the Association for Computational Linguistics, Vol.5, pp.135-146.

Harris Z., (1954) “Distributional structure,” in Word Vol. 10, No. 23, pp. 146-162. May, T. (2001) Social Reseach 3rd edition, Open Univesity Press (中野正大監訳 (2005)

『社会調査の考え方 論点と方法』 世界思想社). Mikolov, T., Sutskever, I., Chen, K., Corrado, G. S., & Dean, J. (2013) “Distributed

representations of words and phrases and their compositionality,” in Advances in neural information processing systems, pp. 3111-3119.

Mikolov, T., Yih, W. T., Zweig, G. (2013) “Linguistic regularities in continuous space word

Page 99: Text Mining with Machine Learning Vector toビルドしたfastText やインターネット上で公開されているfastText には不具合2があり、 今回は公開を見送りました。

99

representations,” in Proceedings of Naacl-HLT 2013, pp. 746-751. Rubenstein, H., & Goodenough, J. B. (1965) “Contextual correlates of synonymy,” in

Communications of the ACM, 8(10), pp.627-633.