T
THINK Watson

妻との相性をWatsonで分析してみた

post_thumb

文: 羽山 祥樹( @storywriter

古今東西、夫とは妻に頭があがらないものなのだろうか。テレビのなかでは勇ましい政治家が、じつは妻の金使いに悩んでいたり、豪胆な武将が恐妻家だったり。そんなエピソードは多くある。古くは、かのソクラテスも妻には弱かったという。

夫婦の相性は、どうすればわかるのだろう。人工知能ブームのこの時代、男女のマッチングも、AIでできるのだろうか。ひょっとして、我が家の相性も……? 恐ろしい考えがよぎる。

 

妻との相性をWatson で分析してみた

IBM Watsonには、Personality Insights という機能がある。これは、ある人が書いた文章を解析して、使っている言葉の傾向から性格や嗜好を推定するものだ。ビッグファイブと呼ばれる、人間の心理を代表する5つの特性を中心に、ニーズや価値観、消費傾向まで導き出してくれる。分析結果は、心理学の研究にもとづいた精度の高いものだ。

Personality Insights は、特にマッチングの分野でビジネス活用が探られている。たとえば、就職希望者がどの職種に適しているか。プロジェクトチームを組むときに、誰を加えるべきか。顧客に合った営業担当者は誰かなどといった場合だ。

当然、男女のマッチングもできるはず。妻とは結婚して、10年になる。平穏無事に過ごしてきたつもりだが……。実際のところ、どうなのだろう。

そんなわけでPersonality Insights を試してみることにした。ドキドキである。

 

Personality Insights をカンタンに使ってみる

Personality Insights で分析するには、対象となる人物の書いた文章が、まとまった量必要だ。最少では100単語ほどで動作するが、精度を高くするには、3,000単語以上のテキストが推奨されている。

もっともカンタンに試すには、デモサイトで、自分の Twitter のアカウントを入力してみることだ。僕のアカウント( @storywriter )で試してみよう。

操作は、デモサイトで「あなたのTwitterによる分析」タブから、「私のTwitterによる性格推定」ボタンを押すだけ。Twitter の認証画面が表示されるので、OKしてしばらく待つと、結果が表示される。

私のTwitterによる性格推定

クリックして全体を表示する

これによると、僕の性格は、ビッグファイブの「知的好奇心」「外向性」「協調性」「誠実性」「感情起伏」のいずれも高いらしい。あまりにカンタンに分析結果が出てきて驚いた。自分の性格レポートを眺めているだけでも楽しい。

ちなみに、ちょっと目立たないが、画面右下に「結果をサンバーストチャートで見る」というリンクがある。それをクリックすると、結果をビジュアル化して見ることもできる。

結果をサンバーストチャートで見る

 

ここからどうすりゃいいのさ

さて問題は、ここからマッチングに必要なデータを拾い出すことだ。どうすれば妻との相性がわかるだろう?

デモサイトの利用規約を見ると「使用者が他人や他の組織のTwitter IDをアップロードすることは、禁じられています」と、太字で強調してある。ということは、妻本人の了解を得て、彼女の Twitter のツイート履歴をもらわなければならないことになる。どう説明しよう。

また、このデモ画面は、他者と比較しづらい。あくまでも1人用。比較するとなると、値を取り出して、2人を並べてみないとよくわからない。

最後に、そもそも、夫婦の相性は、性格の傾向が一致していたほうがよいのだろうか。それとも、ある程度、異なっていたほうがよいのだろうか。マッチングしようにも「相性がよい」とは、どういうことなのか。それがわからないと、判断しようがない。

 

最大の関門:妻の承諾を得る

最初にして、最大の関門である。妻に Twitter のツイート履歴をもらわなければならない。変に説明すれば、いらぬ疑いを抱かせかねない。

「Watsonで、夫婦の相性診断をしてみたいんだけど・・・」

「あら、占いみたいで面白いじゃない」

拍子抜けするくらい、あっさりと許可が出た。そうだった、妻は占い好きだった。Watson の分析結果は、アカデミックな心理学にもとづくもので、エンターテインメントではないのだが……。いずれにしても、妻には気に入ったらしい。

 

Personality Insights のサービスを立てる

デモサイトの画面は、2人の人間を比較するようにはできていない。分析するには、生のデータが欲しい。

Personality Insights は、他の Watson の機能と同じく、cURL 経由で、生のデータを csv 形式や JSON 形式で得ることができる。もっと言うと、cURL を使うと、デモサイトでは見られなかった、もっと細かい嗜好などのデータも取ることができる。(公式ドキュメントを参照)

まずは Personality Insights のサービスを立てよう。無料プランがあるので、それを使う。Bluemix にログインして、カタログから Personality Insights を選ぶ。ライトプラン(一定の使用までは無料のプラン)を選択して、画面右下の「公開」をクリックする。

Bluemix

サービスが立ち上がったら、画面左のメニューから「サービス資格情報」を選んで、「資格情報を表示」をクリックする。すると、APIのURL、アクセスするためのID、パスワードが表示される。後で使うので手元にメモしておこう。

 

Twitter の全ツイート履歴を入手する

分析する元データとして、Twitter のツイートが必要だ。ツイートは、Twitter の管理画面から、まとめてダウンロードすることができる。

Twitter にログインし、「設定とプライバシー」を開く。ページ下部に「全ツイート履歴をリクエストする」というボタンがあるのでクリックすると「準備ができたらメールを送る」という旨が表示される。

準備ができたらメールを送る

しばらく待っていると、ダウンロードURLを案内するメールがくる。(Gmailの場合、「ソーシャル」タブに入ることがあるので注意)

ダウンロードする

メールの「ダウンロードする」をクリックすると、Twitter の画面が開く。そこで「ダウンロード」ボタンを押すと、zip ファイルで、全ツイート履歴をダウンロードできる。任意のフォルダに解凍しよう。

ダウンロードする

自分の分をダウンロードしたあと、妻にも同じ操作をしてもらい、2人分の全ツイート履歴を手元に用意した。

 

Personality Insights 向けの JSON 形式に、ツイート履歴を整形する

ここで、ちょっと困ることが。Personality Insights は、受け取れるデータの書式が決まっている。(公式ドキュメントを参照)

Twitter の管理画面からダウンロードした zip ファイルには、csv 形式(tweets.csv)と JSON 形式(data/js/tweets/内)で、それぞれ全ツイート履歴が含まれている。しかし、残念ながら、いずれも Personality Insights が受けとれる書式とは異なっている。

なんらかの方法で、書式を変更しなければならない。まず思いつくのは、tweets.csv を Excel で加工すること。だが、tweets.csv は文字コードが UTF-8 になっている。Excel は BOM 無しの UTF-8 は文字化けするため、うまくいかない。

テキストエディタで Shift-JIS にしようとすると、「エンコーディングできない文字が含まれている」というエラーが出て変換できない。

そこで、書式を整形する、ちょっとしたプログラムを、Python で書くことにした。動きとしては tweets.csv から必要な列だけを取り出して、Personality Insights 向けの JSON 形式にするだけの、シンプルなものだ。

僕の GitHub にコードをアップしてある。
https://github.com/storywriter/personality-insights-tools

このコードを実行すると、tweet_all.json というファイルが生成される。

 

Personality Insights の結果を csv 形式で取り出す

ターミナル(Windows なら DOSプロンプト)を立ち上げて、cURLで次のコマンドを入力する。

{username} と {password} は、先にメモしておいた Personality Insights の「サービス資格情報」に書き換えてほしい。{path} は tweet_all.json までのファイルのパスに書き換える。

curl -X POST --user "{username}:{password}" 
--header "Content-Type: application/json" 
--data-binary "@{path}/tweet_all.json" 
--header "Accept: text/csv" 
--output "tweet_all-profile.csv" 
"https://gateway.watsonplatform.net/personality-insights/api/v3/profile?version=2016-10-20&consumption_preferences=true&raw_scores=true&csv_headers=true"

(コマンドの詳細は、公式ドキュメントを参照)

このコマンドを実行すると、Personality Insights にデータが送られ、分析された結果が、tweet_all-profile.csv というファイルにして戻される。いざ、と思ってtweet_all-profile.csv を開いてみるとわかるが、見出し行が英語で、それぞれの項目が、何を意味しているのかわかりづらい。

僕の GitHub に、profile-header-ja.csv というファイルで、対訳をアップしておいた。参考にしてほしい。

(各項目の厳密な意味は、公式ドキュメントを参照)

 

自分と妻の Personality Insights の結果を比較する

思いのほか手間がかかったが、ようやく自分と妻のツイッターの分析結果をひとつの表にして、比較することができた。

ツイッターの分析結果

Personality Insights からとれる項目は多いため、わかりやすいようビッグファイブとその子要素、ニーズ、価値観に絞って、レーダーチャートをつくった。

レーダーチャート

青いレーダーチャートが僕、妻が赤だ。こうして重ねてみると、傾向の近さ遠さがよくわかる。僕と妻でいうと、出ているところ、引っ込んでいるところ、大まかな形状は、かなり近いようだ。

 

夫婦の相性は、性格が似ているほうがいいのか、それとも……? その根拠は?

しかし、夫婦の相性は、性格が似ているほうがいいのだろうか。それとも、お互いを補うように、異なっていたほうがよいのだろうか。

教育心理学などでは、グループでの学びは、性格特性が異なるメンバーが集まったほうが効果が出るという。また、チームビルディングでも、メンバーの多様性が成果につながるという研究もある。結婚についてはどうだろう?

国立情報学研究所のCiNii(論文検索システム)で調べてみたのだが、ビッグファイブと結婚の相関を調べた研究は、思いのほか見つからない。

そうだよね。結婚って、ビッグファイブだけじゃなく、収入や生活習慣、いろんなものがかかわるものね……。

ようやく見つけたのが、次の論文。日本心理学会の第73回大会で発表されたものとのこと。

恋愛と結婚のためのコミュニケーション能力尺度の研究:

引用:(村上 隆,和田 真雄,谷 伊織,2008)

(3)正準相関分析を用いた恋愛度テストによる相性偏差値の試み (4)コミュニケーション能力テストとビックファイブおよび属性変数の関連

論文内のグラフ

これは、結婚相談所で成婚にいたった男女の性格特性を調べたものだ。論文内のグラフを見ると、性格特性が近いカップルほど成婚しやすい、という傾向が見てとれる。

ほっ! 我が夫婦の性格特性が近いのは、すくなくとも、前向きではあるようだ。よかったよかった。

こうして試してみると、Personality Insights は実に面白い。このロジックをそのまま恋愛マッチングアプリに入れてもいいんじゃないだろうか。

一方で、ビジネスに応用するときの課題として、「分析に足りる量のテキストデータをどうやって入手するのか」と「どの性格特性が近い(または遠い)ときに良いマッチングと判断するのか、その根拠をどうするか」だと感じた。

 

ところで、リツイートは分析に含めたほうがいいの?

Twitter からダウンロードしてきた全ツイート履歴には、リツイートのデータも含まれている。僕自身の場合、全ツイートのうちリツイートの占める割合は 11% だった。

リツイートのテキストは、他人が書いた文章だ。Personality Insights は使われている言葉の傾向から、性格を推定する。リツイートを含めると含めないのでは、分析結果が変わってくるのではないか? それも気になる。

そこで、自分のツイート履歴を、「全ツイート(リツイート含む)」「全ツイート(リツイートを除く)」「リツイートのみ(自分のツイートはない)」の3種類に加工して、傾向を比較してみた。

傾向を比較してみた

青のベタ塗りが「全ツイート(リツイート含む)」だ。濃い青の線が「全ツイート(リツイートを除く)」で、赤い線が「リツイートのみ(自分のツイートはない)」を示す。

興味深いことに、リツイートを含んでも除いても、それほどの差は生まれなかった。もちろん、ひとつひとつ見ていくと、「忠実さ」や「挑戦」の項目で、リツイートに引きずられて値が動いているところはあるが、全体の傾向としては同じだ。

それ以上に面白いのは、「リツイートのみ(自分のツイートはない)」と「全ツイート(リツイートを除く)」の傾向も、おおむね同じであることだ。

自分が共感を覚えたものをリツイートするからかもしれないが、他人の文章でも、自分の好みでピックアップして集めると、自分の性格特性を推定できるという可能性がでてきそうだ。

 

相性診断の結果を妻に伝えてみた

相性診断の結果を、妻に伝えた。

「似ているね」

ポツリと一言。しみじみとした顔で画面を眺めていた。何か、妻なりに感じるところがあったようだ。

文: 羽山 祥樹(@storywriter
Special Thanks to: はやしすみこ(@idealisland

 

参考

IBM Watson Personality Insights

Personality Insightsの具体的な解説は、THINK Watsonの記事「最強のチームはAIが作る!? Watsonの性格分析ツール開発秘話

Bluemixへの登録方法や、cURLのインストール手順や使い方は、THINK Watsonの記事「Watsonにテープ起こしさせてみた」に書いてあるので参照のこと。
(2017年11月1日、BluemixはIBM Cloudにブランドを変更しました。詳細はこちら
 

IBM Alert Notification
スタッフがすべての重大な IT アラートの通知を受け取ることができます
無料評価版はこちら