hacknoteのKawaguchiです!
本日はPersonality insightsを使ってみました。
Personality insights(人格分析)は、IBM Watsonサービスの一つであり、文章からその人の個性や人間性を分析できるサービスです。
こちらに自分の今までのWordpressでの投稿データを入れ、人格分析をしてみます。
手順
1.IBMクラウドの利用登録
2.personality insightsのインスタンス作成
3.分析したい文章を準備する(txt、json、csvなど。今回はtxtファイル)
4.コマンドラインツールでコマンド入力し、リクエストデータを送信
1.IBMクラウドの利用登録
まずはこちらからアカウント作成
2.personality insightsのインスタンス作成
“リソースの作成”をクリック
フィルターでpersonality insightsと入力し
“Personality Insights”を選択
該当するもの各々入力し、作成(※ここの”デプロイする地域/ロケーションの選択”によってコマンドラインツールでの入力が一部変わるので注意)
作成したら管理からAPIkeyをコピーしてどこかにメモっておきましょう(左タブにある”サービス資格情報”からも見れます)
3.分析したい文章を準備する
分析したい文章を用意します。最低100単語以上が必須ですが、確度の高い分析結果を得るためには、最低1,200単語以上のテキスト入力が推奨されています。
今回はWordpressの自分の今までの投稿をまとめて分析にかけたいので、まずWordpressのコピー環境(データベース)を用意し、そこからデータを引っ張ってテキストファイルに出力し、それを使用しました。
4.コマンドラインツールでコマンド入力し、リクエストデータを送信
送信したコードはこんなかんじです。curlコマンドでURLの場所に、POSTメソッドでリクエストを送信し、jqコマンドで返ってきたデータ(json)を整形しています。
curl -X POST -u "apikey:{APIkey}" \ --header "Content-Type: text/plain" \ --header "Content-Language: ja" \ --header "Accept: application/json" \ --data-binary "@{path_to_file}test.txt" \ "https://gateway-tok.watsonplatform.net/personality-insights/api/v3/profile?version=2017-10-13&consumption_preferences=true&raw_scores=true" \ |jq
<以下詳細説明>
一行目 : {APIkey}ですが、これは手順2でコピーしたAPIkeyにあたります。
二行目 : ”Content-Type”は入力コンテンツをプレーンテキスト(text/plain)、HTML(text/html)、または
JSON(application/json)として指定できます。
三行目 : ”Content-Language”は入力テキストの言語を記入します。デフォルトでは英語:enになっています。今回は
日本語なので”ja”で指定しています。(他:es(スペイン),ko(韓国), fr(フランス)…etc)
四行目 : ”Accept”は受信可能なレスポンスデータのメディアタイプを指定します。省略した場合は,すべてのタイプが 受信可能であることを表す「*」が指定されたと見なされます。
五行目 : {path_to_file}は、分析したいテキストファイルがある場所までのパスを指定します。
(例:”@/home/user1/test.txt)
六行目 : ”https://gateway-tok.watsonplatform.net/personality-insights/api/v3/profile”にリクエストを送信します
&の後ろはなくても大丈夫
です
version=2017-10-13 : 照会パラメーターによってインターフェース・バージョンを指定して、その更新で 使用可能になった新しいフィーチャーおよび機能を使用します。
consumption_preferences=true : 消費嗜好性の結果も表示してくれます。
raw_scores=true : 結果がサンプル母集団と比較されない、筆者のテキストとその特性のモデルのみに基づい
ているスコアが表示されるようになります。
※私はpersonalityinsightsのインスタンス作成時に”東京”を選択したため、サービスエンドポイントが、https://gateway-tok
.watsonplatform.net/personality-insights/apiになっています。他の地域選択の場合ここが変わります
詳しくはこちらを参考にしてください。
七行目 : 応答がjsonデータで返ってくるため、jqコマンドを用いてデータを整形して見やすくしています。整形しない
と非常に見づらいです..。
結果の見方
上記のリクエストで以下のような結果が返ってきました(長いので省略しています)。
... { "word_count": 5871, "processed_language": "ja", "personality": [ { "trait_id": "big5_openness", "name": "Openness", "category": "personality", "percentile": 0.9372076937331174, "raw_score": 0.6567710772497886, "significant": true, "children": [ { "trait_id": "facet_adventurousness", "name": "Adventurousness", "category": "personality", "percentile": 0.902446787609106, "raw_score": 0.6447105923794436, "significant": true } ... ] } ], "needs": [ { "trait_id": "need_challenge", "name": "Challenge", "category": "needs", "percentile": 0.1565726887688776, "raw_score": 0.548196186301491, "significant": true } ... ], "values": [ { "trait_id": "value_conservation", "name": "Conservation", "category": "values", "percentile": 0.01684160335671242, "raw_score": 0.6530251960609705, "significant": true } ... ], "consumption_preferences": [ { "consumption_preference_category_id": "consumption_preferences_shopping", "name": "Purchasing Preferences", "consumption_preferences": [ { "consumption_preference_id": "consumption_preferences_automobile_ownership_cost", "name": "Likely to be sensitive to ownership cost when buying automobiles", "score": 1 } ... ] } ], "warnings": [] }
まずパーソナリティーの特性を、ビッグ・ファイブ(big5)、価値、ニーズの3つに分割して結果が出力されます。今回リクエストでconsumption_preferences=trueにしたため、消費嗜好性の結果も表示されています。それぞれ説明すると
・ビックファイブ
: 協調性、誠実性、外向性、情緒不安定性、開放性の5つの主要ディメンションを指します
(詳細はこちら)。
・ニーズ
: 個人の共感を呼ぶ商品の側面を説明します。このモデルには、12 個の特徴ニーズが含まれます
(詳細はこちら)。
・価値
: 個人の意思決定に影響を与える動機付け因子を説明します。このモデルには、5つの価値が含まれます
(詳細はこちら)。
・消費嗜好性 : 大きく8つのカテゴリーにグループ分けされており、さまざまな商品、サービス、およびアクティビティーを
筆者が好む可能性を示します(詳細はこちら)。
結果の見方については以下参考。(詳細はこちら)
<ビックファイブ、価値、ニーズ>
・word_count : 入力テキストの単語数
・processed_language : 入力処理するために使用された言語
・trait_id : 特性の固有のID(big5_{},facet_{},need_{},value_{}の形式があります)
・name : 特性の名前
・category : 特性のカテゴリ
・percentile : 正規化されたスコア(百分位数,0~1の範囲)
・row_score : 生のスコア。サンプル母集団と比較されていないそのままの結果(0~1までの範囲)
・significant : 特性が入力言語にとって意味があるかどうかを示す
・warnings : 入力したテキストに何かしらあったら入ってくるメッセージ
・children : ビッグファイブの各因子のより詳細な結果が入った配列。ビッグファイブに関するフィールドのときのみ返さ
れます
<消費嗜好>
・consumption_preference_category_id : 消費嗜好カテゴリーの固有のID
・name : 消費嗜好名
・score : テキスト筆者が様々な商品、サービス、アクティビティーを好む可能性を示します(0~1までの範囲)
(詳細はこちら)
数値が高い方が当該する項目の特性、可能性が高いです。
私の結果はOpenness(開放性)が高く、中でもAdventurousness(冒険)が高いのですが、Conservation(不変)が低い模様。また、消費嗜好を見てみると、consumption_preferences_automobile_ownership_costのスコアが高いです。
したがって、上記に載せたサイトから各々まとめてみると、「新しい活動を試してみたり、違うことを経験したりするのに熱心で、自己制約、秩序、および変化への抵抗を重視せず、車を購入するときに所有コストを重視する」という結果でした。