「自分の好みの日本酒を機械学習で見つけよう」第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