LoginSignup
6
6

More than 5 years have passed since last update.

awkでテキストから集計する

Posted at

awkの勉強がてらに面白そうなデータ(xvideosのデータベース)があったので挑戦。
※awkと書いていますがgawk(4.1.0)を使っています。

扱うデータ

http://info.xvideos.com/db/ よりzipをダウンロードし、展開する。
※リンク先は非18禁です
中身は2014/1/4時点で約1.7GB,約380万件ほどのテキストデータ。

データは以下のような形式で;区切りで保存されており、
フィールドは順にURL,タイトル,時間,サムネイル画像URL,埋め込み用コード,タグ,ジャンルとなっている。

ジャンルの出現頻度を集計する

gawk -F ";" '{c[$7]++} END{for(i in c)printf("%8d:%s\n",c[i],i)}' xvideos.com-db.csv | sort -r

タグの出現頻度を集計する

タグはジャンルとは異なり、カンマ区切りで複数個出現することがあるので、splitで区切って処理していきます。
ワンライナーで書くと流石に長いのでawk部分を別記載にします。

xvideos.awk
#! /usr/local/bin/gawk -f
# xvideos.awk

{
    num=split($6,tags,",")
    if (num > 0) {
        for(i=1;i<=num;i++) count[tags[i]]++
    }
}
END {
    for(tag in count) {
        if(count[tag] >= 1000) printf("%8d:%s\n",count[tag],tag)
    }
}

集計の実行&結果のソート

gawk -F ";" -f xvideos.awk xvideos.com-db.csv | sort -r

タグの数が多すぎる(sortがダルい)ので上記処理では1000回以上出現タグに絞っています。

結果について

qiitaはポルノ禁止になっており、
ここでの結果のような単語だけでもアウトになるかどうか分からなかったので、
結果は別途以下に貼りつけました。結果を楽しむ趣旨でもないので。
https://gist.github.com/anonymous/8252544

参考

単語頻度カウント - 日本 GNU AWK ユーザー会 0.2 - http://d.hatena.ne.jp/Rocco/20071127/p2

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6