読者です 読者をやめる 読者になる 読者になる

ゆるふわめも

in Kyoto or Tokyo

Mecabに文字列のデータ一覧を渡して単語ごとに分割させる(分かち書き)

やること

私は宇宙人です。 -> '私 は 宇宙人 です。' と変換していく。 前回クロールしてアドレス一覧からページのテキストを拾ってきて '.csv' に保存したので今回はそれらのテキストを分割して word2vecなどの前処理に入れられる状態で保存する。

前回

paper.hatenadiary.jp

MeCabインストール

Ubuntu 14.04, Mac OS X に MeCab をインストール - ゆるふわめも

分かち書き

コード

# coding: utf-8
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import scipy as sc
import seaborn as sns
import MeCab
import codecs as cd

# 適当なデータをロード
# データは ['サイト名', 'アドレス', 'テキスト']
desc_data = pd.read_csv('site_descriptions.csv', delimiter='\t')
desc_data = desc_data.ix[:,['name','adress','site_description']]

# mecab
m0 = MeCab.Tagger('-Owakati')
wakachi_list = []
for i, di in enumerate(desc_data['site_description']):
    try:
        w = m0.parse(di)
    except:
        w = di
        
    if 'list' in str(type(w)):
        print('No.', i, w[:30])
        wakachi_list += [w.split(' ')]
    else:
        print('X No.', i, w)
        wakachi_list += [w]

    
# save data
wakachi_data = pd.DataFrame(wakachi_list)
wakachi_data.columns = ['wakachi']
wakachi_data = pd.concat([desc_data.ix[:i, :], wakachi_data], axis=1)
wakachi_data.to_csv('site_descriptions_wakachi.csv', delimiter=',')

データ site_descriptions.csv は ['サイト名', 'アドレス', 'テキスト']が書いてある。 そこから分かち書きを生成していく(w = m0.parse(di))。 テキスト取得に失敗している場合はそのままスキップ。

wakachi_data.to_csv('site_descriptions_wakachi.csv', delimiter=',')

でデータを保存する。最終的な出力は以下のような感じになっている。 ※実際にはナイキでなく他ページでやってます。

f:id:misos:20161023132512p:plain