Rocchioでフィードバックを検索結果に反映する

# ユーザーから得たフィードバックを元に検索結果を改善する

類似性を用いた検索を行う場合、検索結果に意図したものと違う結果が含まれることはよくあると思います。
今回はユーザーからのフィードバックをデータとして持たせ改善する方法を試してみました。

## Rocchioというアルゴリズムを使う

フィードバックの仕組みとしてはポピュラーなものみたい。

``` math
\vec{q}m = \alpha\vec{q} + \frac{\beta}{|D_r|}\sum_{∀\vec{d_j}\epsilon D_r}\vec{d_j} - \frac{\gamma}{|D_n|}\sum_{∀\vec{d_j}\epsilon D_n}\vec{d_j}
```

新しいクエリ = (クエリに重みを掛けたもの) + (ポジティブドキュメントの中央値に重みをかけたもの)　- (ネガティブドキュメントの中央値に重みをかけたもの)

みたいな理解

![こんな感じ?](https://qiita-image-store.s3.amazonaws.com/0/51402/1448ac6e-1cd6-2135-0516-387988b725f5.png)


## pythonで試してみる

```python
D1 = np.array((1.5, 0.1, 0, 0, 0, 0)) # ネガティブドキュメント
D2 = np.array((1.5, 0.1, 0, 2.0, 2.0, 0)) # ネガティブドキュメント
D3 = np.array((1.5, 0, 3.0, 2.0, 0, 0)) # ポジティブドキュメント
D4 = np.array((1.5, 0, 4.0, 2.0, 0, 0)) # ポジティブドキュメント
D5 = (1.5, 0, 0, 6.0, 2.0, 0) # ネガティブドキュメント

# ポジティブドキュメントの中心
positive_centroid_vector = (D3 + D4) / 2

# ネガティブドキュメントの中心
negative_centroid_vector = (D1 + D2 + D5) / 3

# もととなる検索クエリ
original_query = np.array((1, 1, 1, 1, 0, 0))

# ハイパーパラメーター
alpha = 1
beta = 0.5
gamma = 0.3

new_query = (alpha * original_query) + (beta * positive_centroid_vector) - (gamma * negative_centroid_vector)
```

## scikit-learnで試してみる

dockerを使える状態なら、以下のコマンドでjupyter notebookが立ち上がる

```
docker run -it --rm -p 8888:8888 -v `pwd`:/home/jovyan/work shwld/jupyter-notebook start-notebook.sh
```


```python
import urllib.request
import tarfile
from IPython.core.display import display

# こちらのデータを使う http://blog.livedoor.jp/techblog/archives/65836960.html

urllib.request.urlretrieve('https://github.com/livedoor/datasets/raw/master/ldgourmet.tar.gz', './ldgourmet.tar.gz')
tar = tarfile.open('./ldgourmet.tar.gz', 'r:gz')
tar.extractall('ldgourmet')

# ストップワード辞書
urllib.request.urlretrieve('http://svn.sourceforge.jp/svnroot/slothlib/CSharp/Version1/SlothLib/NLP/Filter/StopWord/word/Japanese.txt', './stopwords.txt')
```

```python
# ダウンロードしたratingsデータを取り込む

import pandas as pd

ratings = pd.read_csv('./ldgourmet/ratings.csv')
ratings[['body']][:3]
```




<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>body</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>名前は忘れましたが、札幌で食べたお店よりも、全然こっちの方が美味しかったので、載せました。お...</td>
    </tr>
    <tr>
      <th>1</th>
      <td>味的には別に取り立てておいしいと言うこともない。けどまずくもない。  ギリシア料理といもの自...</td>
    </tr>
    <tr>
      <th>2</th>
      <td>意外と昔からあるお店で  近江牛、特選黒毛和牛など高級肉を扱ってるお肉屋さん  ランチも、き...</td>
    </tr>
  </tbody>
</table>
</div>



```python
pd.set_option('display.max_colwidth', -1)
```


```python
import MeCab
import mojimoji

tagger = MeCab.Tagger()
tagger.parse('')

f = open('/home/jovyan/src/stopwords.txt')
lines = f.readlines()
f.close()
```


```python
def getTokens(sentence):
    node = tagger.parseToNode(sentence)
    token_list = []
    while node:
        features = node.feature.split(',')
        token = node.surface if features[6] == '*' else features[6]
        if token != 'BOS/EOS' and token not in lines and features[0] != '記号' and token != '':
            token_list.append(mojimoji.han_to_zen(token))
        node = node.next
    return ' '.join(token_list)
```


```python
# レビューの内容を分かち書きする
rating_bodies = [rating for rating in ratings['body']]
tokens = [getTokens(rating_body) for rating_body in rating_bodies]
display(tokens[:3])
```


>    ['名前 は 忘れる ます た が 札幌 で 食べる た お 店 より も 全然 こっち の 方 が 美味しい た ので 載せる ます た お 店 も 綺麗 新規 オープン で ランチ は 結構 混む で いる ます 個人 的 に は ゆったり と 食事 できる ので 夜 の 方 が オススメ です 辛い さ が ０ 倍 から ５ ０ 倍 まで 選べる の も ＧＯＯＤ スープ も ２ 種類 みたい だ 友達 は 黄色 が オススメ と 言う て いる ます た が 自分 は 赤 の 方 を 食べる ます た かなり 美味しい た です 店長 も 好感 の もてる お 兄さん です た 駅 近く だ ので 一度 お 試し ある です',
     '味 的 に は 別 に 取り立てる て おいしい と 言う こと も ない けど まずい も ない ギリシア 料理 と いも の 自体 が あまり 特徴 が ない という こと も ある と 思う でも １ を 付ける て しまう た の は サービス の 悪い さ から 夜 に 行く た の です けど 何 の 説明 も ない パン を 出す れる た 本当は お かわり 自由 らしい けど それ について も 何 も 言う て くれる ない た ので 当然 こちら は 催促 する ない し パン の お かわり いかが です か の 一言 も ない た 女 二 人 で 料理 ３ 品 と ドリンク １つ づつで ７ ０ ０ ０ って かなり 高い ん じゃ ない 場所 は いい けど かなり 後悔 せめて 笑顔 と 最低限 の 説明 は 欲しい ところ',
     '意外と 昔 から ある お 店 で 近江 牛 特選 黒毛 和牛 など 高級 肉 を 扱う てる お 肉屋 さん ランチ も きっと おいしい と 思う 駐車 場 も ある ので 行う て みる ます た ステーキ 焼 ランチ １ ０ ５ ０ 円 とても リーズナブル 炭火 か な と 思う た ガス です た でる て くる た ランチ の お 肉 は ロース 肉 サシ が 入る てる ない 見た目 オージー ビーフ っぽい 食べる て みる た うーん これ は やっぱ 外国 産 の お 肉 みたい だ 味 が する 高い て おいしい の は 当たり前 １ ０ ０ ０ 円 ランチ と いう ども 肉 の 質 は 落とす て 欲しい ない な ～ と 思う た 他 に も お客 さん サラリーマン 系 が 来る てる た けど ランチ で も 和牛 サーロイン ステーキ とか 高い 値段 の を 注文 する て ます た 焼く 方 を 聞く て いる た ので 和牛 サーロイン ステーキ 等 の 場合 は 焼く て もらえる みたい です ね']



```python
# コサイン類似で類似するratingsデータを検索してみる
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

vectorizer = TfidfVectorizer()
rating_vectors = vectorizer.fit_transform(tokens)
query = vectorizer.transform([getTokens('インスタ映えするプリンをお手頃価格で')])
similarities = cosine_similarity(rating_vectors, query)
```


```python
# 検索結果を確認する
results = ratings.copy()
results['similarity'] = similarities.flatten()
results = results.sort_values(by='similarity', ascending=False)
display(results[['body', 'similarity']][:10])
```


<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>body</th>
      <th>similarity</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>122941</th>
      <td>お店は洒落ています。コースを頼んだのですが、見映えは良いけど味は普通です。昔はおいしく感じたのですが・・・店員の対応もイマイチで残念でした。</td>
      <td>0.321380</td>
    </tr>
    <tr>
      <th>106940</th>
      <td>かなり昔からある老舗ラーメン店です。  以前にも何度か食べたことがありますが、あまりとりたてた印象がありません。  別に変わり映えのない何でもないラーメンです。  雰囲気は好きなので、もうひとつ味に「何か」があるといい感じになるのですが。</td>
      <td>0.275912</td>
    </tr>
    <tr>
      <th>22573</th>
      <td>雷門とオレンジ通りの間の通りにあるお店で、『グリーンベル』のすぐ近くにあります。このお店の存在は知っていたのですが、今まで立ち寄るタイミングがありませんでした。この時は飲んだ帰りだったので、甘いもの欲しさに購入して帰ることにしました。ちなみに、店先においてある椅子に座って食べることもできます。  （全写真はBlogにて公開しています。よろしかったら、そちらもご覧ください。）    いろいろな種類があり、シルクプリン、紫芋プリン、コーヒープリン、キャラメルアーモンドプリン、白ゴマプリン、黒ゴマプリン、ほうじ茶プリン、抹茶プリン、チョコプリンの9種類でした。    今回初めてということもあり、まずオーソドックスな「シルクプリン（300円）」と店員さんのおススメだった「コーヒープリン（300円）」を購入しました。    どちらのプリンも玉子たっぷり系のプリンではなく、なめらか系のプリンでした。    ちょっと残りの7種類も気になるので、どこかで制覇したいと思います。</td>
      <td>0.241746</td>
    </tr>
    <tr>
      <th>178891</th>
      <td>手頃な価格でうなぎが食べられます。以上。</td>
      <td>0.240420</td>
    </tr>
    <tr>
      <th>41881</th>
      <td>ココは東急ストア（SHOPPING AOYAMA）の建物１階の中にあるプリン店です。  ハチ公バス「南青山三丁目交差点」の停留所を降りたら徒歩0分、東京メトロ銀座線「外苑前」3番出口から徒歩3分の場所にあります。    ココのプリンは卵を使わないタイプで、良質の大豆を使用したプリンが全9種類あり全て￥294です。  今回購入したのは、とうふのプリン￥294・胡麻おからのプリン￥294をテイクアウトしました。  店内で食べるならコーヒーか烏龍茶をサービスしてくれます。    ・他にバリエーションは、  ・とうふ＆黒豆のプリン  ・杏仁豆腐のプリン  ・豆乳はちみつプリン  ・豆乳抹茶のプリン  ・豆乳黒糖のプリン  こちらのプリンの他にケーキなどもあります。    定番のとうふのプリンは、生クリームでトロトロな美容にも健康にも適したプリンです。  プリンの下の方には小豆が隠れていて良い感じに引き立てています。  食感はババロアみたいな感じで美味しいですよ♪    胡麻おからのプリンは、黒胡麻の香りが中々良さげで牛乳と生クリームで仕上げてあり、まろやかで身体に優しく、こちらも美味しいです♪  食物繊維や鉄分も含まれたプリンですので女性にも男性にも熱い支持があります。    毎月10日はプリン屋の日らしく、洋生プリンが何と全品20％ＯＦＦみたいで何だか嬉しいサービスですね♪</td>
      <td>0.233822</td>
    </tr>
    <tr>
      <th>13515</th>
      <td>こちらのお菓子はちょこちょこ買っていますが、少し前に西武のイベントで巨大なプリンが販売されていて買ってみたことがありました。  一緒にクローバーはちみつのプリンと柚子のプリンも購入。  巨大なプリンは手ひとつ分くらいの大きさの容器にカスタードプリンが入っています。  プリンはお馴染みの、モロゾフのプリンの味。表面がつるりとして、硬めの食感なのに口溶けがよく、するりと食べられます。  結構な大きさがあったので2人で食べましたが、あっという間に完食してしまいました。  柚子のプリンは柚子の香りのプリンに酸味が割と抑えめのソースが入っていました。個人的にはもっと酸味があってもいいと思いましたが、食べやすくていいと思います。  クローバーはちみつのプリンは蜂蜜のかなり効いたマイルドなプリンでした。    モロゾフの魅力と言えば食べやすさと、とにかく値段の安いこと。  巨大なプリンが525円、各種プリンが210円。今時じゃあまりない安さです。  今回は買いませんでしたが2000円はしそうな大きいチーズタルトが1050円でした。  価格の高騰で色々な場所が値上がりしているのにこの値段でやっていけるのは凄いと思います。</td>
      <td>0.226200</td>
    </tr>
    <tr>
      <th>134308</th>
      <td>現在は震災の影響により商品が入荷しないとの事で休業中という話も出ていますが  先日小岩井牧場エキュート東京店でたまごプリンを購入しました。    今回購入したたまごプリンは一つ400円となかなかのお値段です。    蓋を開けて中を見ると、卵の色が強く出ているプリンです。    早速たまごプリンを頂くと、商品名にたまごと書いてある通り、たまごの味が濃いプリンで  クリーミーな柔らかプリンが多い中で今回のたまごプリンは固めでぷりぷりした食感で  甘味もあっさりとしているのが特徴です。    クリーミーなプリンが大好きな方には向かないプリンですが  張りのあってむっちりとしたプリンが好きな方にはオススメな商品と思います。    他にもアイスクリームなども販売を行っていたと記憶しているので  今度足を運んだ時にでも食べてみたいと思います。</td>
      <td>0.216077</td>
    </tr>
    <tr>
      <th>123330</th>
      <td>2006/04/23(日)  [スイートポテトのプリン\787]  池袋西武催事にて。相変わらずおいしい。プリンというか濃厚で滑らかなスイートポテトそのもの。ほろ苦いカラメルソースとの相性もばっちり。なぜか上に栗が乗っているけどおいしいからいいか。    2003/10/06  [栗のプリン\800]  プリン1個に800円なんてと思うけどこれが食べれば納得してしまう。本当に贅沢に栗を使っているというのが一口で分かるのだ。しかも使用済みビーカーを1つ200円で引き取ってくれるからその分割引になる。当然栗のプリンは秋限定。    2002/08/10  [カスタードプリン、栗入りスイートポテトプリン、かぼちゃプリン]  内装はアンティーク調で落ち着いた雰囲気。北に緑、南に立石の海の景色を望む絶好のロケーション。堂々とそそり立つボリュームたっぷりのカスタードプリンは自分の重みで立ってられずに傾きかけている。スプーンを入れるとプルプル震える様はプリン好きにはもうたまらない。かぼちゃプリンや栗が丸ごと入ったスイートポテトプリンもこれまた絶品！そして砂糖を入れなくても甘味を感じる濃厚なロイヤルミルクティーに至るまで言うことなし。    2002/07/09  [エスプレッソプリン,ブルーベリーとサワークリームのプリン]  エスプレッソは甘さとほろ苦さのバランスがこの上なし。期間限定のブルーベリーはさっぱりした後味でふんだんに丸ごと入ったブルーベリーもうれしいアクセント。    2002/05/24  [クリームチーズプリン、あずきプリン]  アンティーク家具のギャラリーを併設するお洒落なイタリアンの洋食屋さん。でもここのお奨めはなんと言ってもプリン。大きなビーカーに入ったボリュームたっぷりのプリンは1個650円～とちょっと高いけど、それ以上に期待を裏切らない味。十種類くらいあるけど今回はクリームチーズとあずきをチョイス。どっちもそれぞれに特徴があってその濃厚な味に病みつき！</td>
      <td>0.215571</td>
    </tr>
    <tr>
      <th>16531</th>
      <td>何年も前に頂き物でプリンを食べて、美味しかったので  店に行ってみました。  今は硬めプリンが好きになってしまったのでプリンではなく  ケーキを買いました。チーズスフレ？がとても美味しかったのと  何と言ってもプリンケーキは想像と違って、とっても  美味しかったです。絶品です。</td>
      <td>0.213889</td>
    </tr>
    <tr>
      <th>100903</th>
      <td>なめらかかぼちゃプリンをいただきました。  値段はプリンとしては高めですが、おいしゅうございました。満足です。  今度はケーキや他のプリンに挑戦してみたいと思います。</td>
      <td>0.205823</td>
    </tr>
  </tbody>
</table>
</div>


### ラーメンやうなぎなど出てほしくないものの順位を下げたい


```python
# 順位を上げたいドキュメントを指定する
from sklearn.neighbors.nearest_centroid import NearestCentroid

positive_docs = [
    'こちらのお菓子はちょこちょこ買っていますが、少し前に西武のイベントで巨大なプリンが販売されていて買ってみたことがありました。 一緒にクローバーはちみつのプリンと柚子のプリンも購入。 巨大なプリンは手ひとつ分くらいの大きさの容器にカスタードプリンが入っています。 プリンはお馴染みの、モロゾフのプリンの味。表面がつるりとして、硬めの食感なのに口溶けがよく、するりと食べられます。 結構な大きさがあったので2人で食べましたが、あっという間に完食してしまいました。 柚子のプリンは柚子の香りのプリンに酸味が割と抑えめのソースが入っていました。個人的にはもっと酸味があってもいいと思いましたが、食べやすくていいと思います。 クローバーはちみつのプリンは蜂蜜のかなり効いたマイルドなプリンでした。 モロゾフの魅力と言えば食べやすさと、とにかく値段の安いこと。 巨大なプリンが525円、各種プリンが210円。今時じゃあまりない安さです。 今回は買いませんでしたが2000円はしそうな大きいチーズタルトが1050円でした。 価格の高騰で色々な場所が値上がりしているのにこの値段でやっていけるのは凄いと思います。',
    '雷門とオレンジ通りの間の通りにあるお店で、『グリーンベル』のすぐ近くにあります。このお店の存在は知っていたのですが、今まで立ち寄るタイミングがありませんでした。この時は飲んだ帰りだったので、甘いもの欲しさに購入して帰ることにしました。ちなみに、店先においてある椅子に座って食べることもできます。 （全写真はBlogにて公開しています。よろしかったら、そちらもご覧ください。） いろいろな種類があり、シルクプリン、紫芋プリン、コーヒープリン、キャラメルアーモンドプリン、白ゴマプリン、黒ゴマプリン、ほうじ茶プリン、抹茶プリン、チョコプリンの9種類でした。 今回初めてということもあり、まずオーソドックスな「シルクプリン（300円）」と店員さんのおススメだった「コーヒープリン（300円）」を購入しました。 どちらのプリンも玉子たっぷり系のプリンではなく、なめらか系のプリンでした。 ちょっと残りの7種類も気になるので、どこかで制覇したいと思います。',
]
posi_tokens = [getTokens(doc) for doc in positive_docs]
posi_vectors = vectorizer.transform(posi_tokens)
display(posi_vectors.shape)
```


>    (2, 145584)



```python
posi_clf = NearestCentroid()
posi_clf.fit(posi_vectors, range(len(positive_docs)))

posi_index = posi_clf.predict(query)
display(posi_index)
display(positive_docs[posi_index[0]])
```


>    array([1])



    '雷門とオレンジ通りの間の通りにあるお店で、『グリーンベル』のすぐ近くにあります。このお店の存在は知っていたのですが、今まで立ち寄るタイミングがありませんでした。この時は飲んだ帰りだったので、甘いもの欲しさに購入して帰ることにしました。ちなみに、店先においてある椅子に座って食べることもできます。 （全写真はBlogにて公開しています。よろしかったら、そちらもご覧ください。） いろいろな種類があり、シルクプリン、紫芋プリン、コーヒープリン、キャラメルアーモンドプリン、白ゴマプリン、黒ゴマプリン、ほうじ茶プリン、抹茶プリン、チョコプリンの9種類でした。 今回初めてということもあり、まずオーソドックスな「シルクプリン（300円）」と店員さんのおススメだった「コーヒープリン（300円）」を購入しました。 どちらのプリンも玉子たっぷり系のプリンではなく、なめらか系のプリンでした。 ちょっと残りの7種類も気になるので、どこかで制覇したいと思います。'



```python
# 順位を下げたいドキュメントを指定する
negative_docs = [
    'お店は洒落ています。コースを頼んだのですが、見映えは良いけど味は普通です。昔はおいしく感じたのですが・・・店員の対応もイマイチで残念でした。',
    'かなり昔からある老舗ラーメン店です。 以前にも何度か食べたことがありますが、あまりとりたてた印象がありません。 別に変わり映えのない何でもないラーメンです。 雰囲気は好きなので、もうひとつ味に「何か」があるといい感じになるのですが。',
    '手頃な価格でうなぎが食べられます。以上。',
    'なめらかかぼちゃプリンをいただきました。 値段はプリンとしては高めですが、おいしゅうございました。満足です。 今度はケーキや他のプリンに挑戦してみたいと思います。',
]
nega_tokens = [getTokens(doc) for doc in negative_docs]
nega_vectors = vectorizer.transform(nega_tokens)
display(nega_vectors.shape)
```


>    (4, 145584)



```python
nega_clf = NearestCentroid()
nega_clf.fit(nega_vectors, range(len(negative_docs)))

nega_index = nega_clf.predict(query)
display(nega_index)
display(negative_docs[nega_index[0]])
```


>    array([0])



>    'お店は洒落ています。コースを頼んだのですが、見映えは良いけど味は普通です。昔はおいしく感じたのですが・・・店員の対応もイマイチで残念でした。'



```python
# Rocchioで補正されたクエリベクタを取得する

alpha = 1 # クエリの重み　一番高くしたい
beta = 0.5# ポジティブドキュメントの重み
gamma = 0.3 # ネガティブドキュメントの重み 低くしたい

new_query = (alpha * query) + (beta * posi_vectors[posi_index]) - (gamma * nega_vectors[nega_index])
display(new_query.shape)
```


>    (1, 145584)



```python
# 補正された検索結果を見てみる
new_similarities = cosine_similarity(rating_vectors, new_query)

new_results = ratings.copy()
new_results['similarity'] = new_similarities.flatten()
new_results = new_results.sort_values(by='similarity', ascending=False)
display(new_results[['body', 'similarity']][:10])
```


<div>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>body</th>
      <th>similarity</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>22573</th>
      <td>雷門とオレンジ通りの間の通りにあるお店で、『グリーンベル』のすぐ近くにあります。このお店の存在は知っていたのですが、今まで立ち寄るタイミングがありませんでした。この時は飲んだ帰りだったので、甘いもの欲しさに購入して帰ることにしました。ちなみに、店先においてある椅子に座って食べることもできます。  （全写真はBlogにて公開しています。よろしかったら、そちらもご覧ください。）    いろいろな種類があり、シルクプリン、紫芋プリン、コーヒープリン、キャラメルアーモンドプリン、白ゴマプリン、黒ゴマプリン、ほうじ茶プリン、抹茶プリン、チョコプリンの9種類でした。    今回初めてということもあり、まずオーソドックスな「シルクプリン（300円）」と店員さんのおススメだった「コーヒープリン（300円）」を購入しました。    どちらのプリンも玉子たっぷり系のプリンではなく、なめらか系のプリンでした。    ちょっと残りの7種類も気になるので、どこかで制覇したいと思います。</td>
      <td>0.623359</td>
    </tr>
    <tr>
      <th>41881</th>
      <td>ココは東急ストア（SHOPPING AOYAMA）の建物１階の中にあるプリン店です。  ハチ公バス「南青山三丁目交差点」の停留所を降りたら徒歩0分、東京メトロ銀座線「外苑前」3番出口から徒歩3分の場所にあります。    ココのプリンは卵を使わないタイプで、良質の大豆を使用したプリンが全9種類あり全て￥294です。  今回購入したのは、とうふのプリン￥294・胡麻おからのプリン￥294をテイクアウトしました。  店内で食べるならコーヒーか烏龍茶をサービスしてくれます。    ・他にバリエーションは、  ・とうふ＆黒豆のプリン  ・杏仁豆腐のプリン  ・豆乳はちみつプリン  ・豆乳抹茶のプリン  ・豆乳黒糖のプリン  こちらのプリンの他にケーキなどもあります。    定番のとうふのプリンは、生クリームでトロトロな美容にも健康にも適したプリンです。  プリンの下の方には小豆が隠れていて良い感じに引き立てています。  食感はババロアみたいな感じで美味しいですよ♪    胡麻おからのプリンは、黒胡麻の香りが中々良さげで牛乳と生クリームで仕上げてあり、まろやかで身体に優しく、こちらも美味しいです♪  食物繊維や鉄分も含まれたプリンですので女性にも男性にも熱い支持があります。    毎月10日はプリン屋の日らしく、洋生プリンが何と全品20％ＯＦＦみたいで何だか嬉しいサービスですね♪</td>
      <td>0.474102</td>
    </tr>
    <tr>
      <th>13515</th>
      <td>こちらのお菓子はちょこちょこ買っていますが、少し前に西武のイベントで巨大なプリンが販売されていて買ってみたことがありました。  一緒にクローバーはちみつのプリンと柚子のプリンも購入。  巨大なプリンは手ひとつ分くらいの大きさの容器にカスタードプリンが入っています。  プリンはお馴染みの、モロゾフのプリンの味。表面がつるりとして、硬めの食感なのに口溶けがよく、するりと食べられます。  結構な大きさがあったので2人で食べましたが、あっという間に完食してしまいました。  柚子のプリンは柚子の香りのプリンに酸味が割と抑えめのソースが入っていました。個人的にはもっと酸味があってもいいと思いましたが、食べやすくていいと思います。  クローバーはちみつのプリンは蜂蜜のかなり効いたマイルドなプリンでした。    モロゾフの魅力と言えば食べやすさと、とにかく値段の安いこと。  巨大なプリンが525円、各種プリンが210円。今時じゃあまりない安さです。  今回は買いませんでしたが2000円はしそうな大きいチーズタルトが1050円でした。  価格の高騰で色々な場所が値上がりしているのにこの値段でやっていけるのは凄いと思います。</td>
      <td>0.450349</td>
    </tr>
    <tr>
      <th>134308</th>
      <td>現在は震災の影響により商品が入荷しないとの事で休業中という話も出ていますが  先日小岩井牧場エキュート東京店でたまごプリンを購入しました。    今回購入したたまごプリンは一つ400円となかなかのお値段です。    蓋を開けて中を見ると、卵の色が強く出ているプリンです。    早速たまごプリンを頂くと、商品名にたまごと書いてある通り、たまごの味が濃いプリンで  クリーミーな柔らかプリンが多い中で今回のたまごプリンは固めでぷりぷりした食感で  甘味もあっさりとしているのが特徴です。    クリーミーなプリンが大好きな方には向かないプリンですが  張りのあってむっちりとしたプリンが好きな方にはオススメな商品と思います。    他にもアイスクリームなども販売を行っていたと記憶しているので  今度足を運んだ時にでも食べてみたいと思います。</td>
      <td>0.436797</td>
    </tr>
    <tr>
      <th>123330</th>
      <td>2006/04/23(日)  [スイートポテトのプリン\787]  池袋西武催事にて。相変わらずおいしい。プリンというか濃厚で滑らかなスイートポテトそのもの。ほろ苦いカラメルソースとの相性もばっちり。なぜか上に栗が乗っているけどおいしいからいいか。    2003/10/06  [栗のプリン\800]  プリン1個に800円なんてと思うけどこれが食べれば納得してしまう。本当に贅沢に栗を使っているというのが一口で分かるのだ。しかも使用済みビーカーを1つ200円で引き取ってくれるからその分割引になる。当然栗のプリンは秋限定。    2002/08/10  [カスタードプリン、栗入りスイートポテトプリン、かぼちゃプリン]  内装はアンティーク調で落ち着いた雰囲気。北に緑、南に立石の海の景色を望む絶好のロケーション。堂々とそそり立つボリュームたっぷりのカスタードプリンは自分の重みで立ってられずに傾きかけている。スプーンを入れるとプルプル震える様はプリン好きにはもうたまらない。かぼちゃプリンや栗が丸ごと入ったスイートポテトプリンもこれまた絶品！そして砂糖を入れなくても甘味を感じる濃厚なロイヤルミルクティーに至るまで言うことなし。    2002/07/09  [エスプレッソプリン,ブルーベリーとサワークリームのプリン]  エスプレッソは甘さとほろ苦さのバランスがこの上なし。期間限定のブルーベリーはさっぱりした後味でふんだんに丸ごと入ったブルーベリーもうれしいアクセント。    2002/05/24  [クリームチーズプリン、あずきプリン]  アンティーク家具のギャラリーを併設するお洒落なイタリアンの洋食屋さん。でもここのお奨めはなんと言ってもプリン。大きなビーカーに入ったボリュームたっぷりのプリンは1個650円～とちょっと高いけど、それ以上に期待を裏切らない味。十種類くらいあるけど今回はクリームチーズとあずきをチョイス。どっちもそれぞれに特徴があってその濃厚な味に病みつき！</td>
      <td>0.433240</td>
    </tr>
    <tr>
      <th>16531</th>
      <td>何年も前に頂き物でプリンを食べて、美味しかったので  店に行ってみました。  今は硬めプリンが好きになってしまったのでプリンではなく  ケーキを買いました。チーズスフレ？がとても美味しかったのと  何と言ってもプリンケーキは想像と違って、とっても  美味しかったです。絶品です。</td>
      <td>0.431697</td>
    </tr>
    <tr>
      <th>41646</th>
      <td>プリン好きなら一度は耳にした事のある店だと思います。  ここの「なめらかプリン」は、かなり濃厚である為、人それぞれ好みが分かれる。  なめらかプリンの次に好印象を持っているのは、「なめらかキャラメルプリン」です。  これも濃厚なくせに何故かまた注文したい気になるプリンである。  色々な味もあるが、一通り食してみたがやはり「なめらかプリン」が僕のお気にである。    なめらかプリンは、口の中でトロ??っととろける食感です。  初めに、上の層のプリン状になっている部分を一口♪  次に、真ん中辺りがトロトロしている部分を一口♪  次に、下のカラメルと絡めて一口♪  １個で三度の幸せ？を感じられるプリンなのであります。    食する時間帯を聞かれ、それに合わせた氷？ドライアイス？を入れてくれます。  取引先や友人宅に行く時の手土産として超オススメな一品です♪</td>
      <td>0.423419</td>
    </tr>
    <tr>
      <th>100903</th>
      <td>なめらかかぼちゃプリンをいただきました。  値段はプリンとしては高めですが、おいしゅうございました。満足です。  今度はケーキや他のプリンに挑戦してみたいと思います。</td>
      <td>0.417535</td>
    </tr>
    <tr>
      <th>41814</th>
      <td>ココは、JR高田馬場駅から徒歩5分、早稲田通りから少し入った場所にあるこじんまりとしたプリン専門店です。    二度焼きされた2層プリンの「プリモ」￥420をテイクアウトさせてもらいました。    下層は固めな感じですが、上層はなめらかな食感で一石二鳥的な実に美味しいプリンなのです。  素材では、ジャージー牛乳・赤玉卵・きび糖・無添加生クリームのみ使用しているそうです。    こちらのプリンは食の安全を考え、全ての商品が無添加となっています。  バニラビーンズも使用していないプリンですので是非お試し下さい♪    写真は車に揺られたせいで、中がとんでもない事態になっており、とてもお見せ出来る状態ではなかったので外見だけですみません・・・  次回は色々なプリンを紹介させてもらいます（^^；    ■ プリモの他メニュー ■  なかよしプリン260円  黒ゴマプリン350円  チーズプリン330円  ジャージー牛乳プリン410円〜  プリンケーキ310円  フィナンシェ400円    二度焼き二層プリン「プリモ」6個セット2700円(内税)     二度焼き二層プリン「プリモ」12個セット5400円(内税)     定番プリモ詰め合わせセット2,500円(内税)</td>
      <td>0.412532</td>
    </tr>
    <tr>
      <th>52682</th>
      <td>プリン生地の甘みと、後のせカラメルの香ばしさがたまらないプリンでした！プリンの種類も豊富で、チョコレートを使ったカカオプリンは男性にも人気のようです。贈り物にも喜んでもらえ、とても満足です♪</td>
      <td>0.410109</td>
    </tr>
  </tbody>
</table>
</div>


いい感じになりましたね