LoginSignup
9
8

More than 5 years have passed since last update.

Pixivタグ検索結果からMeCab辞書を生成する

Last updated at Posted at 2014-04-19

概要

Pixivのタグ検索結果から、MeCabの辞書を生成・適用する。
特定用途に特化したテキストマイニングをするなら、ありかもしれない。
ピクシブ百科事典にまだ載っていないタグも取れる。
 ※実行環境はLinuxMint13(Ubuntu12.04 LTS)です。

方法

01.Pixiv検索結果のデータを取得する。

-> Pixiv検索結果をCSVダウンロードするHTMLファイルを用意した

02.取得データと同じ階層に下記Rubyコードを配置する。

※取得データのファイル名は「INPUT.csv」にすること。

pxcsv2mecab.rb
# coding: UTF-8

require 'csv'

#しきい値(出現回数が指定範囲外のタグは出力しない)
MIN_COUNT = ARGV[0] || 3
#入力ファイル名
INPUT_CSV = ARGV[1] || 'INPUT.csv'
#出力ファイル名
OUTPUT_CSV = ARGV[2] || 'pixiv.csv'
#表示しないタグのパターン
UNDISP_KEYPATTERN = Regexp.new (ARGV[3] || "漫画|落書き")

h = {}
h.default = 0
CSV.foreach(INPUT_CSV, encoding: "UTF-8") do |row|
    row[13].split(' ').each do |item|
        h[item.downcase] += 1
    end
end

CSV.open(OUTPUT_CSV, "wb") do |csv|
    h.sort_by{|key, cnt|
        -cnt
    }.each do |set|
        break if (set[1] < MIN_COUNT)
        next if (set[0] =~ UNDISP_KEYPATTERN)
        word = set[0]
        cost = [-32768, (6000 - 200 *(word.length**1.3))].max.to_i
        csv << [word,0,0,cost,'名詞','一般','*','*','*','*',word,'*','*','pixiv']
    end
end

puts 'end!'

※コスト計算方法はこちらのサイトを参考にさせてもらった。

03.Rubyコードを実行する。

ruby pxcsv2mecab.rb

※pixiv.csvが同階層に出力される。

04.MeCabの辞書を生成・適用する。

出力したCSVを使い、MeCab: 単語の追加方法の「ユーザ辞書への追加」を実行した。
ただし、辞書生成コマンドは下記のようにした。

/usr/local/libexec/mecab/mecab-dict-index -d/usr/local/lib/mecab/dic/ipadic -u pixiv.dic -f utf-8 -t utf-8 pixiv.csv

結果

にこまきは、ラブライブ!の矢澤にこと西木野真姫のカップリングです。
にこまき 名詞,一般,,,,,にこまき,,,pixiv
は 助詞,係助詞,,,,,は,ハ,ワ
、 記号,読点,,,,,、,、,、
ラブライブ! 名詞,一般,,,,,ラブライブ!,,,pixiv
の 助詞,連体化,,,,,の,ノ,ノ
矢澤にこ 名詞,一般,,,,,矢澤にこ,,,pixiv
と フィラー,,,,,,と,ト,ト
西木野真姫 名詞,一般,
,,,,西木野真姫,,,pixiv
の 助詞,連体化,
,,,,の,ノ,ノ
カップリング 名詞,一般,
,,,,カップリング,カップリング,カップリング
です 助動詞,
,,,特殊・デス,基本形,です,デス,デス
。 記号,句点,,,,,。,。,。
EOS

感想

ラブライブ百合SS内では、
にこちゃん・まきちゃん・えりち・のんたん等のニックネームが多用される。
SSのテキストマイニングするなら、こんなんじゃ甘いよ(棒読み)
Twitterのハッシュタグを集めなきゃ……(使命感)

9
8
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
9
8