Quantcast
Channel: ウィリアムのいたずらの、まちあるき、たべあるき
Viewing all articles
Browse latest Browse all 7269

「〜を買っている人は、〜も買っている」とか、「〜は高評価」の研究

$
0
0
■「〜を買っている人は、〜も買っている」

 「Aを買っている人は、Bも買っている」という分析は、一般には、バスケット分析とか、協調フィルタリングとかいう分野になります。


 しかし、こういう複雑な分析が必要なのは、

    AとBの商品が決まっていない(バスケット分析)
    それを買った人の類似性を評価している(協調フィルタリング)

 から、話を難しくしているだけで、



 Aという商品が決まって、「Aを買った人は、どの商品を買っていますか?」というだけなら、SQLでできます。
 たとえば、以下のような受注表があったとします。顧客IDと商品Noが入っている(実際には受注表に顧客ID,商品Noは受注明細に入っていることが多いが、ここでは、それをJoinしたViewで考えているものとします)


この場合、


select distinct shohinNo from jyutyu where shohinNo <> 1 and kokyakuID in (select kokyakuID from jyutyu where shohinNo = 1 )

(実際には<>は、半角)

とすれば、1番を買った人は、他のどの商品を買っているかを出せます。
さっきの、「Aを買っている人は」のAが、上記のSQLの1にあたります。
なので、他の商品にしたい場合は、1のところを直すことになります(1は2箇所)。



一応SQLを説明すると、「Aを買っている人は」の部分が、サブクエリーの
(select kokyakuID from jyutyu where shohinNo = 1 )
であり、ここで顧客IDを出すことで、その人たちが何を買っているかを絞り込める。
ただ、これだと、違う顧客が同じ商品を買ってしまうと、商品IDが何回も出てくるので
distinctしてる。また、shohinNo <> 1でA自身を除いている。

 今回は、商品Aそのものでやったけど、カテゴリーとか、もうすこし、大きな区分でやってもいい。

 ただし、購入者の類似性は見ていない。

 だから、「風邪ぐすりを買った人は」とかやると、胃薬、毛はえ薬、ばんそこう・・・いろいろ出てきてしまう(風邪薬は誰でも買うから)。でも、そのほうがいいケースもある(どういう人なのか、わからない場合、とりあえず、可能性を全部出したほうがいい)



■「〜は高評価」

 これをまじめにやると、テキストマイニングとかになります。

 でも、ものすごく単純にやるなら、こんなかんじで出来るかも・・・

CaboCha/南瓜を使って、対象となるテキストを解析します
  すみません、今、南瓜が動かないので(なんでなろ〜)
http://code.google.com/p/cabocha/
 にあるサンプルで説明します。(以下太字はサンプル)

% cabocha -f1
太郎は花子が読んでいる本を次郎に渡した
* 0 5D 0/1 1.062087
太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
* 1 2D 0/1 1.821210
花子 名詞,固有名詞,人名,名,*,*,花子,ハナコ,ハナコ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
* 2 3D 0/2 0.000000
読ん 動詞,自立,*,*,五段・マ行,連用タ接続,読む,ヨン,ヨン
で 助詞,接続助詞,*,*,*,*,で,デ,デ
いる 動詞,非自立,*,*,一段,基本形,いる,イル,イル
* 3 5D 0/1 0.000000
本 名詞,一般,*,*,*,*,本,ホン,ホン
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
* 4 5D 1/2 0.000000
次 名詞,一般,*,*,*,*,次,ツギ,ツギ
郎 名詞,一般,*,*,*,*,郎,ロウ,ロー
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
* 5 -1D 0/1 0.000000
渡し 動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
EOS


・Dの部分をもとに、係り受け構造を出します。

★「太郎」「は」→「渡し」「た」
★「花子」「が」→「読ん」「で」「いる」→★「本」「を」→「渡した」
★「次郎」「に」→「渡し」「た」

・この中で、名詞(★がついているもの)について、
    低評価の語にかかっているものをマイナス
    高評価の語にかかっているものをプラス
 とします。高評価、低評価語の辞書はあらかじめ作っておきます。

 http://thesaurus.weblio.jp/

 などを使って、「好き」とか「良い」とかいれて、高評価の類義語を調べていって、辞書を作るとか・・

・この名詞と評価を保存しておく

なかんじで、たぶん出来ると思う。やってないので、確証はない。


Viewing all articles
Browse latest Browse all 7269

Trending Articles