├── data ├── test │ ├── workspace_list │ ├── Toys_and_Games.train │ └── Baby.train ├── train │ ├── Beauty.train │ ├── Books.train │ ├── Apps_for_Android.train │ ├── CDs_and_Vinyl.train │ ├── Electronics.train │ ├── Home_and_Kitchen.train │ ├── Kindle_Store.train │ ├── Movies_and_TV.train │ ├── Office_Products.train │ ├── Sports_and_Outdoors.train │ ├── Clothing_Shoes_and_Jewelry.train │ ├── Health_and_Personal_Care.train │ ├── Cell_Phones_and_Accessories.train │ └── workspace_list └── dev │ ├── workspace_list │ ├── Pet_Supplies.train │ └── Tools_and_Home_Improvement.train ├── run.sh ├── config └── config ├── src ├── process_results.py ├── simple_tokenizer.py ├── wordvector_integrator.py ├── vocabulary.py ├── all_parameters.py ├── main.py ├── utils.py ├── workspace.py ├── experiment.py └── model.py ├── .gitattributes ├── LICENSE └── README.md /data/test/workspace_list: -------------------------------------------------------------------------------- 1 | Baby en 200 200 200 0 2 | Digital_Music en 200 200 200 0 3 | Toys_and_Games en 200 200 200 0 4 | Video_Games en 200 200 200 0 5 | -------------------------------------------------------------------------------- /data/train/Beauty.train: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1c8b613a2283186ebd02c8439c1b2d06267cad1764fcab1a5eef380eb4929743 3 | size 12402915 4 | -------------------------------------------------------------------------------- /data/train/Books.train: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:71029cbaf5352307ec0add5ceab850294f76233351f9413dfb190b4e7ba1652c 3 | size 446376881 4 | -------------------------------------------------------------------------------- /run.sh: -------------------------------------------------------------------------------- 1 | cd src 2 | python main.py -config ../config/config -section test-run > ./log.txt 3 | cat ./log.txt | grep 'Meta-Test\|Meta-Valid' | python process_results.py 4 | -------------------------------------------------------------------------------- /data/train/Apps_for_Android.train: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ef1662685f9f60283512c67f316111a5eb58f9a1a561554d15dca1f5d4d7e789 3 | size 63452934 4 | -------------------------------------------------------------------------------- /data/train/CDs_and_Vinyl.train: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0dab7e08a7a9876bf6a23deb2fd654eb417b33aaaebe5f104c09253835da885a 3 | size 39433787 4 | -------------------------------------------------------------------------------- /data/train/Electronics.train: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:924d006ad063a19075e8375708186618589b522babd91bf5fd4770df5fd8fcfd 3 | size 106932515 4 | -------------------------------------------------------------------------------- /data/train/Home_and_Kitchen.train: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7addbc74e06a21e3b64a74930ce2c4b62ba838c9b02787f4757667d6d6d9c9e5 3 | size 37190796 4 | -------------------------------------------------------------------------------- /data/train/Kindle_Store.train: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2cc118d4c69d24c616339eeffd4a8f5a1066f2da6748fe74458319423cfb88e5 3 | size 57236593 4 | -------------------------------------------------------------------------------- /data/train/Movies_and_TV.train: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8a19d48cb75ccfe0f2e904f8b572db7426191cc9e2478f56f2605e35ed28f50b 3 | size 82177682 4 | -------------------------------------------------------------------------------- /data/train/Office_Products.train: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d913727c66a39f5cbb2651e364d66d64061756fdbfbf2a6bfe39950dd7d59479 3 | size 2088985 4 | -------------------------------------------------------------------------------- /data/dev/workspace_list: -------------------------------------------------------------------------------- 1 | Pet_Supplies en 200 200 200 0 2 | Automotive en 200 200 200 0 3 | Grocery_and_Gourmet_Food en 200 200 200 0 4 | Tools_and_Home_Improvement en 200 200 200 0 5 | -------------------------------------------------------------------------------- /data/train/Sports_and_Outdoors.train: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5cf13ad8fc03cca633425682a1f3640b2edc9fb38546862e68b5e1a512cec571 3 | size 21097079 4 | -------------------------------------------------------------------------------- /data/train/Clothing_Shoes_and_Jewelry.train: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ab400da57ce11e8b3897b24d05662981520f4967e936060496816f0bb535048b 3 | size 21480567 4 | -------------------------------------------------------------------------------- /data/train/Health_and_Personal_Care.train: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5f78247dc02bc18479b52b29c1ed1a0fba13f09886effa82c7cd747fc93d72aa 3 | size 22811158 4 | -------------------------------------------------------------------------------- /data/train/Cell_Phones_and_Accessories.train: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1050cafc84db0d8c09e8f4078737fdf775edad289e2795137cf7b60c6972cb9d 3 | size 12926062 4 | -------------------------------------------------------------------------------- /data/train/workspace_list: -------------------------------------------------------------------------------- 1 | Apps_for_Android 2 | Beauty 3 | Books 4 | CDs_and_Vinyl 5 | Cell_Phones_and_Accessories 6 | Clothing_Shoes_and_Jewelry 7 | Electronics 8 | Health_and_Personal_Care 9 | Home_and_Kitchen 10 | Kindle_Store 11 | Movies_and_TV 12 | Office_Products 13 | Sports_and_Outdoors 14 | -------------------------------------------------------------------------------- /config/config: -------------------------------------------------------------------------------- 1 | [test-run] 2 | mnet_training_dir=../data/train/ 3 | mnet_training_list=../data/train/workspace_list 4 | mnet_dev_dir=../data/dev/ 5 | mnet_dev_list=../data/dev/workspace_list 6 | testing_dir=../data/test/ 7 | testing_list=../data/test/workspace_list 8 | w2vfile=./glove.6B.100d.txt.ext 9 | softmax_factor=10.0 10 | alpha_pos=1.0 11 | alpha_neg=1.0 12 | alpha_indomain=1.0 13 | ood_example_size=1 14 | ood_threshold=0.6 15 | ood_threshold_margin=0.2 16 | hidden_size=200 17 | sampling_classes=2 18 | min_ss_size=100 19 | -------------------------------------------------------------------------------- /src/process_results.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | bestaccv = 0.0 4 | besteer = 1.0 5 | bestcer = 1.0 6 | bestcerth = 1.0 7 | 8 | ii = 0 9 | for line in sys.stdin: 10 | line = line.strip() 11 | if ii % 2 == 0: 12 | f = float(line.split()[-2][:-1]) 13 | if bestaccv < f: 14 | bestaccv = f 15 | foundbest = True 16 | else: 17 | foundbest = False 18 | else: 19 | if foundbest == True: 20 | besteer = float(line.split()[-3][:-1]) 21 | bestcer = 1.0 - float(line.split()[-2][:-1]) 22 | bestcerth = 1.0 - float(line.split()[-1]) 23 | ii += 1 24 | 25 | 26 | print('Average EER, CER, COMBINED_CER on Meta-Test:', besteer, bestcer, bestcerth) 27 | -------------------------------------------------------------------------------- /src/simple_tokenizer.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | def tokenizeSimple(sent, max_token_size=100000): 4 | ret = sent.lower() 5 | ret = ret.replace("\"", " \" ") 6 | ret = ret.replace(",", " , ") 7 | ret = ret.replace(".", " . ") 8 | ret = ret.replace("(", " ( ") 9 | ret = ret.replace(")", " ) ") 10 | ret = ret.replace("/", " / ") 11 | ret = ret.replace("?", " ? ") 12 | ret = ret.replace("!", " ! ") 13 | ret = ret.replace("n't", " n't ") 14 | ret = ret.replace("'ve ", " 've ") 15 | ret = ret.replace("'ll ", " 'll ") 16 | ret = ret.replace("'re ", " 're ") 17 | ret = ret.replace("'s ", " 's ") 18 | ret = ret.replace("'m ", " 'm ") 19 | ret = ret.replace("'d ", " 'd ") 20 | ret = re.sub(" +", ' ', ret) 21 | ret = ret.strip() 22 | ret = ret.split(' ')[:max_token_size] 23 | 24 | while len(ret) < max_token_size: 25 | ret.append("") 26 | return ret -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | data/train/Kindle_Store.train filter=lfs diff=lfs merge=lfs -text 2 | data/train/Sports_and_Outdoors.train filter=lfs diff=lfs merge=lfs -text 3 | data/train/Apps_for_Android.train filter=lfs diff=lfs merge=lfs -text 4 | data/train/Beauty.train filter=lfs diff=lfs merge=lfs -text 5 | data/train/Books.train filter=lfs diff=lfs merge=lfs -text 6 | data/train/Clothing_Shoes_and_Jewelry.train filter=lfs diff=lfs merge=lfs -text 7 | data/train/Electronics.train filter=lfs diff=lfs merge=lfs -text 8 | data/train/Home_and_Kitchen.train filter=lfs diff=lfs merge=lfs -text 9 | data/train/CDs_and_Vinyl.train filter=lfs diff=lfs merge=lfs -text 10 | data/train/Cell_Phones_and_Accessories.train filter=lfs diff=lfs merge=lfs -text 11 | data/train/Health_and_Personal_Care.train filter=lfs diff=lfs merge=lfs -text 12 | data/train/Movies_and_TV.train filter=lfs diff=lfs merge=lfs -text 13 | data/train/Office_Products.train filter=lfs diff=lfs merge=lfs -text 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 IBM 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Out-of-domain Prototypical Networks 2 | Code and Amazon Data for the EMNLP 2019 paper: [Out-of-Domain Detection for Low-Resource Text Classification Tasks] 3 | The experiments were conducted on Python 3.6 and Tensorflow 1.8. 4 | 5 | ## Amazon_few_shot 6 | The few-shot learning dataset with out-of-domain testing examples (generated from Amazon review) is in `data` directory, including META-TRAIN, META-DEV and META-TEST. 7 | 8 | ## Data preparation 9 | 1. Update the config/config file by assigning the corresponding folder and dataset lists. 10 | 2. In our paper, we use word embeddings, trained from Wikipedia (about 1G tokens). We cannot release it. You can use a publicly-available English word embeddings, like Glove (100 dimensions). You need to add two extra tokens at the beginning, `` for padding and `` for unknown words. They can be initialized with zero vectors. The format of word embeddings is ` \t ...`. 11 | 12 | ## How to run the code 13 | `bash run.sh` 14 | 15 | The output will be, for example: 16 | `Average EER, CER, COMBINED_CER on Meta-Test: 0.233 0.303 0.405` 17 | -------------------------------------------------------------------------------- /src/wordvector_integrator.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import json 3 | import tensorflow as tf 4 | import numpy 5 | from all_parameters import get_all_parameters 6 | 7 | 8 | class wordvector_integrator: 9 | def __init__(self, params): 10 | self.params = params 11 | voc_info = json.load(open(self.params['initial_manager_file'], 'r')) 12 | self.idx2str = voc_info['idx2str'] 13 | self.str2idx = voc_info['str2idx'] 14 | 15 | self.str2idx = dict([(key, int(self.str2idx[key])) for key in self.str2idx]) 16 | self.idx2str = dict([(int(key), self.idx2str[key]) for key in self.idx2str]) 17 | 18 | self.initial_word_vector_tensor = tf.get_variable("embedding/embedding", 19 | shape=[len(self.idx2str), 100], 20 | dtype=tf.float32) 21 | self.initial_w2v = None 22 | 23 | def load_initial_wordvectors(self, sess): 24 | saver = tf.train.Saver() 25 | saver.restore(sess, self.params['initial_model_prefix_emb']) 26 | WV = sess.run([self.initial_word_vector_tensor]) 27 | self.initial_w2v = WV[0] 28 | print("initial word vector length", len(self.initial_w2v)) 29 | print("initial vocabulary size", len(self.str2idx)) 30 | 31 | def combine_with_indomain(self, voclist): 32 | neww2v = self.initial_w2v.tolist() 33 | for wd in voclist: 34 | if wd not in self.str2idx: 35 | # self.initial_w2v = numpy.concatenate((self.initial_w2v, 36 | # [(numpy.random.rand(self.params['emb_size']) - 0.5) *2])) 37 | neww2v.append(((numpy.random.rand(self.params['emb_size']) - 0.5) * 2).tolist()) 38 | 39 | self.str2idx[wd] = len(self.str2idx) 40 | self.idx2str[len(self.idx2str)] = wd 41 | self.initial_w2v = numpy.array(neww2v) 42 | return self.str2idx, self.initial_w2v 43 | 44 | -------------------------------------------------------------------------------- /src/vocabulary.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import numpy 3 | import os 4 | from simple_tokenizer import tokenizeSimple 5 | 6 | 7 | def read_word_vectors(filename): 8 | wdmap = dict() 9 | W = [] 10 | curr = 0 11 | with open(filename, 'r', encoding='utf-8') as f: 12 | for line in f: 13 | line = line.strip() 14 | items = line.split('\t') 15 | if len(items) == 2 and items[0] not in wdmap: 16 | wdmap[items[0]] = curr 17 | W.append([float(ii) for ii in items[1].split()]) 18 | curr += 1 19 | f.close() 20 | print('wdmap', len(wdmap)) 21 | print('len(W)', len(W)) 22 | return wdmap, W 23 | 24 | 25 | def read_word2idx(infile): 26 | word2idx = dict() 27 | with open(infile, 'r') as fi: 28 | for line in fi: 29 | wd, idx = line[:-1].split('\t') 30 | word2idx[wd] = int(idx) 31 | fi.close() 32 | return word2idx 33 | 34 | 35 | def get_word_info(params): 36 | word2idx = dict() 37 | w2v = [] 38 | word2idx, w2v = read_word_vectors(params['w2vfile']) 39 | enrich_word_info_with_train_file(word2idx, 40 | w2v, 41 | params['mnet_training_dir'], 42 | params['mnet_training_list'], 43 | params) 44 | print("After combined with train file") 45 | print("word2idx size:", len(word2idx)) 46 | for i in range(len(w2v)): 47 | if len(w2v[i]) != params['emb_size']: 48 | raise Exception("wordvec idx %d has a dimension of %d" 49 | % (i, len(w2v[i]))) 50 | w2v = numpy.array(w2v) 51 | return word2idx, w2v 52 | 53 | 54 | def enrich_word_info_with_train_file(word2idx, 55 | w2v, 56 | mnet_training_wksp_dir, 57 | mnet_training_wksp_list, params): 58 | with open(mnet_training_wksp_list, 'r') as fi: 59 | wksp_ids = fi.readlines() 60 | wksp_ids = [wid.split('\t')[0] for wid in wksp_ids] 61 | if params['single_workspace'] is False: 62 | wksp_tr_files = [os.path.join(mnet_training_wksp_dir, 63 | wksp.strip()+'.train') 64 | for wksp in wksp_ids] 65 | else: 66 | wksp_tr_files = [os.path.join(mnet_training_wksp_dir, 67 | wksp.strip()+'.train') 68 | for wksp in wksp_ids] 69 | fi.close() 70 | 71 | for wkspfile in wksp_tr_files: 72 | fi = open(wkspfile, 'r') 73 | for line in fi: 74 | line = line.strip() 75 | items = line.split('\t') 76 | if len(items) == 2: 77 | text, lb = items 78 | textwds = tokenizeSimple(text, params['max_length']) 79 | textids = [] 80 | for wd in textwds: 81 | if wd in word2idx: 82 | textids.append(word2idx[wd]) 83 | else: 84 | word2idx[wd] = len(word2idx) 85 | if w2v is not None: 86 | w2v.append(((numpy.random.rand(params['emb_size']) 87 | - 0.5) * 2).tolist()) 88 | return word2idx, w2v 89 | 90 | 91 | def write_word2idx(word2idx, outfile): 92 | with open(outfile, 'w') as fo: 93 | for wd in word2idx: 94 | fo.write(wd+'\t'+str(word2idx[wd])+'\n') 95 | fo.close() 96 | return 97 | -------------------------------------------------------------------------------- /src/all_parameters.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | 3 | 4 | def str2bool(v): 5 | if v == 'True': 6 | return True 7 | elif v == 'False': 8 | return False 9 | else: 10 | raise Exception('bad string for boolean') 11 | 12 | 13 | def set_default_values(): 14 | '''set default values for every possible parameters.''' 15 | params = dict() 16 | 17 | params['total_epoch'] = 5000 18 | params['single_workspace'] = False 19 | 20 | # data required 21 | params['w2vfile'] = '/u/mingtan/data/few-shot-learning/word2vectors/simple.token.vectors' 22 | params['mnet_training_dir'] = '' 23 | params['mnet_training_list'] = '' 24 | params['mnet_dev_dir'] = '' 25 | params['mnet_dev_list'] = '' 26 | 27 | params['testing_dir'] = '' 28 | params['testing_list'] = '' 29 | 30 | params['model_string'] = 'dummy' 31 | params['model_dir'] = '/dccstor/slad/mingtan/offtopic_paper/outputs/models' 32 | 33 | # parameters that determine the shape of the input 34 | params['batch_size'] = 10 35 | params['max_length'] = 40 36 | params['emb_size'] = 100 37 | params['min_ss_size'] = 200 38 | 39 | # parameters about the model 40 | params['hidden_size'] = 100 41 | 42 | # model tricks 43 | params['softmax_factor'] = 5.0 44 | params['learning_rate'] = 0.001 45 | params['remove_target_from_support_set'] = True 46 | params['dropout_keep_prob'] = 1.0 47 | 48 | # loaded in main function 49 | params['vocabulary'] = None 50 | params["wordvectors"] = None 51 | 52 | params['offtopic_label'] = 'OUT_OF_DOMAIN_LABEL' 53 | 54 | params['sampling_classes'] = 0 55 | params['topk_ss'] = 0 56 | params['layer_num'] = 1 57 | 58 | params['enable_batchnorm'] = True 59 | params['mtl_num_tasks'] = 0 60 | params['filter_size'] = 3 61 | params['ood_threshold'] = 0.6 62 | params['ood_threshold_margin'] = 0.2 63 | params['ood_example_size'] = 5 64 | params['alpha_pos'] = 1.0 65 | params['alpha_neg'] = 1.0 66 | params['alpha_indomain'] = 1.0 67 | params['seed'] = 3143 68 | 69 | return params 70 | 71 | 72 | def get_all_parameters(config_parser=None, section=None, print_params=True): 73 | '''read all parameters''' 74 | params = set_default_values() 75 | if not section or not config_parser: 76 | print('Use all default parameters.') 77 | return params 78 | 79 | try: 80 | options = config_parser.options(section) 81 | for option in options: 82 | if option not in params: 83 | Exception("Bad or missing entry is configuration file") 84 | paramstr = config_parser.get(section, option) 85 | if paramstr == 'True' or paramstr == 'False': 86 | params[option] = str2bool(paramstr) 87 | else: 88 | params[option] = paramstr 89 | 90 | params['total_epoch'] = int(params['total_epoch']) 91 | params['batch_size'] = int(params['batch_size']) 92 | params['max_length'] = int(params['max_length']) 93 | params['hidden_size'] = int(params['hidden_size']) 94 | params['softmax_factor'] = float(params['softmax_factor']) 95 | params['learning_rate'] = float(params['learning_rate']) 96 | params['sampling_classes'] = int(params['sampling_classes']) 97 | params['min_ss_size'] = int(params['min_ss_size']) 98 | params['emb_size'] = int(params['emb_size']) 99 | params['dropout_keep_prob'] = float(params['dropout_keep_prob']) 100 | params['topk_ss'] = int(params['topk_ss']) 101 | params['layer_num'] = int(params['layer_num']) 102 | params['mtl_num_tasks'] = int(params['mtl_num_tasks']) 103 | params['filter_size'] = int(params['filter_size']) 104 | params['ood_threshold'] = float(params['ood_threshold']) 105 | params['ood_threshold_margin'] = float(params['ood_threshold_margin']) 106 | params['ood_example_size'] = int(params['ood_example_size']) 107 | params['alpha_pos'] = float(params['alpha_pos']) 108 | params['alpha_neg'] = float(params['alpha_neg']) 109 | params['alpha_indomain'] = float(params['alpha_indomain']) 110 | params['seed'] = int(params['seed']) 111 | except Exception as e: 112 | print(e.message) 113 | exit(1) 114 | 115 | if print_params: 116 | print_parameters(params) 117 | return params 118 | 119 | 120 | def print_parameters(params): 121 | '''print parameters''' 122 | print("All parameters:") 123 | for p in params: 124 | print("\t{}==>{}".format(p, params[p])) 125 | -------------------------------------------------------------------------------- /src/main.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import numpy 3 | import sys 4 | import os 5 | import configparser 6 | from all_parameters import get_all_parameters 7 | import tensorflow as tf 8 | import argparse 9 | from utils import compute_values, get_data 10 | from experiment import RunExperiment 11 | from workspace import workspace 12 | from model import MatchingNetwork 13 | from vocabulary import get_word_info 14 | import math 15 | import random 16 | 17 | 18 | def train_test_model(params, sess, model, experiment): 19 | TEST_FILE_INDEX = 2 20 | train_data = get_data(params, 21 | params['mnet_training_list'], 22 | role='train_workspace') 23 | 24 | dev_data = get_data(params, 25 | params['mnet_dev_list'], 26 | role='valid_workspace') 27 | 28 | test_data = get_data(params, 29 | params['testing_list'], 30 | role='test_workspace') 31 | 32 | best_v_macro_avg_eer = 1.0 33 | total_epoches = params['total_epoch'] 34 | for e in range(0, total_epoches): 35 | avg_loss = 0.0 36 | 37 | for workspace_idx in numpy.random.permutation(range(len(train_data))): 38 | curr_train_workspace = train_data[workspace_idx] 39 | all_ood_workapces = train_data[:workspace_idx] + train_data[workspace_idx+1:] 40 | batch_loss = experiment.run_training_epoch(curr_train_workspace, 41 | all_ood_workapces) 42 | if params['single_workspace'] is False or e % 500 == 0: 43 | print("Epoch {}: train_loss: {}".format(e, 44 | batch_loss)) 45 | 46 | sys.stdout.flush() 47 | avg_loss += batch_loss 48 | avg_loss = avg_loss / len(train_data) 49 | print('Epoch {}: avg_loss: {}'.format(e, 50 | avg_loss)) 51 | 52 | if e % 50 == 0: 53 | sys.stdout.flush() 54 | 55 | v_macro_avg_eer, v_macro_avg_far, v_macro_avg_frr, \ 56 | v_macro_avg_acc_ideal, v_macro_avg_acc, \ 57 | val_output_info_list = compute_values(params, experiment, dev_data, e) 58 | 59 | t_macro_avg_eer, t_macro_avg_far, t_macro_avg_frr, \ 60 | t_macro_avg_acc_ideal, t_macro_avg_acc, \ 61 | test_output_info_list = compute_values(params, experiment, test_data, e) 62 | 63 | print("Meta-Valid Macro(eer, onacc_ideal, onacc): %.3f, %.3f, %.3f" % 64 | (v_macro_avg_eer, 65 | v_macro_avg_acc_ideal, 66 | v_macro_avg_acc)) 67 | print("Meta-Test Macro(eer, onacc_ideal, onacc): %.3f, %.3f, %.3f" % 68 | (t_macro_avg_eer, 69 | t_macro_avg_acc_ideal, 70 | t_macro_avg_acc)) 71 | 72 | if __name__ == '__main__': 73 | parser = argparse.ArgumentParser(description="Matching Network for few-shot learning.") 74 | parser.add_argument('-config', help="path to configuration file", 75 | default="./config") 76 | parser.add_argument('-section', help="the section name of the experiment") 77 | 78 | args = parser.parse_args() 79 | config_paths = [args.config] 80 | config_parser = configparser.SafeConfigParser() 81 | config_found = config_parser.read(config_paths) 82 | 83 | params = get_all_parameters(config_parser, args.section) 84 | params['model_string'] = args.section 85 | 86 | tf.set_random_seed(params['seed']) 87 | numpy.random.seed(params['seed']) 88 | random.seed(params['seed']) 89 | 90 | print('Parameters:', params) 91 | sys.stdout.flush() 92 | 93 | # build the vocabulary 94 | # if mode is train, vocabulary is train_data word + old word vectors 95 | # otherwise, vocabulary is read from wordd2idx file, params["wordvectors"] 96 | # is initialized randomly, restored by model file later 97 | config = tf.ConfigProto() 98 | config.gpu_options.allow_growth = True 99 | 100 | with tf.Session(config=config) as sess: 101 | voc, w2v = get_word_info(params) 102 | 103 | params['vocabulary'] = voc 104 | voclist = [None] * len(voc) 105 | for v in voc: 106 | voclist[voc[v]] = v 107 | params['voclist'] = voclist 108 | params["wordvectors"] = w2v 109 | 110 | tf.reset_default_graph() 111 | with tf.Graph().as_default(): 112 | sess = tf.Session() 113 | with sess.as_default(): 114 | 115 | model = MatchingNetwork(params) 116 | model.init() 117 | experiment = RunExperiment(model, params, sess) 118 | sess.run(tf.global_variables_initializer()) 119 | train_test_model(params, sess, model, experiment) 120 | print("=====Training Finished======") 121 | -------------------------------------------------------------------------------- /src/utils.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import math 3 | from workspace import workspace 4 | 5 | def search_best_threshold(params, valid_output_info_list): 6 | dataset_best_thresholds = [] 7 | dataset_best_values = [] 8 | 9 | for valid_output_info in valid_output_info_list: 10 | bestT = 0 11 | bestV = 1 12 | best_frr = 0 13 | best_far = 1 14 | 15 | offsize = len([conf for pred, gt, conf in valid_output_info 16 | if gt == params['offtopic_label']]) 17 | insize = len([conf for pred, gt, conf in valid_output_info 18 | if gt != params['offtopic_label']]) 19 | 20 | print('offsize, insize', offsize, insize) 21 | sorted_valid_output_info = sorted(valid_output_info, key=lambda x: x[2]) 22 | 23 | accepted_oo = offsize 24 | rejected_in = 0.0 25 | threshold = 0.0 26 | ind = 0 27 | for pred, gt, conf in sorted_valid_output_info[:-1]: 28 | threshold = (sorted_valid_output_info[ind][2] + 29 | sorted_valid_output_info[ind+1][2])/2.0 30 | if gt != params['offtopic_label']: 31 | rejected_in += 1.0 32 | else: 33 | accepted_oo -= 1.0 34 | 35 | frr = rejected_in / insize 36 | far = accepted_oo / offsize 37 | dist = math.fabs(frr - far) 38 | if dist < bestV: 39 | bestV = dist 40 | bestT = threshold 41 | best_frr = frr 42 | best_far = far 43 | ind += 1 44 | 45 | dataset_best_thresholds.append(bestT) 46 | dataset_best_values.append(bestV) 47 | print('bestT, bestV, bestFAR, bestFRR', 48 | bestT, bestV, best_far, best_frr) 49 | 50 | return dataset_best_thresholds, dataset_best_values 51 | 52 | 53 | def get_results(params, output_info, threshold): 54 | 55 | total_gt_ontopic_utt = len([gt for pred, gt, conf in output_info 56 | if gt != params['offtopic_label']]) 57 | total_gt_offtopic_utt = len(output_info) - total_gt_ontopic_utt 58 | 59 | accepted_oo = 0.0 60 | rejected_in = 0.0 61 | correct_domain_label = 0.0 62 | correct_wo_thr = 0.0 63 | correct_w_thr = 0.0 64 | 65 | for pred, gt, conf in output_info: 66 | if conf < threshold: 67 | pred1 = params['offtopic_label'] 68 | else: 69 | pred1 = pred 70 | 71 | if gt == params['offtopic_label'] and pred1 != gt: 72 | accepted_oo += 1 73 | elif gt != params['offtopic_label'] and pred1 == params['offtopic_label']: 74 | rejected_in += 1 75 | else: 76 | correct_domain_label += 1 77 | 78 | if gt != params['offtopic_label'] and pred == gt: 79 | correct_wo_thr += 1 80 | if gt != params['offtopic_label'] and pred1 == gt: 81 | correct_w_thr += 1 82 | 83 | far = accepted_oo / total_gt_offtopic_utt 84 | frr = rejected_in / total_gt_ontopic_utt 85 | eer = 1 - correct_domain_label / len(output_info) 86 | ontopic_acc_ideal = correct_wo_thr / total_gt_ontopic_utt 87 | ontopic_acc = correct_w_thr / total_gt_ontopic_utt 88 | 89 | return eer, far, frr, ontopic_acc_ideal, ontopic_acc 90 | 91 | 92 | def compute_values(params, experiment, result_data, epoch): 93 | 94 | t_macro_avg_eer = 0.0 95 | t_macro_avg_far = 0.0 96 | t_macro_avg_frr = 0.0 97 | 98 | t_macro_avg_acc_ideal = 0.0 99 | t_macro_avg_acc = 0.0 100 | 101 | test_output_info_list = [] 102 | 103 | for workspace_idx in range(len(result_data)): 104 | curr_dev_workspace = result_data[workspace_idx] 105 | _, _, test_output_info = \ 106 | experiment.run_testing_epoch(epoch=epoch, 107 | test_workspace=curr_dev_workspace) 108 | test_output_info_list.append(test_output_info) 109 | 110 | thesholds, _ = search_best_threshold(params, test_output_info_list) 111 | 112 | for workspace_idx in range(len(result_data)): 113 | curr_dev_workspace = result_data[workspace_idx] 114 | print(curr_dev_workspace.target_sets_files[2]) 115 | 116 | test_output_info = test_output_info_list[workspace_idx] 117 | test_eer, test_far, test_frr, test_ontopic_acc_ideal, \ 118 | test_ontopic_acc = get_results(params, test_output_info, 119 | thesholds[workspace_idx]) 120 | print('test(eer, far, frr, ontopic_acc_ideal, ontopic_acc) %.3f, %.3f, %.3f, %.3f, %.3f' % 121 | (test_eer, test_far, test_frr, 122 | test_ontopic_acc_ideal, 123 | test_ontopic_acc)) 124 | 125 | t_macro_avg_eer += test_eer 126 | t_macro_avg_far += test_far 127 | t_macro_avg_frr += test_frr 128 | t_macro_avg_acc_ideal += test_ontopic_acc_ideal 129 | t_macro_avg_acc += test_ontopic_acc 130 | 131 | t_macro_avg_eer /= len(result_data) 132 | t_macro_avg_far /= len(result_data) 133 | t_macro_avg_frr /= len(result_data) 134 | t_macro_avg_acc_ideal /= len(result_data) 135 | t_macro_avg_acc /= len(result_data) 136 | return t_macro_avg_eer, t_macro_avg_far, t_macro_avg_frr, \ 137 | t_macro_avg_acc_ideal, t_macro_avg_acc, test_output_info_list 138 | 139 | 140 | def get_data(params, file_list, role): 141 | workspaces = [] 142 | with open(file_list) as fi: 143 | i = 0 144 | for wid in fi: 145 | wid = wid.strip().split('\t')[0] 146 | workspaces.append(workspace(wid, params, role)) 147 | print('get_data:', i) 148 | sys.stdout.flush() 149 | i += 1 150 | return workspaces 151 | -------------------------------------------------------------------------------- /src/workspace.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import os 3 | from simple_tokenizer import tokenizeSimple 4 | import numpy 5 | from random import randint 6 | import random 7 | 8 | # word2vec must start with and 9 | SE_INDEX = 0 10 | UNKNOWN_WORD_INDEX = 1 11 | 12 | SENT_WORDID = 0 13 | SENT_LABELID = 1 14 | SENT_WORD_MASK = 2 15 | SENT_ORIGINAL_TXT = 3 16 | 17 | 18 | class workspace: 19 | 20 | def __init__(self, workspace_name, params, role): 21 | ''' Description: ''' 22 | self.role = role 23 | self.wid = workspace_name 24 | self.word2idx = params['vocabulary'] 25 | self.supporting_sets = [] 26 | self.flatten_supporting_sets = None 27 | self.lb2id = dict() 28 | self.lblist = [] 29 | self.params = params 30 | 31 | self.target_sets = [] 32 | self.target_sets_files = [] 33 | self.labels_in_train = None 34 | self.train_intent2ids_list = None 35 | 36 | if self.role == 'train_workspace': 37 | trainfile = os.path.join(params['mnet_training_dir'], 38 | workspace_name+'.train') 39 | self.read_supporting_sets(trainfile) 40 | self.target_sets.append(self.read_sentences(trainfile)) 41 | self.target_sets_files.append(trainfile) 42 | self.labels_in_train = range(0, len(self.supporting_sets)) 43 | self.train_intent2ids_list = dict([(l, []) for l in self.labels_in_train]) 44 | for idx in range(len(self.target_sets[0])): 45 | utt = self.target_sets[0][idx] 46 | label = utt[SENT_LABELID] 47 | self.train_intent2ids_list[label].append(idx) 48 | else: 49 | if self.role == 'valid_workspace': 50 | indir = params['mnet_dev_dir'] 51 | elif self.role == 'test_workspace': 52 | indir = params['testing_dir'] 53 | else: 54 | raise Exception('Unknown workspace role') 55 | 56 | support_set_file = os.path.join(indir, 57 | workspace_name+'.train') 58 | self.read_supporting_sets(support_set_file) 59 | self.labels_in_train = range(0, len(self.supporting_sets)) 60 | 61 | trainfile = os.path.join(indir, workspace_name+'.train') 62 | if os.path.isfile(os.path.join(indir, workspace_name+'.dev')): 63 | validfile = os.path.join(indir, workspace_name+'.dev') 64 | else: 65 | validfile = os.path.join(indir, workspace_name+'.test') 66 | testfile = os.path.join(indir, workspace_name+'.test') 67 | 68 | self.target_sets.append(self.read_sentences(trainfile)) 69 | self.target_sets.append(self.read_sentences(validfile)) 70 | self.target_sets.append(self.read_sentences(testfile)) 71 | self.target_sets_files.append(trainfile) 72 | self.target_sets_files.append(validfile) 73 | self.target_sets_files.append(testfile) 74 | 75 | self.create_flatten_supporting_set() 76 | 77 | def update_lbmaps(self, lb): 78 | if lb not in self.lb2id: 79 | newidx = len(self.lb2id) 80 | self.lb2id[lb] = newidx 81 | self.lblist.append(lb) 82 | 83 | def read_sentences(self, filename): 84 | target_info = [] 85 | with open(filename, 'r') as fi: 86 | for line in fi: 87 | line = line.strip() 88 | items = line.split('\t') 89 | if len(items) > 1: 90 | text, lb = items 91 | self.update_lbmaps(lb) 92 | textwds = tokenizeSimple(text, self.params['max_length']) 93 | textids = [] 94 | for wd in textwds: 95 | if wd in self.word2idx: 96 | textids.append(self.word2idx[wd]) 97 | else: 98 | textids.append(UNKNOWN_WORD_INDEX) 99 | textids_mask = [int(wd == 0) * 0 + int(wd != 0) * 1 100 | for wd in textids] 101 | target_info.append((textids, self.lb2id[lb], 102 | textids_mask, line)) 103 | elif len(items) == 1: 104 | pass 105 | else: 106 | raise Exception("File Input Wrong") 107 | return target_info 108 | 109 | def read_supporting_sets(self, filename): 110 | sentence_data = self.read_sentences(filename) 111 | for idx in range(len(self.lblist)): 112 | self.supporting_sets.append([]) 113 | for sent_info in sentence_data: 114 | assert(sent_info[1] is not None) 115 | self.supporting_sets[sent_info[1]].append(sent_info) 116 | 117 | def select_support_set(self, sentence_size_per_intent, 118 | target_group_id, target_sid, sampled_labels=None): 119 | 120 | sent_info = self.target_sets[target_group_id][target_sid] 121 | ss_sent_info = [] 122 | 123 | for lb_idx in range(len(self.supporting_sets)): 124 | 125 | if self.params['sampling_classes'] > 1 and \ 126 | lb_idx not in sampled_labels: 127 | continue 128 | 129 | find_remove_target = False 130 | if len(self.supporting_sets[lb_idx]) > 1 and \ 131 | sent_info[SENT_LABELID] == lb_idx and \ 132 | self.params['remove_target_from_support_set']: 133 | find_remove_target = True 134 | 135 | if len(self.supporting_sets[lb_idx]) > 0: 136 | randlist = numpy.random.permutation(range( 137 | len(self.supporting_sets[lb_idx]))).tolist() 138 | selfidx = -1 139 | 140 | sentences_id_per_intent_tmp = randlist[:sentence_size_per_intent] 141 | sentences_id_per_intent = [] 142 | if find_remove_target: 143 | first_time = True 144 | for idx in range(len(sentences_id_per_intent_tmp)): 145 | a_support_info = self.supporting_sets[lb_idx][sentences_id_per_intent_tmp[idx]] 146 | if sent_info[SENT_WORDID] == a_support_info[SENT_WORDID] and \ 147 | first_time is True: 148 | first_time is False 149 | selfidx = sentences_id_per_intent_tmp[idx] 150 | else: 151 | sentences_id_per_intent.append(sentences_id_per_intent_tmp[idx]) 152 | else: 153 | sentences_id_per_intent = sentences_id_per_intent_tmp 154 | 155 | while len(sentences_id_per_intent) < sentence_size_per_intent: 156 | ll = len(randlist) 157 | rd = randint(0, ll-1) 158 | if (not find_remove_target) or selfidx != rd: 159 | sentences_id_per_intent.append(randlist[rd]) 160 | 161 | sentences_per_intent = [self.supporting_sets[lb_idx][i] 162 | for i in sentences_id_per_intent] 163 | ss_sent_info.extend(sentences_per_intent) 164 | return ss_sent_info 165 | 166 | def create_flatten_supporting_set(self): 167 | self.flatten_supporting_sets = [] 168 | for lb_idx in range(len(self.supporting_sets)): 169 | for ss_info in self.supporting_sets[lb_idx]: 170 | self.flatten_supporting_sets.append(ss_info) 171 | 172 | def get_flatten_supporting_set(self): 173 | return self.flatten_supporting_sets 174 | 175 | def sample_classes(self, sampled_class_size): 176 | sampled_labels = random.sample(range(len(self.labels_in_train)), 177 | sampled_class_size) 178 | sampled_labels = [self.labels_in_train[ii] for ii in sampled_labels] 179 | return sampled_labels 180 | -------------------------------------------------------------------------------- /src/experiment.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | from workspace import SENT_WORDID, SENT_LABELID, SENT_WORD_MASK, SENT_ORIGINAL_TXT 3 | import numpy 4 | import random 5 | import os 6 | 7 | 8 | class RunExperiment: 9 | 10 | def __init__(self, model, params, sess): 11 | self.model = model 12 | self.params = params 13 | self.sess = sess 14 | 15 | def get_train_batch(self, train_workspace, batch_size, all_ood_workspaces): 16 | sent_list = train_workspace.target_sets[0] 17 | nClasses_in_Train = len(train_workspace.labels_in_train) 18 | 19 | if self.params['sampling_classes'] <= 1 \ 20 | or self.params['sampling_classes'] >= nClasses_in_Train: 21 | sampled_class_size = nClasses_in_Train 22 | else: 23 | sampled_class_size = self.params['sampling_classes'] 24 | sampled_classes = train_workspace.sample_classes(sampled_class_size) 25 | sentence_size_per_intent = max(1, int(self.params['min_ss_size'] 26 | / sampled_class_size)) 27 | sent_id_batch = [] 28 | for b in range(batch_size): 29 | selected_label = random.choice(sampled_classes) 30 | selected_utt = random.choice(train_workspace.train_intent2ids_list[selected_label]) 31 | sent_id_batch.append(selected_utt) 32 | 33 | x_target_wid = [sent_list[i][SENT_WORDID] for i in sent_id_batch] 34 | y_target = [sent_list[i][SENT_LABELID] for i in sent_id_batch] 35 | x_target_mask = [sent_list[i][SENT_WORD_MASK] for i in sent_id_batch] 36 | 37 | x_support_set_wid = [] 38 | y_support_set = [] 39 | x_support_set_mask = [] 40 | x_ood_wid = [] 41 | x_ood_mask = [] 42 | 43 | for target_sid in range(len(sent_id_batch)): 44 | selected_ood_sent_infos = [] 45 | for _ in range(self.params['ood_example_size']): 46 | selected_ood_workspace = numpy.random.choice(all_ood_workspaces) 47 | fss = selected_ood_workspace.get_flatten_supporting_set() 48 | selected_id = numpy.random.choice([i for i in range(len(fss))]) 49 | selected_ood_sent_info = fss[selected_id] 50 | selected_ood_sent_infos.append(selected_ood_sent_info) 51 | 52 | ss_sent_info = train_workspace.select_support_set(sentence_size_per_intent, 53 | 0, 54 | sent_id_batch[target_sid], 55 | sampled_classes) 56 | x_support_set_wid_per_sent = [sinfo[SENT_WORDID] for sinfo in ss_sent_info] 57 | y_support_set_per_sent = [sinfo[SENT_LABELID] for sinfo in ss_sent_info] 58 | x_support_set_mask_per_sent = [sinfo[SENT_WORD_MASK] for sinfo in ss_sent_info] 59 | 60 | x_support_set_mask.append(x_support_set_mask_per_sent) 61 | x_support_set_wid.append(x_support_set_wid_per_sent) 62 | y_support_set.append(y_support_set_per_sent) 63 | 64 | x_ood_wid_per_sent = [sinfo[SENT_WORDID] for sinfo in selected_ood_sent_infos] 65 | x_ood_mask_per_sent = [sinfo[SENT_WORD_MASK] for sinfo in selected_ood_sent_infos] 66 | x_ood_wid.append(x_ood_wid_per_sent) 67 | x_ood_mask.append(x_ood_mask_per_sent) 68 | 69 | return numpy.array(x_support_set_wid, dtype='int'), \ 70 | numpy.array(y_support_set, dtype='int'), \ 71 | numpy.array(x_support_set_mask, dtype='int'), \ 72 | numpy.array(x_target_wid, dtype='int'), \ 73 | numpy.array(y_target, dtype='int'), \ 74 | numpy.array(x_target_mask, dtype='int'), \ 75 | sampled_classes, \ 76 | numpy.array(x_ood_wid, dtype='int'), \ 77 | numpy.array(x_ood_mask, dtype='int') 78 | 79 | def run_training_epoch(self, train_workspace, all_ood_workspaces): 80 | 81 | assert(len(train_workspace.target_sets) == 1) 82 | batch_size = self.params['batch_size'] 83 | x_support_set_wid, y_support_set, support_set_sents_mask, \ 84 | x_target_wid, y_target, target_sent_mask, selected_labels, \ 85 | x_neg_wid, neg_sent_mask = \ 86 | self.get_train_batch(train_workspace, batch_size, all_ood_workspaces) 87 | 88 | y_support_set_one_hot = self.get_support_set_one_hot(y_support_set, selected_labels) 89 | y_target_one_hot = self.get_one_hot(y_target, selected_labels) 90 | model = self.model 91 | _, loss = self.sess.run( 92 | [model.train_op, model.loss], 93 | feed_dict={model.input_support_set_sents: x_support_set_wid, 94 | model.support_set_sents_mask: support_set_sents_mask, 95 | model.support_set_labels: y_support_set_one_hot, 96 | model.input_target_sent: x_target_wid, 97 | model.target_label: y_target_one_hot, 98 | model.target_sent_mask: target_sent_mask, 99 | model.ss_encoded_sents_avg_test: numpy.array([[[0]]]), 100 | model.is_training: True, 101 | model.input_ood_sents: x_neg_wid, 102 | model.ood_sents_mask: neg_sent_mask 103 | }) 104 | return loss 105 | 106 | def get_supporting_set_embeddings(self, test_workspace): 107 | all_ss_info = test_workspace.get_flatten_supporting_set() 108 | 109 | txtbatch = [s[SENT_WORDID] for s in 110 | all_ss_info] 111 | maskbatch = [s[SENT_WORD_MASK] for s in 112 | all_ss_info] 113 | ybatch = [s[SENT_LABELID] for s in 114 | all_ss_info] 115 | 116 | print('test_workspace.labels_in_train', len(test_workspace.labels_in_train)) 117 | nClasses = len(test_workspace.labels_in_train) 118 | ybatch_one_shot = self.get_one_hot(ybatch, range(nClasses)) 119 | 120 | center_emb_batch = self.sess.run( 121 | self.model.encoded_prototype, 122 | feed_dict={self.model.input_support_set_sents: [txtbatch], 123 | self.model.support_set_sents_mask: [maskbatch], 124 | self.model.support_set_labels: [ybatch_one_shot], 125 | self.model.is_training: False 126 | }) 127 | return center_emb_batch 128 | 129 | def run_testing_epoch(self, epoch, test_workspace): 130 | nClasses = len(test_workspace.labels_in_train) 131 | avg_representations = self.get_supporting_set_embeddings(test_workspace) 132 | y_support_set_one_hot = self.get_one_hot(range(nClasses), 133 | range(nClasses)) 134 | print('avg_representations.shape', avg_representations.shape) 135 | rets_train = [] 136 | rets_dev = [] 137 | rets_test = [] 138 | setidx = 0 139 | for target_set, target_set_file in zip(test_workspace.target_sets, 140 | test_workspace.target_sets_files): 141 | print('Testing: ', target_set_file) 142 | for target_sentence in target_set: 143 | text, label = target_sentence[SENT_ORIGINAL_TXT].split('\t') 144 | model = self.model 145 | preds_intent = self.sess.run( 146 | model.test_preds_unnorm, 147 | feed_dict={model.ss_encoded_sents_avg_test: avg_representations, 148 | model.support_set_labels: [y_support_set_one_hot], 149 | model.input_target_sent_test: [target_sentence[SENT_WORDID]], 150 | model.target_sent_mask_test: [target_sentence[SENT_WORD_MASK]], 151 | model.is_training: False}) 152 | preds_intent = preds_intent[0] 153 | final_lb_intent_id = numpy.argmax(preds_intent) 154 | final_lb_intent = test_workspace.lblist[final_lb_intent_id] 155 | groundtruth_id = target_sentence[SENT_LABELID] 156 | groundtruth = test_workspace.lblist[groundtruth_id] 157 | conf = preds_intent[final_lb_intent_id] 158 | atuple = (final_lb_intent, groundtruth, conf) 159 | if setidx == 0: 160 | rets_train.append(atuple) 161 | elif setidx == 1: 162 | rets_dev.append(atuple) 163 | elif setidx == 2: 164 | rets_test.append(atuple) 165 | setidx += 1 166 | 167 | return rets_train, rets_dev, rets_test 168 | 169 | def get_support_set_one_hot(self, support_set, classe_list): 170 | cls_id_map = dict() 171 | for lid in classe_list: 172 | cls_id_map[lid] = len(cls_id_map) 173 | 174 | support_set_one_hot = numpy.zeros([len(support_set), 175 | len(support_set[0]), 176 | len(cls_id_map)]) 177 | for k in range(len(support_set)): 178 | for j in range(len(support_set[k])): 179 | support_set_one_hot[k][j][cls_id_map[support_set[k][j]]] = 1.0 180 | 181 | return support_set_one_hot 182 | 183 | def get_one_hot(self, y_target, classe_list): 184 | cls_id_map = dict() 185 | for lid in classe_list: 186 | cls_id_map[lid] = len(cls_id_map) 187 | 188 | y_target_one_hot = numpy.zeros([len(y_target), len(cls_id_map)]) 189 | for k in range(len(y_target)): 190 | y_target_one_hot[k][cls_id_map[y_target[k]]] = 1.0 191 | return y_target_one_hot 192 | 193 | -------------------------------------------------------------------------------- /src/model.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | import tensorflow as tf 3 | 4 | 5 | class DistanceNetwork: 6 | def __init__(self): 7 | pass 8 | 9 | def __call__(self, 10 | support_set, 11 | input_sent, 12 | name, 13 | dropout_keep_prob=1.0, 14 | is_training=None): 15 | 16 | target_shape_order = len(input_sent.get_shape().as_list()) 17 | input_sent_ex = input_sent 18 | if target_shape_order == 2: 19 | input_sent_ex = tf.expand_dims(input_sent, axis=1) 20 | 21 | normalize_support_set = tf.nn.l2_normalize(support_set, axis=2) 22 | normalize_input_sent_ex = tf.nn.l2_normalize(input_sent_ex, axis=2) 23 | 24 | cosine_similarity = tf.matmul(normalize_input_sent_ex, 25 | tf.transpose(normalize_support_set, 26 | [0, 2, 1])) 27 | if target_shape_order == 2: 28 | cosine_similarity = cosine_similarity[:, 0, :] 29 | return cosine_similarity 30 | 31 | 32 | class Classify: 33 | def __init__(self): 34 | pass 35 | 36 | def __call__(self, similarities, name, softmax_factor=None): 37 | with tf.name_scope('classification' + name): 38 | similarities = softmax_factor * similarities 39 | softmax_similarities = tf.nn.softmax(similarities, axis=-1) 40 | return softmax_similarities 41 | 42 | 43 | class CNNEncoder: 44 | def __init__(self, params): 45 | self.params = params 46 | 47 | def __call__(self, sent_input, support_set, reuse, is_training, mask): 48 | 49 | sent_input = tf.expand_dims(sent_input, axis=-1) 50 | tmp = tf.shape(sent_input) 51 | sent_input = tf.reshape(sent_input, [-1, self.params['max_length'], self.params['emb_size'], 1]) 52 | sent_input = tf.transpose(sent_input, [0, 1, 3, 2]) 53 | mask = tf.reshape(mask, [-1, tmp[-3]]) 54 | 55 | with tf.variable_scope('g', reuse=reuse): 56 | g_conv1_encoder = tf.layers.conv2d(sent_input, 57 | self.params['hidden_size'], 58 | [self.params['filter_size'], 1], 59 | strides=(1, 1), 60 | padding='SAME', 61 | name='conv1', 62 | use_bias=False) 63 | g_conv1_encoder = tf.tanh(g_conv1_encoder) 64 | if self.params['enable_batchnorm'] is True: 65 | print('batch norm enabled.') 66 | g_conv1_encoder = tf.contrib.layers.batch_norm(g_conv1_encoder, 67 | updates_collections=None, 68 | decay=0.99, 69 | scale=True, 70 | center=True, 71 | is_training=is_training) 72 | 73 | g_conv2_encoder = tf.squeeze(g_conv1_encoder, [2]) 74 | 75 | lengths = tf.expand_dims(tf.reduce_sum(mask, axis=1), axis=1) 76 | mask = tf.expand_dims(mask, axis=2) 77 | g_conv2_encoder = g_conv2_encoder * tf.cast(mask, 'float32') 78 | g_conv_encoder = tf.reduce_sum(g_conv2_encoder, axis=1) 79 | g_conv_encoder = g_conv_encoder / tf.cast(lengths, 'float32') 80 | 81 | print('g_conv_encoder', g_conv_encoder) 82 | return g_conv_encoder 83 | 84 | 85 | class biLSTMEncoder: 86 | def __init__(self, params): 87 | self.params = params 88 | 89 | def __call__(self, sent_input, support_set, reuse, is_training, mask): 90 | 91 | sent_input = tf.expand_dims(sent_input, axis=-1) 92 | tmp = tf.shape(sent_input) 93 | sent_input = tf.reshape(sent_input, 94 | [-1, self.params['max_length'], self.params['emb_size']]) 95 | 96 | mask = tf.reshape(mask, [-1, tmp[-3]]) 97 | 98 | with tf.variable_scope('g', reuse=reuse): 99 | cell_fw = tf.contrib.rnn.LSTMCell(self.params['hidden_size']/2, name='fw') 100 | cell_bw = tf.contrib.rnn.LSTMCell(self.params['hidden_size']/2, name='bw') 101 | outputs, _ = tf.nn.bidirectional_dynamic_rnn(cell_fw, 102 | cell_bw, sent_input, 103 | dtype='float32') 104 | g_conv_encoder = tf.concat([outputs[0], outputs[1]], axis=-1) 105 | 106 | if self.params['enable_batchnorm'] is True: 107 | print('batch norm enabled.') 108 | g_conv_encoder = tf.contrib.layers.batch_norm(g_conv_encoder, 109 | updates_collections=None, 110 | decay=0.99, 111 | scale=True, 112 | center=True, 113 | is_training=is_training) 114 | 115 | lengths = tf.expand_dims(tf.reduce_sum(mask, axis=1), axis=1) 116 | mask = tf.expand_dims(mask, axis=2) 117 | g_conv_encoder = g_conv_encoder * tf.cast(mask, 'float32') 118 | g_conv_encoder = tf.reduce_sum(g_conv_encoder, axis=1) 119 | g_conv_encoder = g_conv_encoder / tf.cast(lengths, 'float32') 120 | 121 | print('g_conv_encoder', g_conv_encoder) 122 | return g_conv_encoder 123 | 124 | 125 | class MatchingNetwork: 126 | def __init__(self, params): 127 | 128 | self.params = params 129 | self.dn = DistanceNetwork() 130 | self.classify = Classify() 131 | self.ss_g = CNNEncoder(params) 132 | # self.ss_g = biLSTMEncoder(params) 133 | self.W = tf.get_variable("W", 134 | dtype=tf.float32, 135 | initializer=tf.constant(self.params['wordvectors'].astype('float32'))) 136 | 137 | sen_len = self.params['max_length'] 138 | self.input_support_set_sents = tf.placeholder(tf.int32, 139 | [None, None, sen_len], 140 | 'support_set_sents') 141 | self.support_set_sents = tf.nn.embedding_lookup(self.W, 142 | self.input_support_set_sents) 143 | self.support_set_labels = tf.placeholder(tf.float32, 144 | [None, None, None], 145 | 'support_set_labels') 146 | self.support_set_sents_mask = tf.placeholder(tf.float32, 147 | [None, None, sen_len], 148 | 'support_set_sents_mask') 149 | 150 | self.input_target_sent = tf.placeholder(tf.int32, 151 | [None, sen_len], 152 | 'target_sent') 153 | self.target_sent = tf.nn.embedding_lookup(self.W, 154 | self.input_target_sent) 155 | self.target_label = tf.placeholder(tf.float32, 156 | [None, None], 'target_label_one_hot') 157 | self.target_sent_mask = tf.placeholder(tf.float32, 158 | [None, sen_len], 159 | 'target_label') 160 | 161 | self.input_target_sent_test = tf.placeholder(tf.int32, 162 | [None, sen_len], 163 | 'target_sent_test') 164 | self.target_sent_test = tf.nn.embedding_lookup(self.W, 165 | self.input_target_sent_test) 166 | self.target_sent_mask_test = tf.placeholder(tf.float32, 167 | [None, sen_len], 168 | 'target_sent_mask_test') 169 | 170 | self.ss_encoded_sents_avg_test = tf.placeholder(tf.float32, 171 | [None, None, None], 172 | 'support_set_emb_test') 173 | 174 | self.input_ood_sents = tf.placeholder(tf.int32, 175 | [None, self.params['ood_example_size'], 176 | sen_len], 177 | 'input_ood_sents') 178 | self.ood_sents = tf.nn.embedding_lookup(self.W, 179 | self.input_ood_sents) 180 | self.ood_sents_mask = tf.placeholder(tf.int32, 181 | [None, self.params['ood_example_size'], 182 | sen_len], 183 | 'ood_sents_mask') 184 | 185 | self.is_training = tf.placeholder(tf.bool, name='training-flag') 186 | 187 | def get_prototype(self, ss_presententations, ss_labels): 188 | label_level_sum_embs = tf.matmul(ss_labels, ss_presententations, 189 | transpose_a=True) 190 | label_level_sum_cnt = tf.reduce_sum(ss_labels, axis=1) 191 | protos = label_level_sum_embs / tf.expand_dims(label_level_sum_cnt, axis=2) 192 | return protos 193 | 194 | def build(self): 195 | with tf.name_scope("losses"): 196 | encoded_sents = self.ss_g(sent_input=self.support_set_sents, 197 | support_set=None, 198 | is_training=self.is_training, 199 | reuse=False, 200 | mask=self.support_set_sents_mask) 201 | 202 | shape_list_after_g = tf.shape(encoded_sents) 203 | # shape: B, SS, E 204 | encoded_sents = tf.reshape(encoded_sents, 205 | [-1, 206 | tf.shape(self.support_set_sents)[1], 207 | shape_list_after_g[-1]]) 208 | 209 | target_encoded_sents = self.ss_g(sent_input=self.target_sent, 210 | support_set=None, 211 | is_training=self.is_training, 212 | reuse=True, 213 | mask=self.target_sent_mask) # shape: batch_size, emb 214 | 215 | ood_encoded_sents = self.ss_g(sent_input=self.ood_sents, 216 | support_set=None, 217 | is_training=self.is_training, 218 | reuse=True, 219 | mask=self.ood_sents_mask) 220 | ood_shape_list_after_g = tf.shape(ood_encoded_sents) 221 | # ood_encoded_sents(B, OOD, E) 222 | ood_encoded_sents = tf.reshape(ood_encoded_sents, 223 | [-1, tf.shape(self.ood_sents)[1], 224 | ood_shape_list_after_g[-1]]) 225 | 226 | # encoded_prototype.shape(B, Y, E) 227 | encoded_prototype = self.get_prototype(encoded_sents, self.support_set_labels) 228 | 229 | # loss-1 230 | similarities_label_level = self.dn(support_set=encoded_prototype, 231 | input_sent=target_encoded_sents, 232 | name="distance_calculation") 233 | softmax_similarities_proto = self.classify(similarities_label_level, 234 | name='classify', 235 | softmax_factor=self.params['softmax_factor']) 236 | 237 | logloss_ontopic = -tf.log(tf.reduce_sum(self.target_label 238 | * softmax_similarities_proto, 239 | reduction_indices=[1])) 240 | 241 | # loss-2 242 | similarities_label_level01 = (similarities_label_level + 1.0) / 2.0 243 | tmp = tf.reduce_sum(self.target_label * similarities_label_level01, reduction_indices=[1]) 244 | loss_target_gt_distance = tf.maximum(0.0, self.params['ood_threshold'] 245 | + self.params['ood_threshold_margin'] 246 | - tmp) 247 | 248 | # loss-3 249 | # ood_similarities_label_level(B, OOD, Y) 250 | ood_similarities_label_level = self.dn(support_set=encoded_prototype, 251 | input_sent=ood_encoded_sents, 252 | name="ood_distance_calculation") 253 | ood_similarities_label_level01 = (ood_similarities_label_level + 1.0) / 2.0 254 | ood_similarities_label_level_max01 = tf.reduce_max(ood_similarities_label_level01, axis=2) 255 | ood_hinge_loss = tf.reduce_mean(tf.maximum(0.0, ood_similarities_label_level_max01 256 | - self.params['ood_threshold'] 257 | + self.params['ood_threshold_margin']), axis=-1) 258 | logloss_ontopic = tf.reduce_mean(logloss_ontopic) 259 | loss_target_gt_distance = tf.reduce_mean(loss_target_gt_distance) 260 | ood_hinge_loss = tf.reduce_mean(ood_hinge_loss) 261 | crossentropy_loss = self.params['alpha_indomain'] * logloss_ontopic \ 262 | + self.params['alpha_pos'] * loss_target_gt_distance \ 263 | + self.params['alpha_neg'] * ood_hinge_loss 264 | 265 | target_encoded_sents_test = self.ss_g(sent_input=self.target_sent_test, 266 | support_set=None, 267 | is_training=self.is_training, 268 | reuse=True, 269 | mask=self.target_sent_mask_test) # shape: batch_size, emb 270 | 271 | similarities_avg_level_test = self.dn(support_set=self.ss_encoded_sents_avg_test, 272 | input_sent=target_encoded_sents_test, 273 | name="distance_calculation_test") 274 | 275 | softmax_similarities_proto_test = self.classify(similarities_avg_level_test, 276 | name='classify', 277 | softmax_factor=self.params['softmax_factor']) 278 | similarities_avg_level_test_01 = (similarities_avg_level_test + 1.0) / 2.0 279 | 280 | self.variables = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope='g') 281 | return crossentropy_loss, \ 282 | softmax_similarities_proto_test, \ 283 | similarities_avg_level_test_01, \ 284 | encoded_prototype, \ 285 | logloss_ontopic, \ 286 | loss_target_gt_distance, \ 287 | ood_hinge_loss 288 | 289 | def get_train_op(self, loss): 290 | print('current_learning_rate', self.params['learning_rate']) 291 | 292 | c_opt = tf.train.AdamOptimizer(beta1=0.9, 293 | learning_rate=self.params['learning_rate']) 294 | 295 | if self.params['enable_batchnorm'] is True: 296 | v1 = tf.get_default_graph().get_tensor_by_name("g/BatchNorm/moving_mean:0") 297 | v2 = tf.get_default_graph().get_tensor_by_name("g/BatchNorm/moving_variance:0") 298 | tf.add_to_collection(tf.GraphKeys.UPDATE_OPS, v1) 299 | tf.add_to_collection(tf.GraphKeys.UPDATE_OPS, v2) 300 | 301 | update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS) 302 | with tf.control_dependencies(update_ops): 303 | train_variables = self.variables + [self.W] 304 | for variable in tf.global_variables(): 305 | print("tf.global_variables()-->", variable) 306 | c_error_opt_op = c_opt.minimize(loss) 307 | return c_error_opt_op 308 | 309 | def init(self): 310 | loss, \ 311 | softmax_similarities_proto_test, \ 312 | similarities_avg_level_test_01, \ 313 | encoded_prototype, \ 314 | logloss_ontopic, \ 315 | loss_target_gt_distance, \ 316 | ood_hinge_loss = self.build() 317 | 318 | train_op = self.get_train_op(loss) 319 | self.train_op = train_op 320 | self.loss = loss 321 | self.encoded_prototype = encoded_prototype 322 | self.test_preds = softmax_similarities_proto_test 323 | self.test_preds_unnorm = similarities_avg_level_test_01 324 | self.loss_ontopic = logloss_ontopic 325 | self.loss_target_gt_distance = loss_target_gt_distance 326 | self.loss_ood_hinge = ood_hinge_loss 327 | -------------------------------------------------------------------------------- /data/test/Toys_and_Games.train: -------------------------------------------------------------------------------- 1 | This bounce-back car was a gift for my son, and it just didn't work at all the minute we put batteries in. Complete and utter failure. 1 2 | Received this product, opened it, filled it with air and immediately the bottom and the green ring began leaking. Then had to go through the hassle of getting all the remaining air back out and cramming it into the small box it came in to ship it back. Very disappointing. 1 3 | We got baby Stella for my daughter last year for Christmas but ended up returning her because she's not as cute in person as the picture. 1 4 | I bought that for my giant 2 yo (average height of a 3yo)... and the size is totally off....I took a picture of it to show how ridiculous this is, just need to figure out how to post it. 1 5 | Saw this in a newspaper add for Aldi's and I always double check with Amazon for better prices. The add has this exact same toy for $29.99 and it's on Amazon for $199.99, yikes... 1 6 | I bought one and it burned out after first use so I exchanged it for another no problem. The bulb on this one burned out 2 months later when I could no longer return. Cute for lego fans, but bulb burns out too quickly! 1 7 | That person's right. The name Kianna is from a Bratz doll. There's a Fianna AND a Kianna. This doll's great but maybe they should change her name... 1 8 | Our 13 month old son recieved this for a gift for his first birthday. He hasn't played with it once and he is a very very busy boy playing all day long. I would not recomend this toy. 1 9 | this can't be played with only two people. total bummer. perhaps it tells you that but I didn't see it and have only one child that enjoys board/card games. we will try to make up our own rules and see what we can do but otherwise quite disappointing! 1 10 | I bought this for my Autistic son because of all of the great reviews but I don't get it. Neither my son nor my neuro-typical daughter ever plays with it and we've had it almost a year. I have even tried to play with it with them to get their imaginations going and they are just completely uninterested. 1 11 | Total junk is all it was! The balls didn't pop out the the pigs mouth without alot of force. Wouldn't recommend for anyone to buy. 1 12 | Bought this for 19 month old. The lid won't stay on very well, so he just tosses it aside and throws the pieces around and tries to use them on other toys. Basically it's a bucket with pieces. Not worth the price, wasted money. 1 13 | This would have been awesome if it didn't fall apart in every way. My daughter was so excited when she got it, it's colorful and has fun features. But it falls apart to the point of being unusable. It makes her so mad. Considering the cost, DO NOT BUY. 1 14 | The entire thing except the balls are made of plastic. The strings are not equal enough in length, and may be the reason the balls don't swing long. Not impressed for the $11. I wouldn't pay $1. 1 15 | really? My son didn't care for. He played a bit and I thought he would keep playing but he has not touched since we got it and the only time he played. I think it should have some type of sound to catch kids attention and keep them interacting/entertained. 1 16 | I got this toy and half the pieces that suppose to go inside each other don't fit in.I am in Brazil and is virtually impossible to exchange. So if you are ordering be ready to exchange it.My son really got attracted to it but since the pieces don't do what they suppose to do he lost interest. 1 17 | look for something better. this is pure junk, made in china so plastics are not safe and the cord is too short and thin enough to be unsafe anyway, also arrived with the paint already peeled off in some places! 1 18 | nothing like the classic. barely spins even if you give it a spin with no one on it. I thought we were upgrading from an old classic one we got second hand. it's not the same. Save your money not worth it and it is soooo loud. 1 19 | Wow, this product totally ruined my wall. When I took off the tape it took all of my paint with it. Complete failure to work! This product not only failed to perform it's job it also ruined my wall! DO NOT BUY! 1 20 | this wasn't sturdy. I like the fact there was 4 sides, but it was horrible and didn't last had to throw it out because it was so cheaply made 1 21 | This checkers/chess set is irritating. The board is thick and durable, but it is also small. When you stack the checkers to "king" someone, the top piece easily slides off because there are no ridges on the checkers. I am returning it. 1 22 | My baby is disinterested. If I stand the bear up his paws are super sensitive so while you are trying to teach tummy, it just turns off bc you just barely touched the foot.I'm really frustrated with this so I am not going to type that much. What good is it, really? 1 23 | my 14 month old destroyed this tent in about a month or less. he loved to run, hide and play peek-a-boo in it. I'll try the bic pen fix but may buy another. 1 24 | This does not work at all unless you throw it off a mountain. At home, it just goes up like a lump and comes down the same. Very disappointed. If I weren't so lazy, I would have returned it. 1 25 | I bought these for my daughter to play tea party. They are small....they break quickly and have small pieces that my little one could choke on. These are too small for any family with kids under 3. Who cares that I bought it for an older kid....just too small. 1 26 | This was a disappointing purchase. These are not full size makers, the telescoping tower doesn't really function well and only a few of the markers are scented. If I had seen this in person first I would not of purchased this. 1 27 | This was cool looking but the ants ate through the white seal surrounding the top. It took them a few weeks but finally I had to have my husband get rid of this because they were pushing up the top and getting out. I couldn't believe it! I was cool to look as while it lasted though. 1 28 | Cheap price, cheap item. Okay if you're buying these for a children's birthday party with plans to throw them away after. But not for repeated use. 1 29 | Not worth the price at all! Plus I found it $5.00 cheaper! Don't waste your money, buy something els! Truth! 1 30 | Although this computer takes a beating - it is not appropriate for a child. The screen is black and small and nearly everything must be done using the mouse - not something a two year old finds easy.On top of getting frustrated by the mouse on this computer - the music and noise are equally annoying. 1 31 | I didn't pay close enough attention but this is not self retracting. My toddler constantly wants to play with the tape measurer so I bought this one for him but I wouldn't have if I had thought about it. He doesn't play with it because he doesn't want to wind it back up himself. 1 32 | The paints just don't work. Don't stay on the tub. Cannot really draw with them. Disappointed in this bath time toy. 1 33 | Great night light while it lasted (about a year). After that, the LED died and so did the moon. Tood bad. 1 34 | Don't waist your money. I bought 2 you can hardly see the lines and the nobs don't work very well. In the trash 1 35 | Got this pool for my toddler to replace another pool we had used.The pool never stays inflated for long, about 30 min after blowing it up full, each time it slowly deflates and by the end of the day completely flat! It was never stayed inflated, not even for the first use!Disapointed! :-( 1 36 | There are multiple shapes part like oval and triangle, instead of also making them multiple colors so that they match the animal color is just poor thinking or cost cutting. I didn't like it. Sorry. 1 37 | Does anyone even buy this stupid thing anymore?My daughter HAD to have this and while it looks cute, she nearly lost a large chunk of hair to its rotating wheels.It's in a box somewhere. 1 38 | This Crayola Crayon Maker did not work at all for us. I checked the bulb and switches and everything. The bulb would not turn on. We've had it around for a long time, but never got around to opening the box. It's been so long, I can't return it. My daughter was very disappointed. 1 39 | Piece of junk. The balloon in the belly popped the second time we played. I replaced the balloon and it popped again soon after. It's just too fragile and not even much fun. My kids lost interest quick. 1 40 | The piano is very cute but it fell apart as my daughter was taking it out of the box to give to my grandson. 1 41 | Could not figure out how to play this game. When we went by the directions, it was boring. Would not recommend this game. 1 42 | YoYo seems out of balance. No matter howmuch care I used in throwing it, it wantedto tilt to one side. Made it difficult tosleep or do tricks. I have a little experiencewith YoYos and have not had this problem withothers. 1 43 | This poodle has seen better days and needs to be made better and much more adorable. 1 44 | Garbage! That is where mine is going! This thing is a joke and this company should be bannished from the market! 1 45 | Didn't work at all! I returned these and got a different set. They are quite ugly too. The colors are dull and the shape is very boxy. 1 46 | I had a circus theme b-day party & used these as "pick the ducky from the pond for a prize" game. Pitiful - they didn't even float! 1 47 | Don't buy this is fyou want to play with a child they will become irritated at how many times it falls apart while trying to set it up. I went on Ebay and bought the Original and it was in great shapestill 1 48 | I ordered one of these and got the right colors.I ordered another one and received a GREY Cat in the Hat.I AM VERY DISAPPOINTED!!!!! 1 49 | Really disappointed. Got the pool this morning, just in time for a hot day.I never saw a new product so dirty. It had black marks everywhere, numerous dry grass.So dirty that i am wondering how " new" this product is.Spent over 30 mn inflating the pool and after 1 hour of playing in it, it is deflating fast.Bad quality. 1 50 | the lid will not stay on. so the sand is never dry and the lid is always in the ditch. wish I had never gotten it. 1 51 | The handle is way to flimsy to use when the case is full of cars. And the cars don't really fit properly and it is hard to close. This could be so much better. 1 52 | Terribly designed; we couldn't even make it through one game before it broke. Save your money and buy something of better quality instead. 1 53 | The voice in this puzzle and also the number puzzle with voice are very unclear. We purchased this at a local store before Christmas and We do not have a receipt to return sadly otherwise we would have. 1 54 | Holy Cow! How this item is legal to see I have no idea. i thought it would have a small charge...but NOOOOO! It packs a wallop akin to sticking your finger in a light socket and I am not kidding!I honestly think this thing could kill someone with a weak heart. 1 55 | My son loved this guitar and treated it gently but after six months it literally came unglued. Amazon was not at all helpful and would not replace/refund it. If you are considering this guitar before it broke the sound was great. It did need to be tuned frequently but that is to be expected with a new guitar. 1 56 | One broke within 5 minutes out of the box so we didn’t give them as gifts for X-mas. I was going to return them but my wife tossed them. They were not only inexpensive but also cheap. I would not recommend them for young children because when they break they releases a lot of small parts. 1 57 | Rocks and wood achieve the same goal and are free and let's not forget to mention you can do ALOT more with rocks and wood. Let them use their imagination. 1 58 | Wow "Tinier" than I expected. Best to check the dimensions before your purchase :( Guess It was my fault... oh well 1 59 | This toy requires the child to pump the handle in order to shoot the balls out. The only person in the house that has fun with this is my husband, as he is the only one that can use it with little effort. 1 60 | Not sure where to start, but I do recall paying $40 for this and I quickly was sorry. Multiple parts broke quickly. Design is not good, don't ask me why. I just remember each time something happened I went "huh?". In fact I would skip play vacuums all together. Let them use the real one! 1 61 | I can't seem to get the battery casing undone from under the truck unit. I have to send it back. I turned the screw 50 times to the left and it won't come off. 1 62 | Same problem as the other parents. My daughter immediately bit the top off of the crayon. The other two, instead of biting those tops off she just pulled them out of the holder (which is very easily done) and started eating those. Bottom line, don't waste your money on this garbage! 1 63 | But nothing really works, not even the stethoscope which would be the easiest thing to work, right? It's disappointing. I wouldn't buy it. It's not worth the money. 1 64 | Im not biting this time. Sony needs a better handheld and innovative games like the Dsi. Im tired of playing old Playstation games. 1 65 | THIS JACK IN THE BOX CAME TO ME UNWORKING, HAD TO RETURN, WOULD NOT CLOSE. WOULD NOT RECOMMEND. 1 66 | The two main features of the toy are the ramp and the elevator. The ramp came apart 5 times in the first 15 minutes of use. The elevator is difficult to use. Not only is it not worth $40, but it isn't worth one red cent. 1 67 | I'm returning these, they are way too small for my little chef! plus the egg carton will break very easily. 1 68 | In the general picture, you see the kettle being rounded with a small silver ? button on top.... The real thing is straight with a red/big round button on top... deceiving. 1 69 | I did not like this product, it is just one and for the purpose that I bought it as an instrument for my daughters to sing along, it is not even worthy. It seems cheap. 1 70 | Broke within 1 day of use. New batteries didn't make a difference. Disappointing to say the least. Hesitant to order again even though my kids really liked it. (We bought two from two different sellers, both broke! Grr!) 1 71 | One of the wings broke off within a week. I got this airplane for my 3 year old son. Bad idea. This product is not a toy for a small child to play with. It's more like a miniature model. The airplane is not durable enough for playing. 1 72 | I bought the kit of this Moon Dough that made pretend food. My 4 and 6 yr old grandkids tried to play with it.It got everywhere! What a mess. Took a long time to clean it up.I put it all in the trash quietly, the kids never asked where it went. 1 73 | My 1-1/2 y/o just hasn't seemed the least bit interested in playing with this toy from the first day she received it until now. 1 74 | These would be great if they didn't reek of chemicals! They make the whole cupboard smell like paint fumes! It's too bad because they are very cute. 1 75 | This still sits in my drawer, I was going to put in a gift (you know, a little extra thing) but it's so cheap and embarrassing, I just can't give it to anyone and put my name on the card. 1 76 | This game was fun for my child while it lasted. The problem is after only a few uses, it started to fall apart. This toy would of rated higher for fun had it not started to auto-destruct from use. Sadly, it has joined the rest of the inferiorly made games at the dump. 1 77 | A friend of mine has one of these and her kids love it! So I ordered one and it has a very strong chemical odor that won't go away and it doesn't inflate all the way (the legs, tail and ears don't fill up completely). The company and Amazon have great customer service but the product is flawed. 1 78 | Annoying. Keeps singing. My son loves books and music. But he only presses 1 button after another on this toy and does not look at the pictures or listen to anything in particular. Although I have to say he likes this toy, this definitely drives me crazy. 1 79 | I got this over a year ago I think & the kids really do not play with it at all. The screen is to small. You can not turn the sound off. The same song plays over and over and over. They tried it a couple times and did not like it at all Waste of money. 1 80 | I think it should be mentioned that I received a package of these in a ziploc sandwich bag. They are not bright and shiny like the picture but dull. I'm not sure why these are being sold this way but I had to return the one ziploc bag I did receive 1 81 | This thing was a nightmare to try to assemble, Nothing lined up quite properly and it was very difficult to put together, and it fell apart easily as well. Do NOT buy it unless your child is old enough (and willing) to keep reassembling it or you have enough duct tape to hold the "joints" together. 1 82 | This is a complete rip-off no where on the commercials or on the package does it tell you that you are paying for a TRIAL. It is almost as bad as FreeRealms which is in no way free after the first week or so. 1 83 | The guns didn't work most came in broken. 1 84 | These eggs are even smaller than the dismal eggs at the grocery store today. Made of wood and too small to be safe for the children. I hid our from the boys. 1 85 | These look a lot better in the pictures then they do in person. The faces look really silly up close and the string barely hold them. It broke in less than a week. 1 86 | stocking stuffers are super cheap and really don't work.cute to look at but that's about all.you get what you pay for. 1 87 | Good idea but does not long more than a few weeks. Everything falls apart. The grandchildren loved it so much but were very upset that they could not play for more than 3 weeks. 1 88 | This toy is terrible...Received it as a gift for my daughter, and I didn't even know it was supposed to be magnetic, not to mention the pieces do not fit properly. My daughter also stepped on the box and got a nasty cut from it so be careful. I would advise on getting a different brand. Not good. 1 89 | These arrived and there were 5 purple, 5 blue and 2 pink. Maybe it's just me but I assumed that 'assorted colors' would be 4 of each color. I only wanted the pink so of course that's the color that I didn't get enough of...Be ware that you may get odd numbers of colors. Also...the designs vary. 1 90 | We got this story when our son was a baby. The individual pieces were interesting but he couldn't actually get the pieces in and out which was the point of a toy labeled fill and spill. The top opening is way to small. 1 91 | THIS IS AN EXAMPLE OF A POORLY MADE VERSION OF THE BRATZ LATE NIGHT LIMO.EXCEPT WITH THE MY SCENE DOLLS THEY ARE TEACHING LITTLE INNOCENT GIRLS TO DRINK! NEXT TIME, MY SCENE WILL BE TEACHING GIRLS TO DO DRUGS! AND NEXT TIME, THINK OF A NEW IDEA! 1 92 | The only good thing about this sipper cup is the plastic cover. There are seven pieces in all. That means seven pieces to wash, seven pieces to sterilize, seven pieces to dry, and seven pieces to assemble. What a hassle, it's not worth the effort. (...) 1 93 | I think the title says it all. I bought this for my daughter, and she was sad when it stopped working completely. I tried troubleshooting it without success. 1 94 | Never got the product! Paid for this and recieved a GI Joe doll!!!! Terrible waste of money bc my wife didn't do anything about it while I was deployed so i got a $10 toy instead of my product.Good product perhaps, bad company. 1 95 | These batteries are short lasting (couple of days of regular use of the bugs) and are pricey, but what can you do? Life with kids means life with batteries. Amazon has the best prices generally and saves a trip to the store. Amazon Prime shipping is priceless for any parent. 1 96 | My daughter got this as a gift for a dollhouse we made. Within a few hours of opening the set the table top fell apart. Additionally, one if the doors feel off with very little playing. Not worth it. 1 97 | Very disappointed in this product. Everything is very cheaply made and I would not trust putting any samples in these containers. Junk! Just buy the real thing 1 98 | look how bad you made lindsay look with this stupid piece of trash. it is not beautiful, nor a good example. this right here is an example of trashing a beautiful celebrity. take this stupid thing a put it in the trash!!!!!!!!!!!!! 1 99 | Does not function as a play phone. The cord is too short so you can't pretend talk without having the whole phone hanging from your face! I get it, long cord=choking hazard, but... the string for pulling is REALLY long. Isn't that a hazard? You can pull it around though. 1 100 | My daughter almost 1 enjoyed this toy, but it stopped working and it was not rough handled. I like the concept, but it simply is not well made. The lights and sound no longer work and my return window is closed. 1 101 | My son has enjoyed putting coins in his pig for six months or so. He is interested in real coins but they are too small to let him play with them. This is a great toy for him to channel his financial management interests! 2 102 | This is my son's favorite doggie and he sleeps with it every night. It's so cute and plush. This is actually our second one since we lost the first one and my son was so upset. 2 103 | The kids love this set and play with it non-stop. They toys hold up well and are very durable. This was purchased with a fisher price grill for a 1 and 3 year old. 2 104 | This was a Christmas present for our grand daughter. She seemed to really like it. Everything we ordered arrived quickly using Prime shipping. Saved us a trip to the toy store! 2 105 | This toy is a winner in my daycare. The children love pulling out the tape and reeling it back in. Also pretend to measure objects. They can learn numbers in a fun way. They play with it for long periods of time. Great toy for your child or bought as a gift. 2 106 | My grandsons really wanted them for his birthday, He said it was the bestest birthday gift, Grandma did real good. 2 107 | This Rayla is so pretty!My sistewr has this and this is what she said "I really like her and she is really pretty! " and know what I completely.100,000,000% agree with her.Her dress is a nice Aqua blue and her hair is very long and very pretty(it`z crimped) 2 108 | These are so cute and the kids had somuch fun with them. They ran and playedthey were on their heads, necks, feet...they were the hit of the gift bags! 2 109 | We liked this game so much we decided to buy the expansion. Good party game for those that dont like too intense of games. 2 110 | This is a great expansion for the base game. Newer pilots and abilities really add more depth to the gameplay. The A-wing itself looks great. The pilots added are actual pilots from the Star Wars expanded universe (such as Tycho Celchu from the X-Wing novels). A must-have for fans of the miniatures base set. 2 111 | My girls are obsessed with the books and this made the perfect gift for them. Simple and easy to play. 2 112 | My son loves these we have tattoo parties all the time 2 113 | Great price! 2 114 | He loves this puzzle. can do it by himself pretty quickly. He likes all of the animals and plays it often. 2 115 | I'm glad I got the bigger engines to launch the Amazon 2 116 | Of all the Thomas and Friends trains Emily is a must to have. My grandchildren asked for her and now they have to take turns playing with her. 2 117 | I bought this base plate for my grandson. He is building a city out of legos. He needed another base plate for a house that he build. He loves playing with his legos. 2 118 | My son loves this puzzle. The shapes and colors are great! And it's very durable. The colors and shapes are so educational, really helped my son learn them fast. 2 119 | My son loves his leapster. He's a very active child and it is great to get him to calm down and rest a bit while still doing a fun activity. 2 120 | my 2 yr old son is autistic and this is an awsome puzzle for his fine motor skills . it was required for his ABA therapy . he spends alot of time with it and that is fantastic . thank you 2 121 | Ordered this as a Christmas gift. Loved it! Although, after purchasing, found it at Walmart. Would recommend for the ease of shopping! 2 122 | My son loved this, he really is enjoying playing with it. Its sturdy and good quality. Loud but fun for kids. 2 123 | Purchased this for our oldest on her birthday, however, it quickly became a smash with all the ladies in the family. Absolutely love the nail drier! 2 124 | A fun thing to do while kids just don't no what to do! I help them make their shrinky dinks and they were very surprised how they turned out! I will probably buy more in the future! 2 125 | Our daughters received these for Christmas. Both my 6 year old and 10 year spent a considerable amount of time designing and coloring their bags. I was pleasantly surprised at the larger size and quality of the bags. 2 126 | My daughter and her husband asked for this for Christmas. They had played it at a party and had really enjoyed it 2 127 | This bunny is so so soft, and oh so cute! It was an Easter gift for my son, and they are buddies! He loves to chew on his ears or legs. You will not be disappointed in this purchase! It's perfect! 2 128 | This is a fun game for a group of friends or just our kids (ages 6-10) and us! Easy to play and understand. 2 129 | I bought these dinosaurs for party favors. I looked for the best value and this was it! Lots of variety of dinosaurs! 2 130 | If you know a child who loves dinosaurs, how can you go wrong? The image is cute and the pan makes it easy to have something special during the 'dinosaur phase'. 2 131 | We've had this puzzle for a year now with NO issues of splintering, picture scraping off, etc.Both my 3 and 5 year old enjoy playing with it. Love M & D wood puzzles. Good quality!! 2 132 | A little child can have a great imagination and play time with these items. Dora is a wonderful teacher and so is swiper. 2 133 | Its LEGOs. Its Star Wars. You can't go wrong. Who cares if George Lucas and weaseled his merchandising cancer into LEGOs? Sure Star Wars Angry Birds takes it too far but LEGO's Star Wars keeps it just amount of greed and entertainment in balance... just like Anakin Skywalker brought balance to the Force. 2 134 | Great cards, really enjoyable storytelling experience for children and parents alike. We definitely intend to purchase more of their sets. We let each child choose a few cards that alternate letting them chose the next page/chapter in the story. 2 135 | An older grandson gave me his pirate ship for the grandma toy room. My youngest grandson from my other daughter's family would come to visit (lives 5 hours away) and would play with it for several hours. I purchased him one for his third birthday. He was very excited to receive his very own! 2 136 | My daughter loves helping in the kitchen and this makes it so easy. It is stable and secure. It folds up so it doesn't take up a lot of room when not in use. 2 137 | Interesting for people to think a coin is floating on the top when it's not. Great for office desks or even in a classroom. Science toys are fun and mind boggling! 2 138 | This was a Christmas gift that is being enjoyed quite a bit - making the jewelry is a lot of fun 2 139 | The kids needed this C-3PO because they all have his companion and what is one without the other. I might need one more. 2 140 | I use this with my toddlers at home and it is great!!! I just wish that it came with blank cards so we could customize it to our schedule. Very Sturdy material, it is holding up very well to my 1 and 3 year old. 2 141 | We bought these for our 2 1/2 year old, that is dinosaur crazy. We keep them on our fridge and he loves them. 2 142 | My little girl and I love the castle! She asked for a dollhouse, but I believe that she was pleasantly surprised to see this. 2 143 | This gator inflatable is great! I like the handles and the fact that it's large enough for an adult to ride on. I always wanted one of these as a kid. It was great to finally get one. 2 144 | This modeling product is perfect for use with 4 years to adult. The texture is nice and the beeswax is easy to reuse. 2 145 | Another "had to have". Voice and sounds are much better than the original D model. Good detail. Love the fact you can own a ship that was in only 1 (long) episode...but what a ship. 2 146 | I purchased this for my granddaughter's Loving Family dollhouse. She has enjoyed playing with it. It is a nice addition to her dollhouse. 2 147 | I purchased this game because my daughter needs some work on her writing before she goes to kindergarten in August. She got the game for Christmas and surprisingly her writing is already improving! She also likes to write now and I could barely get her to practice writing before. 2 148 | Keeps my boy busy and entertained this magnet putty is his favorite. He sits with all his putty he has many different kinds and it really keeps him occupied. 2 149 | We bought this helicopter to go atop my almost 3 year old's Plan Toys parking garage (there's a "H" for helipad). It's perfect. The person comes out and she can also play with him separately. I love Plan Toys stuff! 2 150 | This family of dolls is a big favorite in our classroom. I have had to reglue one foot back on but sturdy otherwise. 2 151 | The colors were pretty and shiny, and the clay wasn't cracked. Easy to use. 2 152 | Another very educational, product for young children, daughter loves it and older brother ..8.. does too, i even love to play with it. 2 153 | My daughter asked me for a fake computer and this is what I bought her. She is 6 and plays with it occasionally. It is all about learning which my daughter is in to as well. 2 154 | My kindergartener loved this gift. He loves to teach his students (mom & dad). This is a good quality item to add to the playroom. 2 155 | monkey with slingshot arms and it flies with jungle noises. we love it. pretty cool suprise when you get a monkey to the face! haha 2 156 | We own many Thomas Toys in this home, and this one is a welcome addition. Great toy, fun, goes great with all other Take Along or Take n Play Thomas toys. 2 157 | Great banner for our sons birthday party. Very bright and colorful. It's a little small but still woke great. Cute! 2 158 | This is a high quality easel, I like that both my children can play at the same time, the try underneath is wonderful. 2 159 | we bought this for our little nephew at Christmas time - it was very well received :) i bet he will get to play with it a lot 2 160 | I did this and gave it to my sister in law I changed from antique store to tea shop because she owns a tea zen tea inGA she loves it 2 161 | This is a super cute tree frog, soft and snuggly with huge feet. The digital interactive piece makes it extra fun for kids. 2 162 | My 3yr old daughter loved raising and letting go of her ladybugs! She is so into nature and the outdoor's and this was a perfectly fun learning experience for her!! Looking forward to raising and letting go of our butterflies :) 2 163 | My son (and now my daughter) love playing with this walking toy. It does make A LOT of noise (especially on tile floors) but it has held up wonderfully. 2 164 | My son was 2 when we gave this to him for x-mas, it was a little big but he could still use it. I think it will work better when we get it outside. 2 165 | And super fun to play. I bought a bunch as they were giving them away and we gave them for xmas gifts. FABULOUS classy present. 2 166 | This was for my 7 yrs old who wanted to play around with Bongos. These are perfect, great sound, great quality and are very sturdy. We are not musicians by any means but I purchased a few and took them back. These are by far the best quality in this price range. 2 167 | This is my go to gift for kids birthdays. 3 year olds get this very easy and it is fun for adults and kids alike. It is fast paced so we usually get a few good games in before the kiddo gets tired of it. 2 168 | super cute- seemingly durable versions of the adult tools. My daughter cannot wait to have our garden this year so she can help!! 2 169 | My two and half year received this as a Christmas present. He spent over an hour Christmas morning cutting the food and then putting it back together so he could cut it again. The only issue I see is that the velcro may eventually wear out and they pieces won't stick together but other than it is a great toy. 2 170 | This is a great product. Our daughter likes to push her babydoll around in the cart. No issues with it tipping over. I highly recommend. 2 171 | I love Melissa and Doug puzzles, and this one is great. My son loves to learn his letters through it, and the chunky pieces are great for his little fingers. The paint has chipped a little bit, but that's probably because they've ended up in his mouth one too many times. Great product! 2 172 | Love these for our homeschool classroom and use them DAILY! wonderful tools for physical representation of math concepts and even story starters. good quality and tough enough to stand up to 4 kids, one of which being a toddler and one being autistic. Buying more sets soon. 2 173 | Our grandchildren, ages 2-4, have thoroughly enjoyed this and have not tired of it. There are plenty of things to keep them busy. 2 174 | This was given as a gift. You can change the volume and different sounds and how long it stays on. The baby(4 months old) loved it immediately. They put it in his crib and turn it on every night. 2 175 | My nine year old daughter loves this. She enjoyed creating the mosaics, which were very easy to create, despite the small pieces. I intend to buy her another one. 2 176 | My 2 and 4 year olds really enjoy this game! they like that they can press the heads nose themselves and root around in the brain for the pieces they're looking for! a good game for learning matching skills and for taking turns. 2 177 | My grandkids like this game and play it on the leapfrog quite often with other games we have. I like that it is a learning game, too. 2 178 | Purchased for toddler. These crayons are perfect for her little fingers and hands to hold onto. She loves to draw and color, so this was a great purchase. 2 179 | this is a great bed tent. my 6 yr old daughter loves it. the construction of it is great, it's easy to put up or take down. worth every penny! 2 180 | I did this craft with a group of kids ages 3 to 10, and they all loved and enjoyed it. When they are done, they can share the joy by giving the card to someone else. That's the perfect kind of craft! 2 181 | It worked for the car someone gave my daughter that we didn't even want or care about. Why you give someone a car that doesn't have a battery?? It worked was used for about a month before we purchase a new car (mini cooper conv. from costco). 2 182 | I got this for my granddaughter's third birthday. She seemed excited about it, but I haven't heard whether she has tried making anything yet. Her Nanny loves craft projects, and this looked fun. 2 183 | Great stocking stuffers. There are lots of assorted stamp heads which should delight the younger crowd. Would recommend them to others. 2 184 | Purchased as Christmas present. Tested and it operates exactly as you would expect. I removed the squeaker immediately since I didn't want to hear it constantly on Christmas day.(takes 1 D-battery and is a little noisy, just as I remember seeing at toy store as a child). 2 185 | It's easy to manipulate and fits the other wooden track pieces, adding flexibility to configurations. It seems strong enough to last a while. 2 186 | My 2 yr old loves it! Out of all the outdoor toys, she goes straight for this every day. Loves it. Built well and very sturdy. Easy to move around and empty. Wonderful fun! 2 187 | My children, 2 and 4 years, both love this toy. Does anyone else's say letter "zed" instead of letter "z"? That''s my only problem with it. Must be a defect. 2 188 | Nice looking tube for use in pool. Thicker walls than the ones we picked up at local Target. Happy with purchase. 2 189 | We played it with our daughter when she was the same age as our grandson who is seven years old.We all had fun now as we did then. 2 190 | Got this with the scribble and write and the numbers package. My nephew is 3 years old and is loving playing with this. 2 191 | I had these blocks (only red color) when I was a kid and loved them. We bought two sets of these blocks for my 2 1/2 year old and he absolutely loves building with them. The blocks are very well constructed, durable, and good colors. They are fairly easy to setup. 2 192 | I ordered this for my grandkids and they love doing finger painting on it. It is nice and big for them to work with. I would order this paper again. 2 193 | What a wonderful toy for the grandkids! They use it inside or outside and have an absolute blast playing with it. 2 194 | I just purchased this for my daughter's first birthday. I love that it doesn't have batteries and is easy to operate (by pushing down on the worm's back). My 5 year old enjoys pushing it to my 1 year old, it runs into her and they both laugh, and I help her send it back. I would recommend this toy. 2 195 | I purchased the Wedgits to Go for my 3 year old daughter this Christmas. She loves the Wedgits and this building board makes it even easier to create. If you are building on carpet, this adds stability and spacing.It's certainly not necessary for building with the Wedgits but it does help. 2 196 | You can't give a puzzle without also giving the puzzle rack.It keeps the puzzle pieces together and easy to get in and out. 2 197 | My 13 year old ordered this after looking at various ones. He has used,used, and used this. It has been a fantasticPurchase, it is well crafted, and tons of fun. The battery is long lasting also. So impressive that we plan to order one for a friend. 2 198 | Who doesn't love sushi? This kit offers a lot of opportunity to build fine motor skills. And if you have to play pretend with your kid for ours, why not make it something you can get into, too, like sushi! 2 199 | I bought this as a gift for a holiday charity drive, so can't say anything about durability, but I was incredibly impressed by the detail of the features, and vibrancy and quality of the clothes for the price. 2 200 | I find people that come into my office just gravitate to this thing and start playing with it without noticing. I like raking out the sand first thing in the morning while I wait for my coffee to kick in. :) 2 201 | -------------------------------------------------------------------------------- /data/dev/Pet_Supplies.train: -------------------------------------------------------------------------------- 1 | Ordered this for my 18 month old dog. The squeaker fell out within 15 minutes and my dog began to disassemble the bone. She just chewed the life out of it while fetching; the covering peeled off and the bone ended up looking like it got holes put in it by a shotgun. 1 2 | These may work. They may help my dog with pain. Too bad they smell so horrible that my dog won't eat them.The smell of chemicals is overpowering when you open the bottle. Good luck getting your dog to take these. You are better off with buffered aspirin shoved in a treat than wasting your money on this product. 1 3 | This toy lasted approximately 15 minutes as my 7 month-old Wheaten bit down on it. I do not recommend. 1 4 | I sent it back as it was too slippery and my dog couldn't get traction. It was also too short to provide a gentle incline. 1 5 | I was really excited to get this, but was disappointed. It doesn't heat up! Despite moving around the heating pat, waiting for it to warm for hours, I couldn't tell a difference. I'm sad because others seemed to really like it, but mine just didn't work. This will be a return. Disappointing! 1 6 | I have tried everything to get my cat to use it. I have sprayed catnip on it. My cat perches on the top of it. She doesn't use it as a scratching post. It's a good product, but my cat doesn't know what to do with it. 1 7 | I'm so disappointed in this product! DO NOT USE! It does not stop my dog from barking, it barely phases her. It stops her loud barks, but not her softer ones that she does more often. It stopped working after two weeks, so now, it does nothing. 1 8 | Impossible to clean, you remove the top, everything comes apart. My hamsters escaped countless times, found myself having to duct tape parts of the cage they were escaping from. Plastic breaks all over the place, more duct tape. This is a poor excuse for a cage. 1 9 | Would have returned this product but it came in as I was leaving for vacation and forgot about it until just now. Save your money and have a professional install a wall unit for your dog. A friend of mine did that. It is much more durable and looks great in the house. This was just very very cheap. 1 10 | I returned this product since I didn't find out until it arrived that it cannot be located near large metal objects such as the refrigerator or stove. 1 11 | this crate is tiny not even big enough to put a cat in,i bought two and could not return them but it would have cost more then i paid for them so sadly i stuck with two crates i cant use 1 12 | Collar worked for a few days, dog stopped barking. Seven days later, the device quit working. "Made in China" should have been my first clue that this was not going to be a well made product. 1 13 | My 1 year old Lab ripped this ball in less than 1 hour. It's in pieces now. Waste of my time and money. 1 14 | I only bought this because I lacked a small amount to qualify for free shipping on an order. It is cheaply made and my small dog made short work of it. 1 15 | Bought Chuckit ball and handle. I have Golden Retriever and after 10 days the ball cracked. It is a heavier ball for distance and thicker rubber ball under cover. It will split real easy after dog has it in mouth.I bought Kong Squeaker 3 inch ball works great!Save your money! 1 16 | I was not happy with these. My dogs are small and only need to use it at night or if I go out for the day.But the pads do not hold the urine so not good. 1 17 | this thing grew mold on it!!!!!!!!!!! wtf? i had to throw it in the trash just after a week of having it. 1 18 | I purchased this to groom my cat based on reviews. Looks ok, but every time try to use it, he runs away, not as gentle as I would have liked. He is not use to being groomed. I do better with a comb. Can't recommend. 1 19 | if you have an extended cab truck and want to use this don't buy it!!! I had to return it the hold downs ripped right off 1 20 | My cat wouldn't touch Nutri-cal. The very strong fishy smell even turned my stomach. I wasted my money on two tubes that are of no use to me. If you cat needs extra calories, try baby food, the pure meat varieties. 1 21 | I applied this to my 18 lb. Miniature Schnauzer and within 2 weeks I saw live fleas and ticks on him. Switched to K9 Advantix II and so far he's been clean after a month. 1 22 | Not good, bulky and air only comes out certain sides, not all around. Like the long stick air stones better. This thing is heavier and takes up more bottom tank space than an elongated shape. 1 23 | Although it clumps well,my cat objected to the smell. I introduced it gradually, but once litter was pure world's best, kitty pooped on the floor instead of in the litter. Switched back to clay and she was fine again. 1 24 | Would not recommend it, dog destroyed toy on the first day. Waste of money as far as I am concerned. 1 25 | Within 3 Minutes my cat disconnected the entire wand from the mechanism. She was not interested in chasing the feather at all.She loves Cat Dancer, Laser toys and Fling-Ama-String. 1 26 | Very unstable, moves around so much that my dog gets nervous. Not as sturdy or immobile as advertised. I am keeping for groceries, but not for dog. 1 27 | The quality is not good. The little panel that opens to refill the hay doesn't stay in it's place. Once my bunny eats the hay that sticks out, the rest of the hay is trapped inside and she can't get to it. Not a good product at all. 1 28 | I'm not sure this could have been made out of a cheaper plastic. Also, the clicking noise didn't always work. Returned promptly. 1 29 | I knew this was a pricey toy but with such great reviews, I thought my 5 month old cat would enjoy bunny kicking this fish. I was wrong. She looks at it weirdly, sniffs it and moves on. She's not interested at all and I think it's the smell that's turning her off. 1 30 | The sound does not work well. You really have to slam it hard to get it to work. After 30 minutes my two little dogs had managed to not only open them but to rip them very easily. Material is not really great for dogs. 1 31 | I purchased this for my cats and at first they got a few minutes of play out of it, but other toys suit them much better. I wouldn't buy another one. 1 32 | I'm editing my review - at first I thought it worked well, but within a week the fleas were actually worse than they were before. I won't be buying this product again. Very disappointing. 1 33 | Have no idea if this works or not because neither cat (not at all picky cats) will touch it! Even tried putting it in dry catnip for a few days! No luck so I wasted my money! 1 34 | It didn't work on our 9 year old Westie, but then nothing else does short of prescription medicines to fight a chronic yeast problem, and maybe food allergies. This stuff isn't "magic" . 1 35 | Broke after a week of occasional use. It just stopped working even after we put new batteries in, we didn't drop it or spill anything on it. Maybe mine was defective? Either way, no more cat specific laser pointers for me, they're all cheap in my experience. 1 36 | it arrived today, despite being a dull color my dog likes it. unfortunaltely an hour later one leg is gone. will the rest make till tomorrow or it fall apart. i was expecting for the price like this to be better quality than the toy from 99 cent store. I am very disappointed, Money well wasted! 1 37 | I have a 2 year old Pomeranian; he destroyed this toy within 30 minutes. He did not want to toss and fetch; just wanted to chew and suck, stuffing everywhere! 1 38 | This is the second box of this that we have purchased plus the powder and neither work. Our Yorkies have been eating their poop since 6 wks old and we have tried everything to stop it and their almost 8 months old.Waste of money 1 39 | Cheaply made...one of the rings snapped and my dog almost ran away from me. Wouldnt accept a refund, pretty upset about it 1 40 | I have a 9 month old puppy. She destroyed this in minutes. Would not recommend for heavy chewers. Better options out there. 1 41 | My Lab easily chewed the little nubs off of this toy. He loves it, but he cannot play with it anymore. The description says it can withstand lots of chewing without discoloring or losing the flavor, but that doesn't really matter if the toy can be chewed apart! 1 42 | This product was so flimsy and the glue trap was barely sticky enough to catch anything. Ended up throwing it away. 1 43 | Well I ordered this hoping it would work. I've tried several new and rechargeable batteries and absolutely NOTHING happens. I just opened the box yesterday. It does NOTHING and really disappointed as I should get my money back. 1 44 | it just does not work just use a scissor that works! this is not sharp at all and does not do any magic at all! 1 45 | This is a cheap toy.Gracie had it torn apart in minutes.There is a squeaky round object in it,which could be a choking hazard for your dog,or a small child.This toy scared me for just that reason.Not reccomended. 1 46 | Very disappointed in this toy... our wo dogs destroyed it within 5 minutes of having it. We were watching them and they were playing with it when all of a sudden they had pieces coming off of it... very disappointed. 1 47 | I do not recommend this food. It may taste good but I am not sure if it is even made in the USA. I wouldn't feed it to my cat. I know the dry food is too high in ash and magnesium so unless I hear otherwise, I wouldn't recommend this food. 1 48 | If these were made in china, they killed my dog. I don't remember the name of the ones that did and please forgive me, Smokehouse company if I've got it wrong. But PLEASE only buy made in USA foods for your animals 1 49 | The one star is probably not fair because I have picky dogs. They would not eat this so I gave it to a friend and she said her dogs liked it as far as she could tell (they are not quite as picky). So - please be aware that the one star is only because of two picky Papillons! 1 50 | Forget about this stuff. Most of you folks are too young to remember the "medicine show." A guy would sell a "cure all" to a gullible audience. Yep, cures all ailments A - Z. This stuff, like the other crap for sale claiming to control/kill algaes, does not work. False advertising. 1 51 | I use it in my 5 gallon betta tank and it is not too strong and it gets the job done. Very quiet and efficient.UPDATE: This was the perfect filter until it stopped working. I cannot find a similar filter for my 5 gallon tank which doesn't cause too much turbulence for my betta. 1 52 | My dogs will not eat this, will be returning this w/ the other terat that is too smokey, too. Cede 1 53 | I thought I'd try this first without anything in it, just to see if my cats liked it. They will eat anything that doesn't eat them first, so imagine my surprise that they wouldn't go near this. Not much use if they don't like it. 1 54 | This product has not helped my dog with her separation anxiety at all. I had faith, but it's been three weeks and there has been no change. 1 55 | Huge biscuits. Not the best deal afterall, and even tho my dogs love them, they weren't easy to break in half and I think made them gain a little weight 1 56 | This toy is very small, but it's the perfect size for my yorkie. However, the stuffing started to show after only a couple of days. This is the second Petstages toy that I've bought my puppy that's torn up after only a short time. Won't be buying anymore. 1 57 | my guinea pig hates it and she wouldn't touch it. I think i can only use it as bedding for her 1 58 | Have an old PetSafe door - talked to company directly when this new one didn't work out. Next one didn't work out either. Finally got a generic replacement from Home depot for much less money - about $10. We trimmed it a bit and it worked great. Be very careful if you have a old door. 1 59 | Our lab/G. shepherd mix had this bone in splinters in less than two weeks. Her previous beef bone (don't know which brand, unfortunately) lasted for nearly a year and never splintered, simply got ground down. 1 60 | they were okay but my cats broke them really easy and I was scared that they might eat the little bell 1 61 | Unit was great until the motor died after six months. A replacement motor from manufacturer costs more than the whole unit. 1 62 | Pulls off easily from fabric covered couch....not good.Stuck together and adhered more to those passing by or accidentally touching tape than it did on my cats.Waste of time and money.Not a deterrent,not a barricade,not at all good at stopping your furniture from being shredded..I would give product zero stars if I could. 1 63 | The picture is not what I received. The box I got is frontline but is from a different country. I figure that it is safe to use on my dog but I decided not to since the box is not the same. 1 64 | again my cat wouldn 't eat this product; no I will not consider buying this product again ; no more, sorry 1 65 | Cheaply made. My cat liked it the one time it worked. If I still had the packaging, I would return this poorly made product. Also, putting in the battery requires a very small screwdriver which I did not have. The screw also came stripped so it was harder to open. Not pleased. Do not recommend. 1 66 | Unfortunately, this spray did not work for our dog at all. He has always had itchy skin and scratched a lot. This did not to help relieve him. The smell wasn't bad at all and he didn't seem to mind it being put on him, but he would still scratch 5 minutes later. 1 67 | None of my finches have touched this food. However, I go through 1 feeding tube every 2 - 3 days with the mixed food brand, and I have 4 feeding tubes. 1 68 | This product is dangerous to your pet's liver.Contains Tylosin.If you care about your pet STOP giving this stuff.If you don't just keep harming. 1 69 | I would not purchase this product again. The product was not thick but a little too runny for my taste. it did have a good smell. 1 70 | I was hopeful by reading reviews that this toy would last. Our mastiff/pit mix was THRILLED when it came out of the box. Unfortunately she had all of the arms off in less than 10 minutes. Needless to say, not for heavy chewers : ( 1 71 | The ball-like nodes of this toy are perfect for the dogs to sink their teeth into and chew into bits in minutes. Will not be buying again. 1 72 | The pad is on front porch and does not seem to heat. My cat chooses the old pad I bought several years ago and still has a little warmth to it. I did not contact the mfgrs. but should I guess. 1 73 | Not worth the money , they leak after one pee pee. Costed me more than to just buy a cheap pad locally.,beside the time I spent cleaning away the pee stains! 1 74 | Over the past 6 months since owning this, two of the rubber feet have fallen off, there is something rattling around inside of it, and now it makes a horrible noise. And that's all from sitting on a shelf and being left on. 1 75 | Well, this was a disappointment. I bought this food wanting good quality food formy dogs, but they will not eat it. 1 76 | bought this to clean out my 10 gallon fish tank. once i got it to start sucking out the water it would stop and would have to take it apart to dig rocks out of the little flap at the top. 1 77 | Not worth the money. The individual dishes are very small. Maybe if you have a cat this would work well but defiantly not for dogs. 1 78 | Had trouble getting it to glow and gave up. Wish there was more guidance about what kind of light it takes to make it bright. Or maybe it just never does get very bright. 1 79 | items are very cheap..and my cat wasn't at all interested in them..overpriced and overrated in other reviews..disapointing and too cheap to return for refund. 1 80 | My ten pound something-or-other mix already bent most of the bars.... She gets her head stuck in between them trying th escape. It's not very safe at all anymore, not even a year old... 1 81 | Found a flea on my cat as well as flea feces after he'd been wearing the collar for a few weeks. Very sad. I ended up using Advantage on him after all. 1 82 | It yo have a parrot it will last about a week. I have a Sun Conure and he made short work of both of these. Right price thought, I suppose you "get what ya pay for". Amazon & seller did a great job as usual. 1 83 | This is a replacement tube for the one that already comes with the product. It cannot be use to "extend" the tube for a taller tank without restricting water flow, as the name implies. 1 84 | It didn't work for my pups but I know they have lots of issues that may be better addressed through meds. 1 85 | I sprayed a few things with this spray and my dog loves the taste. She chews right on it. She thinks it is a treat for her! 1 86 | Worked pretty good for about a week, but my two dogs got used to it after that. They'll bark right in front of it, I'll see the little light going off showing that it's working but nothing.....they just keep on barking. I'll never buy another one. 1 87 | The title says enough. Mousse tried to escape, got stuck and suffocated to death. Do not Buy! This is definitely a hazard! 1 88 | I consider my Sheltie to be an intelligent dog, but the noise of the toy makes him back away. And I can't tell you how many times I've "demonstrated" how to get the kibble out. He just waits until I do it. He could care less about the thing, and he's very food motivated. 1 89 | I believe when people say that it worked with their dog, but with my hyper dog, it did not work. 1 90 | Wellness kitten brand cat food has been recalled twice. It made my kitty sick both times and we had no idea it was the cat food. I will never buy this product again. The company did a poor job communicating the recall to its customers. Our cat's thiamine level was affected. 1 91 | waste of money, does not work. (for us, i have heard other people claim it worked for them) we had a cat peeing in the house, tried this, the cat still pees in the house. oh well. 1 92 | It looks very cute but after washing twice and even leaving in the sun to dry it still had a weird chemical smell. 1 93 | First of all, I ordered the "large" size thinking it would be well, somewhat "large".... unless you have a toy purse dog this product is by FAR not large at all. I have a dog almost a year old who chew this apart in no joke 1 hour. Would not recommend for larger dogs. This is for toy dogs. 1 94 | I know this was cheap, but don't waste your money by buying this. It definitely didn't work for me. It will get your pet's attention, at least once, but that's it. 1 95 | My aggressive-chewer five month old lab ripped this toy apart in less than on hour. I was pretty disappointed in the quality. 1 96 | I have four chinchillas & they will not eat this food, not even the treats in it. Also, it contains sunflower seeds which I've read in a lot of research that chinchillas should not have. Will donate it instead of returning - maybe a bunnies will like it. 1 97 | My cats not interest in this thing at all. He likes food, loves snacks and string but this thing does absolutely nothing for him.Lastly, you get 2 cents worth of plastic and they charge $5.00 bucks for it?? I was duped. 1 98 | I've used this for years with many cats.My most recent purchase is a new formula. It's runny goop that the cats hate....I wasted money on several tubes.My search begins for another brand..... 1 99 | I have 2 dogs. Neither of them is interested in this toy. They have a basket full of toys that they love using, and this one seems to be too hard/not interesting enough. Shame because they love playing tug of war with their other toys and I thought this would be ideal, but it's definitely a no-go. 1 100 | Yes this device makes an ultrasound noise.What this means to the dog with depend on the dog's temperament and previous experience, and how you use it.I certainly would not rely on this device for self-defense against an aggressive dog. 1 101 | My dog is a heavy chewer and usually starts destroying rope toys in minutes, but this one seems to be holding up pretty well. 2 102 | My dog likes them and they are much cheaper than pet people, pet smart, petco, etc etc. Only place that may be able to compete price wise is costco. It smells but not to the extent that would make me want to leave the area. 2 103 | My kitties love this thing so much! They were trying to play with it before it was even fully put together. And it's great because my older cat can sleep on the top while the younger kitten can play around in the bottom! Absolutely delighted to have bought this on an impulse! 2 104 | My boxer likes these, but he doesn't get really excited about them. But if they work as advertised and clean his teeth, then they are great. 2 105 | I love this product, and so does my 7 month old puppy. She loves to run and chase the balls. Now if only I can her to bring them back to me. 2 106 | I can only vouch for my dog ... he loves them and has had greenies for years 2 107 | I use the Teafco Argo Airline Approved Aero Pet Carrier to haul my dead, stuffed, hamster when I fly. Using this product, I am allowed to transport my beloved hamster legally without any problems. I possess licensed taxidermist documents and I just board the plane. 2 108 | We use this on the side of a glass critter cage for our hamster because the room he is in gets very cold in the winter. He made his nest right up against it and is much more active now that he is warmer. Nibbles says, "Love it!" 2 109 | I've had great success with the Missing Link products. My dogs like it and it shows in their health and also their coats. We have used both the Missing Link Plus and the Missing Link Vegetarian Formulas for years. 2 110 | use this when i change water in my tank and it is wonderful stuff.Recomend it as a great product for your tank. 2 111 | amusing cats love to play with it 2 112 | Hoping this new dog food will have amazing results with my dogs. I like the list of ingredients and they seem to like the taste. 2 113 | This works perfectly on my long haired cat. I tried the furminator, but it didn't do the job. This works great and I love how it holds all of the fur instead of having it blow all over the place. 2 114 | I searched all around for the cheapest Frontline Plus I could find. It works perfectly. Nothing's as bad as a flea infestation! This was the best price I could find. 2 115 | I have five cats, so the litter boxes are a constant in my life!This product works very well. Easy to scoop.,long-lasting with intermittent scoops and addition of new pellets. Good odor control.Highly recommend. 2 116 | I have read all the reviews previous to purchase it and I can tell you that were true.This product works very much to its purpose. I have 2 dogs with ears problems and its helps so much to remove and clean them.Thank you all for recommended it.Now I am recommending it too.Excellent price, formula and customer service.I am very happy. 2 117 | The dog and my Bengal cat both love these! They have a strong smell that I don't like, but the critters love! 2 118 | OH this is a ball favorite at our house! All three of the dogs love this ball and will chase it for hours! 2 119 | Used it just 3-4 times but its good stuff. It does what its supposed to & I like that. I would recommend it to anyone & everyone. 2 120 | They fit easily and last a long time. When one side is worn out you can flip it over. Add a little cat nip and watch your kitties go crazy! It defintely prevents them from ripping up the furniture! 2 121 | My healthy elderly cats have only eaten Purina Cat Chow for their whole lives and is the only dry food they willingly eat. It is very convenient to have Amazon deliver it to my front porch and the price is competitive.Highly Recommended!CFH 2 122 | I have an Andis electric groomer for my 2 Bichons. I require 3-4 different blades during the groom. When grooming is done, cleaning my blades with a little of this in a small rectangler bowl cleans them of all hair and debris. 2 123 | I absolutely love this product. For the past 4-5 years it has worked wonders for my kitties. They are Persian and very fluffy and I would be in a big trouble with hairballs if it was not because of this great product. Highly recommended. 2 124 | WOW I bought 3 of these bowls and I am so pleased with them. Thank you Amazon reviewers for your great recommendation. 2 125 | All 3 of my dogs-pom, yorkie, rat terrier, love these. I just received my 2nd order. Wish these were on sub. and save. 2 126 | I ordered two of these actually - one for food and one for water. It's easy to take out and clean and put back. Quick delivery too ! 2 127 | Moved to Florida and my dog immediately picked up an infestation of fleas...tons of them. I used this in conjunction with CapstarNovartis Capstar Flea Treatment Blue Tabs for Dogs and Cats and completely control the flea issue. Fleas and bugs are a very common problem in Florida, but with this combination, NO MORE FLEAS!! 2 128 | Use these for indoor and outdoor play. These are her favorite toys. She chases and retrieves them, catches them on the fly and likes to play tug with them. 2 129 | Once again I bought a toy that my picky Abyssinian didn't spend one minute playing with. I gave it to my sister for her cats and they love it. I even sprinkled some catnip inside the box to make it more enticing. 2 130 | I like this brush because I can use it on the cat (who loves it) and I don't have to pay extra special attention to over- grooming her because the bristles are so soft. It's not the greatest brush for removing loose hair, but the cat loves it. 2 131 | My dog really likes this bone and it's been very durable so far (3+ months). Plus it was a great price on Amazon. 2 132 | I have a male Maine Coon and he fits through this door perfectly. We actually took off the door part. So the cats can just walk straight thru without having to push it open. We use this inside the house so they can get into the basement. Only problem is my 2 1/2 yr old can also squeeze thru. 2 133 | Cotton Balz loves his greens. Unfortunately he chooses to pull the seed pod out of his watering device and leave it on the floor. Bad Cat! 2 134 | Her dog de-squeaked all her toys. My Mom fixed them with these and now the dog can have all her toys squeak again. Took her a whole day to discover they all squeaked again and she is a happy puppy. 2 135 | My two dogs love this Pup-peroni. Great treat and I like that it is 90% fat free. This size bag last us for a long time. 2 136 | I use this for my dog who has really bad skin allergies during the summer. I bathe her 3 times a week and this has decreased the itching significantly. 2 137 | These are great, I've bought many dog treats that my pups have enjoyed, but this is the only one I've been motivated to write a review about. 2 138 | I have a dog that will surgically remove squeakers and stuffing, so this toy is great - it's lasted longer than expected and I can stuff other toys that are more durable inside for her to "pull out" which satisfies her need to tear other toys apart. 2 139 | Excellent product for your tall tank. Allows the filter to take in more debris. Did exactly what I needed it to do. 2 140 | Works great on a timer for the day time heating. So far the life expectancy is good, heats up area nicely. 2 141 | I have a 70lb shepherd/heeler mix who is absolutely obsessed with these. He will happily play with it for hours and then still picks it up and reinvestigates weeks later, especially if i push the flavored goo up a little so he can reach it. I'll be buying lots more of these. 2 142 | Able to make the cage into what ever we wanted even through and around other items. love it would recommend. 2 143 | My rescued Rottie loves it! It's his favorite toy. We tug it together while I squeak one side and he squeaks the other side. Really cute. For a large dog, he has not attempt to shred it. Good toy! 2 144 | I have a catnip toy that is the favorite of my cat. When I spray it on it works like it was new. 2 145 | I spent much more on a tugga rope and I'm finding strings all over my house from it. This one has held together great w/out shedding strings. 2 146 | this has made a dramatic impact on my dogs paw pads. He had some minor rough areas near his nails but nothing severe. After using this for about a month his pads are in perfect condition. Absorbs well. Not completely but its not getting everywhere either. Happy with the product. This will last forever too! 2 147 | Love it! But even better, my puppy loves it! Chews this instead of my shoes which has been a big help! He has had it for a month now and it is still going strong! 2 148 | it was great, my dog got really exited and broke it before 5 mins had gone by, but it was fun 2 149 | I had six shitzuh puppies at my house and was in desperate need of toys. the retail stores wanted way to much for these same type of toys. shipped quick and they loved it. 2 150 | Was looking for an additional PetSafe heated bed and found out that some of them are being recalled, I called the 800 number and PetSafe is sending a new adaptor. The bed has functioned perfectly for over five years and is much loved by our cats and dog. The company and the product get 5-stars in my book. 2 151 | And really that's all that matters right? The squeekers lasted longer than most and expect purple pieces of fabric and fur if your dog is a chewer but not more than any other! 2 152 | this bulb does what you would expect it to do, plus amazon has a great price for now these things, might as well buy a spare while you are buying. 2 153 | These filters were the exact ones that are sold in pet stores. The price is half what I would normally pay, and best of all, these really do a good job in keeping my aquarium clean. 2 154 | I have been using this for years, mixing it with my 3 cats regular food. After spending $300 on a teeth cleaning for 1 cat I figured there had to be something cheaper and easier than brushing their teeth. This cuts down on plaque TREMENDOUSLY and is $7 cheaper a bag than my pet store! 2 155 | My dogs eat only this can dog food with dry good. They enjoy the texture, flavor n I find the vitamins n vegetables are great. Would take me all day to cook n get all these ingredients in they meals 2 156 | This is my lab's second and final gentle lead (he outgrew the puppy size at 7 months!). I highly recommend this product to every dog owner who wants to train their dog to walk WITH them and enjoy every moment of the walk. No more tugging; struggling to get out; it's great! 2 157 | Many things I've bought for my cats have an interest life of about 2 hours. Not so with this product! I don't know if it's the sound of the material or the tunnel shape but my cats love this and have since I got it about two months ago. 2 158 | can't beat the price , esp. with regularly scheduled shipping. also, comforting to know that my kitty will be eating organic and healthy! it's nice to trust a company's product, in this market. 2 159 | Phew....this is one great big rawhide! My dogs (both English Springe Spaniels) love these "bones". Between the two of them they chewed one to the half-way point in one day....and these are rock hard! But as the novelty has worn off, they are gnawing away day after day. 2 160 | The cats beg for their breakfast and dinner now. The 18yr old has put on some much needed weight while the youngest (and fattest) has lost some of his blubber. Both cats have shiny coats, energy to play, and less stink left in the litter box. Read the ingredients of what you feed your animals. 2 161 | I've been using this pond food for several years and all my fish seem to enjoy these pellets. This is the only food I give them. 2 162 | This is so well made. It holds 12-15 lb bags of food, ( I leave the food in the bags)The treat box is big enough to keep biscuits and big bones. It fits beautifully in my pantry. 2 163 | This is potent stuff. Very few sticks, almost entirely buds and leaves. My cats react more to Sojos than any other brand. 2 164 | my dog loved this . . . to death . . . the toys death, that is. but he chewed it for a month and i am satisfied with the use he and i got out of it (don't tell him that i chewed it after he went to sleep), for this price. i will buy another one. 2 165 | Like the hairball formula my cat loves these treats. As an older cat she experiences no health problems and I attribute that to to a healthy diet. 2 166 | Yup. I did call it that. She loves it. She loves all of the wet food so far. She's a happy healthy doggy. Thank you! 2 167 | This toy is really fun because it bounces all around so he plays with it and then tries to get the treats out. 2 168 | I'm very happy with this purchase... it's very easy to install, and does a great job of protecting my leather seats. Nicely covers all areas that a pet might come into contact with (other than the door panels).Seems well made, and I suspect it will last for years.Highly recommended! 2 169 | I love this shampoo for my dogs. I have three Maltipoos and 2 Mini Schnauzers. It lathers up nice and thick and a little goes a long way. I love the little conditioner beads that burst as you are lathering up. Smells great too and the scent last several days too. 2 170 | I have used this product for my elderly dogs for years it really helps them and without the side effects of NSAIDS or steroids. I would recommend people try this before giving drugs for their dogs with arthritis 2 171 | I have black backgrounds in my aquariums, and these work out great. They do not show up at all! Highly recommend. 2 172 | These are huge pads..fantastic for traveling --- and there were so many !:) The price was perfect. I couldn't believe how 'cheap' they were, but the quality super! 2 173 | What a GREAT. Toy for big or small dogs.Ollie my brothers dog. LOVED THIS TOY in fact I plan to buy another. SoonVery long. Soft. 2 174 | I have a Cavalier King Charles Spaniel with a very sensitive stomach. When I use this product, he seems to be much more comfortable, and his elimination is more normal. 2 175 | Crisps are the way to go instead of those tiny mushed up flakes you buy at WalMart... Crisps hold their shape and there's no waste with no clouding of your water... just the right size for all of my fish - and I have some that are palm sized. 2 176 | These polishing pads are slightly thicker than the original ones I replaced but work great! My water stays clearer than ever! The 6-pack is great so I don't have to reorder so often! 2 177 | Soft and comfy as it should be an the dog is thrilled. She's always on it. Very nice bed. Haven't washed it yet or anything, but we love this so far. 2 178 | Kongs are the best! I use the XXL size for my English Mastiff girl who currently weighs in at 120 lbs and is 13 months old. It keeps her working for her treats and tires out the mind at the same time. 2 179 | I now have 5 cats (2 new kittens just came home) and I bought this liter box hoping to make the liter changing job easier. It's fantastic! So simple it makes me wonder, "why didn't someone think of this before?" Great product, now I will order a second for the rest of the cats. 2 180 | I've ordered three of these and all three work like a charm. They keep the temperature right at whatever you set it to. Unless its very warm in your home it will not overheat. 2 181 | I ordered 2 of these for my 350 penguin hob filter, they work great, much easier and cheaper to refill these cartridges with media than going out and buying new cartridges every two to three weeks, great item to have. 2 182 | They do what they show. Unbelievably handy for picking up little worms and dubia roaches for my lizard 2 183 | Well the cats are very temperamental and some timesif dont like the vitamins are no way to change they minds butthis product really like , they eat and look for more is very easy to givecome on time 2 184 | My girls love and for the pooch on a grain-free diet they keep the girls attention perfectly. They come in formed filets that are scored to easily break into tiny pieces for use during training. 2 185 | My cat is a hefty 14 lbs. She jumped on this, as soon as it arrived. She considers it her special spot. For napping and for grooming. 2 186 | Some times on the road you need a way to keep your pet controlled.and i've found that this is a good means for me any way of doing that. It works for me. Sure it will work for you!! THanks Pitbullman 2 187 | It did get tired after five years, but I went and bought another. My cat uses it daily -- for drinking not for washing. 2 188 | I really like this little pan. i purchased it for use in the three tier condo. It is very sturdy and well made. I am glad I found it. 2 189 | I will say that I do have some finicky cats (4 total... 2 are normal, 1 is a diabetic obese SCAREDY CAT, and 1 special needs) They are learning that it is safe and not so scary to use it. What a time saver -- it's SO clean, no more smells, so easy to use. LOVE... and easy to install 2 190 | My local stores run out of these a lot and sometimes I can't find one when I need it. They also tend to cost a lot more than they do here. If you have a Prime membership save yourself some money and buy them from Amazon! 2 191 | They are great to use as a snack for your dog and for training. Small and light like Goldfish crackers with very little to no odor to them. Ace likes them and will catch it with his mouth when I toss them in the air. 2 192 | My dog loves it. 2 193 | All I know is that our 13 year old Lahsa Apso happily chews up his arithritic pill in the pill pocket each morning. 2 194 | i foster basset hounds and have found that this stuff, coupled with salmon oil, solved a lot of itchy and allergy problems. grows hair back beautifully on unhealthy dogs. 2 195 | Totally washable and stays in place because of the Elastic bands. Always good to have several as you will want to wash them periodically. 2 196 | Simple to use, and accurate results. The color card used to read the results is clear and accurate. (My last card, I could never figure out the results - turned out it was printed without all the colors!) 2 197 | Apparently mine does. She loves the toothpaste so much that she thinks she's getting a treat. Makes brushing teeth much easier 2 198 | If you have a dog with chronic skin problems then I suggest this shampoo. Our Mastiff has such skin problems but this shampoo gives him relief and also helps heal. 2 199 | My dog likes to sniff the pads.I would highly recommend this product.I think these are the best ones on the market. 2 200 | A great all round quality product. My tetras, discus,loaches love it. My guppies love it. Just grind it up in your fingers when feeding. Also great to feed new born. As with the guppies grind it up to a fine powder. I always use Tetra brand. 2 201 | -------------------------------------------------------------------------------- /data/test/Baby.train: -------------------------------------------------------------------------------- 1 | Love the company but this trainer does not fit a round toilet and seat. (We have a Toto with a Bemis seat.) This is not entirely clear in the product description, so I hope this review helps others avoid the hassle of ordering and returning. 1 2 | I like that this garment is flame resistant, that it is spacious and sleeveless, but that's about it. The fabric has an unpleasant feel and the zipper began to break after only one use. It continually splits from the wrong end, so every time the baby wakes up, she's come out of it. I regret this purchase. 1 3 | The playmat would be perfect if music did not stop every 20 seconds. It says in the manual to restart it - does not help, baby starts crying. The only thing that helps is hitting the mat - but every 15-20 seconds?? VERY annoying. 1 4 | We were very disappointed with this product. The zipper got broken in our first trip also the handle got broken pretty quickly. 1 5 | Looked good in the pic, hence bought it. Very poor quality. Did not even withstand 1 wash/dry - got very pilly and unusable. 1 6 | this lasted us about 2-3 months of use beforethe batteries died. cannot believe you can'tchange them. terrible design and wasteful. 1 7 | My less thank one year old boys figured these out right within a couple months. If you yank hard enough it opens up. The adhesive started to fail, and the drawers they were talk enough to see into the learned how hot press the latch on their own to open drawer. Ridiculous how easy it was for them. 1 8 | These bottles leaked. We called customer service who happily sent more nipples and rings out, but still at the end of the day, leaked. And not in a little slow leak way. In a big puddle, bottle leaks like crazy way. Not happy. 1 9 | my 15 month old has never liked this. I keep reintroducing it to her after putting it up for a few weeks... never liked it. It's a hard toy, has no appeal to her at all. 1 10 | The locks are nice and easy to use, but the adhesive doesn't hold well at all. I put the locks up about 3 weeks ago, and they have all come off already. Plus all of the adhesive actually stayed on the furniture, and it looks like it'll be impossible to get it off without damage to my dressers. Very disappointed. 1 11 | I tried it twice be gave up. I have sensitive skin and get rashes easily from plastic. End up getting the Lansinoh ultra soft pads. 1 12 | They do not absorb milk as good as the disposable once, and I do not even have a lot of milk. They made of cotton, so they get wet very fast and so your short. I use the disposable one by Lansinoh and I love them. 1 13 | I was really disappointed as this didn't fit any toilet I tried it on. It is also extremely flimsy and feels like it is going to crash in when my daughter tried it out 1 14 | We've had 3 of these and each one has had a shorter life span than the last. Its great for for the kids, like my daughter, that love to put up a fight, but the last one only lasted through one cold! We'll be trying a different brand. 1 15 | This thing is so pointless. Just boil your stuff - this thing takes up so much space. Totally unnecessary item on your baby list. 1 16 | I purchased this hoping it would make swaddling easier and that it would be a less bulky blanket that my little Houdini couldn't get out of and endanger herself while in her crib. I found this difficult to use and not super effective in keeping my little one swaddled. I now prefer a light weight blanket. 1 17 | The weld on this gate broke after 4 months of use! I was surprised based on what this gate costs. I won't be getting this gate again! 1 18 | I didn't like these at all. They never stayed in place. WeeBlocks stayed in place much better. These are too light weight and too small. A waste of money even though you love the prints. 1 19 | save your money. this brush scratched all my bottles and sprayed water all over me when i used it. i'm better off using a soft sponge and a spoon to use as a handle to swirl the sponge around 1 20 | Did not fit on our spout. Just falls off. Very cute, but a waste of money. We and the kids will just have to be careful 1 21 | I ended up returning this sippy cup. The silicone sleeve was torn and jagged. It has a Very hard and super long spout. Very not user friendly. My 6 mo old wouldn't use it. 1 22 | Do not buy! It shows all blue colors and they send pink cups. Amazon really needs to get it together with this. This is the second time this has happened, and it will be the last time I buy cups from them. 1 23 | Would not stay on the table. The baby has no trouble peeling it off in the few places where it does stick, either. Besides, this ruins the table's finish. Overall, a waste. 1 24 | Is too small, its not the same as the normal ones, i dont know if its original but its too small and can not be put in the crib because is too small. 1 25 | The bibs were far smaller than I thought, and the baby felt like choking. He pulled it and cried every time he wore it. They are very cute but were of no use for me. 1 26 | the music didn't last longer then a week and the stupid thing kept falling off. get the mobile its a much better/smaller toy. 1 27 | Too short unless you only want the child's bottom covered ...which I don't in the nasty public bathrooms.There are better products out there for sure. 1 28 | Tried to use this with multiple children when I worked in early intervention and then, because I owned it, introduced it to my twin grandkids. Have yet to find a child who played with it much. A plastic coffee can with teething toys, rattles, baby jar lids, etc. will work as well. 1 29 | The suction on these does not last. Just awful. 1 30 | Does not work for my 2.5 year old. Great idea if worked! I have to push button super hard ( way to hard for a kid) to get any water to come out, and then it pretty much just dribbles out. Trying to return. 1 31 | My baby kept on gagging on these. The teat is very big! Not impressed with these pacifiers at all. Don't buy! 1 32 | This product was simply too bulky and ugly for us to keep in our home. Although we really loved the concept and our daughter loves to use her kickboard in the crib, there was no need for this additional purchase so we returned it. 1 33 | I spent half an hour attempting to put them up and after cleaning the window and pressing one side then the other (maybe this side would work if not the other) well in the end they ended up in the garbage. JUNK! They will not stay on my window. 1 34 | I tried putting the Dr. Brown's bottle (7oz) with nipple and cap in this tote and it doesn't fit. The tote is about 1 inch too short. 1 35 | I didnt mind that it is a thin fabric but that the material is really cheap. Its soft but cheap. I was most upset that the color didnt match the bedskirt by this company. THe color was darker. Very disappointed. I went and got a better sheet from the store for cheaper amount. 1 36 | The snap for the medicine is too tough, difficult to keep meds from leaking and it just did not work for us. Waste of money! 1 37 | Just after two months of use the monitor started sound bursts suddenly.. SONY disapointed me. I bought SONY because of the brand and I must buy another baby monitor. :/ 1 38 | this product has got black bits of towel/terry falling off right out of its packaging. i had to be picking up all the bits.. everywhere. on the carrier and even on my baby too.I wonder if it only happens for black? 1 39 | I bought these to clip my 9-month old's nails. The clippers were dull & took make clips to cut even one piece of the nail. I have limited time with my crawling son, so this was a deal-breaker. 1 40 | it rusts so its dangerous for our baby. very disappointed because i really loved the color. do not buy this> or your baby will come in contact with rust. 1 41 | My 2 1/2 year old figured out how to open this gate.. They worked great up until now. And my husband and I are both average/thin and it was tough to get through for us while holding baby/toddler/laundry etc 1 42 | I found this overrated pillow actually rather useless. I am 5 ft 8 hence my torso was too long to comfortably nurse my little one (born at 9 lbs) as I had to slouch to breastfeed or somehow prop up the boppy with something else. Anyways, not useful for infants....maybe +6 month olds but definitely not infants. 1 43 | This gate does not work with the extra parts added. We will use it without the extension still, but if you're looking for a wider area I would not recommend this at all. My husband is very handy and couldn't even rig it to be remotely safe and not fall over. 1 44 | Good concept, bad adhesive. My son pulled these all off the coffee table within a couple of weeks. 1 45 | It's very cute and modern but spout was just too hard and didn't carry enough liquid for long days at park or in car. Never used it 1 46 | The concept is okay, but it doesn't begin to wrap around the front rail on my crib. I'm not really sure how the Velcro is supposed to secure to itself through the rails either. I'm returning it and making my own cover from a used pair of pants and tiring it on with shoe laces. 1 47 | I think a pillow case would work just as well as this, very thin. the fit is great and it works but would not buy again 1 48 | I was very disappointed with these washcloths. I purchased them before my son was born and have not used them once. They are very thin and feel cheap. We got much nicer washcloths with our hooded towel sets and use those for his baths. 1 49 | Was broken when I got it and I had to send it back, the toggle switch was missing. This is also a super cheaply made product and not worth the price. 1 50 | I was really excited when I heard about the product and ordered it straight away, but the result was disappointing. The nipplette just simply does not stay on even with the support of wearing a bra on top of it to prevent contact with cloth while moving around. The effect, of course, wasn't as described either. 1 51 | I purchased this to give as a gift; Sadly, the box arrived dented, and now I can't use this item. Disappointing. This is just one of several packaging problems I've had with amazon over the last month (amazon has not been packaging my items carefully, leading to damaged items). Ugh. 1 52 | This thing did not stick for me at all, anywhere.....which was why i needed it, distraction during changing, so ...didn't do us any good. 1 53 | It stopped working after 3 days sitting on a shelf. Too bulky for a toddler arm, could never get my daughter to use it Save your money. 1 54 | You can't wrap a baby doll in it. It's not for wrapping newborns. It's so small, I do not know what it is good for. Maybe a lap cloth. 1 55 | It was so disgusting and messy...and horrible to clean I should not have bought this and would never recommend it. 1 56 | The suction cups are garbage and it won't stay on. My 1 year old can also pull it down easily. Good idea but bad execution of the product. Don't buy it. 1 57 | My daughter is a vigorous nurser and we supplement with expressed breast milk while I am at work. She cannot draw the milk in from these nipples and if she is hungry enough to do the extra work it takes about 40 minutes to eat 4 oz. Not worth it. 1 58 | Wanted to use the Avent line, but baby just wouldn't take this nipple. Went with Playtex ventaire natural instead. Looks like a science lab...but baby switches easily from breast to bottle. 1 59 | I don't like because is poor quality. I never use, after first wash. I thought it was better quality, as Carters always has good products 1 60 | My son loved this teether but, when in a defrosted state (after being chewed on for quite some time) we noticed the goo was leaking out. Really unacceptable!! It's garbage now - never to be purchased again. 1 61 | I ended up not using it because I ended up with the flanges that were missing too many pieces in order for it to work. 1 62 | Do not buy this!, it won't stick to the window as it should so it keeps falling. Great dissapointment.Look after another mirror that has this lever to work 1 63 | This turned out to be a huge waste of money. The parasol doesn't stay in one place and doesn't provide enough shade, so basically it doesn't do what it is supposed to. 1 64 | I bought this tub for my friend and she said it was a terrible product. The sling was poorly made and the sprayer broke after 5 uses. She told me she should have listened to me and just used the kitchen sink w/ the sprayer. At least that doesn't break. 1 65 | This light is a bad idea!It actually makes it hard to see baby's nail, and i ended up clipping his skin :(( 1 66 | The string that ties it to the back of the seat ripped within a week of using it. Not well made and not worth the money. 1 67 | Unsure if they are all now smaller, but I bought these in July...same pattern and everything, and they were 47inch swaddled. I ordered a second set in December, and they are 44inch. VERY disappointed. 1 68 | What a JOKE! This item is VERY deceiving and is NOT for Cribs. It should be Labeled Better. Big Disappointment~ 1 69 | These don't stick at all! My guys ripped them off the sides of the tables the second we put them up. The adhesive wouldn't restick either. What a waste. :( 1 70 | This is the second time I bought this product, from this company, and both products stop working. The timers are off on the different sounds. I do not recommend this product. 1 71 | The stroller image shown for Jake is for the higher priced g-LUXE model, not g-LITE....this model does not recline, has smaller black wheels, and not fold up footrest for infants. This listing is incorrect, hopefully they will correct it soon to show the actual item you receive. 1 72 | I returned this one right away because it didn't have insulated pockets for bottles. It's hard to find a good diaper bag these days. I feel that these makers sacrifice function over style. 1 73 | These outlet covers are a complete waste of money. They are perfectly designed for little fingers to pull out. My daughter has an easier time pulling these out than my husband and the tab sticks out in a way that makes pulling it out tempting for her. Bare outlets would be safer. 1 74 | Seriously, these things were a waste of money. They don't stay on the window, and when they do, the sun stills shines on my baby's face... until they sling off the window and whack him in the head. Yikes.... please save your money and look for something else. These are crap. 1 75 | It must depend on what kind of cabinet that you have but ours continually fall off. We stuck them on, applied pressure and didn't use for 24 hours. The next day my 13 month old daughter goes and yanks open all the doors. The locks went flying. Not impressed at all. 1 76 | I bought this slipcover thinking that I would be using my brest friend so much that I'd need an extra cover for washing. Not so. I dont really spill breast milk on it anyways when I do use it. 1 77 | Cheap cheap cheap! Keep looking for better quality items. The brush came to use with bristles falling out. Item was returned to Amazon. 1 78 | The print is cute, but the material is so rough and stiff I can't use it. I've washed it twice now with fabric softener, thinking it might just need to be broken in, but it hasn't helped. I'm so disappointed. Feels heavily starched, and is very rough on the skin. 1 79 | I bought this item and it did not work straight out of the box. One of the two suction pieces does not stick. So much for that. Waste of money 1 80 | This thing wouldn't fit our tub and it is also HUGE. I wouldn't want it in our bathroom even if it had fit. Amazon took it back super easily, as always. 1 81 | Mine never worked and even after getting a second one it didn't work either. There is so many neat ways to take a temperature now that I wouldn't waste any more money on this. 1 82 | I really want to see better my baby's nail vs skin when trimming her nails, but this just didn't do it. Yes, it enlarged the nail but didn't help me see beyond that. 1 83 | Doesn't work. Save your money and the paint on your appliances. Do not buy this piece of junk. Very disappointed. 1 84 | I've read these bottles are made in England so I thought that the quality will be superior but how wrong I was. It started to leak after 2 months of use. I liked that bottle cuz it was pretty small and comfortable for my child to grip, but leaking takes all good away. Be wise, don't buy it! 1 85 | These really dont do anything special. The AVENT bottles are a great way to waste your money. Shame on Philips for guilting people into buying AVENT products. There are many many many more products that will do the same thing for 1/5 the price.Every time I see these I think of all the OTHER things I could have bought! 1 86 | You are better off getting the ones with suction cups. These also are dark and hard to see through. They are plastic so they get really hot here in AZ. 1 87 | I bought this yesterday, and tried it out last night at a restaurant and my husband and I looked like idiots trying to figure it out. It didn't fit, and was totally useless. WAY more hassle than it was worth. I am going to try another one.... 1 88 | This was a waste of money purchase. I have the Nosefrida Nasal Aspirator and it works very well. Used on a 4 month old baby. 1 89 | My 13 month old immediately pulled off the covers and started playing with them. She loved them and thought they were a cool new toy but they did not do the intended job. They pull off very easily even though they were a perfect fit on the rail. 1 90 | I ordered this because I heard Ergos run small. Luckily my Ergo fits without this extender, because the buckle of the extender does not fit in the buckle of my brand new Camel-colored Ergo. No, my Ergo is not counterfeit, I bought it from Nordstrom. 1 91 | I had high hopes that this product would keep my 2 year old out of the fridge, but it wasn't even on for 30 minutes before she pulled it right off of the fridge. So sad that this product was cheap and unreliable. 1 92 | I ordered Active and Miracle to compare. Active doesn't have nearly as much back support as Miracle does. Returned Active and kept Miracle. I was able to use Miracle up until my baby was 20 pounds, probably can still use it but he's getting too tall. 1 93 | I was trying to find something to keep my sons pacifier in his mouth and believe me, this is not it. It holds the pacifier at such an odd angle that it ends up making it pop out. Completely useless. 1 94 | My baby loved this for the first week, while it worked. It stopped making noise after only a week. Beware! 1 95 | While my daughter liked this, the lights broke the first day, and by the third day the motor was make grinding noises even with new batteries. It is very poor quality and I would never buy something from The First Years again. 1 96 | We only tried this once. It was too flimsy didn't hold up well. Wasn't good for eating or holding food. 1 97 | Both my babies hate this seat! I bought it for traveling with my first child. She hated it, but she was fairly picky about things, so I saved it for #2. She will not sit in it without fussing either. It just never seemed sturdy enough to make them feel secure. 1 98 | I already have a Kiddopotamus brand swaddler and love it and need a 2nd one for daycare. When the swaddler arrived I realized it was NOT the same brand but instead is SwaddleMe brand. Liars. 1 99 | Go buy some baby aspirin and bandaids and save yourself the money from this worthless first aid kit. What a waste of money! 1 100 | We purchased these, and have found that they pop and crackle very loudly in the evening, to the point I have to just turn them off. They worked well enough in the first year, but after 12 months, their speakers must have blown out. We can't use these anymore. 1 101 | These things are strudy and hold up to the test of time. They are a tight squeeze in my standard dr browns bottles, but they last forever which is worth the elbow grease to get them inside the bottle... 2 102 | I keep a packet of these in the diaper bag and they are so useful for when we go out to eat. They easily stick to the table to provide a clean, sanitary, area for my son to eat from since plates and bowls just are thrown. They are also easy to remove and leave no marks. 2 103 | Exactly what it represents itself as - super easy to put together and goes really nicely in my baby girl's nursery. Easy to haul up and down the stairs to do the laundry each week. 2 104 | This really worked well that's why I ordered two. One for traveling & one for night feedings. This really separated the powdered formula & didn't mix in with the other sections even when it was in my diaper bag. 2 105 | Cute, colorful designs. Easy to use and clean: I just wipe it off with a wet paper towel/washcloth or rinse under water. I love how it's waterproof and is big enough to protect my little baby's clothes from spills and stains. Oh, and very convenient to take along in my diaper bag. Love this! 2 106 | It fits my toto oval shape toilet bowl, I like it! And my baby loves to put it on the toilet bowl and sits on it. 2 107 | We use this drying rack every day to dry clean pacifiers, bottles, and breastfeeding pump parts! Keeps your little clean pieces from rolling away, sliding through slats, or getting dirty. 2 108 | Wish I had this for my first baby ( git it for my third), it makes diaper changing a lot easier. I am able to store the diapers downstairs so I don't have to go up each time and it looks neat. 2 109 | Must have for a baby, use them since infant on the changing table. Now use it on the floor, easy to clean. Didn't even buy a cover.(because I don't have time and did not find the pattern I like) it still works. 2 110 | The pad itself is waterproof which is great and easy to clean. It's soft but still firm so it's easy to manage your unmanageable child while changing. 2 111 | Face it, they're going to eat off the table. This is a nice sanitary option for eating out, plus the pocket catches lots of food allowing it to be recycled rather than on the ground and thrown out. It has a short useful life, but is indispensable during that time. 2 112 | The sheet is nice and thick, great for added warmth in winter. Others have complained about the elastic giving out but we have not experienced this in the 6 months we have been using it but the price has increased 50% since we purchased it. 2 113 | So cute and well made. My toddler likes to play with it and throws it around but it's been good for over a year now. 2 114 | They are cute, and exactly what I expected. no complaints and seem durable enough. considering ordering another set to finish out our changing table. 2 115 | I like the scissors and the clippers, both work well. The emery boards are way to rough, instead of being a fine grain for baby nails. 2 116 | My 7 month old daughter loves this rattle. We use the sassy links to attach it to everything so she doesn't throw it on the floor--her new favorite game. My sister's son also has this (6 months) and he uses it daily as well. 2 117 | This is soft and easy to install it'll help my baby from bumping his head. I love the size and fit 2 118 | My 2.5 month old has been using this toy since he was born. At first we just showed it to him and he'd stare at it for long periods of time. Now he likes to hold it =) 2 119 | I searched high and low on amazon for some no-nonsense burp cloths that were cheap and plain. These are great. I use these all and am buying another set so I don't have to do laundry as often. Babies spit up, breasts leak, drinks spill...these are perfect to have on hand for all those inevitable clean ups. 2 120 | Before we found this, brushing our baby's teeth was a struggle. But she actually enjoys it when we brush her teeth with this toothbrush. Definitely recommend this! 2 121 | Good product. Fit my medela swing pump so I save directly in fridge or freeze. 2 122 | My little boy pretty much liked all the toys on the exersaucer but I still got this one so he could chew on it since he's teething. He plays with it all the time. I even carry it around with us in his carseat sometimes so he can play with it in the car. 2 123 | We got this as a registry gift when our daughter was a week old. She loved it right away! The music, lights, fish action & bubbles mesmerize her in her crib. She's 9 weeks old now & the original batteries are still working. We also have the aquarium bouncer chair-another must-have item! 2 124 | Serves the purpose and easy to wash and dry after each feed. 2 125 | it fits great (size large, 12 months old ,23.5 lbs) and still roomy.although it does not hold pee (neither do the little swimmers)you can wear it as many times as you want and clorine won't damage them!! 2 126 | great quality matches few pieces I got and love JJ Cole, It looks like you can not go wrong with them 2 127 | We have this and the smell form dirty diapers escapes to easily when opened. I supposed if used for garbage same problem. In addition the foot pedal is to close in so its hard to get normal size foot on it to press it. 2 128 | These are great! Both my almost 2 and almost 4 year old son and daughter love these. They are comfortable to wear and have held up well. Very toddler tough. We did receive a pink pair in an order of two, so beware that's a real possibility. 2 129 | Great add on item for the Nose Frida. The Nose Frida comes with 4 filters but it doesn't hurt to have more on hand. 2 130 | Comfortable, secure, and covers enough. I use the straps so I can move around more while pumping. Absolutely love this bra. 2 131 | These towels are thin while being absorbent and soft. They are large enough for me to wrap up my newborn (currently 11.5 lbs) after her bath. They are cute and are holding up well after two months of use. 2 132 | These worked out perfectly for the sides in our DaVinci crib. Course it doesn't protect the actual rails, and baby has done a number on those, but the most visible parts of the crib are still good to go. 2 133 | So many uses linking toys together, or to strollers, to bouncy chairs, to car seats and to high chairs. Hook together easily. 2 134 | This crib is absolutely gorgeous! My husband put it together very easily and it seems to be made very well. The cinnamon color isn't too reddish or orange. It's just perfect! 2 135 | This organizer is the best for all of your baby needs to have on hand. It is most convenient and useful in the baby's room. I would recommend all expectant mothers having it. 2 136 | Not too much to say its just a changing pad. It fits the two different types of changing pad covers that I got from target and babies r us. 2 137 | I was kinda exceptional when I saw it and the the adhesive pad idea wasn't that appealing to me for your oven door, but I gotta tell, it works and it works surprisingly good .. 2 138 | This is perfect for what we needed. We put it on top of a dresser to create a changing table. It is a great size and the sides make it feel more secure while I am changing the baby. 2 139 | These are just like the Soothie pacifiers babies get in the hospital but in pretty girlie colors! I thought they were way cuter than the big Green one they give you! 2 140 | One of the BEST things we've gotten since our daughter was born!! Would absolutely recommend to anyone... good price, and no boiling pots of water ;) Plus it only takes 4 mins (2 mins in microwave, 2 mins out of microwave) and you're good to go! Every new parent needs one of these! 2 141 | I bought this to use for my 2nd son, primarily to attach to our Baby Bjorn bouncer (got the idea from Amazon reviews, actually). LOVE IT. Much cheaper than the Bjorn attachment, too. Baby L is mesmerized by it. I do a lot of research before buying toys/gear and the reviews really are legit for this item. 2 142 | this is nice and light weight perfect for summer or houses that are warm. easy to get off and on the baby as well! 2 143 | Perfect use it to wash, dry, and organize small parts works great for me would recommend to anyone! Time saver stable and pretty colors would help describe this product very satisfied! 2 144 | This cute little whale has definitely saved our kid from a few incidents. I would buy it for any expectant mother. 2 145 | Perfect for the diaper bag for when we eat out or have a playdate picnic. Will buy another set soon 2 146 | These sleep sacks are wonderful! My granddaughter used them all winter....and where we're from, it gets very cold at night. She was snug as ever. Not too warm, not cold at all. I would HIGHY reccommend these to new parents. What a wonderful idea someone came up with....sleep with no worries about the blanket covering the infant's head! 2 147 | My son is fully secured in this, the color is great looks just like the picture. Had trouble adjusting the harness because directions weren't clear, but FYI it's on bottom of the seat (front side)there's a handle etc, very easy you pull it in or out to adjust to your child's body. Overall happy with this purchase. 2 148 | These spoons are great, I keep a few in a diaper bag, a few at grandmas - etc. I give one to my son as I feed him. Its a great set. 2 149 | This is a great little baby toy. I keep it on the changing table as a distraction for my baby. She can hold it with both of her little hands and loves to play with it. Bonus for mommy - maching washable! 2 150 | The tabby kitten wubbanub is very cute and helps the pacifier stay in place for my daughter. The main reason I like it is its very easy to keep track of instead of the tiny pacifiers that I keep losing around the house. 2 151 | We have shower walls identical to that shown in the picture. It has not fallen down once. Very happy with product. Just make sure you the follow directions to ensure the product does not fall. 2 152 | My 1-year-old son loves these! We play with them in the bath. They stick to the tub and shower wall with water and we spell words out. He also likes to carry them around the house. :) 2 153 | Love it! I use it for over a month and love it! This drying rack has great drying capacity and does not take a lot of counter space. Love the spinning feature - so convenient! 2 154 | I would highly recommend these bottles. They work great and do not leak. Have been very pleased with them. Will be getting more if these ever stop working. 2 155 | Useful for toys to not fall out if the stroller 2 156 | As a new mom, I love anything washable that looks great and does the job. This covers are very thick and stylish. They look great in my baby's car seat. I've wash them once and they still look great. So, if you don't see an update in the future it means they still look great. 2 157 | Baby loves this product, it has two settings depending on how loud you want the volume, baby loves to watch the flashing lights and several different tunes on this cute little toy. 2 158 | If you have the dr brown's products this is a must have. love that I can fit everything I need to on it 2 159 | Love it a lot. My husband and I run a lot with our 5 mth yr old and it holds everything needed for the run. Keys, phones, baby bottle and stuff toy for the run. A must have!! 2 160 | I've had these attached to my stroller for over a year now and use them everytime I go shopping to hold my shopping bags. They work great and I've had no issues with them. 2 161 | Works great as an alternative to a disposable liner. It also has a tiny bit of absorbency and I use it (I just lay it on the inside of the diaper, I don't stuff it) with pocket diapers that are sometimes known to leak a little. 2 162 | I got this one and now my kid chews the other sides of the crib. It is a huge help! Get all sides covered. I love how it's waterproof. 2 163 | Best invention! a chair for my granddaughter that attaches to your own chair! And it is safer than what I used to have when my children were young (sassy seat that attached to the table) I have one at my house and she can sit at the table with us and play or eat. 2 164 | Super convenient, rolls into a tiny tube, easy to use...all of the things something you're toting around in your diaper bag should be!! 2 165 | This sprayer works great and cost far less than the name brand sprayers on the market. I highly recommend it! 2 166 | If your child LOVES playing with the water coming from the faucet, THIS is the toy for you. It's fantastic, durable and doesn't seem to suck down battery power. I hope the seller brings it back PRONTO, as I'd like to buy some for other toddlers I know. (My 18-month-old LOVES it.) 2 167 | My 11 month old STILL doesn't have teeth - but he loves when we brush his gums with this tiny little banana! It's a great, soft, and really bendable. 2 168 | There is a nice feeling to the fabric of this sheet. It fits perfectly around the mattress even after washing. 2 169 | These are super! They never slip and are strong. They seem a bit pricey, but they're well worth it. I'm very happy with the purchase. 2 170 | This toy seems to be decent quality offering several developmentally appropriate features that may interest your baby. The contrasting colors, sound, and different textures are all interesting to babies. Its small and easily portable for entertainment on the go. My 4 month old seems to enjoy it :-) 2 171 | I love the pattern on this Pussy Willow boppy cover. On the solid pink side it is a very soft fleece-like material and on the print side it is fabric. Very cute and goes great with our Pottery Barn Penelope set. 2 172 | For awhile this was hard to find. Amazon had the best price. It is compact and looks nice on the changing table. 2 173 | My baby has no patience when I am changing the diaper, so the straps are a huge help. I love the product. I bought 2 so far. 2 174 | Nice colors, good quality, ironing easy, love it, I am so happy with this product, and I use it alot 2 175 | This is a great product for protecting your babies! We loved its quality and baby proofed our entire living room with it! 2 176 | I breastfeed my son and decided at 6months old to jump to the level 2 nipple. He seemed like he was getting frustrated with how slow the level 1 was. I think it is has been a good decision. I don't think we will go to a level 3 as he is happy. 2 177 | I was glad to get this changing pad - it was the best price I could find. The pad works great, wipes clean, and is exactly what I expected to get. 2 178 | This is so comfortable & a must have for any pumping momma. So glad I purchased it!! 2 179 | I purchased this because I loved the stars, and wanted an Aden+Anais blanket. It is cute, and very versatile! We use it for swaddling, covering the carseat, to lay down on the floor/couch/bed for kick time, cuddling, etc. It is a perfect weight to be light when you need or to be doubled/tripled and warm. Love it! 2 180 | I love these SO MUCH I've bought three packs. They are the only bottles we use since my daughter has some major gas issues. :/ They have definitely made a world of difference, especially used along with the mixing pitcher. 2 181 | Soft, comfy AND an adorable monkey! How much more could one ask for from a towel? :-) 2 182 | When the time comes that our baby is holding and shaking things, we'll be glad she's got this eco friendly toy to do so with. 2 183 | I love these bibs. They work well for catching food - lots of good coverage but still fit nicely. They easily wipe down and launder up nicely. I highly recommend these. 2 184 | This product arrived on time and was easy to assemble. I recommend having C batteries on hand as soon as the package arrives because you will want to try this mobile out! Good quality and the animals are cute and colorful. 2 185 | Nice pillow with good shape, it is very useful. I always lie down to watch tv, my husband love to use it too. 2 186 | This is a great product. My daughter loves to chew on it when I'm holding her (especially when she is in her carrier and doesn't have much else to do). I have 2 dogs that shed a lot and their hair does NOT stick to this item like others. I recommend this product to buyers. 2 187 | I bought these to take on a trip. It was such a convenient way to sterilize bottles & pacifiers while out of town. Each bag has the directions printed on it, so you can just throw 1 in your diaper bag & take it with you anywhere. 2 188 | Our daughter used this toy frequently from 4-12 months of age. She enjoyed chewing on it and it proved easy for her to grasp. She used it less frequently after 12 months, but she still pulls it out on occasion to throw it around and hear the ball rattle inside. 2 189 | This support pillow is excellent. It is the perfect size, and it prevents the baby from getting a flat head. 2 190 | these washcloth are perfect for my lo. front side is a little rougher than the back side, back side is soft though. 2 191 | These are the ONLY bottles my baby will drink from. I introduced the bottle at 5 weeks and almost felt defeated after trying another brand popular for breastfeed babies. After shopping around and looking at nipples, I tried these and my baby loves these!! 2 192 | These are fantastic and my little one just loved them. They smell like vanilla and she takes them over any other teether that she has. 2 193 | I like sassy's rattles beccause they don't contain any harmful paint. Who wants their baby sucking on paint?Rattle sounds great, and its easy for my 2 month old to hold onto! 2 194 | Do not spend any more then you need to on a pack an play. My baby slept in this for 4 month and now uses it during the day. The color is great for a girl or boy since its like a soft blue. Very nice product at a great price. 2 195 | Easy to clean, won't melt in the dishwasher or microwave and my kids can't break it. What could possibly be more perfect? You must get these. 2 196 | This crib is beautiful, and I love it. It wasn't too difficult to put together and it looks great in our nursery. Amazon really does have it for the best price (I looked everywhere), plus free shipping on such a large item was wonderful. It came undamaged and well packed. 2 197 | I got this items today and it was exactly as described. I could not find a fun brush and comb set for my son of 3 months. He could not take his eyes off of it today! Truly a cute usable item for his nursery. :) 2 198 | When mom tosses me in the bath, I like to stand up and try to yank my whale off of the faucet. He never comes off....so I usually give up and nibble on him and throw my rubber ducky at him. All in all, he lives up to my expectations. Buy it, baby. You won't regret it. 2 199 | These are great for the little ones when you take them out to eat. Easy to set up, easy to clean up (which the restaurant staff appreciate). 2 200 | I love that these are the thick cotton washcloths instead of the carters ones that are soft, however they are some kind of blend that feels too cheap. When I was my son with these I feel like I'm really getting all his chubby folds clean. 2 201 | -------------------------------------------------------------------------------- /data/dev/Tools_and_Home_Improvement.train: -------------------------------------------------------------------------------- 1 | The switch turned the light on and off at random times. We would turn it off at night and wake up with it on, sometimes it would just go on when we were standing near it. Had to return it 1 2 | This battery is awful. Brand new fully charged will run on the milwaukee hatchet (6514) for may be 5 minutes. It runs even less on the cordless circular saw. It needs a sticker that say "running hamster inside". What a joke! 1 3 | This is an expensive thermostat. It is not easy to program. Most importantly, our unit broke-down after only thirteen months. That is about ten dollars a month just to operate/own this thermostat. Very disappointing. 1 4 | Please save your money. This shower head is a cheap piece of junk and will definitely break like all the claims state. It's a shame because it is a nifty shower head. They should just engineer it a little better and it will deserve the high rating some give it. 1 5 | I have used tiny drill bits in the past, and I realize that they break relatively easily. But these are not only fragile, they are dull. Do not expect them to drill through any metal. They can't handle much more than metal clay (in its clay form). 1 6 | still waiting to received this item after so long. i only received the router bit set and 16 inch square after so much months of waiting. that rating is for not receiving the item 1 7 | Get a Dewalt. The B&D products are not made as well and will not get through as many projects. Plus, the B&D batteries don't last very long at all. 1 8 | I had great expectation for this sander but the included vacuum adapter was the RS007 for a 19mm hose, not the RS006 adapter for American sized hoses. The Bosch web site says the RS006 adapter is included but it's not in the package. The I'm not going to order the adapter (at extra cost), so it's going back. 1 9 | The tip melted on first use. Tip surface was also rough, crudely made. Not a good product. Advice: don't buy. 1 10 | I see no benefit whatever. It does reduce the depth of cut from whatever your saw allows (3"+) to 2.5 inches. For cutting hardwood with minimal burning, Forrest recommends setting the blade as high as possible. The stiffener limits it to 2.5" cut. 1 11 | I purchased this charger to put life back into some of my old batteries for my 18V batteries from DEWALT. It would not even charge them much less renew the life of the battery. Returned the item for a full refund. Company was good about refunding my purchase price. 1 12 | The manual is horrible. There are multiple errors, and it leaves out any information about what screws and what washers go to what, which is important if you have 3 times the screws and washers that you need for some reason. 1 13 | It was way to late to file a claim when I noticed that the #2-Phillips is simply missing, but this is disappointing nonetheless. In general, the quality is quite alright for minor everyday-fixes. 1 14 | I bought this for a female friend who just moved and apparently the non slip bottom came off rendering it completely useless. Not sure what else messed up with it but she couldn't fix it. 1 15 | After installing all 4 lights, lost 10 more chickens. It was a waste of money for me, but its thats just me. 1 16 | purchased two and had to return them, both had scratches and dents.all the sets at two different stores had scratches.it has great features like bump-guard and ansi-1, but crappy quality finishes.i really wanted to use these locks. 1 17 | It took 6 units (the original and 2 replacement orders) to get 2 working units. A very poor quality unit. 1 18 | Easy to install but watch for false alarms. Whenever my system goes off (and no smoke is present) I always check this unit. I end up pulling the batteries to get it to stop the alarm. Very frustrating. Look at you-tube under JoeBrownToolGuy if you want to see an install video. 1 19 | I bought two packs of these. I now regret it. Seems I am changing these GE bulbs every month or less. They are pure junk. I have bought the Walmart brand, that was cheaper, and lasted alot longer. DON'T BUY THESE bulbs, unless you enjoy donating to GE. 1 20 | Poor quality garbage taiwan branded sockets you might buy at a dollar store. Any other set of sockets would be better. Avoid. 1 21 | I bought this to get into the battery holder. It does not have the small screw driver in the set to do it! It does have different sized flat-heads and phillips, just not a real small Phillips. 1 22 | The insert is junk it cracked and it sags wich means the material sticks when pusing through , not a good thing! I do like the dual adujustable fences, makes setting one proud of the other a breeze. BUT 1 23 | once again, you must read the tool review for an explanation. why is this company selling useless products, especially to consumers who want to make work easier? 1 24 | Pulled out a small amount of hair, but otherwise seems to have made the clog worse. A waste of money. 1 25 | The utility versus cost is not there for these blades. While rated for metal, they are destroyed in one use it they encounter a nail or screw. 1 26 | Worked for less than a week. Thought it was a bad battery, but still didn't work after replacing the battery. Tried to reporgram it and still didn't work. Requested to send it back and sellar never contacted me back. 1 27 | This is annoying and hard to use. There is no easy way to get the bits out. You have to hold it upside down and shake it. Clear plastic window gets scratched up and it becomes difficult to see what bit is coming up next in the carousel. Do not buy. 1 28 | Its the same story as others have said, 200 BF of hardwoods is all you will get out of these chinese blades. I guess the china men haven't perfected sheffield steel yet. I just bill my customers 50 bucks a project for the cost of me being stupid enough to buy another dewalt product/. 1 29 | Purchased 2 of these batteries as a replacement for my original that finally died and I am not impressed with the quality. I don't know what the difference is between the battery that came with the tool verses these replacement batteries but they don't last long at all after a full charge. Definitely not worth buying. 1 30 | I was greatly disappointed by this toilet sealer, as I thought it would forever eliminate my bathroom toilet leaks. Well this morning, it is again leaking. Did I do something incorrect? 1 31 | It has to be installed at least 12-14 inches from the wall, they do not specify this anywhere. So this cannot be installed in a Porch light.This is useful only if you install it on a pole somewhere out in the openTotal waste of money! 1 32 | This is another B&D blunder. Motor drive extends tape but does not retract. Battery door ill fitting. Can see it falling out at any moment. Not a serious tool for a contractor or weekend warrior. Get a laser measure instead. 1 33 | The cost for such a small item is the first and most important reason for my choice of rating. Secondly the item is not up to the quality of product that serves. 1 34 | read all the wonderful review on amazon about this ladder so thought i'd buy it - have to say yes it's a good built ladder and it's VERY heavy, which is my biggest bug bear just for little things around the house, outside i'm sure it's good but it's a mammoth to lug around i have to say. 1 35 | On my old Camry. The "compression" idea to hold in place is not nearly as effective in holding drinks in place as say a factory default holder. 1 36 | Would get the same results if I tied on an old sock to the dust chute.Quickly clogs and becomes ineffective. Use a Vac or dust collector instead. 1 37 | They only thing I have plugged into this is a 200 watt block heater. Every singe time the thermocube turns to on, it trips the GFI. If I plug the heater directly in and skip the thermocube, the GFI does not trip, ever. There is nothing else even on this circuit.Absolutely useless. 1 38 | It just does not provide enought light to be used as an additional interior car light. 1 39 | Just received this knife. It jams very easily and the blade is hard to install. Opening the handle to get at the stored blades is cumbersome as well. Needless complexity. I have to get a band aid now, gotta go! 1 40 | I boutght this and the 12 inch. The Quick Connect sticks and the there is excessive wobble in bits when attached. Not for heavy duty work. Not sure if they want want you to use it, as it took forever to bust apart in pieces the the hard plastic packaging attached to it. Poorly thought out. 1 41 | This product did not work for me. I obviously did not get a good fit, or the product wasn't what I thought it was. 1 42 | This broke within a few weeks of using it. Dont buy it. It's a waste of money. Believe me I know 1 43 | I could not get mine to turn on no matter which way batteries were installed. It would not fit my M&P rail, and where is the on and off switch? I wish I didnt sell my other light the day of receiving this one. I saw the awesome reviews but am in no way impressed, 1 44 | This thing is terribly underpowered. Used it for about 1 minute, and taking it back to Home Depot tomorrow. I forgot that I had a dremel Multi Max, whipped that thing out and finished the job I started. The dremel is honestly 5x stronger than this thing. Don't waste time or money on this. 1 45 | I am so tired of finding my favorite tools now being made in China! These pliers are sub-standard quality, poorly made, and just as expensive as the original USA made good ones! Look elsewhere...maybe you can find one MADE IN THE USA somewhere! 1 46 | Got one of these, didn't work. The fins don't spring out when the lock is turned. It pulls right out of the hole.Got another one of these where the fins come out maybe 2 out of 15 tries. I usually stick with schlage hardware and I should have again this time. 1 47 | I bought two of these Arms to make a current shower that would accommodate people that are petite . We installed one and it just snapped in half. The second one we did manage to get on with a lot of effort. Not worth spending the money as we will replace it. piece of crap. Do not buy. 1 48 | I bought these in the hope the tools might be useful in spite of their very low price of about $12. However, the cheap quality and poor finish make them nearly useless for the most basic things around the house or shop or car.I didn't even bother to return them. Don't waste your money on this socket set. 1 49 | The inside of the socket did not align with the outside sleeve. There was a lot of interference and the socket disconnected from the grommets when I screwed the bulb in. 1 50 | I feel I paid too much for this product. It seems very flimsy. I think I could have gotten a much better bang for my buck with a different step stool. 1 51 | I bight four of these from amazon. Three worked for two months, plugged in; one of them worked only only for three days. 1 52 | I tried to remove a bulb, but it just twisted around on the bulb. So I waited an hour and tried it again, thinking maybe the water I put on the suction cup was making it slip, but no...that wasn't it...it just doesn't work. 1 53 | I have tried this product several times and it has yet to function has advertised. IMO it is a ripoff. Just yesterday I thought it had gained my respect when it beeped atop a breaker during the second pass. This tool is dyslectic because the breaker was located on the opposite side of the panel lower down. 1 54 | Sent it back to amazon for a refund. Cheap. The switch is what broke and couldn't turn it on/off. 1 55 | the glue would not come out of the bottleI think it was old or had been frozenbe aware 1 56 | HEAD DOSE NOT STAND UP TO USE. HOLES AND DEFORMED PLASTIC AFTER RELATIVLY LIGHT USE. ORDERED RAWHIDE HAMMER FROM EBAY TO REPLACE. EHH 1 57 | As if all the other reviews weren't enough, this thing is garbage. Put the battery in, it indicated power, but none of the status lights came up, and that was on a cable I knew to be functional.Save yourself a couple bucks, and a waste of time and don't buy this. 1 58 | bought this 2 weeks ago, based on my EXCELLENT experience with Maglites, BUT this one does not live up to Maglite quality.UNLIKE the Mini Mag it is fashioned after, Maglite must have changed something as the rotary on/off switch died after 2 weeks. Guess I'll try the competition....... 1 59 | Very expensive and just equally as worthless. Very bad performance. Before i returned it i made so many holes in places where the should have been. It happened just because the readings are very misleading and very poor performance of sensor. Don't waste your money 1 60 | These didn't slide smooth on carpet and damaged my solid flooring. They are flimsy and cheap. I had better luck putting a towel underneath what I was moving and it slide easier. 1 61 | This does not fit a standard four inch pipe you buy at your hardware store or in fact any store. Only flexable tubing. That can be really pricey getting a decent quality to hold up for an entire shop. I'd recommend getting regular elbows locally if you don't want to use boatload of duck tape 1 62 | where is the 9th piece? look at the picture and it shows eight. i dont see why they advertise nine, and sell it as nine. does anybody count? 6$ is good price though 1 63 | I threw it away when I took it out of the package. I would be ashamed for anyone to see it it looked so cheap. 1 64 | Don't waste you money. You can't see the light. It was not worth going through thtrouble of returning it so I gave it to kid to play 1 65 | Cheap piece of crap. I put mine outside with a "free, take it it's yours" sticker on it. Buy a better drill. This is not worth the money. 1 66 | I should have known better as several reviewers mentioned the same problem, but I tried it anyway. My package arrived completely busted within the shipping box, with all nails ripped from their strips. I used it anyway, only because I needed it that day. Next time, I'll go to Lowes. 1 67 | I'm very disappointed that Amazon sent me a very used set. Finger prints everywhere and dull with scratches on the handles. Dirty oil/grease in the creases. Can't give this as gift because it is used. 1 68 | It looks really good, and the description is really great, but mine would not solder even tiny wires. It just will not heat up enough to melt any solder, even with new batteries. I cannot recommend this soldering to anyone. 1 69 | I may have got a lemon. This saw burns wood on any type of cut. Replaced the blade with a Forrest Chopmaster but had same results. Something is terribly wrong with this saw. 1 70 | I bought this last month and attempted to use it last night to keep pipes from freezing. It didn't work in any outlet. The temperature was 28 degrees. Wasted my money. 1 71 | I have very good & sensative hearing. I bought 2 of these. However, I had this next to my bed & did not hear it alarm. In my opinion it is to quiet. Its great feature of the light is a plus. However, hard of hearing or deep sleepers would not hear this alarming. Items were returned. 1 72 | I had a 3 ft over hang about 2 feet above it PLENTY of sun light reflecting every where but it wouldn't shut off with the sun up. 1 73 | I bought 2. And despite correctly aligning the polarized plugs on both, I had to use a vise or pliers to get them to fit the extension cords. And neither worked to flaah the bulbs. 1 74 | Tested a few cables fine, but after maybe 15 wires, it won't even detect factory made cables as good. (multiple) Sure it's cheap, but it's total and complete crap as well. Avoid if your time means anything to you, and you don't want to wait for a new one. 1 75 | Crappy stuff, or mine defected or it barely got anything sharpened, it doss not cost 7 buck really cheap product. 1 76 | My electrician, who installed whole house lighting said this was not 3 way compatible, although it clearly states it is in the description, and it seems others have had luck. Perhaps it was defective. Very disappointed since I wanted to use with my garage lights 1 77 | I looked at this and decided not to use it. I've kept it as a pattern and made my own out of 3/8 ply.Anyway, dado blades are set to different widths, you need different inserts for each width, and this is just one width, too wide for many uses. 1 78 | just use a few times, cut some copper cable, blade damage little bit, two blades do not slice very well. 1 79 | took like 2 months to get them and more then half of them did not work. they were so badly made we ended up giving them to the kids to play with and bought better ones from walmart. 1 80 | While the handles are very heavy, the interior components did not hold up well to water. Both handles purchased handles coroded on the inside of the tank within one year. We do have hard water, however you would think that this product should be able to hold up to a constant wet enviornment. 1 81 | I have plaster walls and even with brackets and other heavy install items this goes flying off my wall with everything on it. Was really hard to install on a plaster wall and after trying three or four different types of install screws nothing works. 1 82 | I followed the instructions and tried several different types of knives. Never could get any to sharpen at all. Not happy with this product. 1 83 | This didn't exactly work out as planned. It is so cheap looking that instead of fitting in with Edwardian decor, it actually detracts from it... No easy feat. As the saying goes, cheap is no bargain. Restoration Hardware or Rejuvenation are much better options. 1 84 | Should have read the reviews. They do not stick and I would not buy again, recommend or even gift. Bad purchase. 1 85 | I can see this pulling nails fine but I bought it for end cutting and it's terrible at this. The blade is dull; dull in fact to the point that it's hardly even a blade at all. The casting of the tool is poor. The cutters don't close evenly, there is a large gap on one side. 1 86 | I bought the Toto toilet & Toto seat along with this seal. The seal did not fit my plumbing/toilet connection. I did not use this seal. It is in the garage in the box. 1 87 | Bought this hole puncher hoping to punch my leather belt, but turn out the puncher is not sharp to make the hole and my belt is ruin! Not recommended to people. Quality 1/10 rating! 1 88 | I bought this as a final finish coat on fine furniture. I have been using Boston Amber Polish. This stuff, unlike the Boston Polish, left a white film that would not buff off. I ended up having to scrub with mineral spirits and start over with Boston Polish, which I found on E-bay. 1 89 | One of the screws was poorly constructed and well, didn't last long. Unfortunately, it was the screw I needed to remove the back panel on my macbook pro. I went out and purchased a new screw set. 1 90 | This is a tool which was too heavy for me. It is good for cutting wood, but the blade dulled quickly. Replacement blades are very expensive. It wasn't for me. 1 91 | I knew as soon as got this that the only things that would be useful would be the push stick and block. Buy it seperately. Bench Dog makes a great featherboard that is well worth every penny. It's what I ended up getting and have been using for three months know with absolutely no problems. 1 92 | not completely straight. wobbles like mad. if you need this get it at local store so you can test it. 1 93 | Cheap Chinese junk. Poorly made, low quality parts. One was DOA, one died after a few uses, and the third one is iffy. Yea, they are cheap - and they show it. Not reliable in the least. I own several LED lights - these are the worst - period. 1 94 | It performed great, shot thin laser beams of water at me (which I like), but the mounting is all plastic, and snapped broken after 6 months of being installed. Now I look like a wristcutter. 1 95 | I now use exclusively 3M sandpaper after receiving a sample at a trade show, you have to use three Mirka sandpaper disc for every one 3M sandpaper disc. I used to think sandpaper was sandpaper didn't make a bit of difference who manufactured it, I was wrong. 1 96 | These do not work on vents that are on the wall, because they are cheap and flimsy and do not stay put. They also warp from the heat. What a waste of money 1 97 | I understand brass fittings are far from sturdy and one must use little to no force in tightening this fixtures. However, to have the threads arrive straight from the factory stripped is reediculous. Simply a Waste. 1 98 | Very disappointed that maglight would sell such a useless flashlight, even with a new battery it is so dim you can barely see it - don't wate you money. Another reviewer mentioned the Photon Microlights, I'll try that instead 1 99 | Would never purchase these again. These bulbs do save energy, because they burn out so quickly. They are not bright! 1 100 | I tried these and honestly could not tell if they were on or not. The star light from windows on a moonless night does better. In fact the light from leds on my DVD player and computer did more. I don't understand why they have such abysmal light output. 1 101 | I purchased this blade quite a while ago and have used it extensively for various cutting projects including different size pavers up to 2 1/2" thick and a concrete slab. I am truly amazed how long this blade has lasted. 2 102 | This is a great addition to my lathe drive centers. Its well balanced and grips wood with a firm steady hold. 2 103 | This is a great invention. Finally, something to keep the caulk tube from drying out, and they're reuseable. I use them on my glue bottle too. 2 104 | Am keeping this item because it can stretch and knock out larger nuts. it can also get the real small ones. It is 6 inches long and has a maximum radius of about 2.8 cm. does that help 2 105 | Title says it all. A wonderful tool for the money spent. You can spend more, and I mean a lot more, but unless you need that super high quality steel? 2 106 | This hose works great. It stretches and recoils easily. It's much more robust than the previous hoses I've purchased at local stores. I'm glad I found a coiled hose that I can live with. 2 107 | this tool has not been used by me yet; but I used others; and they work great; careful dough; it is treted metal and it s fragil; do not pry with it;you'l snap it 2 108 | You can grind to your hearts content, or when it finally wears out, whichever comes first. This is a grade A tool and like all Dremel tools it is built to work. 2 109 | I am a home/DIY user of this tool. Its so smooth and easy to guide.I like the light which is on whenever the tool is plugged in - there is no switch for the light. 2 110 | This is the most awesome, practical welding hammer I've every used. It is also the only I've ever used and it does exactly what it is intended to do. I'm not sure how to review a welding hammer but I guess I can say for the money it works fine. 2 111 | I install a lot of entry doors and many are not bored for either the door latch, deadbolt or both. This set up has all it takes to install both 2 112 | I am well pleased with the saw. It seems to be well constructed and has plenty of zip for cutting metal. 2 113 | Used three packages to run phone cord from upstairs bedroom to downstairs family room computer. Around walls, through closet, through wall, etc. Looks great, very happy with it. 2 114 | Delicious! Husband wanted pods to avoid coffee ground mess. We've used about 10 pods so far, always a good, fast , non-messy cup of coffee. Note though ... Out of the 10 pods, 2 were missing the coffee pods!!! 2 115 | If you have a Reciprocation (Sawsall) saw, then you're going to need these! Probably a LOT of these! They work really good and for the price they last about as long as you'd hope. 2 116 | Does what it is supposed to do. 2 117 | Works as advertised with Schlage Link / Nexia Home Intelligence (I still don't like that name).This was the cheapest appliance module I could find, and it works perfectly. 2 118 | This little sharpener is a great value for the cost and goes with me into the field to keep the knives sharp. It's easy to use and is light weight. Great purchase! 2 119 | this was the cheapest 6" hole saw set i saw. dont know why anyone would give this less than 5 stars cause it does everything it is advertised to do and works well. 2 120 | This is a great light. It's super bright and easy to use. The battery also lasts a long time. I already owned one of these which I have mounted to a handgun, and I just bought a second one to mount on a rifle. Very pleased with this light and highly recommend it. 2 121 | A good bulb.I bought some because I lost my spare and I new Amazon carried them,so that was my first choice as it always is. 2 122 | Had broken the tip off my 10 year old one so this was much cheaper then buying a whole new tool. 2 123 | Perfect for my needs. Moderate security, good quality. Accessing contents is easy with the push button combination. Not too heavy. 2 124 | Some reviewers commented that the item did not come with the bolts to mount the saw, I am guessing Dewalt changed this and has added mounting hardware, the brackets are a must for their miter saw stands 2 125 | Being a contractor, i use this little guy avery day. it tells me that the power is on and make our life easy. 2 126 | This gauge works like a charm and easily moves from plank to plank. Well worth the money. 2 127 | The Skil 2887-05(B2) 18-volt cordless drill is every bit as good as its Bosch counterpart, only much less expensive. Both are manufactured by Bosch in China, and the Skill sells for about half the price of the Bosch. Compare these two excellent cordless drills and decide! 2 128 | This appears to be good quality and I bought it to add to my kitchen toolbox, the price was right, has rubber handle grips, should be good for whatever I need it. 2 129 | Good price for a set of drill bits. Ill be back if I need more bits. Like the holder too 2 130 | I love this drill, it is a little heavy but strong as bull!You can't go wrong with a quality piece at a good price....no more junky ni-cad batteries too!RM 2 131 | This battery was purchased as a replacement for a Black and Decker portable Drill with an original HPB12 NiCAd battery. The battery was identical to the original as far as configuration, fit, and charging is concerned. It has been recharged several times and has supplied power just as the original did. 2 132 | This nail gun is absolutely amazing just like everything else Milwaukee sells. The gun works very well even on hard wood which would usually crack from the nail. Definitely a great deal on Amazon and shipping is quick. 2 133 | I've burned through a couple of these installing wall outlets in plaster walls. Plaster dist will trash an electric saw, so this hand tool gets the job done. 2 134 | Works great for drain cleaning. Handle is stiff enough to push through tight areas but flexible enough to make it around curves. 2 135 | These are good blades. Quite unlike the poor quality Hollow Frate blades I bot. Once. Being that all blades are expendable. I will be buying more. These are still on my list. 2 136 | Good value. Have 3 cars two Japanese and one German all have metric bolts. These sockets are very nicely made and have held up under pressure from impact wrenches. 2 137 | I followed the advice of another user to buy this rather than the synthetic glock tool for removing the nut on the front sight. for a few more bucks this tool will do the job for a long, long time and won't break easily. 2 138 | Great for the gun range.Keep a pair in your range bag, vehicle and tool bag!Nice quality. 2 139 | a good purchase of a strong and sturdy blade for all uses in my small handy man shop. so far has cut through all items I have needed and am pleased 2 140 | This set is great for keeping misc cleaning items organized. I keep use it to store an umbrella too-the type that comes to a point fits right in the circular hole. The hooks are not deep, so do not expect to have many options for them. 2 141 | Target card for use with laser measure in situations where surface is insufficiently reflective get a reading. Very well made. 2 142 | I really like that it stays open until you press the button to retract. So use to having to lock it open ever time I grab a tape. Seems of good quality, cheap price even if it doesn't last forever. Should have replaced my old one a long time ago. 2 143 | These gloves are tough enough not to fall apart fast like most exam gloces but are nimble enough to work with 2 144 | THIS HAS GOT TO BE ONE OF THE BEST TOOLS MONEY CAN BUY. THERE ARE SO MANY USES YOU CANT NAME THEM ALL BUT TRYING TO DRILL HOLES ON AN ANGLE IS TOUGH TO DO UNTIL NOW 2 145 | i ordered this as a gift for my stepfather and he loved it, good and sturdy works great would recommend to friends and other family 2 146 | This is a very nicely made imitation of the Sorby Steb Center. I also own the larger 1" version, which I recommend as well. 2 147 | The first one was smashed, beyond use. This one's in great shape. The little rubber feet are handy, helps keep it sturdy while you're working on stuff. I like it much better than what I was using before, wood. LOL 2 148 | My dishwasher is old, but still works fine. The replacement racks are too expensive; so, I figured I'd try this and get a new dishwasher if it didn't work. However, it did the trick. It is easy to apply and I've washed a lot of dishes without any flaking, peeling or any problems. 2 149 | Checked Lowe's the other day. About $7 for one box of these staples. So you get 4 boxes for far less this way. Since they work in my stapler, I have zero issues. Well, other than trying to figure out IF I'll ever run out now.I know, first world problems. lol 2 150 | I really love this hard to find color and it is much more vibrant than picture.Rust-Oleum as we all know is a great quality and trusted product. 2 151 | It's comfortable, adjustable, not pricey, and it looks pretty decent. Great buy.This is probably one of my shortest reviews. 2 152 | I have and will use these bad boys for a long while. They are strong and just what i needed. 2 153 | I got and never used it, but I'm happy to have it just in case. So go and buy it. 2 154 | for your Aprilaire in-line humidifer. It stands up to hard water much better than the cheaper ones. You probably can get thru the whole season with just one. 2 155 | Works well and seems like it will last a very long time if used for its purpose. There was a strange warning about a toxic chemical used in its manufacturing process but whatev... 2 156 | Super easy 2 or 3 wire install. Base mount to standard ceiling outlet box. Unit even comes with a battery and cleaning cover. Instructions cover functions and testing. Purchased two at this very reasonable price, especially with Amazon Prime. 2 157 | Upon receiving my product I gave it a thorough inspection as always and and found no damaged biscuits in any way, nor did the box have any damage to it in any way "Both shipping and product box". 2 158 | Bought this for my son in law to help get his tools organized. Does that and more, looks to be almost bullet proof, right size and will be around long after he steals all my tools! 2 159 | Great for small jobs. Be sure to sift your sand before blasting. I used window screen and that was just fine. 2 160 | This was an item one should not be without, I no longer have a workshop as I mover to a manufactured home yet needed a small vise to do the handyman stuff. Good quality, versatile yet strong and clamps parts very well 2 161 | It's quick and easy for normal testing. It also works testing GFCI outlets. No batteries to wear out or anything and it seems a pretty simple device. 2 162 | Good price, good product, fine service, what else is there?Good price, good product, fine service, what else is there? 2 163 | This has been the best I have used. It will outlast 3m by 2 to 1. I highly recommend it. 2 164 | It's a strong, durable key storage box that allows me to change the combination as often as I need to and it's very easy to do. Mounting the box was easy too! 2 165 | Good ol' Spic N Span. We've used it for years, and despite the new brands with fancy ads, Spic N Span remains a good all around, mufti perhaps cleaners. 2 166 | This item works perfect for me keeping my hand unharmed during masonery projects, need to buy the whole set from stanley. 2 167 | Knowing this type of Versapak Batteries is harder to find or not always avail at local hardware stores. So glad Amazon has this avail right away and am happy to have 6 pack batteries in my hands. 2 168 | Had enough power for my sanding needs and operated comfortably. Unit has a well built, solid feel to it. Ran it for a couple of hours and it didn't get too hot. Typical DeWalt quality. 2 169 | Does what it should. A decent price, good quality that is holding up so far, and most of all form fitting and breathable. 2 170 | Ever put together a crib or some type of furniture where the hex screw is in an awkward location where you have to constantly remove and turn the screw. This baby calls your name. No more of that nonsense with this. 2 171 | Simple to install on the wall easy to use and see what you have inside and the price is right!Maybe I will buy another one 2 172 | This item worked great as a replacement cartridge on my faucet. I had no idea these things go out so I bought 2. It was a quick easy process to replace. The hardest part was removing the old one. 2 173 | Just what I ordered and it does what it's suppose to do. It cuts thin metal just don't try to cut 3/16 plate it's just not made for that. 2 174 | You have to love DeWalt products--those bright yellow colors, easy to spot on store shelves, etc. Just too bad they sold out to Chinese-based Black & Decker and are now just another piece of junk label, with no substance behind them. However these blades are the "cats' meow". Best price for the best quality. 2 175 | I have done a few electrical projects that this tester is the perfect solution to know what's hot or not. It's very convenient as you can operate it with one hand. 2 176 | I did not purchase this one, because I wanted more blades, so I purchased the on that had two or three of each of the commonly used blades. This is a good set if you are a once in a while user. 2 177 | This is a cute little pair of pliers, smallest ones Chanel lock makes. I am a plumber and they have their purpose. Mainly tight areas or to keep around the house for home tools. Well made, you can never go wrong. Compliments any tool collection. 2 178 | i absolutely love this thing. it is so nice not having to take a bit out of the drill every time you need a different size. 2 179 | Initially I was doubtful that the 83LM would replace my original Sears opener. But if you follow the enclosed directions and place it next to the opener (about 1' away), the 83LM will learn the opener's code automatically. Works like a charm, but the effective distance is only about 30'. 2 180 | I used this, along with the add-on adaptor, instead of installing a new flood light on my shed. Works great. Different time and sensitivity settings. No issues thus far. Be warned, though, THE MOTION SENSOR IS NOT THE ONE IN THE PICTURE. it's got a backing plate that screws on and the motion sensor is on a ball joint. 2 181 | These are nice to have. Never know what size you are going to need. Can go from 1/2 to 1/4 pretty easily with these adapters 2 182 | This lock is thin and easy to use, colorful too. It was also idiot-proof to set. It's perfect for the gym and a good weight. 2 183 | It went together easily, it is solid and it fits the scroll saw footprint just right. The narrow back with only one leg makes it easier to maneuver around it in my small work area. 2 184 | This is a well made product that fits the A/F & Oxygen sensors correctly and is easy to manuipulate with hand tools.It was too long to be used on 1 sensor, but that is Toyota's fault for not leaving any room near the sensor. 2 185 | This is a handy set to have in any tool box. I like the fact that they included the Torx wrenches in the set. 2 186 | I have used these a few times and they feel solid enough. The finish is a little sloppy looking, but they seem like they will last for a long time. 2 187 | I really like these hold down clamps. I use them in t-slots other than my Build-It jig and they work great. Fit and finish is excellent and it works well.Pat 2 188 | I use these for repair on Endoscopic cameras and scopes. Quality German precision tools. Watch EBay for the canvas carry pouches and you can get them cheaper than anywhere else, and come out more than $20 better than if you bought the sets with them. 2 189 | Water flow is very good. Fit and finish very good. The head angle is adjustable by a ball-joint type connection on the shower head. Comes with adapter so that it can be fitted to either of the two pipe standards for shower fixtures (one smaller, one larger). 2 190 | It does what it is designed to do.We have a convection heater in my son's room. This ensures that the room does not get too hot at night. He used to have the coldest room in the house, now we know that he'll be comfortable. 2 191 | Great for travel. Staying at hotel. Basic tool set. Corkscrew for wine bottles. Works awesome! Not much thicker than the old style swiss army knives with the addition of pliers. 2 192 | I bought this for using a paint sprayer...hated the sprayer but fell in love with wearing this mask while painting!!! I am sensitive to smells so this is amazing for all my diy projects. It is super comfy and very easy to breath in. 2 193 | This plunger is perfect for the low profile toilets.A plumber is going to cost $100.If you use this, you've got a 90% chance of clearing the pipes.Easily worth the money. 2 194 | This is not the fanciest headlamp out there but I use it when I work on the house or doing mechanics on the cars. Its small size makes it convenient to work in space constraint areas and it is really bright.Hard to beat for the price. 2 195 | As I do a fair amount of woodworking and sometimes need a dado cut in my work, I chose this item to accompany my new Bosch saw. 2 196 | Very easy to install, fit my box well and controls my Fanimation propeller fan quite well. No noise and also good quality feel to the unit. 2 197 | It turns your rotary tool to a versatile work station. It is perfect for the ultimate model kit builder. it could become a drill press or a grinder depending on the job. It has many functions and you'll just love it. 2 198 | Had been using regular tools for doing fine work on guitars with limited success. These were exactly what I needed. Small to work only small area and takes off a good amount of material per stroke. 2 199 | These glasses fit over regular glasses which is really a big plus for use glass wearers. The price was right and the service was fast. 2 200 | I used this on my new home-built table saw cross-cut sled. The fit and adhesion was great. Several months later I have seen no issues at all. These are very clear and easy to read and fit inside the track like a glove. 2 201 | --------------------------------------------------------------------------------