March 31, 2013

XVIDEOS' Entire Video Databaseのタグからトピックモデルの構築

xvideos.com-db.csvのタグからLDAでトピックモデルを構築してみた.

XVIDEOS' Entire Video Database
http://info.xvideos.com/db/

xvideos.com-db.csvは「;」区切りで「video URL;title;duration;thumb URL;embed code;tags;genre」.tagsは「,」区切り.2013/3/29にダウンロードしたものでタグが付いているものの数は以下.

文書数: 2,561,079
単語種類数: 90,926

タグをドキュメントとしてLDAでトピックモデルを構築.最初MALLETを使ってみようとしたけどOutOfMemoryErrorで断念.今回は

GibbsLDA++ A C C++ Implementation of Latent Dirichlet Allocation (LDA) using Gibbs Sampling for Parameter Estimation and Inference
http://gibbslda.sourceforge.net/

を利用.つかいかたはsatomacoto: LDAの実装を試してみる

まずドキュメントを整形.trndocs.datを作る.フォーマットは以下.tagsの「,」をスペースに置き換えた.

% head trndocs.dat
2561079
gay
montenegro andrea
gay
sexy masturbation asian what waiting
lesbian movie brunettes most sensitive
porno amateur casero guarras
blonde babe masturbating movie sunset
blonde masturbation shower megan morning
teen hardcore blowjob amateur

モデル構築.trndocs.datはmodels/xvideos以下に置く.

src/lda -est -alpha 0.5 -beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 -dfile models/xvideos/trndocs.dat

途中で止めちゃったので再開.

src/lda -estc -dir models/xvideos -model model-00100 -niters 1000 -savestep 100 -twords 20

14時間位かかった.2.7GHz Intel Core i7.

結果は以下リンク先に.トピックの代表的な語だけ.

https://gist.github.com/satomacoto/5275776#file-model-final-twords

うまくいってるのかな...とりあえず,たとえば36番目のトピックに日本が多かったり,たとえば素人は全体的に出現しているけど同じトピックで強い語が若かったり熟れてたり,みたいな傾向は見られる.モデル構築を行うことで$P(word|topic)$,$P(topic|document)$も取れるので分類にはもちろん他のことにも...匿名でいいからユーザの履歴も公開されたら推薦やらにも...

ジャンルも付いているようなので教師データとして使えるかも.ちなみにジャンルらしきものは45種類あった.各ドキュメントに対してジャンルが振られている.ただし結構な割合でUnknow.

lesbian,toying,masturbating,from,teenies;Only;Girls
mature,garden,downblouse;Mature
milf,nikki,ex,payback;Milf
montenegro,andrea;Unknow
panties,brunette,fetish,pretty,girlgasms;Brunette

たとえばlesbian,toying,masturbating,from,teeniesってタグにはOnly Girlsというジャンルが付いている.あ,トピック数適当に決めちゃったけど,ここらへんも考慮すればよかったか.ユニークなジャンル名もリンク先に.