第 4 章 ユーザのライフスタイルを活用した職業属性の推定技術の提案
4.3 学習アルゴリズム
85
図 4.3 属性推定部の処理フロー
属性推定部では,属性推定機能を用いて推定対象ユーザの投稿内容と投稿時間を分析し,
それらを属性推定モデル構築部で構築した単語・生活習慣モデルや投稿時間帯モデルに適 用することでユーザの属性を推定する.
86
図 4.4 投稿時間帯ベクトルのイメージ
職業jobのユーザuserにおける投稿時間帯ベクトル𝑉𝑝𝑜𝑠𝑡𝑡𝑖𝑚𝑒(𝑗𝑜𝑏, 𝑢𝑠𝑒𝑟)を式4.1に示す.
𝑉𝑝𝑜𝑠𝑡𝑡𝑖𝑚𝑒(𝑗𝑜𝑏, 𝑢𝑠𝑒𝑟)
= {𝑃𝑜𝑠𝑡𝑆𝑢𝑛𝑑𝑎𝑦0(𝑗𝑜𝑏, 𝑢𝑠𝑒𝑟), ⋯ , 𝑃𝑜𝑠𝑡𝑆𝑢𝑛𝑑𝑎𝑦23(𝑗𝑜𝑏, 𝑢𝑠𝑒𝑟), ⋯ , 𝑃𝑜𝑠𝑡𝑆𝑎𝑡𝑢𝑟𝑑𝑎𝑦23(𝑗𝑜𝑏, 𝑢𝑠𝑒𝑟)} (4.1)
式4.1において,𝑃𝑜𝑠𝑡𝑆𝑢𝑛𝑑𝑎𝑦0(𝑗𝑜𝑏, 𝑢𝑠𝑒𝑟)は日曜日の0時に職業jobのユーザuserにより投 稿された件数を表す.
(2) 投稿時間帯によるユーザのクラスタリング処理
本処理では,投稿時間帯ベクトルを使用して,職業jobのユーザ群をn個のクラスタに分 類する.分類したクラスタをそれぞれ{𝐶𝑗𝑜𝑏1, 𝐶𝑗𝑜𝑏2, ⋯ , 𝐶𝑗𝑜𝑏𝑘, ⋯ , 𝐶𝑗𝑜𝑏𝑛}と表す.クラスタリング には,非階層的クラスタリングの代表的な手法であるk-means法[83]を採用する.第3章で 階層的クラスタリングを用いた際は,分類するクラスタ数を事前に決定することが困難で あった.しかし,本研究では,クラスタ数が多くなると各属性内の特徴が薄くなるため,
分類するクラスタ数が少なく,その個数に見当を付けることができると考えた.クラスタ リング処理のイメージを図 4.5に示す.
投 稿 数 投
稿 数
87
図 4.5 クラスタリング処理のイメージ
本処理により,同一職業中におけるユーザを投稿時間に基づいて類型化し,同じ職業で も多様なライフスタイルが存在する問題に対応する.
4.3.2 単語・生活習慣モデル構築機能
(1) 単語ベクトル作成処理
本処理では,投稿内容に出現する特徴的な単語を素性とした単語ベクトルをクラスタに 属するユーザ群ごとに作成する.クラスタ𝐶𝑗𝑜𝑏𝑘に属するユーザuserにおける単語ベクトル 𝑉𝑤𝑜𝑟𝑑(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟)を式4.2に示す.
𝑉𝑤𝑜𝑟𝑑(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟)
= {𝑃𝑜𝑠𝑡𝑤𝑜𝑟𝑑1(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟), 𝑃𝑜𝑠𝑡𝑤𝑜𝑟𝑑2(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟), ⋯ , 𝑃𝑜𝑠𝑡𝑤𝑜𝑟𝑑𝑖(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟)} (4.2)
式4.2において,𝑃𝑜𝑠𝑡𝑤𝑜𝑟𝑑1(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟)はクラスタ𝐶𝑗𝑜𝑏𝑘に属するユーザuserによる投稿に おける単語𝑤𝑜𝑟𝑑1の出現数を表す.なお,単語ベクトルを構成する素性は次に示す手順によ り選定する.
職業ごとの全投稿
クラスタA クラスタB クラスタC
ユーザの特徴ごとにクラスタリング
夜が遅く朝も遅い職業のクラスタ 夜が早く朝も早い職業のクラスタ
日中自由に行動できる職業のクラスタ9
88
STEP 1 :各職業において特徴的な単語を抽出する.推定する職業の種類だけ STEP1.1 か
らSTEP1.2の処理を繰り返す.
STEP 1.1 :Twitterから収集した職業jobのユーザ群の投稿内容に対して,形態素解析を行い
単語を取得する.なお,取得する単語は,投稿内容に含まれる顔文字や平仮名,片仮 名一文字といったノイズを取り除くため,形態素が名詞のものを採用する.
STEP 1.2 :職業jobにおいて特徴的な単語を抽出する.単語の評価には,既存研究[18]に倣
い,χ2値を採用する.χ2値を使用することで,職業jobに属するユーザ群のクラスタと,
ある単語が投稿内容に出現したユーザ群のクラスタがどの程度一致しているかを評価 できる.職業jobのユーザ群の投稿内容に出現する単語wordのχ2値の算出方法を式4.3 に示す.
𝜒2(𝑗ob, 𝑤𝑜𝑟𝑑) =𝑛(𝑈) × (𝑛(𝐽 ∩ 𝑊) × 𝑛(𝐽 ∪ 𝑊) − 𝑛(𝐽 ∩ 𝑊) × 𝑛(𝐽 ∩ 𝑊))
𝑛(𝐽) × 𝑛(𝐽) × 𝑛(𝑊) × 𝑛(𝑊) (4.3)
式4.3において,𝑈は入力したユーザの集合,Jは職業 jobのユーザの集合,Wは投 稿内容に単語wordが出現するユーザの集合を表す.式4.3では,職業jobにおいて単 語wordが特徴的な単語であるほどχ2値が大きくなる.
STEP 2 :STEP1で取得した単語群を統合する.複数の職業で同じ単語が出現する場合は,
χ2値の大きな職業にて特徴的な単語として使用する.
STEP 3 :χ2値に基づき,STEP2で統合した単語群のランキングを作成する.
STEP 4 :ランキング上位の単語を素性として抽出する.
この手順により選定した職業ごとの特徴的な単語の例を表 4.1に示す.
表 4.1 職業ごとの特徴的な単語の例
職業 用語
学生 限,休講,ゼミ,履修,授業,模試,キャンパス 会社員 打合せ,会社,事業,辞任,家族,会食
主婦 旦那,主婦,女性,洗濯,掃除,義母 パート・アルバイト ランチ,週末,ゲーセン,子育て,バイト
公務員 忘年会,会社,職場,通勤,連休,上司 自営業 申告,販売,価格,業務,景気,自営業,経営
無職 アニメ,キャラ,充,漫画,ゲーム,アニソン
89
(2) 生活習慣ベクトル作成処理
本処理では,ユーザの習慣行動を素性とした生活習慣ベクトルをクラスタに属するユー ザ群ごとに作成する.本研究では,第 3 章と同様に「睡眠中」,「出勤中」,「勤務中」,「帰 宅中」,「食事中」と「その他」の6種類を習慣行動として採用する.生活習慣ベクトルは,
6次元(習慣行動)×24次元(時間帯)の144次元で構成する.クラスタ𝐶𝑗𝑜𝑏𝑘に属するユー ザuserにおける生活習慣ベクトル𝑉𝑙𝑖𝑓𝑒𝑐𝑦𝑐𝑙𝑒(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟)を式4.4に示す.
𝑉𝑙𝑖𝑓𝑒𝑐𝑦𝑐𝑙𝑒(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟)
= {𝑃𝑜𝑠𝑡𝑏𝑒ℎ𝑎𝑣𝑖𝑜𝑟10(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟), 𝑃𝑜𝑠𝑡𝑏𝑒ℎ𝑎𝑣𝑖𝑜𝑟11(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟), ⋯ , 𝑃𝑜𝑠𝑡𝑏𝑒ℎ𝑎𝑣𝑖𝑜𝑟623(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟)} (4.4)
式4.4において,𝑃𝑜𝑠𝑡𝑏𝑒ℎ𝑎𝑣𝑖𝑜𝑟10は0時00分00秒から0時59分59秒までの間にクラスタ 𝐶𝑗𝑜𝑏𝑘に属するユーザuserにより生活習慣𝑏𝑒ℎ𝑎𝑣𝑖𝑜𝑟1に関連する単語を含む投稿がなされた回 数を表す.なお,生活習慣ベクトルを構成する素性にはあらかじめ構築した行動辞書に登 録されている用語を使用する.行動辞書には,第3章と同様に既存研究[20]に倣い,日本語 語彙大系[80]を参考にして,手作業で行動に関連する用語を習慣行動ごとに選定したものを 登録する.
(3) 単語・生活習慣モデル構築処理
本処理では,単語ベクトルと生活習慣ベクトルを使用して各職業のクラスタごとに学習 することで,単語・生活習慣モデルを構築する.モデルの構築には,人工知能分野で使用 される分類手法であるSVM(Support Vector Machine)[86]を採用する.なお,学習には,単 語ベクトルと生活習慣ベクトルを結合した単語・生活習慣ベクトルを使用する.クラスタ 𝐶𝑗𝑜𝑏𝑘に属するユーザ user における単語・生活習慣ベクトル𝑉𝑙𝑖𝑓𝑒𝑠𝑡𝑦𝑙𝑒(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟)を式 4.5に 示す.
𝑉𝑙𝑖𝑓𝑒𝑠𝑡𝑦𝑙𝑒(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟)
= {𝑃𝑜𝑠𝑡𝑤𝑜𝑟𝑑1(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟), ⋯ , 𝑃𝑜𝑠𝑡𝑤𝑜𝑟𝑑𝑖(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟), 𝑃𝑜𝑠𝑡𝑏𝑒ℎ𝑎𝑣𝑖𝑜𝑟10(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟), ⋯, 𝑃𝑜𝑠𝑡𝑏𝑒ℎ𝑎𝑣𝑖𝑜𝑟623(𝐶𝑗𝑜𝑏𝑘, 𝑢𝑠𝑒𝑟)}
(4.5)
4.3.3 投稿時間帯モデル構築機能
本処理では,投稿時間帯ベクトルを使用して各職業のクラスタごとに学習することで投 稿時間帯モデルを構築する.モデルの構築には,VSM [29]を採用する.なお,学習には,m
90
(推定対象の職業数)×n(各職業のクラスタ数)個のクラスタの中心ベクトルを使用する.
中心ベクトルのイメージを図 4.6に示す.
図 4.6 中心ベクトルのイメージ
図 4.6は,学生の中心ベクトルで,クラスタ1は,就寝は早く,起床も早い高校生クラ スタの中心ベクトル,クラスタ2は,就寝が遅く,起床も遅い大学生クラスタの中心ベク トルであると考えられる.