はじめに
現在アクセンチュア勤務ですが、今日は「元IBMワトソン技術セールス」の顔で記事を執筆する赤石です。なぜ、昔の名前で登場したかというと、IBM時代、私がイチオシにしていたWatson APIであるPersonality InsightsがうれしいことにWatson APIの時よりパワーアップして復活したからです。 ※
※ なぜパワーアップなのかについては、この記事を最後まで読んでいただけるとわかることになります。
そのいきさつについては、次の記事を参照して下さい。
性格推定AIへの期待に応えたい」新生IBM PI誕生秘話(Watson PIサルベージ劇場)
以下では、Personality Insightsに関して
- なぜ性格を推定できるのか (Why)
- どうしたら使えるのか (How)
- どんな活用方法があるのか (What)
を順を追ってご説明します。少し長めの記事ですが、お付き合いいただけると幸いです。
なぜ性格を推定できるのか (Why)
ビッグ・ファイブ理論とは
これからPersonality Insightsの説明をするにあたって、最初に理解してもらう必要があるのが最新心理学の成果であるビッグ・ファイブ理論です。
古来から、人間の性格を把握し、理解するために様々な試みがありました。日本ではその中でも多くの人が常識?として持っている「血液型による性格理解」みたいなものがあります。しかし、こうしたアプローチのほとんどは、根拠がないものであることが科学的に示されています。また、過去のこうした経緯から「人間の性格を把握する」こと自体が、あまり科学的でないとも見られがちです。
そんな中で出てきたのが「ビッグ・ファイブ理論」です。
「ビッグ・ファイブ理論」は、1990年代に心理学者のルイスゴールドバーグ氏が提唱した『パーソナリティの性格分析』において「人間が持つさまざまな性格は、5つの要素の組み合わせで構成される」とする考え方です。他の研究者による独立した分析でも、類似の結果が得られたことから、現在では性格の科学的な記述は「ビッグ・ファイブ理論」にほぼ統一されています。科学的に根拠のある性格理解の手段として定着しているのです。
ビッグ・ファイブにおける5つの要素とは、具体的に次のものとなります。
名称 | 傾向 |
---|---|
外向性 | 関心の方向が外部(外向的)か、内部(内向的)かという軸 |
協調性 | 行動を人に合わせるか、自分独自に進めるかの軸 |
誠実性 | 几帳面か、おおらかかの軸 |
感情起伏 | 感情の変化の大きさ(起伏が大きいか、安定しているか)の軸 |
知的好奇心 | 変化を好むか、安定志向かの軸 |
ここでは説明を省略しますが、それぞれの軸を更に細分化した要素も存在します。
Personality Insightsの仕組み
従来、被験者のビッグ・ファイブのスコアを調べる唯一の方法は、数百項目のアンケートに答える形式の心理テストでした。有用なスコアであることはわかっていても、アンケートに答える負荷が高く、なかなか実社会で定着していなかったのです。
Personality Insightsは、この課題を解決しました。
Personality Insightsの機能を一言で説明すると、被験者の書いたテキスト文(内容は問わない)をAPIに入力すると、心理テストと同様のビッグ・ファイブの各要素のスコアを予測値として出力してくれる機械学習モデルです。機械学習モデルの特性上、100%正確というわけにはいきませんが、そこそこの精度が出ることも実証されています。
被験者の性格をビッグ・ファイブで数値化したいというニーズがあるときに、「その人の書いた一定量のテキスト文書さえ入手できれば、それを使ってスコアを予測できる」ことが可能になったのです。
では、具体的にどのような方法により、この予測を行っているのでしょうか?
論文 大量日本語データから得られる知見の産業応用 ー内容分析から筆者の性格推定までーを参照しつつ、仕組みを模式的に書き起こしたのが次の図となります。
学習フェーズでは、被験者は、心理テストを受けます。この結果が機械学習モデルの目的変数となります。
同時に、被験者は自身で書いた一定量以上のテキストデータも提供します。このテキストデータに前処理をかけた結果が説明変数になります。
この2つの情報を使って、通常の構造化データ同様に機械学習モデルを構築し、これが予測モデル(回帰モデル)となります。
厳密にいうと、後ほど紹介するサンプルアプリでは、モデルの出力をアンケート結果の分布で正規化したパーセンタイル値が得られます。サンプルアプリでは使いやすいようにこの値のみ出力していますが、製品版では元のモデル出力値そのものも得られるようになっています。
どうしたら使えるのか (How)
サンプル版の利用方法
以上で、 Personality Insightsがどのような機能を持つAIなのか、概略はご理解いただけたかと思います。そして、自分の性格がどうなっているか試してみたくなったのではないでしょうか?
ご心配いりません。2022年6月までであれば、Personality Insightsによる予測結果を取得することができます。やりかたは、とても簡単で、事前に分析対象のテキストを用意した上で、下記リンク先のアンケートに順番に答えていただくだけです。早速試してみて下さい!
IBM Personality Insights お試しサイト
すべての質問に回答すると、こんな結果が得られるはずです。
結果JSONの内容
Personality Insightsの分析結果は同時にJSONファイルでも取得可能です。
具体的な結果例は、以下のとおりです。
{"word_count":8783,"processed_language":"ja","personality":[{"trait_id":"big5_openness","name":"知的好奇心","category":"personality","percentile":0.8243266441683973,"significant":true,"children":[{"trait_id":"facet_adventurousness","name":"大胆性","category":"personality","percentile":0.6074420317680838,"significant":true},{"trait_id":"facet_artistic_interests","name":"芸術的関心度","category":"personality","percentile":0.8218198408607813,"significant":true},{"trait_id":"facet_emotionality","name":"情動性","category":"personality","percentile":0.6962464429910763,"significant":true},{"trait_id":"facet_imagination","name":"想像力","category":"personality","percentile":0.647725053267349,"significant":true},{"trait_id":"facet_intellect","name":"思考力","category":"personality","percentile":0.9596002511798047,"significant":true},{"trait_id":"facet_liberalism","name":"現状打破","category":"personality","percentile":0.5523809768567761,"significant":true}]},{"trait_id":"big5_conscientiousness","name":"誠実性","category":"personality","percentile":0.6334149312604265,"significant":true,"children":[{"trait_id":"facet_achievement_striving","name":"達成努力","category":"personality","percentile":0.892309467899139,"significant":true},{"trait_id":"facet_cautiousness","name":"注意深さ","category":"personality","percentile":0.11966333928730538,"significant":true},{"trait_id":"facet_dutifulness","name":"忠実さ","category":"personality","percentile":0.07177696163881331,"significant":true},{"trait_id":"facet_orderliness","name":"秩序性","category":"personality","percentile":0.9110468867739445,"significant":true},{"trait_id":"facet_self_discipline","name":"自制力","category":"personality","percentile":0.38212102755511407,"significant":true},{"trait_id":"facet_self_efficacy","name":"自己効力感","category":"personality","percentile":0.9389356473073622,"significant":true}]},{"trait_id":"big5_extraversion","name":"外向性","category":"personality","percentile":0.8117213140033115,"significant":true,"children":[{"trait_id":"facet_activity_level","name":"活発度","category":"personality","percentile":0.9454363557236618,"significant":true},{"trait_id":"facet_assertiveness","name":"自己主張","category":"personality","percentile":0.9172617928104421,"significant":true},{"trait_id":"facet_cheerfulness","name":"明朗性","category":"personality","percentile":0.1355874082178351,"significant":true},{"trait_id":"facet_excitement_seeking","name":"刺激希求性","category":"personality","percentile":0.7768259057391445,"significant":true},{"trait_id":"facet_friendliness","name":"友好性","category":"personality","percentile":0.34763624066614074,"significant":true},{"trait_id":"facet_gregariousness","name":"社交性","category":"personality","percentile":0.24334271818299857,"significant":true}]},{"trait_id":"big5_agreeableness","name":"協調性","category":"personality","percentile":0.6766115204811971,"significant":true,"children":[{"trait_id":"facet_altruism","name":"利他主義","category":"personality","percentile":0.8028958844538241,"significant":true},{"trait_id":"facet_cooperation","name":"協働性","category":"personality","percentile":0.7154800947872916,"significant":true},{"trait_id":"facet_modesty","name":"謙虚さ","category":"personality","percentile":0.44305118740565047,"significant":true},{"trait_id":"facet_morality","name":"強硬さ","category":"personality","percentile":0.47015767284310933,"significant":true},{"trait_id":"facet_sympathy","name":"共感度","category":"personality","percentile":0.05669948897661187,"significant":true},{"trait_id":"facet_trust","name":"信用度","category":"personality","percentile":0.5213192392650576,"significant":true}]},{"trait_id":"big5_neuroticism","name":"感情起伏","category":"personality","percentile":0.5190227982393362,"significant":true,"children":[{"trait_id":"facet_anger","name":"激情的","category":"personality","percentile":0.8048721885088137,"significant":true},{"trait_id":"facet_anxiety","name":"心配性","category":"personality","percentile":0.8010529907013529,"significant":true},{"trait_id":"facet_depression","name":"悲観的","category":"personality","percentile":0.32071184032980715,"significant":true},{"trait_id":"facet_immoderation","name":"利己的","category":"personality","percentile":0.01630910692602472,"significant":true},{"trait_id":"facet_self_consciousness","name":"自意識過剰","category":"personality","percentile":0.6286981961267973,"significant":true},{"trait_id":"facet_vulnerability","name":"低ストレス耐性","category":"personality","percentile":0.5710649902448675,"significant":true}]}],"needs":[{"trait_id":"need_challenge","name":"挑戦","category":"needs","percentile":0.16012113180264897,"significant":true},{"trait_id":"need_closeness","name":"親密","category":"needs","percentile":0.7246421740883482,"significant":true},{"trait_id":"need_curiosity","name":"好奇心","category":"needs","percentile":0.29135671502490834,"significant":true},{"trait_id":"need_excitement","name":"興奮","category":"needs","percentile":0.005652682343738058,"significant":true},{"trait_id":"need_harmony","name":"調和","category":"needs","percentile":0.4631794689450319,"significant":true},{"trait_id":"need_ideal","name":"理想","category":"needs","percentile":0.6334467430944678,"significant":true},{"trait_id":"need_liberty","name":"自由主義","category":"needs","percentile":0.049149080855812544,"significant":true},{"trait_id":"need_love","name":"社会性","category":"needs","percentile":0.32025515729566645,"significant":true},{"trait_id":"need_practicality","name":"実用主義","category":"needs","percentile":0.08697905795445732,"significant":true},{"trait_id":"need_self_expression","name":"自己表現","category":"needs","percentile":0.17448370407067554,"significant":true},{"trait_id":"need_stability","name":"安定性","category":"needs","percentile":0.684196677943261,"significant":true},{"trait_id":"need_structure","name":"仕組","category":"needs","percentile":0.2097643040631348,"significant":true}],"values":[{"trait_id":"value_conservation","name":"現状維持","category":"values","percentile":0.06771839798277607,"significant":true},{"trait_id":"value_openness_to_change","name":"変化許容性","category":"values","percentile":0.26585898621749665,"significant":true},{"trait_id":"value_hedonism","name":"快楽主義","category":"values","percentile":0.000007095982783256183,"significant":true},{"trait_id":"value_self_enhancement","name":"自己増進","category":"values","percentile":0.00014414565205478347,"significant":true},{"trait_id":"value_self_transcendence","name":"自己超越","category":"values","percentile":0.9115556776618857,"significant":true}],"consumption_preferences":[{"consumption_preference_category_id":"consumption_preferences_shopping","name":"購入傾向","consumption_preferences":[{"consumption_preference_id":"consumption_preferences_automobile_ownership_cost","name":"自動車を買うときは維持費用を重視する傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_automobile_safety","name":"自動車を買うときは安全性を優先する傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_clothes_quality","name":"衣服を買うときは品質を優先する傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_clothes_style","name":"衣服を買うときはスタイルを優先する傾向があります","score":0},{"consumption_preference_id":"consumption_preferences_clothes_comfort","name":"衣服を買うときは着心地を優先する傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_influence_brand_name","name":"商品を購入するときはブランド名に左右される傾向があります","score":0.5},{"consumption_preference_id":"consumption_preferences_influence_utility","name":"商品を購入するときは実用性を重視する傾向があります","score":0},{"consumption_preference_id":"consumption_preferences_influence_online_ads","name":"商品を購入するときはオンライン広告の影響を受ける傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_influence_social_media","name":"商品を購入するときはソーシャル・メディアの影響を受ける傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_influence_family_members","name":"商品を購入するときは家族の影響を受ける傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_spur_of_moment","name":"衝動買いに走る傾向があります","score":0.5},{"consumption_preference_id":"consumption_preferences_credit_card_payment","name":"買い物にクレジット・カードを使う傾向があります","score":1}]},{"consumption_preference_category_id":"consumption_preferences_health_and_activity","name":"健康活動傾向","consumption_preferences":[{"consumption_preference_id":"consumption_preferences_eat_out","name":"頻繁に外食する傾向があります","score":0},{"consumption_preference_id":"consumption_preferences_gym_membership","name":"スポーツ・ジムの会員である可能性があります","score":0},{"consumption_preference_id":"consumption_preferences_outdoor","name":"アウトドア活動を好む傾向があります","score":0}]},{"consumption_preference_category_id":"consumption_preferences_environmental_concern","name":"環境懸念傾向","consumption_preferences":[{"consumption_preference_id":"consumption_preferences_concerned_environment","name":"環境問題について心配する傾向があります","score":1}]},{"consumption_preference_category_id":"consumption_preferences_entrepreneurship","name":"起業家精神","consumption_preferences":[{"consumption_preference_id":"consumption_preferences_start_business","name":"数年後に起業することを考える傾向があります","score":0}]},{"consumption_preference_category_id":"consumption_preferences_movie","name":"映画の好み","consumption_preferences":[{"consumption_preference_id":"consumption_preferences_movie_romance","name":"ロマンス映画を好む傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_movie_adventure","name":"アドベンチャー映画を好む傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_movie_horror","name":"ホラー映画を好む傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_movie_musical","name":"ミュージカル映画を好む傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_movie_historical","name":"歴史映画を好む傾向があります","score":0},{"consumption_preference_id":"consumption_preferences_movie_science_fiction","name":"SF 映画を好む傾向があります","score":0},{"consumption_preference_id":"consumption_preferences_movie_war","name":"戦争映画を好む傾向があります","score":0},{"consumption_preference_id":"consumption_preferences_movie_drama","name":"ドラマ映画を好む傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_movie_action","name":"アクション映画を好む傾向があります","score":0},{"consumption_preference_id":"consumption_preferences_movie_documentary","name":"ドキュメンタリー映画を好む傾向があります","score":1}]},{"consumption_preference_category_id":"consumption_preferences_music","name":"音楽の好み","consumption_preferences":[{"consumption_preference_id":"consumption_preferences_music_rap","name":"ラップ・ミュージックを好む傾向があります","score":0},{"consumption_preference_id":"consumption_preferences_music_country","name":"カントリー・ミュージックを好む傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_music_r_b","name":"R&B ミュージックを好む傾向があります","score":0},{"consumption_preference_id":"consumption_preferences_music_hip_hop","name":"ヒップ・ホップ・ミュージックを好む傾向があります","score":0},{"consumption_preference_id":"consumption_preferences_music_live_event","name":"ライブの音楽イベントに出席する可能性があります","score":1},{"consumption_preference_id":"consumption_preferences_music_playing","name":"楽器演奏の経験がある可能性があります","score":1},{"consumption_preference_id":"consumption_preferences_music_latin","name":"ラテン音楽を好む傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_music_rock","name":"ロック・ミュージックを好む傾向があります","score":0.5},{"consumption_preference_id":"consumption_preferences_music_classical","name":"クラシック音楽を好む傾向があります","score":1}]},{"consumption_preference_category_id":"consumption_preferences_reading","name":"読書の好み","consumption_preferences":[{"consumption_preference_id":"consumption_preferences_read_frequency","name":"よく本を読む傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_books_entertainment_magazines","name":"娯楽雑誌を読む傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_books_non_fiction","name":"ノンフィクション作品を読む傾向があります","score":1},{"consumption_preference_id":"consumption_preferences_books_financial_investing","name":"投資関連書籍を読む傾向があります","score":0},{"consumption_preference_id":"consumption_preferences_books_autobiographies","name":"自伝や伝記を読む傾向があります","score":1}]},{"consumption_preference_category_id":"consumption_preferences_volunteering","name":"ボランティア精神","consumption_preferences":[{"consumption_preference_id":"consumption_preferences_volunteer","name":"社会貢献のためにボランティア活動をする傾向があります","score":1}]}],"warnings":[]}
このJSONを見やすく表示するコードは以下のとおりです。
import json
fn = 'ibm_pi_result.json'
file = open(fn)
result = json.load(file)
print(json.dumps(result, indent=2,ensure_ascii=False))
結果はかなり長くなるので省略します。各自、自分で試してみて下さい。
このJSONデータを読み込んで、結果をPandas表形式にまとめるプログラムを作ってみました。
実装と結果は以下のとおりになります。
import numpy as np
import pandas as pd
pd.options.display.float_format = '{:.4f}'.format
from IPython.display import display
fn = 'ibm_pi_result.json'
file = open(fn)
result = json.load(file)
item_list = ['personality', 'values', 'needs']
summary = np.zeros((0,3))
for item in item_list:
x = result[item]
for y in x:
trait_id = y['trait_id']
percentile = y['percentile']
name = y['name']
line = np.array([trait_id, name, percentile])
summary = np.vstack([summary, line])
data = pd.DataFrame(summary, columns=['trait_id', 'name', 'percentile'])
data['percentile'] = data['percentile'].astype('float64')
display(data)
trait_id | name | percentile | |
---|---|---|---|
0 | big5_openness | 知的好奇心 | 0.8243 |
1 | big5_conscientiousness | 誠実性 | 0.6334 |
2 | big5_extraversion | 外向性 | 0.8117 |
3 | big5_agreeableness | 協調性 | 0.6766 |
4 | big5_neuroticism | 感情起伏 | 0.5190 |
5 | value_conservation | 現状維持 | 0.0677 |
6 | value_openness_to_change | 変化許容性 | 0.2659 |
7 | value_hedonism | 快楽主義 | 0.0000 |
8 | value_self_enhancement | 自己増進 | 0.0001 |
9 | value_self_transcendence | 自己超越 | 0.9116 |
10 | need_challenge | 挑戦 | 0.1601 |
11 | need_closeness | 親密 | 0.7246 |
12 | need_curiosity | 好奇心 | 0.2914 |
13 | need_excitement | 興奮 | 0.0057 |
14 | need_harmony | 調和 | 0.4632 |
15 | need_ideal | 理想 | 0.6334 |
16 | need_liberty | 自由主義 | 0.0491 |
17 | need_love | 社会性 | 0.3203 |
18 | need_practicality | 実用主義 | 0.0870 |
19 | need_self_expression | 自己表現 | 0.1745 |
20 | need_stability | 安定性 | 0.6842 |
21 | eed_structure | 仕組 | 0.2098 |
ここで出てきた value_xxxとneed_xxxは、ビッグ・ファイブとは別の、心理学に基づいた指標値です。
value_xxxは Schwartzの価値概説(Sscwarts Value Servey)に沿った指標値、need_xxxは、Kevin FordのUniversal Needs Mapに沿った指標値となります。
詳しくは、上で紹介した論文 大量日本語データから得られる知見の産業応用 ー内容分析から筆者の性格推定までーを参照して下さい。
Personality Insights の実行環境
以前のPersonality Insightsは、Watson APIの一つであり、実行基盤はパブリッククラウドであるIBM Cloud上で提供されていました。当時は、サービスをVPN経由でアクセスすることができなかったため、必然的に個人情報を扱うこのAPIの利用基盤としては、かなり難しい条件がありました。
しかし、今回の新しいサービスはKubernates基盤上で稼働します。つまり、クライアント企業のオンプレミス環境であったり、あるいはパブリッククラウドであってもVPNで保護された環境で利用できることになります。これはPersonality Insightsを商用利用する場合、非常に大きなメリットになると考えられます。
そして、このことが記事の冒頭で言及した「Watson APIの時よりパワーアップした」ことの所以です。
このサービスがAPIだったときは、私はまさにそのAPIを売り込む立場にいたわけですが、せっかくお客様が関心を持ってくれても、実行環境がVPN使えないパブリッククラウドのみという話を聞いた瞬間に、関心がなくなってしまう訳です。入力に使うデータがほとんどの場合、バリバリの個人情報なので、やむなしです。
新生PIでは、この本番利用上の最大の難点が自動的に解決したわけです。このことだけに関していうと、正直、もう一度IBMセールスに戻って、新生PIの売り込みをやってみたいくらいです。。。。
どんな活用方法があるのか (What)
ユースケースの紹介
これで、Personality Insightsの動作イメージはなんとなく持てたかと思います。
では、この機能は実業務でどのような活用シーンがあるのでしょうか?
まずは、論文などで公開されている事例をベースに紹介してみます。
性格特性を考慮した高パーソナライズ性スポット推薦システムの一検討
上に示した例は、観光地のグループ化を、その観光地のことをつぶやいている twitterアカウントに代表させ、該当するtwitterアカウントのビッグ・ファイブ予測値をクラスタリングすることで、観光地間の類似性を調べる手法を試しています。検証の結果、この手法によりクラスタリングした結果は、妥当な結果になっていたとのことです。
本番利用のアイデア
人の性格が、5次元のビッグ・ファイブスコア予測値で表現できるのだとすると、人の相性は、このスコア値のコサイン近似度で計算できるはずです。この性質を使って、次のような利用方法が考えられます。
- 新入社員の配属先 新入社員は入社時のエントリーシートのフリーコメント欄に適度の分量のテキストを書いているはずです。配属先が営業組織であれば、配属先所属長も営業日報のようなものを報告しているはずです。これらのテキスト情報を元に、ビッグ・ファイブ予測値を求め、更にコサイン近似度で新入社員と所属長の親和性を算出します。一番親和度の高い組織に配属すれば、新人が組織になじめず、いきなり退職ということを防げるのではないかと考えられます。
- 結婚マッチングサイト 結婚マッチングサイトでは、相性のいい二人をいかにみつけるかが、最大のポイントです。登録時に記述する自己PR文を入力にビッグ・ファイブ予測値を算出すれば、それに基づいて相性のいい二人を見つけることができそうです。
この2つの想定ユースケースは、私がこの記事を書くときに思いつきで考えたものですが、人の相性を数値に基づき客観的に判断できるのであれば、日常生活や業務でいくらでも活用シーンはありそうです。皆様も是非、自分で考えてみて下さい。
講演会のご案内
私が何度か発表したことのあるコミュニティ「水曜ワトソンカフェ」では、次回定例(2022-05-11 19:00)で、冒頭で紹介した「サルベージ劇場」の登場人物が自ら「Personality Insights」について語るプレゼンが予定されています。なんと無料です。
当記事を読んで、Personality Insightsに関心を持った方は是非お申し込み下さい!
水曜ワトソンカフェvol.32「Watson Personality Insightsが復活ッツ!」