こんばんわ!Keisukeです!
前回, 口コミを取得したので
今回は, その口コミを形態素分析してみたいと思います!
① 口コミのデータを取得
② 口コミのデータを形態素分析し 分解した状態で表示する
③ 更に名詞の頻出頻度を表示する
以下コード
***************************
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#*****************************************************************************************
# ぐるなびWebサービスの応援口コミAPIを実行しハンバーグの口コミを取得しパースするプログラム
# 注意:アクセスキーはユーザ登録後に発行されるキーを指定してください。
#*****************************************************************************************
import sys
import urllib.parse
import urllib.request
import json
from janome.tokenizer import Tokenizer
from janome.analyzer import Analyzer
from janome.tokenfilter import *
####
# 変数の型が文字列かどうかチェック
####
def is_str( data = None ) :
if isinstance( data, str ) or isinstance( data, int ) :
return True
else :
return False
if __name__ == ‘__main__’:
####
# 初期値設定
####
# APIアクセスキー
keyid = “4b069e059d0923043fca1f5e6b4f20ce”
# エンドポイントURL
url = “https://api.gnavi.co.jp/PhotoSearchAPI/20150630/”
# メニュー
menu_name = u”カレー”
#文字コード
encoding = ‘utf-8’
latitude = “43.067656”
# 経度
longitude = “141.350857”
# 範囲
# 1:300m、2:500m、3:1000m、4:2000m、5:3000m
range_m = “1”
####
# APIアクセス
####
# URLに続けて入れるパラメータを組立
query = [
( “format”, “json” ),
( “keyid”, keyid ),
( “latitude”, latitude ),
( “longitude”, longitude ),
( “range”, range_m ),
( “menu_name”, menu_name.encode(encoding) ),
]
# URL生成
url += “?{0}”.format( urllib.parse.urlencode( query ) )
# API実行
try :
result = urllib.request.urlopen( url ).read()
except ValueError :
print(u”APIアクセスに失敗しました。”)
####
# 取得した結果を解析
####
data = json.loads( result )
print(“—————–口コミを表示します!—————–“)
#print(data)
# エラーの場合
if “error” in data :
if “message” in data :
print(u”{0}”.format( data[“message”] ))
else :
print(u”データ取得に失敗しました。”)
# ヒット件数取得
total_hit_count = None
if “total_hit_count” in data[“response”] :
total_hit_count = data[“response”][“total_hit_count”]
#ページごとの件数を取得
total_hit_count = None
if “total_hit_count” in data[“response”] :
total_hit_count = data[“response”][“total_hit_count”]
# ヒット件数が0以下、または、ヒット件数がなかったら終了
if total_hit_count is None or total_hit_count <= 0 or total_hit_count is None or total_hit_count <= 0 :
print(u”指定した内容ではヒットしませんでした。”)
# ヒット件数表示
print(“{0}件ヒットしました。”.format( total_hit_count ))
print(“”)
print(“—-“)
# 出力件数
disp_count = 0
com = []
sname = []
# 応援口コミデータ取得
for i in range( total_hit_count ) :
photo = data[“response”][“{0}”.format(i)][“photo”]
line = []
id = “”
name = “”
mname = “”
comment = “”
# 店舗番号
if “shop_id” in photo and is_str( photo[“shop_id”] ) :
id = photo[“shop_id”]
line.append( id )
# 店舗名
if “shop_name” in photo and is_str( photo[“shop_name”] ) :
name = photo[“shop_name”]
sname.append(name)
line.append( name )
# メニュー名
if “menu_name” in photo and is_str( photo[“menu_name”] ) :
mname = photo[“menu_name”]
line.append( mname )
# コメント
if “comment” in photo and is_str( photo[“comment”] ) :
comment = photo[“comment”]
line.append( comment )
com.append(comment)
# タブ区切りで出力
print(“\t”.join( line ))
print(“**********************************”,”\n”)
disp_count += 1
# 出力件数を表示して終了
print(“—-“)
print(u”{0}件出力しました。”.format( disp_count ))
print(“—————–形態素分析を開始します!—————–“)
t = Tokenizer()
token_filters = [POSKeepFilter(‘名詞’), TokenCountFilter()]
a = Analyzer(token_filters=token_filters)
for i in range(len(com)):
print(sname[i],’\n’)
print(“**********************************”,”\n”)
print(com[i],’\n’)
print(“+++++++++++++++++++++++分解+++++++++++++++++++++++”,”\n”)
for token in t.tokenize(com[i]):
print(token)
print(“**********************************”,”\n”)
print(“+++++++++++++++++++++++名詞頻度+++++++++++++++++++++++”,”\n”)
for k, v in a.analyze(com[i]):
print(‘%s: %d’ % (k, v))
print(“**********************************”,”\n”)
***************************
実行結果
—————–口コミを表示します!—————–
4件ヒットしました。
—-
7104243 スープカレーとカレーの店 天馬 海の幸の海鮮スープカレー 見た目にも鮮やかで、えび・ムール貝・あさ り・いかの入ったシーフードカレーですが、大きく切った野菜もごろごろ入っていて、食べ応えもあり大満足です。
**********************************
7104243 スープカレーとカレーの店 天馬 豚の角煮温野菜のスープカレー(ポークスープ) よく煮込まれた柔らかい豚 の角煮とスープカレーならではの大きな野菜がたっぷりで、スパイスの効いたサラサラスープが具材と良く合います。
**********************************
h957801 カリーハウス コロンボ ハンバーグカレー ジューシーなハンバーグが、この店特有の甘口カレーの風味と 相まって、とびきりの美味さを醸し出している。
**********************************
6295315 まんざら ざんぎカレー 久しぶりに美味しいカレー&ざんぎを頂きました。
まろやかでコクのあるカレーと、カラっと揚がった味付ざんぎは人におすすめできる美味しさです。
ランチメニューで限定10食なのでお早めに。
**********************************
—-
4件出力しました。
—————–形態素分析を開始します!—————–
スープカレーとカレーの店 天馬
**********************************
見た目にも鮮やかで、えび・ムール貝・あさり・いかの入ったシーフードカレーですが、大きく切った野菜もごろごろ入って いて、食べ応えもあり大満足です。
+++++++++++++++++++++++分解+++++++++++++++++++++++
見た目 名詞,一般,*,*,*,*,見た目,ミタメ,ミタメ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
も 助詞,係助詞,*,*,*,*,も,モ,モ
鮮やか 名詞,形容動詞語幹,*,*,*,*,鮮やか,アザヤカ,アザヤカ
で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
、 記号,読点,*,*,*,*,、,、,、
えび 名詞,一般,*,*,*,*,えび,エビ,エビ
・ 記号,一般,*,*,*,*,・,・,・
ムール貝 名詞,一般,*,*,*,*,ムール貝,ムールガイ,ムールガイ
・ 記号,一般,*,*,*,*,・,・,・
あさり 名詞,一般,*,*,*,*,あさり,アサリ,アサリ
・ 記号,一般,*,*,*,*,・,・,・
いか 名詞,一般,*,*,*,*,いか,イカ,イカ
の 助詞,格助詞,一般,*,*,*,の,ノ,ノ
入っ 動詞,自立,*,*,五段・ラ行,連用タ接続,入る,ハイッ,ハイッ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
シーフード 名詞,一般,*,*,*,*,シーフード,シーフード,シーフード
カレー 名詞,一般,*,*,*,*,カレー,カレー,カレー
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
が 助詞,接続助詞,*,*,*,*,が,ガ,ガ
、 記号,読点,*,*,*,*,、,、,、
大きく 形容詞,自立,*,*,形容詞・イ段,連用テ接続,大きい,オオキク,オーキク
切っ 動詞,自立,*,*,五段・ラ行,連用タ接続,切る,キッ,キッ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
野菜 名詞,一般,*,*,*,*,野菜,ヤサイ,ヤサイ
も 助詞,係助詞,*,*,*,*,も,モ,モ
ごろごろ 副詞,一般,*,*,*,*,ごろごろ,ゴロゴロ,ゴロゴロ
入っ 動詞,自立,*,*,五段・ラ行,連用タ接続,入る,ハイッ,ハイッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
い 動詞,非自立,*,*,一段,連用形,いる,イ,イ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
、 記号,読点,*,*,*,*,、,、,、
食べ 動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
応え 名詞,一般,*,*,*,*,応え,コタエ,コタエ
も 助詞,係助詞,*,*,*,*,も,モ,モ
あり 動詞,自立,*,*,五段・ラ行,連用形,ある,アリ,アリ
大 接頭詞,名詞接続,*,*,*,*,大,ダイ,ダイ
満足 名詞,サ変接続,*,*,*,*,満足,マンゾク,マンゾク
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。 記号,句点,*,*,*,*,。,。,。
**********************************
+++++++++++++++++++++++頻度+++++++++++++++++++++++
見た目: 1
鮮やか: 1
えび: 1
ムール貝: 1
あさり: 1
いか: 1
シーフード: 1
カレー: 1
野菜: 1
応え: 1
満足: 1
**********************************
スープカレーとカレーの店 天馬
**********************************
よく煮込まれた柔らかい豚の角煮とスープカレーならではの大きな野菜がたっぷりで、スパイスの効いたサラサラスープが具 材と良く合います。
+++++++++++++++++++++++分解+++++++++++++++++++++++
よく 副詞,一般,*,*,*,*,よく,ヨク,ヨク
煮込ま 動詞,自立,*,*,五段・マ行,未然形,煮込む,ニコマ,ニコマ
れ 動詞,接尾,*,*,一段,連用形,れる,レ,レ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
柔らかい 形容詞,自立,*,*,形容詞・アウオ段,基本形,柔らかい,ヤワラカイ,ヤワラカイ
豚 名詞,一般,*,*,*,*,豚,ブタ,ブタ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
角 名詞,一般,*,*,*,*,角,カク,カク
煮 動詞,自立,*,*,一段,連用形,煮る,ニ,ニ
と 助詞,並立助詞,*,*,*,*,と,ト,ト
スープ 名詞,一般,*,*,*,*,スープ,スープ,スープ
カレー 名詞,固有名詞,地域,一般,*,*,カレー,カレー,カレー
ならでは 名詞,接尾,一般,*,*,*,ならでは,ナラデハ,ナラデワ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
大きな 連体詞,*,*,*,*,*,大きな,オオキナ,オーキナ
野菜 名詞,一般,*,*,*,*,野菜,ヤサイ,ヤサイ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
たっぷり 副詞,助詞類接続,*,*,*,*,たっぷり,タップリ,タップリ
で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
、 記号,読点,*,*,*,*,、,、,、
スパイス 名詞,一般,*,*,*,*,スパイス,スパイス,スパイス
の 助詞,格助詞,一般,*,*,*,の,ノ,ノ
効い 動詞,自立,*,*,五段・カ行イ音便,連用タ接続,効く,キイ,キイ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
サラサラスープ 名詞,一般,*,*,*,*,サラサラスープ,*,*
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
具 名詞,一般,*,*,*,*,具,グ,グ
材 名詞,接尾,一般,*,*,*,材,ザイ,ザイ
と 助詞,格助詞,一般,*,*,*,と,ト,ト
良く 副詞,一般,*,*,*,*,良く,ヨク,ヨク
合い 動詞,自立,*,*,五段・ワ行促音便,連用形,合う,アイ,アイ
ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
。 記号,句点,*,*,*,*,。,。,。
**********************************
+++++++++++++++++++++++頻度+++++++++++++++++++++++
豚: 1
角: 1
スープ: 1
カレー: 1
ならでは: 1
野菜: 1
スパイス: 1
サラサラスープ: 1
具: 1
材: 1
**********************************
カリーハウス コロンボ
**********************************
ジューシーなハンバーグが、この店特有の甘口カレーの風味と相まって、とびきりの美味さを醸し出している。
+++++++++++++++++++++++分解+++++++++++++++++++++++
ジューシー 名詞,一般,*,*,*,*,ジューシー,*,*
な 助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ
ハンバーグ 名詞,一般,*,*,*,*,ハンバーグ,ハンバーグ,ハンバーグ
が 助詞,格助詞,一般,*,*,*,が,ガ,ガ
、 記号,読点,*,*,*,*,、,、,、
この 連体詞,*,*,*,*,*,この,コノ,コノ
店 名詞,一般,*,*,*,*,店,ミセ,ミセ
特有 名詞,一般,*,*,*,*,特有,トクユウ,トクユー
の 助詞,連体化,*,*,*,*,の,ノ,ノ
甘口 名詞,一般,*,*,*,*,甘口,アマクチ,アマクチ
カレー 名詞,一般,*,*,*,*,カレー,カレー,カレー
の 助詞,連体化,*,*,*,*,の,ノ,ノ
風味 名詞,一般,*,*,*,*,風味,フウミ,フーミ
と 助詞,格助詞,一般,*,*,*,と,ト,ト
相まって 副詞,一般,*,*,*,*,相まって,アイマッテ,アイマッテ
、 記号,読点,*,*,*,*,、,、,、
とびきり 副詞,助詞類接続,*,*,*,*,とびきり,トビキリ,トビキリ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
美味 形容詞,自立,*,*,形容詞・アウオ段,ガル接続,美味い,ウマ,ウマ
さ 名詞,接尾,特殊,*,*,*,さ,サ,サ
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
醸し出し 動詞,自立,*,*,五段・サ行,連用形,醸し出す,カモシダシ,カモシダシ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
いる 動詞,非自立,*,*,一段,基本形,いる,イル,イル
。 記号,句点,*,*,*,*,。,。,。
**********************************
+++++++++++++++++++++++頻度+++++++++++++++++++++++
ジューシー: 1
ハンバーグ: 1
店: 1
特有: 1
甘口: 1
カレー: 1
風味: 1
さ: 1
**********************************
まんざら
**********************************
久しぶりに美味しいカレー&ざんぎを頂きました。
まろやかでコクのあるカレーと、カラっと揚がった味付ざんぎは人におすすめできる美味しさです。
ランチメニューで限定10食なのでお早めに。
+++++++++++++++++++++++分解+++++++++++++++++++++++
久しぶり 名詞,一般,*,*,*,*,久しぶり,ヒサシブリ,ヒサシブリ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
美味しい 形容詞,自立,*,*,形容詞・イ段,基本形,美味しい,オイシイ,オイシイ
カレー 名詞,一般,*,*,*,*,カレー,カレー,カレー
& 記号,一般,*,*,*,*,&,アンド,アンド
ざんぎを 名詞,一般,*,*,*,*,ざんぎを,*,*
頂き 動詞,自立,*,*,五段・カ行イ音便,連用形,頂く,イタダキ,イタダキ
まし 助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 記号,句点,*,*,*,*,。,。,。
,*,* 記号,一般,*,*,*,*,
記号,空白,*,*,*,*,
,*,*
まろやか 名詞,形容動詞語幹,*,*,*,*,まろやか,マロヤカ,マロヤカ
で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
コク 名詞,一般,*,*,*,*,コク,コク,コク
の 助詞,格助詞,一般,*,*,*,の,ノ,ノ
ある 動詞,自立,*,*,五段・ラ行,基本形,ある,アル,アル
カレー 名詞,一般,*,*,*,*,カレー,カレー,カレー
と 助詞,並立助詞,*,*,*,*,と,ト,ト
、 記号,読点,*,*,*,*,、,、,、
カラ 名詞,一般,*,*,*,*,カラ,カラ,カラ
っと 助詞,格助詞,引用,*,*,*,っと,ット,ット
揚がっ 動詞,自立,*,*,五段・ラ行,連用タ接続,揚がる,アガッ,アガッ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
味 名詞,一般,*,*,*,*,味,アジ,アジ
付 名詞,接尾,一般,*,*,*,付,ヅケ,ズケ
ざんぎは 名詞,一般,*,*,*,*,ざんぎは,*,*
人 名詞,接尾,一般,*,*,*,人,ジン,ジン
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
おすすめ 名詞,サ変接続,*,*,*,*,おすすめ,オススメ,オススメ
できる 動詞,自立,*,*,一段,基本形,できる,デキル,デキル
美味し 形容詞,自立,*,*,形容詞・イ段,ガル接続,美味しい,オイシ,オイシ
さ 名詞,接尾,特殊,*,*,*,さ,サ,サ
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。 記号,句点,*,*,*,*,。,。,。
,*,* 記号,一般,*,*,*,*,
記号,空白,*,*,*,*,
,*,*
ランチ 名詞,一般,*,*,*,*,ランチ,ランチ,ランチ
メニュー 名詞,一般,*,*,*,*,メニュー,メニュー,メニュー
で 助詞,格助詞,一般,*,*,*,で,デ,デ
限定 名詞,サ変接続,*,*,*,*,限定,ゲンテイ,ゲンテイ
1 名詞,数,*,*,*,*,1,イチ,イチ
0 名詞,数,*,*,*,*,0,ゼロ,ゼロ
食 名詞,接尾,助数詞,*,*,*,食,ショク,ショク
な 助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ
ので 助詞,接続助詞,*,*,*,*,ので,ノデ,ノデ
お 接頭詞,名詞接続,*,*,*,*,お,オ,オ
早め 名詞,一般,*,*,*,*,早め,ハヤメ,ハヤメ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
。 記号,句点,*,*,*,*,。,。,。
**********************************
+++++++++++++++++++++++頻度+++++++++++++++++++++++
久しぶり: 1
カレー: 2
ざんぎを: 1
まろやか: 1
コク: 1
カラ: 1
味: 1
付: 1
ざんぎは: 1
人: 1
おすすめ: 1
さ: 1
ランチ: 1
メニュー: 1
限定: 1
1: 1
0: 1
食: 1
早め: 1
**********************************
数値などは, 一つ一つ分解されてしまうのは少しネックですね!
改善したいな…
[今日の達成]
・口コミを形態素分析した!
・頻出頻度を表示した!
[今日の未消化]
・数字がかかわる形態素分析を改善する