Skip to content

Latest commit

 

History

History
2159 lines (1739 loc) · 83.6 KB

amazon_reviews_final.rst

File metadata and controls

2159 lines (1739 loc) · 83.6 KB
from attention import AttentionLayer
import numpy as np
import pandas as pd
import re
from bs4 import BeautifulSoup
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences
from nltk.corpus import stopwords
from tensorflow.keras.layers import Input, LSTM, Embedding, Dense, Concatenate, TimeDistributed
from tensorflow.keras.models import Model
from tensorflow.keras.callbacks import EarlyStopping
import warnings
pd.set_option("display.max_colwidth", 200)
warnings.filterwarnings("ignore")
Using TensorFlow backend.
c:program filespython36libsite-packagestensorflowpythonframeworkdtypes.py:516: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint8 = np.dtype([("qint8", np.int8, 1)])
c:program filespython36libsite-packagestensorflowpythonframeworkdtypes.py:517: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_quint8 = np.dtype([("quint8", np.uint8, 1)])
c:program filespython36libsite-packagestensorflowpythonframeworkdtypes.py:518: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint16 = np.dtype([("qint16", np.int16, 1)])
c:program filespython36libsite-packagestensorflowpythonframeworkdtypes.py:519: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_quint16 = np.dtype([("quint16", np.uint16, 1)])
c:program filespython36libsite-packagestensorflowpythonframeworkdtypes.py:520: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint32 = np.dtype([("qint32", np.int32, 1)])
c:program filespython36libsite-packagestensorflowpythonframeworkdtypes.py:525: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  np_resource = np.dtype([("resource", np.ubyte, 1)])
c:program filespython36libsite-packagestensorboardcompattensorflow_stubdtypes.py:541: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint8 = np.dtype([("qint8", np.int8, 1)])
c:program filespython36libsite-packagestensorboardcompattensorflow_stubdtypes.py:542: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_quint8 = np.dtype([("quint8", np.uint8, 1)])
c:program filespython36libsite-packagestensorboardcompattensorflow_stubdtypes.py:543: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint16 = np.dtype([("qint16", np.int16, 1)])
c:program filespython36libsite-packagestensorboardcompattensorflow_stubdtypes.py:544: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_quint16 = np.dtype([("quint16", np.uint16, 1)])
c:program filespython36libsite-packagestensorboardcompattensorflow_stubdtypes.py:545: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  _np_qint32 = np.dtype([("qint32", np.int32, 1)])
c:program filespython36libsite-packagestensorboardcompattensorflow_stubdtypes.py:550: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
  np_resource = np.dtype([("resource", np.ubyte, 1)])
data=pd.read_csv("Reviews.csv",nrows=100000)
data
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
Id ProductId UserId ProfileName HelpfulnessNumerator HelpfulnessDenominator Score Time Summary Text
0 1 B001E4KFG0 A3SGXH7AUHU8GW delmartian 1 1 5 1303862400 Good Quality Dog Food I have bought several of the Vitality canned dog food products and have found them all to be of good quality. The product looks more like a stew than a processed meat and it smells better. My Labr...
1 2 B00813GRG4 A1D87F6ZCVE5NK dll pa 0 0 1 1346976000 Not as Advertised Product arrived labeled as Jumbo Salted Peanuts...the peanuts were actually small sized unsalted. Not sure if this was an error or if the vendor intended to represent the product as "Jumbo".
2 3 B000LQOCH0 ABXLMWJIXXAIN Natalia Corres "Natalia Corres" 1 1 4 1219017600 "Delight" says it all This is a confection that has been around a few centuries. It is a light, pillowy citrus gelatin with nuts - in this case Filberts. And it is cut into tiny squares and then liberally coated with ...
3 4 B000UA0QIQ A395BORC6FGVXV Karl 3 3 2 1307923200 Cough Medicine If you are looking for the secret ingredient in Robitussin I believe I have found it. I got this in addition to the Root Beer Extract I ordered (which was good) and made some cherry soda. The fl...
4 5 B006K2ZZ7K A1UQRSCLF8GW1T Michael D. Bigham "M. Wassir" 0 0 5 1350777600 Great taffy Great taffy at a great price. There was a wide assortment of yummy taffy. Delivery was very quick. If your a taffy lover, this is a deal.
5 6 B006K2ZZ7K ADT0SRK1MGOEU Twoapennything 0 0 4 1342051200 Nice Taffy I got a wild hair for taffy and ordered this five pound bag. The taffy was all very enjoyable with many flavors: watermelon, root beer, melon, peppermint, grape, etc. My only complaint is there wa...
6 7 B006K2ZZ7K A1SP2KVKFXXRU1 David C. Sullivan 0 0 5 1340150400 Great! Just as good as the expensive brands! This saltwater taffy had great flavors and was very soft and chewy. Each candy was individually wrapped well. None of the candies were stuck together, which did happen in the expensive version, ...
7 8 B006K2ZZ7K A3JRGQVEQN31IQ Pamela G. Williams 0 0 5 1336003200 Wonderful, tasty taffy This taffy is so good. It is very soft and chewy. The flavors are amazing. I would definitely recommend you buying it. Very satisfying!!
8 9 B000E7L2R4 A1MZYO9TZK0BBI R. James 1 1 5 1322006400 Yay Barley Right now I'm mostly just sprouting this so my cats can eat the grass. They love it. I rotate it around with Wheatgrass and Rye too
9 10 B00171APVA A21BT40VZCCYT4 Carol A. Reed 0 0 5 1351209600 Healthy Dog Food This is a very healthy dog food. Good for their digestion. Also good for small puppies. My dog eats her required amount at every feeding.
10 11 B0001PB9FE A3HDKO7OW0QNK4 Canadian Fan 1 1 5 1107820800 The Best Hot Sauce in the World I don't know if it's the cactus or the tequila or just the unique combination of ingredients, but the flavour of this hot sauce makes it one of a kind! We picked up a bottle once on a trip we wer...
11 12 B0009XLVG0 A2725IB4YY9JEB A Poeng "SparkyGoHome" 4 4 5 1282867200 My cats LOVE this "diet" food better than their regular food One of my boys needed to lose some weight and the other didn't. I put this food on the floor for the chubby guy, and the protein-rich, no by-product food up higher where only my skinny boy can ju...
12 13 B0009XLVG0 A327PCT23YH90 LT 1 1 1 1339545600 My Cats Are Not Fans of the New Food My cats have been happily eating Felidae Platinum for more than two years. I just got a new bag and the shape of the food is different. They tried the new food when I first put it in their bowls a...
13 14 B001GVISJM A18ECVX2RJ7HUE willie "roadie" 2 2 4 1288915200 fresh and greasy! good flavor! these came securely packed... they were fresh and delicious! i love these Twizzlers!
14 15 B001GVISJM A2MUGFV2TDQ47K Lynrie "Oh HELL no" 4 5 5 1268352000 Strawberry Twizzlers - Yummy The Strawberry Twizzlers are my guilty pleasure - yummy. Six pounds will be around for a while with my son and I.
15 16 B001GVISJM A1CZX3CP8IKQIJ Brian A. Lee 4 5 5 1262044800 Lots of twizzlers, just what you expect. My daughter loves twizzlers and this shipment of six pounds really hit the spot. It's exactly what you would expect...six packages of strawberry twizzlers.
16 17 B001GVISJM A3KLWF6WQ5BNYO Erica Neathery 0 0 2 1348099200 poor taste I love eating them and they are good for watching TV and looking at movies! It is not too sweet. I like to transfer them to a zip lock baggie so they stay fresh so I can take my time eating them.
17 18 B001GVISJM AFKW14U97Z6QO Becca 0 0 5 1345075200 Love it! I am very satisfied with my Twizzler purchase. I shared these with others and we have all enjoyed them. I will definitely be ordering more.
18 19 B001GVISJM A2A9X58G2GTBLP Wolfee1 0 0 5 1324598400 GREAT SWEET CANDY! Twizzlers, Strawberry my childhood favorite candy, made in Lancaster Pennsylvania by Y & S Candies, Inc. one of the oldest confectionery Firms in the United States, now a Subsidiary of the Hershey...
19 20 B001GVISJM A3IV7CL2C13K2U Greg 0 0 5 1318032000 Home delivered twizlers Candy was delivered very fast and was purchased at a reasonable price. I was home bound and unable to get to a store so this was perfect for me.
20 21 B001GVISJM A1WO0KGLPR5PV6 mom2emma 0 0 5 1313452800 Always fresh My husband is a Twizzlers addict. We've bought these many times from Amazon because we're government employees living overseas and can't get them in the country we are assigned to. They've alway...
21 22 B001GVISJM AZOF9E17RGZH8 Tammy Anderson 0 0 5 1308960000 TWIZZLERS I bought these for my husband who is currently overseas. He loves these, and apparently his staff likes them also.<br />There are generous amounts of Twizzlers in each 16-ounce bag, and this was w...
22 23 B001GVISJM ARYVQL4N737A1 Charles Brown 0 0 5 1304899200 Delicious product! I can remember buying this candy as a kid and the quality hasn't dropped in all these years. Still a superb product you won't be disappointed with.
23 24 B001GVISJM AJ613OLZZUG7V Mare's 0 0 5 1304467200 Twizzlers I love this candy. After weight watchers I had to cut back but still have a craving for it.
24 25 B001GVISJM A22P2J09NJ9HKE S. Cabanaugh "jilly pepper" 0 0 5 1295481600 Please sell these in Mexico!! I have lived out of the US for over 7 yrs now, and I so miss my Twizzlers!! When I go back to visit or someone visits me, I always stock up. All I can say is YUM!<br />Sell these in Mexico and y...
25 26 B001GVISJM A3FONPR03H3PJS Deborah S. Linzer "Cat Lady" 0 0 5 1288310400 Twizzlers - Strawberry Product received is as advertised.<br /><br /><a href="http://www.amazon.com/gp/product/B001GVISJM">Twizzlers, Strawberry, 16-Ounce Bags (Pack of 6)</a>
26 27 B001GVISJM A3RXAU2N8KV45G lady21 0 1 1 1332633600 Nasty No flavor The candy is just red , No flavor . Just plan and chewy . I would never buy them again
27 28 B001GVISJM AAAS38B98HMIK Heather Dube 0 1 4 1331856000 Great Bargain for the Price I was so glad Amazon carried these batteries. I have a hard time finding them elsewhere because they are such a unique size. I need them for my garage door opener.<br />Great deal for the price.
28 29 B00144C10S A2F4LZVGFLD1OB DaisyH 0 0 5 1338854400 YUMMY! I got this for my Mum who is not diabetic but needs to watch her sugar intake, and my father who simply chooses to limit unnecessary sugar intake - she's the one with the sweet tooth - they both L...
29 30 B0001PB9FY A3HDKO7OW0QNK4 Canadian Fan 1 1 5 1107820800 The Best Hot Sauce in the World I don't know if it's the cactus or the tequila or just the unique combination of ingredients, but the flavour of this hot sauce makes it one of a kind! We picked up a bottle once on a trip we wer...
... ... ... ... ... ... ... ... ... ... ...
99970 99971 B000LQORDE A1RQB9AVOXN0TF mim 1 3 5 1308614400 Sooooo Good! If you like spicy Ramen noodles, these are the choice for you! These are just like the ones my husband used to eat in Korea as a kid, so naturally we love them. Also, they are pretty expensive i...
99971 99972 B000LQORDE A3VLYQ6V775LNA aaaaa 1 3 5 1298851200 Delicious Noodles It's the same taste as the one I bought in Asian supermarket which can recall me the Chinese style noodles. Very delicious!
99972 99973 B000LQORDE A3K1J1GG2GWNJ1 margot 1 3 5 1298678400 Great noodle texture, spicy flavor First of all, kudos to the Super Saver shipping option that I got on ordering two cases of Nong Shim Shin Ramyun. It's made this the most affordable of this type of superior three-minute ramen one...
99973 99974 B000LQORDE A2YWRWSLEJRM92 Pennsylvania Reader 1 3 5 1295740800 Supernoodles I love these. It's hard to think of anything else as cheap that is as warming, satisfying, and delicious. I use a little more water than called for by the directions, then add a few tablespoons ...
99974 99975 B000LQORDE AEPEYS74CE6KI Daniel Esmond 1 3 5 1293494400 It hurts so good! I will preface this to say that I like spicy things. From salsa to buffalo wings, I usually like the hottest variety of everything. Imagine my surprise then when I heard of this magical "splcy pic...
99975 99976 B000LQORDE A2OMR2QAF5J26E EskimoSquirrel 1 3 5 1292457600 The best noodle I've ever had this is the best noodle I've ever had. Every time I'll add some eggs, vegies. Once you try this, you will never forget it.
99976 99977 B000LQORDE A1CVEGNOQ62A25 Edward 1 3 5 1288569600 Spicy I was browsing amazon when I came across these noodles and realized I had not had noodles in ages. I used to eat them all the time. The hard brick type noodles you boil in water for 6 minutes.<br ...
99977 99978 B000LQORDE A2E2IMMWYCHIG6 Tessa Noel 1 3 4 1283040000 Yum Yum This is the best tasting, artery clogging, high blood pressure inducing ramen I have ever tasted. Yumm!
99978 99979 B000LQORDE AWL9HU41JGO9R GatorCW 1 3 4 1283040000 Pretty good Noodles are fine and filling. They make a simple and cheap meal with some vegetables, slices of meat, and eggs thrown in. The spice packet is a bit overwhelming if you're starting out, so stick to...
99979 99980 B000LQORDE A1Y8TNPDBS8UKB Sean Gerrity 1 3 5 1275955200 for adults only my first exposure to shin ramyun was about 10 years back at a japanese grocer. all that was available were the shin cups which i picked up as i thought they looked to be the best seller there. at ...
99980 99981 B000LQORDE A1DDS96O83SVEA R. Flowers 1 3 5 1253577600 Nong Shim Shin noodles spicy I bought this product strictly on the review of others and they were right, these noodles are great, way better than top ramen. I will be buying these again.
99981 99982 B000LQORDE A1YH21OL6SC2MY Jiachun Guo 1 3 4 1252713600 A delicious noodle with good price It is hot and delicious. the noodle is very good. although later I found it a little cheaper at local Asian food mart.
99982 99983 B000LQORDE A12VDYKZ6BIQ9L Daniel Levenson "danfromfla" 1 3 5 1244937600 Very Tasty Noodles What can I say? They are very spicy, tasty noodles. My wife loves these noodles and buys them from an asian market that is about 20 miles away from the house. I'm very happy Amazon sells them f...
99983 99984 B000LQORDE A2EOLB7LR508ES Chris, CA 1 3 5 1241395200 Good deal at Amazon! I have purchased this noodle from local supermarket for years. Due to the rising cost of everything, it got more expensive then ever. I was please to find that Amazon carry this, with the promoti...
99984 99985 B000LQORDE A1YVCGV8G16OMM Nathan 1 3 5 1239148800 To steal a tagline...mmm, mmm good! This stuff is awesome! It has the right amount of spice (a-lot) and the noodles are much thicker and more flavorful than the standard $.10 a pack stuff. Don't get me wrong, I love regular Top Rame...
99985 99986 B000LQORDE A1BN8134NN8IAC Jorge A. Zuniga "CerealLOVER" 1 3 5 1239062400 nong shim Just about any nong shim soup is good. Most of them are very spicy and addicting. I really like the chicken and original spicy noodles...Yeah it has MSG but just about every soup does including na...
99986 99987 B000LQORDE A30Z0GG96D11EO Sofia Hernandez "Shut up B*&#$!" 1 3 5 1236124800 Yummy al dente noodles in my bowl! I bought these on a whim because they were a deal of the day. Boy am I glad that I did. As a big fan of Maruchan and Top Ramen, I read the reviews and saw that these were very close to the real ...
99987 99988 B000LQORDE A19SFNK8QI1JZI Jerri 4 8 1 1292025600 Tastes very very awful Apparently they used too much synthetic flavors that it just burns your tongue. Also there's too much oil ... almost made me choke ...
99988 99989 B000LQORDE ATPRSDCBH6O9L Jiashen You "statistician" 4 8 5 1254528000 What else can you ask for at a discounted price? Stacks of these shin ramyun are stored and sold at each and every Korean airport Duty Free Shops (in a different packing style). I for one am not complaining for buying it at an average of under 1...
99989 99990 B000LQORDE A3NIPWPJSFOZZT Won H. Lee 4 8 5 1234483200 This is THE ramen I been to several places around the world, including Russia and Mongolia. There, if you ask for "ramen", this ramen (Shin Ramen) is the one they give you. it's the best!<br /><br />While by itself...
99990 99991 B000LQORDE A294C2HWGIVYLS Den 7 13 1 1291939200 over price This item is really over price, i can buy the same from local Asian grocery stores and it is a lot cheaper.
99991 99992 B000LQORDE A2JXVMU6OMK6XI Healthy Jake 2 5 2 1315440000 wow... just plain nasty I would have to say the noodles packaged with this product are just plain bad. The spice packet is on par with whats to be expected but the noodles just taste bad.
99992 99993 B000LQORDE ANTN4ULDPYM07 AB 2 5 5 1284768000 My new favorite ramen, thanks to amazon I originally decided to purchase this particular brand of ramen after seeing all the other positive reviews here on Amazon. I was a bit apprehensive at first, fearing that I wouldn't enjoy it sinc...
99993 99994 B000LQORDE A2BXV5BQYXU6HP boolean 2 5 5 1282953600 great stuff this stuff is awesome. for best flavor boil it in water, drain the water, add spice packet and then add hot water.
99994 99995 B000LQORDE AL22WN8RBBOW7 LifeInTheCity "trogg" 2 5 5 1256428800 Good Stuff I love these noodle. A little to spicy for the wife but perfct for me.
99995 99996 B000LQORDE A2P7HIRYYWVOBD Mason 2 5 5 1254096000 yummy! I just love it and will buy another box when I'm done with last one!
99996 99997 B000LQORDE A1K0ZH5MQFBA77 jennilight 2 5 4 1250985600 Tastes like More! My late father in law used to have a rating system for meals: if it was particularly tasty, he'd say "This tastes like more!" That's exactly how I felt the first time I tried a spicy picante ramyu...
99997 99998 B000LQORDE A29FRN2O7LWINL T. Tsai 2 5 5 1237766400 Great ramen This is my favorite brand of Korean ramen. It is spicy so if you are not used to eating spicy food, make sure you don't use all of the spice pack. If you add an egg to the soup, it makes a great s...
99998 99999 B000LQORDE A9Q950IPXJR1D Lynda "casual customer" 2 5 4 1237161600 Spicy!! I do like these noodles although, to say they are spicy is somewhat of an understatement. No one else in the family tolerates spicy very well so, seeing these, I was looking forward to an extra li...
99999 100000 B000LQORDE A19W47CXJJP1MI Amazonian Consumer 2 5 5 1235088000 This spicy noodle cures my cold, upset stomach, and headache every time! I love this noodle and have it once or twice a week. The amazing thing is that when I don't feel well because of a cold, a hot bowl of this noodle will cure my upset stomach, headache, and running...

100000 rows × 10 columns

data.drop_duplicates(subset=['Text'],inplace=True)#dropping duplicates
data.dropna(axis=0,inplace=True)#dropping na
data.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 88421 entries, 0 to 99999
Data columns (total 10 columns):
Id                        88421 non-null int64
ProductId                 88421 non-null object
UserId                    88421 non-null object
ProfileName               88421 non-null object
HelpfulnessNumerator      88421 non-null int64
HelpfulnessDenominator    88421 non-null int64
Score                     88421 non-null int64
Time                      88421 non-null int64
Summary                   88421 non-null object
Text                      88421 non-null object
dtypes: int64(5), object(5)
memory usage: 7.4+ MB
contraction_mapping = {"ain't": "is not", "aren't": "are not","can't": "cannot", "'cause": "because", "could've": "could have", "couldn't": "could not",
                           "didn't": "did not",  "doesn't": "does not", "don't": "do not", "hadn't": "had not", "hasn't": "has not", "haven't": "have not",
                           "he'd": "he would","he'll": "he will", "he's": "he is", "how'd": "how did", "how'd'y": "how do you", "how'll": "how will", "how's": "how is",
                           "I'd": "I would", "I'd've": "I would have", "I'll": "I will", "I'll've": "I will have","I'm": "I am", "I've": "I have", "i'd": "i would",
                           "i'd've": "i would have", "i'll": "i will",  "i'll've": "i will have","i'm": "i am", "i've": "i have", "isn't": "is not", "it'd": "it would",
                           "it'd've": "it would have", "it'll": "it will", "it'll've": "it will have","it's": "it is", "let's": "let us", "ma'am": "madam",
                           "mayn't": "may not", "might've": "might have","mightn't": "might not","mightn't've": "might not have", "must've": "must have",
                           "mustn't": "must not", "mustn't've": "must not have", "needn't": "need not", "needn't've": "need not have","o'clock": "of the clock",
                           "oughtn't": "ought not", "oughtn't've": "ought not have", "shan't": "shall not", "sha'n't": "shall not", "shan't've": "shall not have",
                           "she'd": "she would", "she'd've": "she would have", "she'll": "she will", "she'll've": "she will have", "she's": "she is",
                           "should've": "should have", "shouldn't": "should not", "shouldn't've": "should not have", "so've": "so have","so's": "so as",
                           "this's": "this is","that'd": "that would", "that'd've": "that would have", "that's": "that is", "there'd": "there would",
                           "there'd've": "there would have", "there's": "there is", "here's": "here is","they'd": "they would", "they'd've": "they would have",
                           "they'll": "they will", "they'll've": "they will have", "they're": "they are", "they've": "they have", "to've": "to have",
                           "wasn't": "was not", "we'd": "we would", "we'd've": "we would have", "we'll": "we will", "we'll've": "we will have", "we're": "we are",
                           "we've": "we have", "weren't": "were not", "what'll": "what will", "what'll've": "what will have", "what're": "what are",
                           "what's": "what is", "what've": "what have", "when's": "when is", "when've": "when have", "where'd": "where did", "where's": "where is",
                           "where've": "where have", "who'll": "who will", "who'll've": "who will have", "who's": "who is", "who've": "who have",
                           "why's": "why is", "why've": "why have", "will've": "will have", "won't": "will not", "won't've": "will not have",
                           "would've": "would have", "wouldn't": "would not", "wouldn't've": "would not have", "y'all": "you all",
                           "y'all'd": "you all would","y'all'd've": "you all would have","y'all're": "you all are","y'all've": "you all have",
                           "you'd": "you would", "you'd've": "you would have", "you'll": "you will", "you'll've": "you will have",
                           "you're": "you are", "you've": "you have"}
contraction_mapping
{"ain't": 'is not',
 "aren't": 'are not',
 "can't": 'cannot',
 "'cause": 'because',
 "could've": 'could have',
 "couldn't": 'could not',
 "didn't": 'did not',
 "doesn't": 'does not',
 "don't": 'do not',
 "hadn't": 'had not',
 "hasn't": 'has not',
 "haven't": 'have not',
 "he'd": 'he would',
 "he'll": 'he will',
 "he's": 'he is',
 "how'd": 'how did',
 "how'd'y": 'how do you',
 "how'll": 'how will',
 "how's": 'how is',
 "I'd": 'I would',
 "I'd've": 'I would have',
 "I'll": 'I will',
 "I'll've": 'I will have',
 "I'm": 'I am',
 "I've": 'I have',
 "i'd": 'i would',
 "i'd've": 'i would have',
 "i'll": 'i will',
 "i'll've": 'i will have',
 "i'm": 'i am',
 "i've": 'i have',
 "isn't": 'is not',
 "it'd": 'it would',
 "it'd've": 'it would have',
 "it'll": 'it will',
 "it'll've": 'it will have',
 "it's": 'it is',
 "let's": 'let us',
 "ma'am": 'madam',
 "mayn't": 'may not',
 "might've": 'might have',
 "mightn't": 'might not',
 "mightn't've": 'might not have',
 "must've": 'must have',
 "mustn't": 'must not',
 "mustn't've": 'must not have',
 "needn't": 'need not',
 "needn't've": 'need not have',
 "o'clock": 'of the clock',
 "oughtn't": 'ought not',
 "oughtn't've": 'ought not have',
 "shan't": 'shall not',
 "sha'n't": 'shall not',
 "shan't've": 'shall not have',
 "she'd": 'she would',
 "she'd've": 'she would have',
 "she'll": 'she will',
 "she'll've": 'she will have',
 "she's": 'she is',
 "should've": 'should have',
 "shouldn't": 'should not',
 "shouldn't've": 'should not have',
 "so've": 'so have',
 "so's": 'so as',
 "this's": 'this is',
 "that'd": 'that would',
 "that'd've": 'that would have',
 "that's": 'that is',
 "there'd": 'there would',
 "there'd've": 'there would have',
 "there's": 'there is',
 "here's": 'here is',
 "they'd": 'they would',
 "they'd've": 'they would have',
 "they'll": 'they will',
 "they'll've": 'they will have',
 "they're": 'they are',
 "they've": 'they have',
 "to've": 'to have',
 "wasn't": 'was not',
 "we'd": 'we would',
 "we'd've": 'we would have',
 "we'll": 'we will',
 "we'll've": 'we will have',
 "we're": 'we are',
 "we've": 'we have',
 "weren't": 'were not',
 "what'll": 'what will',
 "what'll've": 'what will have',
 "what're": 'what are',
 "what's": 'what is',
 "what've": 'what have',
 "when's": 'when is',
 "when've": 'when have',
 "where'd": 'where did',
 "where's": 'where is',
 "where've": 'where have',
 "who'll": 'who will',
 "who'll've": 'who will have',
 "who's": 'who is',
 "who've": 'who have',
 "why's": 'why is',
 "why've": 'why have',
 "will've": 'will have',
 "won't": 'will not',
 "won't've": 'will not have',
 "would've": 'would have',
 "wouldn't": 'would not',
 "wouldn't've": 'would not have',
 "y'all": 'you all',
 "y'all'd": 'you all would',
 "y'all'd've": 'you all would have',
 "y'all're": 'you all are',
 "y'all've": 'you all have',
 "you'd": 'you would',
 "you'd've": 'you would have',
 "you'll": 'you will',
 "you'll've": 'you will have',
 "you're": 'you are',
 "you've": 'you have'}
stop_words = set(stopwords.words('english'))

def text_cleaner(text,num):
    newString = text.lower()
    newString = BeautifulSoup(newString, "lxml").text
    newString = re.sub(r'\([^)]*\)', '', newString)
    newString = re.sub('"','', newString)
    newString = ' '.join([contraction_mapping[t] if t in contraction_mapping else t for t in newString.split(" ")])
    newString = re.sub(r"'s\b","",newString)
    newString = re.sub("[^a-zA-Z]", " ", newString)
    newString = re.sub('[m]{2,}', 'mm', newString)
    if(num==0):
        tokens = [w for w in newString.split() if not w in stop_words]
    else:
        tokens=newString.split()
    long_words=[]
    for i in tokens:
        if len(i)>1:                                                 #removing short word
            long_words.append(i)
    return (" ".join(long_words)).strip()
#call the function
cleaned_text = []
for t in data['Text']:
    cleaned_text.append(text_cleaner(t,0))
cleaned_text[:5]
['bought several vitality canned dog food products found good quality product looks like stew processed meat smells better labrador finicky appreciates product better',
 'product arrived labeled jumbo salted peanuts peanuts actually small sized unsalted sure error vendor intended represent product jumbo',
 'confection around centuries light pillowy citrus gelatin nuts case filberts cut tiny squares liberally coated powdered sugar tiny mouthful heaven chewy flavorful highly recommend yummy treat familiar story lewis lion witch wardrobe treat seduces edmund selling brother sisters witch',
 'looking secret ingredient robitussin believe found got addition root beer extract ordered made cherry soda flavor medicinal',
 'great taffy great price wide assortment yummy taffy delivery quick taffy lover deal']
#call the function
cleaned_summary = []
for t in data['Summary']:
    cleaned_summary.append(text_cleaner(t,1))
cleaned_summary[:10]
['good quality dog food',
 'not as advertised',
 'delight says it all',
 'cough medicine',
 'great taffy',
 'nice taffy',
 'great just as good as the expensive brands',
 'wonderful tasty taffy',
 'yay barley',
 'healthy dog food']
data['cleaned_text']=cleaned_text
data['cleaned_summary']=cleaned_summary
data.replace('', np.nan, inplace=True)
data.dropna(axis=0,inplace=True)
import matplotlib.pyplot as plt

text_word_count = []
summary_word_count = []

# populate the lists with sentence lengths
for i in data['cleaned_text']:
      text_word_count.append(len(i.split()))

for i in data['cleaned_summary']:
      summary_word_count.append(len(i.split()))

length_df = pd.DataFrame({'text':text_word_count, 'summary':summary_word_count})

length_df.hist(bins = 30)
plt.show()

output_15_0.png

cnt=0
for i in data['cleaned_summary']:
    if(len(i.split())<=8):
        cnt=cnt+1
print(cnt/len(data['cleaned_summary']))
0.9424907471335922
max_text_len=30
max_summary_len=8
cleaned_text =np.array(data['cleaned_text'])
cleaned_summary=np.array(data['cleaned_summary'])

short_text=[]
short_summary=[]

for i in range(len(cleaned_text)):
    if(len(cleaned_summary[i].split())<=max_summary_len and len(cleaned_text[i].split())<=max_text_len):
        short_text.append(cleaned_text[i])
        short_summary.append(cleaned_summary[i])

df=pd.DataFrame({'text':short_text,'summary':short_summary})
df['summary'] = df['summary'].apply(lambda x : 'sostok '+ x + ' eostok')
from sklearn.model_selection import train_test_split
x_tr,x_val,y_tr,y_val=train_test_split(np.array(df['text']),np.array(df['summary']),test_size=0.1,random_state=0,shuffle=True)
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences

#prepare a tokenizer for reviews on training data
x_tokenizer = Tokenizer()
x_tokenizer.fit_on_texts(list(x_tr))
thresh=4

cnt=0
tot_cnt=0
freq=0
tot_freq=0

for key,value in x_tokenizer.word_counts.items():
    tot_cnt=tot_cnt+1
    tot_freq=tot_freq+value
    if(value<thresh):
        cnt=cnt+1
        freq=freq+value

print("% of rare words in vocabulary:",(cnt/tot_cnt)*100)
print("Total Coverage of rare words:",(freq/tot_freq)*100)
% of rare words in vocabulary: 66.12339930151339
Total Coverage of rare words: 2.953684513790566
#prepare a tokenizer for reviews on training data
x_tokenizer = Tokenizer(num_words=tot_cnt-cnt)
x_tokenizer.fit_on_texts(list(x_tr))

#convert text sequences into integer sequences
x_tr_seq    =   x_tokenizer.texts_to_sequences(x_tr)
x_val_seq   =   x_tokenizer.texts_to_sequences(x_val)

#padding zero upto maximum length
x_tr    =   pad_sequences(x_tr_seq,  maxlen=max_text_len, padding='post')
x_val   =   pad_sequences(x_val_seq, maxlen=max_text_len, padding='post')

#size of vocabulary ( +1 for padding token)
x_voc   =  x_tokenizer.num_words + 1
x_voc
8440
#prepare a tokenizer for reviews on training data
y_tokenizer = Tokenizer()
y_tokenizer.fit_on_texts(list(y_tr))
thresh=6

cnt=0
tot_cnt=0
freq=0
tot_freq=0

for key,value in y_tokenizer.word_counts.items():
    tot_cnt=tot_cnt+1
    tot_freq=tot_freq+value
    if(value<thresh):
        cnt=cnt+1
        freq=freq+value

print("% of rare words in vocabulary:",(cnt/tot_cnt)*100)
print("Total Coverage of rare words:",(freq/tot_freq)*100)
% of rare words in vocabulary: 78.12740675541863
Total Coverage of rare words: 5.3921899389571895
#prepare a tokenizer for reviews on training data
y_tokenizer = Tokenizer(num_words=tot_cnt-cnt)
y_tokenizer.fit_on_texts(list(y_tr))

#convert text sequences into integer sequences
y_tr_seq    =   y_tokenizer.texts_to_sequences(y_tr)
y_val_seq   =   y_tokenizer.texts_to_sequences(y_val)

#padding zero upto maximum length
y_tr    =   pad_sequences(y_tr_seq, maxlen=max_summary_len, padding='post')
y_val   =   pad_sequences(y_val_seq, maxlen=max_summary_len, padding='post')

#size of vocabulary
y_voc  =   y_tokenizer.num_words +1
y_tokenizer.word_counts['sostok'],len(y_tr)
(42453, 42453)
ind=[]
for i in range(len(y_tr)):
    cnt=0
    for j in y_tr[i]:
        if j!=0:
            cnt=cnt+1
    if(cnt==2):
        ind.append(i)

y_tr=np.delete(y_tr,ind, axis=0)
x_tr=np.delete(x_tr,ind, axis=0)
ind=[]
for i in range(len(y_val)):
    cnt=0
    for j in y_val[i]:
        if j!=0:
            cnt=cnt+1
    if(cnt==2):
        ind.append(i)

y_val=np.delete(y_val,ind, axis=0)
x_val=np.delete(x_val,ind, axis=0)
from keras import backend as K
K.clear_session()

latent_dim = 300
embedding_dim=100

# Encoder
encoder_inputs = Input(shape=(max_text_len,))

#embedding layer
enc_emb =  Embedding(x_voc, embedding_dim,trainable=True)(encoder_inputs)

#encoder lstm 1
encoder_lstm1 = LSTM(latent_dim,return_sequences=True,return_state=True,dropout=0.4,recurrent_dropout=0.4)
encoder_output1, state_h1, state_c1 = encoder_lstm1(enc_emb)

#encoder lstm 2
encoder_lstm2 = LSTM(latent_dim,return_sequences=True,return_state=True,dropout=0.4,recurrent_dropout=0.4)
encoder_output2, state_h2, state_c2 = encoder_lstm2(encoder_output1)

#encoder lstm 3
encoder_lstm3=LSTM(latent_dim, return_state=True, return_sequences=True,dropout=0.4,recurrent_dropout=0.4)
encoder_outputs, state_h, state_c= encoder_lstm3(encoder_output2)

# Set up the decoder, using `encoder_states` as initial state.
decoder_inputs = Input(shape=(None,))

#embedding layer
dec_emb_layer = Embedding(y_voc, embedding_dim,trainable=True)
dec_emb = dec_emb_layer(decoder_inputs)

decoder_lstm = LSTM(latent_dim, return_sequences=True, return_state=True,dropout=0.4,recurrent_dropout=0.2)
decoder_outputs,decoder_fwd_state, decoder_back_state = decoder_lstm(dec_emb,initial_state=[state_h, state_c])

# Attention layer
attn_layer = AttentionLayer(name='attention_layer')
attn_out, attn_states = attn_layer([encoder_outputs, decoder_outputs])

# Concat attention input and decoder LSTM output
decoder_concat_input = Concatenate(axis=-1, name='concat_layer')([decoder_outputs, attn_out])

#dense layer
decoder_dense =  TimeDistributed(Dense(y_voc, activation='softmax'))
decoder_outputs = decoder_dense(decoder_concat_input)

# Define the model
model = Model([encoder_inputs, decoder_inputs], decoder_outputs)

model.summary()
WARNING:tensorflow:From /opt/conda/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py:435: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
WARNING:tensorflow:From /opt/conda/lib/python3.6/site-packages/tensorflow/python/keras/backend.py:4010: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.
Instructions for updating:
Please use rate instead of keep_prob. Rate should be set to rate = 1 - keep_prob.
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to
==================================================================================================
input_1 (InputLayer)            (None, 30)           0
__________________________________________________________________________________________________
embedding (Embedding)           (None, 30, 100)      844000      input_1[0][0]
__________________________________________________________________________________________________
lstm (LSTM)                     [(None, 30, 300), (N 481200      embedding[0][0]
__________________________________________________________________________________________________
input_2 (InputLayer)            (None, None)         0
__________________________________________________________________________________________________
lstm_1 (LSTM)                   [(None, 30, 300), (N 721200      lstm[0][0]
__________________________________________________________________________________________________
embedding_1 (Embedding)         (None, None, 100)    198900      input_2[0][0]
__________________________________________________________________________________________________
lstm_2 (LSTM)                   [(None, 30, 300), (N 721200      lstm_1[0][0]
__________________________________________________________________________________________________
lstm_3 (LSTM)                   [(None, None, 300),  481200      embedding_1[0][0]
                                                                 lstm_2[0][1]
                                                                 lstm_2[0][2]
__________________________________________________________________________________________________
attention_layer (AttentionLayer [(None, None, 300),  180300      lstm_2[0][0]
                                                                 lstm_3[0][0]
__________________________________________________________________________________________________
concat_layer (Concatenate)      (None, None, 600)    0           lstm_3[0][0]
                                                                 attention_layer[0][0]
__________________________________________________________________________________________________
time_distributed (TimeDistribut (None, None, 1989)   1195389     concat_layer[0][0]
==================================================================================================
Total params: 4,823,389
Trainable params: 4,823,389
Non-trainable params: 0
__________________________________________________________________________________________________
model.compile(optimizer='rmsprop', loss='sparse_categorical_crossentropy')
es = EarlyStopping(monitor='val_loss', mode='min', verbose=1,patience=2)
history=model.fit([x_tr,y_tr[:,:-1]], y_tr.reshape(y_tr.shape[0],y_tr.shape[1], 1)[:,1:] ,epochs=50,callbacks=[es],batch_size=128, validation_data=([x_val,y_val[:,:-1]], y_val.reshape(y_val.shape[0],y_val.shape[1], 1)[:,1:]))
Train on 41346 samples, validate on 4588 samples
WARNING:tensorflow:From /opt/conda/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.cast instead.
Epoch 1/50
41346/41346 [==============================] - 85s 2ms/sample - loss: 2.8152 - val_loss: 2.5780
Epoch 2/50
41346/41346 [==============================] - 79s 2ms/sample - loss: 2.4859 - val_loss: 2.4072
Epoch 3/50
41346/41346 [==============================] - 81s 2ms/sample - loss: 2.3259 - val_loss: 2.3232
Epoch 4/50
41346/41346 [==============================] - 80s 2ms/sample - loss: 2.2281 - val_loss: 2.2534
Epoch 5/50
41346/41346 [==============================] - 79s 2ms/sample - loss: 2.1604 - val_loss: 2.1862
Epoch 6/50
41346/41346 [==============================] - 80s 2ms/sample - loss: 2.1065 - val_loss: 2.1549
Epoch 7/50
41346/41346 [==============================] - 80s 2ms/sample - loss: 2.0616 - val_loss: 2.1177
Epoch 8/50
41346/41346 [==============================] - 80s 2ms/sample - loss: 2.0202 - val_loss: 2.0992
Epoch 9/50
41346/41346 [==============================] - 79s 2ms/sample - loss: 1.9835 - val_loss: 2.0822
Epoch 10/50
41346/41346 [==============================] - 80s 2ms/sample - loss: 1.9476 - val_loss: 2.0636
Epoch 11/50
41346/41346 [==============================] - 80s 2ms/sample - loss: 1.9145 - val_loss: 2.0606
Epoch 12/50
41346/41346 [==============================] - 79s 2ms/sample - loss: 1.8826 - val_loss: 2.0672
Epoch 13/50
41346/41346 [==============================] - 79s 2ms/sample - loss: 1.8553 - val_loss: 2.0444
Epoch 14/50
41346/41346 [==============================] - 80s 2ms/sample - loss: 1.8267 - val_loss: 2.0422
Epoch 15/50
41346/41346 [==============================] - 80s 2ms/sample - loss: 1.7980 - val_loss: 2.0456
Epoch 16/50
41346/41346 [==============================] - 79s 2ms/sample - loss: 1.7745 - val_loss: 2.0409
Epoch 17/50
41346/41346 [==============================] - 79s 2ms/sample - loss: 1.7518 - val_loss: 2.0374
Epoch 18/50
41346/41346 [==============================] - 80s 2ms/sample - loss: 1.7299 - val_loss: 2.0434
Epoch 19/50
41346/41346 [==============================] - 80s 2ms/sample - loss: 1.7070 - val_loss: 2.0398
Epoch 00019: early stopping
from matplotlib import pyplot
pyplot.plot(history.history['loss'], label='train')
pyplot.plot(history.history['val_loss'], label='test')
pyplot.legend()
pyplot.show()

output_35_0.png

reverse_target_word_index=y_tokenizer.index_word
reverse_source_word_index=x_tokenizer.index_word
target_word_index=y_tokenizer.word_index
# Encode the input sequence to get the feature vector
encoder_model = Model(inputs=encoder_inputs,outputs=[encoder_outputs, state_h, state_c])

# Decoder setup
# Below tensors will hold the states of the previous time step
decoder_state_input_h = Input(shape=(latent_dim,))
decoder_state_input_c = Input(shape=(latent_dim,))
decoder_hidden_state_input = Input(shape=(max_text_len,latent_dim))

# Get the embeddings of the decoder sequence
dec_emb2= dec_emb_layer(decoder_inputs)
# To predict the next word in the sequence, set the initial states to the states from the previous time step
decoder_outputs2, state_h2, state_c2 = decoder_lstm(dec_emb2, initial_state=[decoder_state_input_h, decoder_state_input_c])

#attention inference
attn_out_inf, attn_states_inf = attn_layer([decoder_hidden_state_input, decoder_outputs2])
decoder_inf_concat = Concatenate(axis=-1, name='concat')([decoder_outputs2, attn_out_inf])

# A dense softmax layer to generate prob dist. over the target vocabulary
decoder_outputs2 = decoder_dense(decoder_inf_concat)

# Final decoder model
decoder_model = Model(
    [decoder_inputs] + [decoder_hidden_state_input,decoder_state_input_h, decoder_state_input_c],
    [decoder_outputs2] + [state_h2, state_c2])
def decode_sequence(input_seq):
    # Encode the input as state vectors.
    e_out, e_h, e_c = encoder_model.predict(input_seq)

    # Generate empty target sequence of length 1.
    target_seq = np.zeros((1,1))

    # Populate the first word of target sequence with the start word.
    target_seq[0, 0] = target_word_index['sostok']

    stop_condition = False
    decoded_sentence = ''
    while not stop_condition:

        output_tokens, h, c = decoder_model.predict([target_seq] + [e_out, e_h, e_c])

        # Sample a token
        sampled_token_index = np.argmax(output_tokens[0, -1, :])
        sampled_token = reverse_target_word_index[sampled_token_index]

        if(sampled_token!='eostok'):
            decoded_sentence += ' '+sampled_token

        # Exit condition: either hit max length or find stop word.
        if (sampled_token == 'eostok'  or len(decoded_sentence.split()) >= (max_summary_len-1)):
            stop_condition = True

        # Update the target sequence (of length 1).
        target_seq = np.zeros((1,1))
        target_seq[0, 0] = sampled_token_index

        # Update internal states
        e_h, e_c = h, c

    return decoded_sentence
def seq2summary(input_seq):
    newString=''
    for i in input_seq:
        if((i!=0 and i!=target_word_index['sostok']) and i!=target_word_index['eostok']):
            newString=newString+reverse_target_word_index[i]+' '
    return newString

def seq2text(input_seq):
    newString=''
    for i in input_seq:
        if(i!=0):
            newString=newString+reverse_source_word_index[i]+' '
    return newString
for i in range(0,100):
    print("Review:",seq2text(x_tr[i]))
    print("Original summary:",seq2summary(y_tr[i]))
    print("Predicted summary:",decode_sequence(x_tr[i].reshape(1,max_text_len)))
    print("\n")
Review: gave caffeine shakes heart anxiety attack plus tastes unbelievably bad stick coffee tea soda thanks
Original summary: hour
Predicted summary:  not worth the money


Review: got great course good belgian chocolates better
Original summary: would like to give it stars but
Predicted summary:  good


Review: one best flavored coffees tried usually like flavored coffees one great serve company love
Original summary: delicious
Predicted summary:  great coffee


Review: salt separate area pain makes hard regulate salt putting like salt go ahead get product
Original summary: tastes ok packaging
Predicted summary:  salt


Review: really like product super easy order online delivered much cheaper buying gas station stocking good long drives
Original summary: turkey jerky is great
Predicted summary:  great product


Review: best salad dressing delivered promptly quantities last vidalia onion dressing compares made oak hill farms sometimes find costco order front door want even orders cut shipping costs
Original summary: my favorite salad dressing
Predicted summary:  great product


Review: think sitting around warehouse long time took long time send got tea tasted like cardboard red rasberry leaf tea know supposed taste like
Original summary: stale
Predicted summary:  not as good as


Review: year old cat special diet digestive problems also diabetes stopped eating usual special formula food tried different kinds catfood one liked easy digestion diabetes thank newman
Original summary: wonderful
Predicted summary:  cat food


Review: always perfect snack dog loves knows exactly starts ask time evening gets greenie snack thank excellent product fast delivery
Original summary: greenies buddy treat
Predicted summary:  great treat


Review: dog loves tiny treats keep one car one house
Original summary: dog loves them
Predicted summary:  my dog loves these


Review: liked coffee much subscribing dark rich smooth
Original summary: makes great cup of java
Predicted summary:  good coffee


Review: far dog tried chicken peanut butter flavor absolutely loves love natural makes happy giving dog something healthy treats small soft big plus calories
Original summary: love zuke mini naturals
Predicted summary:  my dog loves these


Review: absolutely delicious satisfy something sweet really filling great early morning time make breakfast great afternoon snack work feeling sluggish
Original summary: protein bar
Predicted summary:  yummy


Review: aware decaf coffee although showed search decaf cups intended purchase gift kept recipient drink caffeine favorite means
Original summary: not decaf
Predicted summary:  decaf decaf


Review: wonderful wrote perfect iced cookie one pen writing cookies names happy ca
Original summary: cookie
Predicted summary:  delicious


Review: truffle oil quite good prefer brand france urbani italy expensive oh delicious tried black white good black bit stronger pungent event healthy alternative butter enjoy
Original summary: delicious but not the best
Predicted summary:  great flavor


Review: enjoy coffee office split right middle loving think worth try order regularly
Original summary: hit or miss
Predicted summary:  good coffee


Review: husband gluten free food several years tried several different bread mixes first actually enjoys buying amazon saves loaf
Original summary: really good gluten free bread
Predicted summary:  great gluten free bread


Review: hubby eats says good snacks morning done apple flavor
Original summary: really good nice snack
Predicted summary:  great snack


Review: waste money disgusting product chocolate taste tastes like plastic lining paper carton using milk treated ultra high temperatures like fresh milk go get fresh milk hershey syrup want chocolate milk
Original summary: please do not waste your money
Predicted summary:  yuck


Review: absolutely loves apple chicken happy hips looks forward one morning one night gets soooo excited would eat allowed
Original summary: healthy treats
Predicted summary:  great for training


Review: strong much flavor little aroma tried purchase another time similiar brands met standards expected
Original summary: no flavor
Predicted summary:  san francisco bay coffee


Review: company wanted chose order anyway
Original summary: water
Predicted summary:  not good


Review: introduced number people hooked best sour gummy ever great flavors got great price
Original summary: new favorite
Predicted summary:  best licorice


Review: new price attractive however tastes horrible maybe old zico coconut water brands might find acceptable
Original summary: do not be by the price
Predicted summary:  terrible


Review: sure ever going buy product way expensive market price
Original summary: too expensive
Predicted summary:  good value


Review: flavor normally find local stores plus buy bulk things take savings add veggies even stir egg noodles cook add nutrition quick meals lot extra
Original summary: good value
Predicted summary:  great deal


Review: order tea labeled decaff must caffeine residue levels tested tea caffeine decaff non decaff tea anywhere caffeine caffeine caffeinated tea caffeine slightly less naturally present tea leaf
Original summary: caffeine is not
Predicted summary:  not as good as


Review: excellent babies toddler really best offer little one delicious rich vitamins calcium protein low fat sorry products available website
Original summary: excellent product for babies and toddler
Predicted summary:  great product


Review: purchased item dented would bet run dented product clearing ship ones
Original summary: sometimes dented
Predicted summary:  dented cans


Review: almost tastes like mini blueberry pie love one favorite thoroughly fallen love
Original summary: excellent love the blueberry pecan
Predicted summary:  yummy


Review: dog loves keeps busy minutes long time chew hound
Original summary: chew away
Predicted summary:  dog loves it


Review: plant came quickly looks great office nice pot plant thriving well
Original summary: very nice office plant
Predicted summary:  plant


Review: dog loves lickety stik bacon flavor since likes much plan getting flavors great liquid treat dog highly recommend lickety stik
Original summary: great dog treat
Predicted summary:  dog loves them


Review: great toy dogs chew everything else little literally eats toys one toys yet destroy loves carries around everywhere got rex cutest thing
Original summary: good for chewers
Predicted summary:  dogs love it


Review: really search good deals tea tea great price tea amazon almost cup price cup coffee herbal varieties low caffine good option wife used dinner coffe
Original summary: great price for great tea
Predicted summary:  great tea


Review: pricey essentially small bag hard crumbs maybe dog spoiled treats like third class treats definitely bottom doggie treat often simply walk away glad people like buying
Original summary: waste of money
Predicted summary:  not for dogs


Review: little pricey consider sugar low cal caffine really rich flavor best chai ever found
Original summary: fabulous product
Predicted summary:  delicious


Review: loves taste beef freeze dried dog treats use training really works
Original summary: dog lover
Predicted summary:  great training treat


Review: three dogs cairn terriers year old border collie proud greenies like taste helps keep gums teeth good shape
Original summary: our dogs love greenies
Predicted summary:  greenies


Review: good soft drink smooth strawberry cream soda tasty
Original summary: good stuff
Predicted summary:  good stuff


Review: item arrived sugar free shipped regular version caramel syrup small internal sticker bottle stated sugar free although company label bottle stated regular version
Original summary: wrong item
Predicted summary:  not as good as


Review: like strong coffee coffee rated found weak sickening taste
Original summary: disapointed
Predicted summary:  not bad


Review: saw peanut butter chocolate cereal knew try pleased eat chocolate breakfast feel guilty two kids love cereal well great eat alone favorite milk product yogurt mix homemade granola well
Original summary: the yummy
Predicted summary:  yummy


Review: begging time loves used buy small bottle buying every weeks since saw oz buying last lot longer gas money cheaper buy online
Original summary: my dog loves it
Predicted summary:  great product


Review: true also need decent scale tried caviar recipe everything worked perfectly first try fun easy make kit comes large enough samples looks like good uses
Original summary: great to
Predicted summary:  works great


Review: dog really likes treats like buy run mill treats loaded fat fillers continue buy
Original summary: buddy biscuits
Predicted summary:  my dog loves these


Review: tulsi green tea great good iced tea well
Original summary: green tea
Predicted summary:  green tea


Review: always put something market couple poof gone best tasting product pepsi
Original summary: best taste
Predicted summary:  great taste


Review: like tomatoes fresh flavorful also come carton welcome alternative metal cans impart flavor sometimes lined plastic containing
Original summary: yummy tomatoes good packaging
Predicted summary:  good product


Review: great get habit forming careful bought whole case save overall versus going supermarket rich dark chocolate crisp cookie worth every penny oreo eat heart
Original summary: delicious
Predicted summary:  love these


Review: else say arrived promptly perhaps time expected expiration date like next day good go
Original summary: baby loves it
Predicted summary:  not what expected


Review: bought local recently advertised cheesy flavor detectable product even salt flavor avoid product
Original summary: no cheese flavor
Predicted summary:  good but not great


Review: big volume coffee morning one great
Original summary: great morning coffee
Predicted summary:  great coffee


Review: drank try keep awake fell asleep minutes drinking feel anything
Original summary: it made me fall
Predicted summary:  great taste


Review: drink cups day verona italian french roast coffee wanted try lower acid version brand coffee smells tastes like vinegar totally unpalatable better drinking water acid coffee bothers
Original summary: single worst coffee ever
Predicted summary:  not very good


Review: getting price however afraid stocking anymore reduced price think one trying eat crackers low calorie string cheese breakfast every total calories put breakfast baggie go
Original summary: am addicted to these
Predicted summary:  not as good as expected


Review: first time using fondarific fondant general one really easy use baby shower cake worked indicated also colored made two tier cake final product looked great greasy
Original summary: easy to use
Predicted summary:  great product


Review: work home drink cups cup coffee day good tasting coffee lowest price cup market
Original summary: great coffee great price
Predicted summary:  great coffee


Review: guys say natural really tastes great pleasantly surprised stand flavor carbonated think would even better product time come fed sweet juices aftertaste make obvious really natural switch really gets vote
Original summary: great taste all natural
Predicted summary:  not very good


Review: product good goes long way quite good one dd good product less
Original summary: very good
Predicted summary:  good stuff


Review: tea wonderful soothing even soothing get shipped house found hard find decaffeinated tea grocery store much easier
Original summary: decaffeinated french vanilla tea yummy
Predicted summary:  great tea


Review: wow little calorie espresso sugar serve cold delicious little shot espresso sugar overly sweet sugar helps offset taste espresso caffe bitter sweet tastes good really gave afternoon kick pants
Original summary: nice little pick me up
Predicted summary:  best water ever


Review: mayonnaise delicious side side taste test would give hellman edge hellman richer taste
Original summary: excellent but
Predicted summary:  good stuff


Review: love medium full flavored roast smooth taste bitter acidic taste excellent coffee good value also try timothy kona good also
Original summary: wonderful coffee
Predicted summary:  great coffee


Review: nice item chunks meat good gravy cat fond varieties nice little treat nonetheless think item bit pricy per ounce
Original summary: nice but pricey
Predicted summary:  good cat food


Review: bought cookies gifts open last long good make great gifts would definitely buy
Original summary: mouth watery cookies
Predicted summary:  cookies


Review: great price fast shipping best chips better ingredients less calories snack foods plus taste like real chips
Original summary: pop chips are the best
Predicted summary:  great chips


Review: taco bell chipotle sauce bold flavorful tried chicken wings tacos salad made dish extremely tasty glad sampled new sauce staple condiment
Original summary: bold flavor
Predicted summary:  great taste


Review: bought seeds make centerpieces really surprised fast grow planted seeds potting soil without ny preparation anything kept watering days super tall ready displayed centerpieces perfect
Original summary: perfect for in days
Predicted summary:  great seeds


Review: every time need sun dried tomatoes local grocery stores conveniently small pouches ensure always hand called recipe
Original summary: sun dried tomato bliss
Predicted summary:  great product


Review: love soup eat plain use recipe cannot find area glad amazon
Original summary: soup chicken cheese
Predicted summary:  soup


Review: size quite good dog training smell strong cannot put open bag must seal everytime gave treat otherwise dog stand trying fetch believe taste great puppy purchase sure
Original summary: strong smell and my puppy loves it
Predicted summary:  my dog loves these


Review: love chips auto order every months taste great whole bag calories bag every day sure helped weight loss little bags eat huge amount
Original summary: great purchase
Predicted summary:  great chips


Review: many kit wines cost three four times made many kits find fine table wine recommend adding water five gallon mark flavor
Original summary: good wine
Predicted summary:  great product


Review: sooo much pepper heavy salt reminds adams trick food cannot eat seriously fresh nuts seasoned
Original summary: over the top seasoning
Predicted summary:  great salt


Review: loved brand best vanilla flavor others tried would buy better price
Original summary: wolfgang puck coffee vanilla
Predicted summary:  great taste


Review: another brand cinammon carried amazon much better tasting brand maybe packaging part problem simple plastic bag tie amazon brand comes carefully set plastic box
Original summary: edible have had much better
Predicted summary:  not as good as expected


Review: throw pack one actually taste bad especially compared orange tangerine like carbonation adds juice flavors need work switch drinks best worst watermelon strawberry kiwi berry black cherry orange tangerine
Original summary: my favorite of the four tried
Predicted summary:  tastes like


Review: daughter drinking since months old months old still loves snack time healthy delicious great addition menu
Original summary: great snack
Predicted summary:  great snack


Review: live guinea africa order products delivered boat every months sometimes disappointed time zero calories zero carbs taste great price zero delivery costs prime ordered different flavors one favorite love
Original summary: love it
Predicted summary:  great product


Review: purchased larger size love size perfect keep purse snack especially times others dessert snack cannot eat must gluten free spouse touch diet food loves
Original summary: cannot get enough
Predicted summary:  great snack


Review: always house drink favorite mix sprite oh good every day mind larger bottles use much bring
Original summary: am an adult still love this
Predicted summary:  great taste


Review: ginger snaps overpowering ginger go great milk really enjoyed house great buy affordable compared alternative diet foods last least week store well
Original summary: you can eat ginger again
Predicted summary:  ginger


Review: give squid one star use might thoroughly disappointed quite possibly call crazy
Original summary: can for your
Predicted summary:  good stuff


Review: quality seeds excellent begin germinate hours days ready use never sprouted seeds results good easily recommend sprouter whether human consumption four legged friends
Original summary: wheat grass seeds
Predicted summary:  great product


Review: love stuff great store bought homemade baked goods kicking things professional level works colored dark light frosting also used dusting powdered sugar pretty fine texture
Original summary: fun like dust
Predicted summary:  perfect


Review: bought jumbo greenies black lab loved way expensive regular use notice difference breath primary reason buying
Original summary: jumbo greenies good but very expensive
Predicted summary:  greenies


Review: also bought costco per box included bags oz kids fighting remaining bags good buying due price high price prevent product reaching mass distribution
Original summary: very good but too pricey
Predicted summary:  good but not the best


Review: originally found mints whole foods taste superb get lot money plus comes cute little tin uses dog loves go organic
Original summary: wonderful
Predicted summary:  my dog loves this


Review: regular spam awful almost inedible would give tastes like animal know mean fellow spam turkey spam pretty good great would give worth try
Original summary: better than regular
Predicted summary:  not bad


Review: really need know many cans also whitefish tuna buffet canned cat food thanks
Original summary: need to know how many in case
Predicted summary:  great product


Review: great tasting rich flavor perfect making nice hot cup mocha bought test hershey syrup mocha incredible distinct taste difference noticeable much richer tastes like chocolate less sugary hershey syrup
Original summary: great taste
Predicted summary:  great flavor


Review: number one japan number one great save get shipped automatically every month lugging car
Original summary: great tea
Predicted summary:  great price


Review: bought item read best mayo sold yes even better worlds favorite hellman well review good bit better hellman fact put empty hellman jar said nothing family never knew difference
Original summary: blue mayo
Predicted summary:  good stuff


Review: gum great makes car smell good leave refreshing sweet tart smooth
Original summary: love the gum and the price
Predicted summary:  gum


Review: flavorful smells like heaven great price compared stores arrived fast
Original summary: divine
Predicted summary:  great product


Review: love low calorie organic doctors recommend grams fiber daily smart bran grams per serving fruits veggies set day eat dry vanilla frozen yogurt cinnamon
Original summary: yes to smart bran
Predicted summary:  love these


Review: found spice blend dallas years back tell restaurant using grilled shrimp like cajun spice grilling fish recommend store dry place replace every year least lose flavor
Original summary: good stuff
Predicted summary:  good stuff


Review: plain riceselect couscous delicious easy quick prepare great side item base main course far found bad product riceselect
Original summary: yummy
Predicted summary:  good