「自分の好みの日本酒を機械学習で見つけよう」第2回目はレビューをmecabで分かち書きします。
レビューコメントは前回と同じようにこちらのサイトから、前回作ったsake.csvを基に銘柄ごとにスクレイピングして、review.tsvを作ります。
中身はこんな感じ
code meigara review datetime
4 鰊御殿 山田錦 4合瓶900円で安売りだったので買ってみました。あまり期待してなかったのですが、わりと普通に旨かったです。香はほどよく、アルコール感もなく飲みやすいです。ただこれといった特徴もないです。 2014-09-14 10:32:46
ソースはこちら
# -*- coding:utf-8 -*-
import urllib.request
import codecs
import csv
import html5lib
from bs4 import BeautifulSoup
f = codecs.open('review.tsv', 'w', 'utf-8')
f.write("code\tmeigara\treview\tdatetime" "\n")
csvf = open('sake.csv', 'r')
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.63 Safari/537.36'}
tpl_url='http://www.sakeno.com/meigara/{0}'
reader = csv.reader(csvf)
header = next(reader)
count = 0
for row in reader:
url=tpl_url.format( row[0] )
req = urllib.request.Request(url, headers = headers)
soup = BeautifulSoup(urllib.request.urlopen(req).read(), "html5lib")
dl = soup.find('dl', {'class':'voiceloop'})
i = 0
if dl is not None:
dts = dl.findAll('dt')
dds = dl.findAll('dd')
for dt in dts:
meigara = dt.findAll('a')[1].string
review = dds[i]
for e in review.findAll('br'):
e.extract()
datetime = dds[i].find('div', {'class': 'voicemember'})
for e in datetime.findAll('a'):
e.extract()
datetime = datetime.text
datetime = datetime.split("(")[1]
datetime = datetime.split(")")[0]
datetime = datetime.replace('年', '-')
datetime = datetime.replace('月', '-')
datetime = datetime.replace('日', '')
datetime = datetime.replace('時', ':')
datetime = datetime.replace('分', ':')
datetime = datetime.replace('秒', '')
for e in review.findAll('div'):
e.extract()
review = review.text
review = review.replace("\n", ' ')
i += 1
print(row[0],meigara,review,datetime)
f.write(row[0] + "\t" + meigara + "\t"+ review +"\t"+ datetime + "\n")
f.close()
csvf.close()
こちらのreview.tsvのレビューコメントをmecabで分かち書きします。
その際に、お酒の銘柄名もちゃんと分かち書きされるようにmecabに辞書登録します。
インケンのマシンだとこんな感じ
$ /usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/ipadic -u /usr/local/lib/mecab/dic/sake.dic -f utf8 -t utf8 ~/Documents/sake/sake_mecab.csv $ vi /usr/local/etc/mecabrc #以下を追加 userdic = /usr/local/lib/mecab/dic/sake.dic
