March 31, 2013

XVIDEOS' Entire Video Databaseのタグの頻度と共起

こういう単語載せたらブログ消されんのかな.まあいいか.2013/3/29にダウンロードしたファイル.関連→XVIDEOS' Entire Video Databaseのタグからトピックモデルの構築

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

xvideos.com-db.csvは「;」区切りで「video URL;title;duration;thumb URL;embed code;tags;genre」.tagsは「,」区切り.

頻度上位20件



共起頻度上位20件



頻度の計算



共起頻度の計算


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というジャンルが付いている.あ,トピック数適当に決めちゃったけど,ここらへんも考慮すればよかったか.ユニークなジャンル名もリンク先に.

Pythonの辞書をvalue値でソートするコードの実行時間の比較

get,lambda,itemgetter,zipを使ったvalue値でのソートを比較してみた.
以下コード.



timeitで計測.

>>> import timeit
>>> timeit.timeit(stmt='get.sort_test()', setup='import get', number=10000)
0.6642911434173584
>>> timeit.timeit(stmt='itemgetter.sort_test()', setup='import itemgetter', number=10000)
0.6961650848388672
>>> timeit.timeit(stmt='zip.sort_test()', setup='import zip', number=10000)
0.6995840072631836
>>> timeit.timeit(stmt='lamb.sort_test()', setup='import lamb', number=10000)
0.7502970695495605

ただし
  • zipの場合(value, key)のリストになる
  • getの場合keyのリストになる(value値は返さない)
に注意.

よく見かけるのはlambdaを使うものだが,同じ結果を得たかったらoperator.itemgetterを使うほうが少し早い.上位だけ取ってきたいときはgetが早いかも.

他にもやり方があるだろうか.

March 27, 2013

bl.ocks.orgで青空文庫で変なルビ使いをする作者の関係の可視化

bl.ocks.orgを使って,青空文庫のルビを抽出し,「漢字《ひらがな》」でないルビを見つけ,同じようなルビの使い方をしている作者の関係を可視化してみた.「変な」は語弊があるかも.D3.js.


Authors Relationships based upon Not-kanji-hiragana Rubis
http://bl.ocks.org/satomacoto/5251189
このページは以下のGistから生成
https://gist.github.com/satomacoto/5251189

bl.ocks.orgはGitHub Gistビューア.Gistにいくつかのファイルを置くとwebページとして見れるようになる.Gistの基本構成は以下.

  • index.html
  • README.md
  • thumbnail.png

index.htmlに表示させるソースコード,README.mdにMarkdown形式で説明を記述,thumbnail.pngGist一覧のためのサムネール画像.Gistに他のファイルを置くと相対的にリンクを張ることができる.絶対パスも記述可能.Gistをブログのように使えるかも.


作者の同じようなルビ使い関係は,たとえば「亜米利加《アメリカ》」というルビを二人の作者が振っていたらその作者同士に関係がある,と定義した.重み付けなど詳細はまた他で.可視化したのはすべての関係ではない.同じようなルビの使い方をしている作者の関係からなんか他の作者の関係(同じ時代とか思想とか)見えないかなと考えていたのだけどどうだろうか.ちなみに変わったルビ使いの例を少しだけ挙げると
003659 000050 仏蘭西 フランス
046340 001234 亜米利加人 ヤンキー
048416 000050 遍路芸人 ジプシイ
050424 001421 辯證的な性質 デイヤレクテイツシエナツール
000085 000879 童貞聖麻利耶様 ビルゼンサンタマリヤさま
001317 000125 吾れ直ちに悪魔と一つになるを誰が妨ぎ得べきや ヴァス・ヒエルテ・ミッヒ・ダス・イヒス・ニヒト・ホイテ・トイフェル
といったようなものがある.クラスタリングして色変えればよかったかも.


あと4日で無職\(^o^)/