GopalGoyal commited on
Commit
0b1042e
·
1 Parent(s): bbccdb8
Files changed (48) hide show
  1. NRC_Emotion_Lexicon-master/NRC-Emotion-Lexicon-Wordlevel-v0.92.txt +0 -0
  2. NRC_Emotion_Lexicon-master/NRC-emotion-lexicon-wordlevel-alphabetized-v0.92.txt +0 -0
  3. NRC_Emotion_Lexicon-master/NRC_emotion_lexicon_list.txt +0 -0
  4. NRC_Emotion_Lexicon-master/README.txt +102 -0
  5. agent/.DS_Store +0 -0
  6. agent/target_extraction/.DS_Store +0 -0
  7. agent/target_extraction/BERT/.DS_Store +0 -0
  8. agent/target_extraction/BERT/entity_extractor/__pycache__/bert_entity_extractor.cpython-38.pyc +0 -0
  9. agent/target_extraction/BERT/entity_extractor/__pycache__/entity_dataset.cpython-38.pyc +0 -0
  10. agent/target_extraction/BERT/entity_extractor/__pycache__/entitybertnet.cpython-38.pyc +0 -0
  11. agent/target_extraction/BERT/entity_extractor/bert_entity_extractor.py +227 -0
  12. agent/target_extraction/BERT/entity_extractor/entity_dataset.py +175 -0
  13. agent/target_extraction/BERT/entity_extractor/entitybertnet.py +34 -0
  14. agent/target_extraction/BERT/relation_extractor/__pycache__/bert_rel_extractor.cpython-37.pyc +0 -0
  15. agent/target_extraction/BERT/relation_extractor/__pycache__/bert_rel_extractor.cpython-38.pyc +0 -0
  16. agent/target_extraction/BERT/relation_extractor/__pycache__/bert_rel_extractor.cpython-39.pyc +0 -0
  17. agent/target_extraction/BERT/relation_extractor/__pycache__/pair_rel_dataset.cpython-37.pyc +0 -0
  18. agent/target_extraction/BERT/relation_extractor/__pycache__/pair_rel_dataset.cpython-38.pyc +0 -0
  19. agent/target_extraction/BERT/relation_extractor/__pycache__/pair_rel_dataset.cpython-39.pyc +0 -0
  20. agent/target_extraction/BERT/relation_extractor/__pycache__/pairbertnet.cpython-37.pyc +0 -0
  21. agent/target_extraction/BERT/relation_extractor/__pycache__/pairbertnet.cpython-38.pyc +0 -0
  22. agent/target_extraction/BERT/relation_extractor/__pycache__/pairbertnet.cpython-39.pyc +0 -0
  23. agent/target_extraction/BERT/relation_extractor/bert_rel_extractor.py +263 -0
  24. agent/target_extraction/BERT/relation_extractor/pair_rel_dataset.py +198 -0
  25. agent/target_extraction/BERT/relation_extractor/pairbertnet.py +55 -0
  26. agent/target_extraction/__pycache__/argument.cpython-38.pyc +0 -0
  27. agent/target_extraction/__pycache__/product.cpython-38.pyc +0 -0
  28. agent/target_extraction/__pycache__/target_extractor.cpython-38.pyc +0 -0
  29. agent/target_extraction/argument.py +11 -0
  30. agent/target_extraction/product.py +45 -0
  31. agent/target_extraction/target_extractor.py +612 -0
  32. app.py +60 -0
  33. content/mobile.pickle +3 -0
  34. content/mobile_extractor_f.pickle +3 -0
  35. content/phone_extractor_f.pickle +3 -0
  36. data/ent_test.csv +12 -0
  37. data/entities.csv +0 -0
  38. data/entitiesv2 (1).csv +898 -0
  39. data/entitiesv2.csv +898 -0
  40. data/rel_test.csv +30 -0
  41. data/reviews100.csv +119 -0
  42. data/reviews1000.csv +0 -0
  43. data/reviews_test.csv +12 -0
  44. dockerfile +16 -0
  45. models/.DS_Store +0 -0
  46. models/entity_model.pt +3 -0
  47. models/model.pt +3 -0
  48. requirements.txt +17 -0
NRC_Emotion_Lexicon-master/NRC-Emotion-Lexicon-Wordlevel-v0.92.txt ADDED
The diff for this file is too large to render. See raw diff
 
NRC_Emotion_Lexicon-master/NRC-emotion-lexicon-wordlevel-alphabetized-v0.92.txt ADDED
The diff for this file is too large to render. See raw diff
 
NRC_Emotion_Lexicon-master/NRC_emotion_lexicon_list.txt ADDED
The diff for this file is too large to render. See raw diff
 
NRC_Emotion_Lexicon-master/README.txt ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ NRC Word-Emotion Association Lexicon
3
+ (NRC Emotion Lexicon)
4
+ Version 0.92
5
+ 10 July 2011
6
+ Copyright (C) 2011 National Research Council Canada (NRC)
7
+ Contact: Saif Mohammad ([email protected])
8
+
9
+ 1. This copy of the NRC Emotion Lexicon is to be used for research
10
+ purposes only. Please contact NRC if interested in a commercial
11
+ license.
12
+
13
+ 2. If you use this lexicon in your research, then please cite
14
+ at least one of the papers listed below in the PUBLICATIONS section
15
+ (preferably the journal paper in Computational Intelligence).
16
+
17
+ .......................................................................
18
+
19
+ NRC EMOTION LEXICON
20
+ -------------------
21
+ The NRC emotion lexicon is a list of words and their associations with
22
+ eight emotions (anger, fear, anticipation, trust, surprise, sadness,
23
+ joy, and disgust) and two sentiments (negative and positive). The
24
+ annotations were manually done through Amazon's Mechanical Turk. Refer
25
+ to publications below for more details.
26
+
27
+ .......................................................................
28
+
29
+ PUBLICATIONS
30
+ ------------
31
+ Details of the lexicon can be found in the following peer-reviewed
32
+ publications:
33
+
34
+ -- Crowdsourcing a Word-Emotion Association Lexicon, Saif Mohammad and
35
+ Peter Turney, Computational Intelligence, 39(3), 555-590, 2013.
36
+
37
+ -- Tracking Sentiment in Mail: How Genders Differ on Emotional Axes,
38
+ Saif Mohammad and Tony Yang, In Proceedings of the ACL 2011 Workshop
39
+ on ACL 2011 Workshop on Computational Approaches to Subjectivity and
40
+ Sentiment Analysis (WASSA), June 2011, Portland, OR. Paper (pdf)
41
+
42
+ -- From Once Upon a Time to Happily Ever After: Tracking Emotions in
43
+ Novels and Fairy Tales, Saif Mohammad, In Proceedings of the ACL 2011
44
+ Workshop on Language Technology for Cultural Heritage, Social
45
+ Sciences, and Humanities (LaTeCH), June 2011, Portland, OR. Paper
46
+
47
+ -- Emotions Evoked by Common Words and Phrases: Using Mechanical Turk
48
+ to Create an Emotion Lexicon", Saif Mohammad and Peter Turney, In
49
+ Proceedings of the NAACL-HLT 2010 Workshop on Computational Approaches
50
+ to Analysis and Generation of Emotion in Text, June 2010, LA,
51
+ California.
52
+
53
+ Links to the papers are available here:
54
+ http://www.purl.org/net/NRCemotionlexicon
55
+ .......................................................................
56
+
57
+ VERSION INFORMATION
58
+ -------------------
59
+ Version 0.92 is the latest version as of 10 July 2011. This version
60
+ has annotations for more than twice as many terms as in Version 0.5
61
+ which was released earlier.
62
+
63
+ .......................................................................
64
+
65
+ FORMAT
66
+ ------
67
+ Each line has the following format:
68
+ TargetWord<tab>AffectCategory<tab>AssociationFlag
69
+
70
+ TargetWord is a word for which emotion associations are provided.
71
+
72
+ AffectCategory is one of eight emotions (anger, fear, anticipation,
73
+ trust, surprise, sadness, joy, or disgust) or one of two polarities
74
+ (negative or positive).
75
+
76
+ AssociationFlag has one of two possible values: 0 or 1. 0 indicates
77
+ that the target word has no association with affect category,
78
+ whereas 1 indicates an association.
79
+
80
+ .......................................................................
81
+
82
+ OTHER FORMS OF THE LEXICON
83
+ --------------------------
84
+
85
+ The original lexicon has annotations at word-sense level. Each
86
+ word-sense pair is annotated by at least three annotators (most are
87
+ annotated by at least five). The word-level lexicon was created by
88
+ taking the union of emotions associated with all the senses of a word.
89
+ Please contact NRC if interested in the sense-level lexicon or if
90
+ interested in more detailed information such as the individual
91
+ annotations by each of the annotators.
92
+
93
+ .......................................................................
94
+
95
+ CONTACT INFORMATION
96
+ -------------------
97
+ Saif Mohammad
98
+ Research Officer, National Research Council Canada
99
100
+ phone: +1-613-993-0620
101
+
102
+ .......................................................................
agent/.DS_Store ADDED
Binary file (6.15 kB). View file
 
agent/target_extraction/.DS_Store ADDED
Binary file (6.15 kB). View file
 
agent/target_extraction/BERT/.DS_Store ADDED
Binary file (6.15 kB). View file
 
agent/target_extraction/BERT/entity_extractor/__pycache__/bert_entity_extractor.cpython-38.pyc ADDED
Binary file (6.66 kB). View file
 
agent/target_extraction/BERT/entity_extractor/__pycache__/entity_dataset.cpython-38.pyc ADDED
Binary file (7.08 kB). View file
 
agent/target_extraction/BERT/entity_extractor/__pycache__/entitybertnet.cpython-38.pyc ADDED
Binary file (1.46 kB). View file
 
agent/target_extraction/BERT/entity_extractor/bert_entity_extractor.py ADDED
@@ -0,0 +1,227 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from torch.nn.utils import clip_grad_norm_
3
+ from torch.utils.data import DataLoader
4
+ from torch.nn.functional import softmax
5
+ from torch.nn import CrossEntropyLoss
6
+ from torch.optim import Adam
7
+ import time
8
+ import numpy as np
9
+ from sklearn import metrics
10
+ import statistics
11
+ from transformers import get_linear_schedule_with_warmup
12
+ from agent.target_extraction.BERT.entity_extractor.entity_dataset import EntityDataset, generate_batch, generate_production_batch
13
+ from agent.target_extraction.BERT.entity_extractor.entitybertnet import NUM_CLASSES, EntityBertNet
14
+ import streamlit as st
15
+ device = torch.device('cpu')
16
+
17
+ # optimizer
18
+ DECAY_RATE = 0.01
19
+ LEARNING_RATE = 0.00002
20
+ MAX_GRAD_NORM = 1.0
21
+
22
+ # training
23
+ N_EPOCHS = 3
24
+ BATCH_SIZE = 32
25
+ WARM_UP_FRAC = 0.05
26
+
27
+ # loss
28
+ loss_criterion = CrossEntropyLoss()
29
+
30
+
31
+ class BertEntityExtractor:
32
+
33
+ def __init__(self):
34
+ self.net = EntityBertNet()
35
+
36
+ @staticmethod
37
+ def load_saved(path):
38
+ extr = BertEntityExtractor()
39
+ extr.net = EntityBertNet()
40
+ extr.net.load_state_dict(torch.load(path,map_location=torch.device('cpu')))
41
+ extr.net.eval()
42
+ return extr
43
+
44
+ @staticmethod
45
+ def new_trained_with_file(file_path, save_path, size=None):
46
+ extractor = BertEntityExtractor()
47
+ extractor.train_with_file(file_path, save_path, size=size)
48
+ return extractor
49
+
50
+ @staticmethod
51
+ def train_and_validate(file_path, save_file, size=None, valid_frac=None, valid_file_path=None):
52
+ extractor = BertEntityExtractor()
53
+ extractor.train_with_file(file_path, save_file, size=size, valid_frac=valid_frac,
54
+ valid_file_path=valid_file_path)
55
+ return extractor
56
+
57
+ def train_with_file(self, file_path, save_file, size=None, valid_frac=None, valid_file_path=None,epochs=None):
58
+ # load training data
59
+ if valid_file_path is None:
60
+ train_data, valid_data = EntityDataset.from_file(file_path, size=size, valid_frac=valid_frac)
61
+ else:
62
+ train_size = int(size * (1 - valid_frac)) if size is not None else None
63
+ train_data, _ = EntityDataset.from_file(file_path, size=train_size)
64
+ valid_size = int(size * valid_frac) if size is not None else int(len(train_data) * valid_frac)
65
+ valid_data, _ = EntityDataset.from_file(valid_file_path, size=valid_size)
66
+ train_loader = DataLoader(train_data, batch_size=BATCH_SIZE, shuffle=True,
67
+ collate_fn=generate_batch,pin_memory=False)
68
+
69
+ # initialise BERT
70
+ # self.net.cuda()
71
+
72
+ # set up optimizer with weight decay
73
+ optimiser = Adam(self.net.parameters(), lr=LEARNING_RATE)
74
+ if(epochs is not None):
75
+ N_EPOCHS=epochs
76
+ else:
77
+ N_EPOCHS=3
78
+ # set up scheduler for lr
79
+ n_training_steps = len(train_loader) * N_EPOCHS
80
+ scheduler = get_linear_schedule_with_warmup(
81
+ optimiser,
82
+ num_warmup_steps=int(WARM_UP_FRAC * n_training_steps),
83
+ num_training_steps=n_training_steps
84
+ )
85
+
86
+ start = time.time()
87
+ if(epochs is not None):
88
+ N_EPOCHS=epochs
89
+
90
+ for epoch_idx in range(N_EPOCHS):
91
+ self.net.train()
92
+ batch_loss = 0.0
93
+
94
+ for batch_idx, batch in enumerate(train_loader):
95
+ # send batch to gpu
96
+ input_ids, attn_mask, entity_indices, target_labels = tuple(i.to(device) for i in batch)
97
+
98
+ # zero param gradients
99
+ optimiser.zero_grad()
100
+
101
+ # forward pass
102
+ output_scores = self.net(input_ids, attn_mask, entity_indices)
103
+
104
+ # backward pass
105
+ loss = loss_criterion(output_scores, target_labels)
106
+ loss.backward()
107
+
108
+ # clip gradient norm
109
+ clip_grad_norm_(parameters=self.net.parameters(), max_norm=MAX_GRAD_NORM)
110
+
111
+ # optimise
112
+ optimiser.step()
113
+
114
+ # update lr
115
+ scheduler.step()
116
+
117
+ # print interim stats every 250 batches
118
+ batch_loss += loss.item()
119
+ if batch_idx % 250 == 249:
120
+ batch_no = batch_idx + 1
121
+ print('epoch:', epoch_idx + 1, '-- progress: {:.4f}'.format(batch_no / len(train_loader)),
122
+ '-- batch:', batch_no, '-- avg loss:', batch_loss / 250)
123
+ batch_loss = 0.0
124
+
125
+ print('epoch done')
126
+ st.write('epoch')
127
+
128
+ if valid_data is not None:
129
+ self.evaluate(data=valid_data)
130
+
131
+ torch.save(self.net.state_dict(), '{}.pt'.format(save_file))
132
+
133
+ end = time.time()
134
+ print('Training took', end - start, 'seconds')
135
+
136
+ def evaluate(self,df=None,file_path=None, data=None, size=None):
137
+ # load eval data
138
+ if file_path is not None:
139
+ test_data, _ = EntityDataset.from_file(file_path, size=size)
140
+ elif df is not None:
141
+ test_data = EntityDataset.from_df(df)
142
+ else:
143
+ if data is None:
144
+ raise AttributeError('file_path and data cannot both be None')
145
+ test_data = data
146
+ # print(test_data)
147
+ test_loader = DataLoader(test_data, batch_size=BATCH_SIZE, shuffle=False, num_workers=4,
148
+ collate_fn=generate_batch,pin_memory=False)
149
+
150
+ # self.net.cuda()
151
+ self.net.eval()
152
+
153
+ outputs = []
154
+ targets = []
155
+
156
+ with torch.no_grad():
157
+ for batch in test_loader:
158
+ # send batch to gpu
159
+ input_ids, attn_mask, entity_indices, target_labels = tuple(i.to(device) for i in batch)
160
+
161
+ # forward pass
162
+ output_scores = self.net(input_ids, attn_mask, entity_indices)
163
+ _, output_labels = torch.max(output_scores.data, 1)
164
+ # print(_,output_labels)
165
+ outputs += output_labels.tolist()
166
+ targets += target_labels.tolist()
167
+ if(df is not None):
168
+ return outputs
169
+
170
+
171
+ assert len(outputs) == len(targets)
172
+
173
+ correct = (np.array(outputs) == np.array(targets))
174
+ accuracy = correct.sum() / correct.size
175
+ print('accuracy:', accuracy)
176
+ st.write('accuracy:', accuracy)
177
+
178
+ cm = metrics.confusion_matrix(targets, outputs, labels=range(NUM_CLASSES))
179
+ print('confusion matrix:')
180
+ st.write('confusion')
181
+ print(cm)
182
+ st.write(cm)
183
+
184
+ f1 = metrics.f1_score(targets, outputs, labels=range(NUM_CLASSES), average='macro')
185
+ print('macro F1:', f1)
186
+ st.write('macro F1:', f1)
187
+ precision = metrics.precision_score(targets, outputs, average=None)
188
+ print('precision:', precision)
189
+ st.write('precision:', precision)
190
+
191
+ recall = metrics.recall_score(targets, outputs, average=None)
192
+ print('recall:', recall)
193
+ st.write('recall:', recall)
194
+ return outputs,targets
195
+
196
+
197
+ def extract_entity_probabilities(self, terms, file_path=None, dataset=None, size=None):
198
+ # load data
199
+ if file_path is not None:
200
+ data, _ = EntityDataset.from_file(file_path, size=size)
201
+ else:
202
+ if dataset is None:
203
+ raise AttributeError('file_path and data cannot both be None')
204
+ data = dataset
205
+
206
+ loader = DataLoader(data, batch_size=BATCH_SIZE, shuffle=False, num_workers=4,
207
+ collate_fn=generate_production_batch,pin_memory=False)
208
+
209
+ #
210
+ self.net.eval()
211
+
212
+ probs = {term: [] for term in terms}
213
+
214
+ # with torch.no_grad():
215
+ for input_ids, attn_mask, entity_indices, instances in loader:
216
+ # send batch to gpu
217
+ input_ids, attn_mask, entity_indices = tuple(i.to(device) for i in [input_ids, attn_mask,
218
+ entity_indices])
219
+
220
+ # forward pass
221
+ output_scores = softmax(self.net(input_ids, attn_mask, entity_indices), dim=1)
222
+ entity_scores = output_scores.narrow(1, 1, 1).flatten()
223
+
224
+ for ins, score in zip(instances, entity_scores.tolist()):
225
+ probs[ins.entity].append(score)
226
+
227
+ return {t: statistics.mean(t_probs) if len(t_probs) > 0 else None for t, t_probs in probs.items()}
agent/target_extraction/BERT/entity_extractor/entity_dataset.py ADDED
@@ -0,0 +1,175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from torch.utils.data import Dataset
3
+ from transformers import BertTokenizer
4
+ import pandas as pd
5
+ import numpy as np
6
+ from ast import literal_eval
7
+ import os.path
8
+ import itertools
9
+ from agent.target_extraction.BERT.relation_extractor.pairbertnet import TRAINED_WEIGHTS, HIDDEN_OUTPUT_FEATURES
10
+ import streamlit as st
11
+
12
+ MAX_SEQ_LEN = 128
13
+ LABELS = ['ASPECT', 'NAN']
14
+ LABEL_MAP = {'ASPECT': 1, 'NAN': 0, None: None}
15
+ MASK_TOKEN = '[MASK]'
16
+ tokenizer = BertTokenizer.from_pretrained(TRAINED_WEIGHTS)
17
+
18
+
19
+ def generate_batch(batch):
20
+ tok=[instance.tokens for instance in batch] #list( itertools.chain.from_iterable(
21
+ tok=list( itertools.chain.from_iterable([[' '.join(i)] for i in tok]))
22
+ encoded = tokenizer.__call__(tok, add_special_tokens=True,
23
+ max_length=MAX_SEQ_LEN, pad_to_max_length=True, truncation=True,
24
+ return_tensors='pt')
25
+
26
+ input_ids = encoded['input_ids']
27
+ attn_mask = encoded['attention_mask']
28
+ labels = torch.tensor([instance.label for instance in batch])
29
+
30
+ entity_indices = indices_for_entity_ranges([instance.entity_range for instance in batch])
31
+ return input_ids, attn_mask, entity_indices, labels
32
+
33
+
34
+ def generate_production_batch(batch):
35
+ tok=[(instance.tokens for instance in batch)]
36
+
37
+ tok=list( itertools.chain.from_iterable(tok))
38
+ tok=list( itertools.chain.from_iterable([[' '.join(i)] for i in tok]))
39
+ print("tokeeeeeeeeeeeeeeeeeeen"+str(tok))
40
+ encoded = tokenizer.__call__(tok, add_special_tokens=True,
41
+ max_length=MAX_SEQ_LEN, pad_to_max_length=True, truncation=True,
42
+ return_tensors='pt')
43
+ input_ids = encoded['input_ids']
44
+ attn_mask = encoded['attention_mask']
45
+
46
+ entity_indices = indices_for_entity_ranges([instance.entity_range for instance in batch])
47
+
48
+ return input_ids, attn_mask, entity_indices, batch
49
+
50
+
51
+ def indices_for_entity_ranges(ranges):
52
+ max_e_len = max(end - start for start, end in ranges)
53
+ indices = torch.tensor([[[min(t, end)] * HIDDEN_OUTPUT_FEATURES
54
+ for t in range(start, start + max_e_len + 1)]
55
+ for start, end in ranges])
56
+ return indices
57
+
58
+
59
+ class EntityDataset(Dataset):
60
+
61
+ def __init__(self, df, size=None):
62
+ # filter inapplicable rows
63
+ self.df = df[df.apply(lambda x: EntityDataset.instance_from_row(x) is not None, axis=1)]
64
+
65
+ # sample data if a size is specified
66
+ if size is not None and size < len(self):
67
+ self.df = self.df.sample(size, replace=False)
68
+
69
+ @staticmethod
70
+ def from_df(df, size=None):
71
+ dataset = EntityDataset(df, size=size)
72
+ print('Obtained dataset of size', len(dataset))
73
+ st.write('Obtained dataset of size', len(dataset))
74
+
75
+ return dataset
76
+
77
+ @staticmethod
78
+ def from_file(file_name, valid_frac=None, size=None):
79
+ f = open(os.path.dirname(__file__) + '/../data/' + file_name)
80
+ if file_name.endswith('.json'):
81
+ dataset = EntityDataset(pd.read_json(f, lines=True), size=size)
82
+ elif file_name.endswith('.tsv'):
83
+ dataset = EntityDataset(pd.read_csv(f, sep='\t', error_bad_lines=False), size=size)
84
+ else:
85
+ raise AttributeError('Could not recognize file type')
86
+
87
+ if valid_frac is None:
88
+ print('Obtained dataset of size', len(dataset))
89
+ st.write('Obtained dataset of size', len(dataset))
90
+
91
+ return dataset, None
92
+ else:
93
+ split_idx = int(len(dataset) * (1 - valid_frac))
94
+ dataset.df, valid_df = np.split(dataset.df, [split_idx], axis=0)
95
+ validset = EntityDataset(valid_df)
96
+ print('Obtained train set of size', len(dataset), 'and validation set of size', len(validset))
97
+ return dataset, validset
98
+
99
+ @staticmethod
100
+ def instance_from_row(row):
101
+ unpacked_arr = literal_eval(row['entityMentions']) if type(row['entityMentions']) is str else row['entityMentions']
102
+ rms = [rm for rm in unpacked_arr if 'label' not in rm or rm['label'] in LABELS]
103
+ if len(rms) == 1:
104
+ entity, label = rms[0]['text'], (rms[0]['label'] if 'label' in rms[0] else None)
105
+ else:
106
+ return None # raise AttributeError('Instances must have exactly one relation')
107
+
108
+ text = row['sentText']
109
+ return EntityDataset.get_instance(text, entity, label=label)
110
+
111
+ @staticmethod
112
+ def get_instance(text, entity, label=None):
113
+ tokens = tokenizer.tokenize(text)
114
+
115
+ i = 0
116
+ found_entity = False
117
+ entity_range = None
118
+ while i < len(tokens):
119
+ match_length = EntityDataset.token_entity_match(i, entity.lower(), tokens)
120
+ if match_length is not None:
121
+ if found_entity:
122
+ return None # raise AttributeError('Entity {} appears twice in text {}'.format(entity, text))
123
+ found_entity = True
124
+ tokens[i:i + match_length] = [MASK_TOKEN] * match_length
125
+ entity_range = (i + 1, i + match_length) # + 1 taking into account the [CLS] token
126
+ i += match_length
127
+ else:
128
+ i += 1
129
+
130
+ if found_entity:
131
+ return PairRelInstance(tokens, entity, entity_range, LABEL_MAP[label], text)
132
+ else:
133
+ return None
134
+
135
+ @staticmethod
136
+ def token_entity_match(first_token_idx, entity, tokens):
137
+ token_idx = first_token_idx
138
+ remaining_entity = entity
139
+ while remaining_entity:
140
+ if remaining_entity == entity or remaining_entity.lstrip() != remaining_entity:
141
+ # start of new word
142
+ remaining_entity = remaining_entity.lstrip()
143
+ if token_idx < len(tokens) and tokens[token_idx] == remaining_entity[:len(tokens[token_idx])]:
144
+ remaining_entity = remaining_entity[len(tokens[token_idx]):]
145
+ token_idx += 1
146
+ else:
147
+ break
148
+ else:
149
+ # continuing same word
150
+ if (token_idx < len(tokens) and tokens[token_idx].startswith('##')
151
+ and tokens[token_idx][2:] == remaining_entity[:len(tokens[token_idx][2:])]):
152
+ remaining_entity = remaining_entity[len(tokens[token_idx][2:]):]
153
+ token_idx += 1
154
+ else:
155
+ break
156
+ if remaining_entity:
157
+ return None
158
+ else:
159
+ return token_idx - first_token_idx
160
+
161
+ def __len__(self):
162
+ return len(self.df.index)
163
+
164
+ def __getitem__(self, idx):
165
+ return EntityDataset.instance_from_row(self.df.iloc[idx])
166
+
167
+
168
+ class PairRelInstance:
169
+
170
+ def __init__(self, tokens, entity, entity_range, label, text):
171
+ self.tokens = tokens
172
+ self.entity = entity
173
+ self.entity_range = entity_range
174
+ self.label = label
175
+ self.text = text
agent/target_extraction/BERT/entity_extractor/entitybertnet.py ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+ from transformers import *
4
+
5
+ HIDDEN_OUTPUT_FEATURES = 768
6
+ TRAINED_WEIGHTS = 'bert-base-uncased'
7
+ NUM_CLASSES = 2 # entity, not entity
8
+
9
+
10
+ class EntityBertNet(nn.Module):
11
+
12
+ def __init__(self):
13
+ super(EntityBertNet, self).__init__()
14
+ config = BertConfig.from_pretrained(TRAINED_WEIGHTS)
15
+ self.bert_base = BertModel.from_pretrained(TRAINED_WEIGHTS, config=config)
16
+ self.fc = nn.Linear(HIDDEN_OUTPUT_FEATURES, NUM_CLASSES)
17
+
18
+ def forward(self, input_ids, attn_mask, entity_indices):
19
+ # BERT
20
+ bert_output, _ = self.bert_base(input_ids=input_ids, attention_mask=attn_mask,return_dict=False)
21
+
22
+ # max pooling at entity locations
23
+ entity_pooled_output = EntityBertNet.pooled_output(bert_output, entity_indices)
24
+
25
+ # fc layer (softmax activation done in loss function)
26
+ x = self.fc(entity_pooled_output)
27
+ return x
28
+
29
+ @staticmethod
30
+ def pooled_output(bert_output, indices):
31
+ #print(bert_output)
32
+ outputs = torch.gather(input=bert_output, dim=1, index=indices)
33
+ pooled_output, _ = torch.max(outputs, dim=1)
34
+ return pooled_output
agent/target_extraction/BERT/relation_extractor/__pycache__/bert_rel_extractor.cpython-37.pyc ADDED
Binary file (7.05 kB). View file
 
agent/target_extraction/BERT/relation_extractor/__pycache__/bert_rel_extractor.cpython-38.pyc ADDED
Binary file (7.27 kB). View file
 
agent/target_extraction/BERT/relation_extractor/__pycache__/bert_rel_extractor.cpython-39.pyc ADDED
Binary file (7.01 kB). View file
 
agent/target_extraction/BERT/relation_extractor/__pycache__/pair_rel_dataset.cpython-37.pyc ADDED
Binary file (8.04 kB). View file
 
agent/target_extraction/BERT/relation_extractor/__pycache__/pair_rel_dataset.cpython-38.pyc ADDED
Binary file (7.96 kB). View file
 
agent/target_extraction/BERT/relation_extractor/__pycache__/pair_rel_dataset.cpython-39.pyc ADDED
Binary file (7.85 kB). View file
 
agent/target_extraction/BERT/relation_extractor/__pycache__/pairbertnet.cpython-37.pyc ADDED
Binary file (1.58 kB). View file
 
agent/target_extraction/BERT/relation_extractor/__pycache__/pairbertnet.cpython-38.pyc ADDED
Binary file (1.62 kB). View file
 
agent/target_extraction/BERT/relation_extractor/__pycache__/pairbertnet.cpython-39.pyc ADDED
Binary file (1.61 kB). View file
 
agent/target_extraction/BERT/relation_extractor/bert_rel_extractor.py ADDED
@@ -0,0 +1,263 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from torch.nn.utils import clip_grad_norm_
3
+ from torch.utils.data import DataLoader
4
+ from torch.nn.functional import softmax
5
+ from torch.nn import CrossEntropyLoss
6
+ from torch.optim import Adam
7
+ import time
8
+ import numpy as np
9
+ from sklearn import metrics
10
+ from transformers import get_linear_schedule_with_warmup
11
+ from agent.target_extraction.BERT.relation_extractor.pair_rel_dataset import PairRelDataset, generate_batch, generate_production_batch
12
+ from agent.target_extraction.BERT.relation_extractor.pairbertnet import NUM_CLASSES, PairBertNet
13
+ import streamlit as st
14
+ device = torch.device('cpu')
15
+
16
+ # optimizer
17
+ DECAY_RATE = 0.01
18
+ LEARNING_RATE = 0.00002
19
+ MAX_GRAD_NORM = 1.0
20
+
21
+ # training
22
+ N_EPOCHS = 3
23
+ BATCH_SIZE = 16
24
+ WARM_UP_FRAC = 0.05
25
+
26
+ # loss
27
+ loss_criterion = CrossEntropyLoss()
28
+
29
+
30
+ class BertRelExtractor:
31
+
32
+ def __init__(self):
33
+ self.net = PairBertNet()
34
+
35
+ @staticmethod
36
+ def load_saved(path):
37
+ extr = BertRelExtractor()
38
+ extr.net = PairBertNet()
39
+ extr.net.load_state_dict(torch.load(path,map_location=torch.device('cpu')))
40
+ extr.net.eval()
41
+ return extr
42
+
43
+ @staticmethod
44
+ def new_trained_with_file(file_path, save_path, size=None):
45
+ extractor = BertRelExtractor()
46
+ extractor.train_with_file(file_path, save_path, size=size)
47
+ return extractor
48
+
49
+ @staticmethod
50
+ def train_and_validate(file_path, save_file, size=None, valid_frac=None, valid_file_path=None):
51
+ extractor = BertRelExtractor()
52
+ extractor.train_with_file(file_path, save_file, size=size, valid_frac=valid_frac,
53
+ valid_file_path=valid_file_path)
54
+ return extractor
55
+
56
+ def train_with_file(self, file_path, save_file, size=None, valid_frac=None, valid_file_path=None,epohs=None):
57
+ # load training data
58
+ if valid_file_path is None:
59
+ train_data, valid_data = PairRelDataset.from_file(file_path, size=size, valid_frac=valid_frac)
60
+ else:
61
+ train_size = int(size * (1 - valid_frac)) if size is not None else None
62
+ train_data, _ = PairRelDataset.from_file(file_path, size=train_size)
63
+ valid_size = int(size * valid_frac) if size is not None else int(len(train_data) * valid_frac)
64
+ valid_data, _ = PairRelDataset.from_file(valid_file_path, size=valid_size)
65
+ train_loader = DataLoader(train_data, batch_size=BATCH_SIZE, shuffle=True,
66
+ collate_fn=generate_batch,pin_memory=False)
67
+
68
+ # initialise BERT
69
+ # self.net.cuda()
70
+
71
+ # set up optimizer with weight decay
72
+ optimiser = Adam(self.net.parameters(), lr=LEARNING_RATE)
73
+
74
+ # set up scheduler for lr
75
+ if(epohs is not None):
76
+ N_EPOCHS=epohs
77
+ else:
78
+ N_EPOCHS=3
79
+ n_training_steps = len(train_loader) * N_EPOCHS
80
+ scheduler = get_linear_schedule_with_warmup(
81
+ optimiser,
82
+ num_warmup_steps=int(WARM_UP_FRAC * n_training_steps),
83
+ num_training_steps=n_training_steps
84
+ )
85
+
86
+ start = time.time()
87
+
88
+
89
+ for epoch_idx in range(N_EPOCHS):
90
+ self.net.train()
91
+ batch_loss = 0.0
92
+
93
+ for batch_idx, batch in enumerate(train_loader):
94
+ # send batch to gpu
95
+ input_ids, attn_mask, masked_indices, fst_indices, snd_indices, target_labels = tuple(i.to(device) for i in batch)
96
+
97
+ # zero param gradients
98
+ optimiser.zero_grad()
99
+
100
+ # forward pass
101
+ output_scores = self.net(input_ids, attn_mask, masked_indices, fst_indices, snd_indices)
102
+
103
+ # backward pass
104
+ loss = loss_criterion(output_scores, target_labels)
105
+ loss.backward()
106
+
107
+ # clip gradient norm
108
+ clip_grad_norm_(parameters=self.net.parameters(), max_norm=MAX_GRAD_NORM)
109
+
110
+ # optimise
111
+ optimiser.step()
112
+
113
+ # update lr
114
+ scheduler.step()
115
+
116
+ # print interim stats every 500 batches
117
+ batch_loss += loss.item()
118
+ if batch_idx % 500 == 499:
119
+ batch_no = batch_idx + 1
120
+ print('epoch:', epoch_idx + 1, '-- progress: {:.4f}'.format(batch_no / len(train_loader)),
121
+ '-- batch:', batch_no, '-- avg loss:', batch_loss / 500)
122
+ batch_loss = 0.0
123
+
124
+ print('epoch done')
125
+ st.write('epoch done')
126
+
127
+
128
+ if valid_data is not None:
129
+ self.evaluate(data=valid_data)
130
+
131
+ torch.save(self.net.state_dict(), '{}.pt'.format(save_file))
132
+
133
+ end = time.time()
134
+ print('Training took', end - start, 'seconds')
135
+ st.write('Training took', end - start, 'seconds')
136
+
137
+
138
+ def evaluate(self, df=None ,file_path=None, data=None, size=None):
139
+ # load eval data
140
+ if file_path is not None:
141
+ test_data, _ = PairRelDataset.from_file(file_path, size=size)
142
+ elif df is not None:
143
+ test_data= PairRelDataset.from_df(df)
144
+ else:
145
+ if data is None:
146
+ raise AttributeError('file_path and data cannot both be None')
147
+ test_data = data
148
+
149
+ # print(test_data)
150
+ test_loader = DataLoader(test_data, batch_size=BATCH_SIZE, shuffle=False, num_workers=4,
151
+ collate_fn=generate_batch,pin_memory=False)
152
+
153
+ # self.net.cuda()
154
+ self.net.eval()
155
+
156
+ outputs = []
157
+ targets = []
158
+
159
+ with torch.no_grad():
160
+ for batch in test_loader:
161
+ # send batch to gpu
162
+ input_ids, attn_mask, masked_indices, fst_indices, snd_indices, target_labels = tuple(i.to(device)
163
+ for i in batch)
164
+
165
+ # forward pass
166
+ output_scores = self.net(input_ids, attn_mask, masked_indices, fst_indices, snd_indices)
167
+ _, output_labels = torch.max(output_scores.data, 1)
168
+
169
+ outputs += output_labels.tolist()
170
+ targets += target_labels.tolist()
171
+ if(df is not None):
172
+ return outputs,targets
173
+ assert len(outputs) == len(targets)
174
+
175
+ correct = (np.array(outputs) == np.array(targets))
176
+ accuracy = correct.sum() / correct.size
177
+ print('accuracy:', accuracy)
178
+ st.write('accuracy:', accuracy)
179
+
180
+
181
+ cm = metrics.confusion_matrix(targets, outputs, labels=range(NUM_CLASSES))
182
+ print('confusion matrix:')
183
+ print(cm)
184
+ st.write('confusion matrix:')
185
+ st.write(cm)
186
+
187
+ f1 = metrics.f1_score(targets, outputs, labels=range(NUM_CLASSES), average='macro')
188
+ print('macro F1:', f1)
189
+ st.write('macro F1:', f1)
190
+
191
+
192
+ precision = metrics.precision_score(targets, outputs, average=None)
193
+ print('precision:', precision)
194
+ st.write('precision:', precision)
195
+
196
+
197
+ recall = metrics.recall_score(targets, outputs, average=None)
198
+ print('recall:', recall)
199
+ st.write('recall:', recall)
200
+
201
+ return outputs,targets
202
+
203
+ def extract_single_relation(self, text, e1, e2):
204
+ ins = PairRelDataset.get_instance(text, e1, e2)
205
+ input_ids, attn_mask, masked_indices, prod_indices, feat_indices, instances = generate_production_batch([ins])
206
+
207
+ # self.net.cuda()
208
+ self.net.eval()
209
+
210
+ with torch.no_grad():
211
+ # send batch to gpu
212
+ input_ids, attn_mask, masked_indices, prod_indices, feat_indices = tuple(i.to(device) for i in
213
+ [input_ids, attn_mask,
214
+ masked_indices, prod_indices,
215
+ feat_indices])
216
+
217
+ # forward pass
218
+ output_scores = softmax(self.net(input_ids, attn_mask, masked_indices, prod_indices, feat_indices), dim=1)
219
+ _, output_labels = torch.max(output_scores.data, 1)
220
+
221
+ print(instances[0].get_relation_for_label(output_labels[0]))
222
+
223
+ def extract_relations(self, n_aspects, aspect_index_map, aspect_counts, file_path=None, dataset=None, size=None):
224
+ # load data
225
+ if file_path is not None:
226
+ data, _ = PairRelDataset.from_file(file_path, size=size)
227
+ else:
228
+ if dataset is None:
229
+ raise AttributeError('file_path and data cannot both be None')
230
+ data = dataset
231
+
232
+ loader = DataLoader(data, batch_size=BATCH_SIZE, shuffle=False, num_workers=4,
233
+ collate_fn=generate_production_batch)
234
+
235
+ # self.net.cuda()
236
+ self.net.eval()
237
+
238
+ prob_matrix = np.zeros((n_aspects, n_aspects))
239
+ count_matrix = np.zeros((n_aspects, n_aspects))
240
+
241
+ with torch.no_grad():
242
+ for input_ids, attn_mask, masked_indices, prod_indices, feat_indices, instances in loader:
243
+ # send batch to gpu
244
+ input_ids, attn_mask, masked_indices, prod_indices, feat_indices = tuple(i.to(device) for i in
245
+ [input_ids, attn_mask,
246
+ masked_indices, prod_indices,
247
+ feat_indices])
248
+
249
+ # forward pass
250
+ output_scores = softmax(self.net(input_ids, attn_mask, masked_indices, prod_indices, feat_indices), dim=1)
251
+ rel_scores = output_scores.narrow(1, 1, 2)
252
+
253
+ for ins, scores in zip(instances, rel_scores.tolist()):
254
+ forward_score, backward_score = scores
255
+ fst_idx, snd_idx = aspect_index_map[ins.fst], aspect_index_map[ins.snd]
256
+ prob_matrix[snd_idx][fst_idx] += forward_score
257
+ prob_matrix[fst_idx][snd_idx] += backward_score
258
+ count_matrix[snd_idx][fst_idx] += 1
259
+ count_matrix[fst_idx][snd_idx] += 1
260
+
261
+ return prob_matrix, count_matrix
262
+
263
+
agent/target_extraction/BERT/relation_extractor/pair_rel_dataset.py ADDED
@@ -0,0 +1,198 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from torch.utils.data import Dataset
3
+ from transformers import BertTokenizer
4
+ import pandas as pd
5
+ import numpy as np
6
+ from ast import literal_eval
7
+ from agent.target_extraction.BERT.relation_extractor.pairbertnet import TRAINED_WEIGHTS, HIDDEN_OUTPUT_FEATURES
8
+ import os
9
+ import itertools
10
+
11
+ MAX_SEQ_LEN = 256
12
+ RELATIONS = ['/has_feature', '/no_relation']
13
+ RELATION_LABEL_MAP = {None: None, '/has_feature': 1, '/no_relation': 0}
14
+ MASK_TOKEN = '[MASK]'
15
+ tokenizer = BertTokenizer.from_pretrained(TRAINED_WEIGHTS)
16
+
17
+ def generate_batch(batch):
18
+ tok=[instance.tokens for instance in batch] #list( itertools.chain.from_iterable(
19
+ tok=list( itertools.chain.from_iterable([[' '.join(i)] for i in tok]))
20
+ encoded = tokenizer.__call__(tok, add_special_tokens=True,
21
+ max_length=MAX_SEQ_LEN, pad_to_max_length=True, truncation=True,
22
+ return_tensors='pt')
23
+
24
+ input_ids = encoded['input_ids']
25
+ attn_mask = encoded['attention_mask']
26
+ labels = torch.tensor([instance.label for instance in batch])
27
+
28
+ both_ranges = [instance.ranges for instance in batch]
29
+ masked_indices = torch.tensor([[ins_idx, token_idx] for ins_idx, ranges in enumerate(both_ranges)
30
+ for start, end in ranges for token_idx in range(start, end + 1)])
31
+ fst_indices, snd_indices = map(indices_for_entity_ranges, zip(*both_ranges))
32
+
33
+ return input_ids, attn_mask, masked_indices, fst_indices, snd_indices, labels
34
+
35
+
36
+ def generate_production_batch(batch):
37
+ tok=[instance.tokens for instance in batch] #list( itertools.chain.from_iterable(
38
+ tok=list( itertools.chain.from_iterable([[' '.join(i)] for i in tok]))
39
+ encoded = tokenizer.__call__(tok, add_special_tokens=True,
40
+ max_length=MAX_SEQ_LEN, pad_to_max_length=True, truncation=True,
41
+ return_tensors='pt')
42
+ input_ids = encoded['input_ids']
43
+ attn_mask = encoded['attention_mask']
44
+
45
+ both_ranges = [instance.ranges for instance in batch]
46
+ masked_indices = torch.tensor([[ins_idx, token_idx] for ins_idx, ranges in enumerate(both_ranges)
47
+ for start, end in ranges for token_idx in range(start, end + 1)])
48
+ fst_indices, snd_indices = map(indices_for_entity_ranges, zip(*both_ranges))
49
+
50
+ return input_ids, attn_mask, masked_indices, fst_indices, snd_indices, batch
51
+
52
+
53
+
54
+ def indices_for_entity_ranges(ranges):
55
+ max_e_len = max(end - start for start, end in ranges)
56
+ indices = torch.tensor([[[min(t, end)] * HIDDEN_OUTPUT_FEATURES
57
+ for t in range(start, start + max_e_len + 1)]
58
+ for start, end in ranges])
59
+ return indices
60
+
61
+
62
+ class PairRelDataset(Dataset):
63
+
64
+ def __init__(self, df, size=None):
65
+ # filter inapplicable rows
66
+ self.df = df[df.apply(lambda x: PairRelDataset.instance_from_row(x) is not None, axis=1)]
67
+
68
+ # sample data if a size is specified
69
+ if size is not None and size < len(self):
70
+ self.df = self.df.sample(size, replace=False)
71
+
72
+ @staticmethod
73
+ def from_df(df, size=None):
74
+ dataset = PairRelDataset(df, size=size)
75
+ print('Obtained dataset of size', len(dataset))
76
+ return dataset
77
+
78
+ @staticmethod
79
+ def from_file(file_name, valid_frac=None, size=None):
80
+ f = open(os.path.dirname(__file__) + '/../data/' + file_name)
81
+ if file_name.endswith('.json'):
82
+ dataset = PairRelDataset(pd.read_json(f, lines=True), size=size)
83
+ elif file_name.endswith('.tsv'):
84
+ dataset = PairRelDataset(pd.read_csv(f, sep='\t', error_bad_lines=False), size=size)
85
+ else:
86
+ raise AttributeError('Could not recognize file type')
87
+
88
+ if valid_frac is None:
89
+ print('Obtained dataset of size', len(dataset))
90
+ return dataset, None
91
+ else:
92
+ split_idx = int(len(dataset) * (1 - valid_frac))
93
+ dataset.df, valid_df = np.split(dataset.df, [split_idx], axis=0)
94
+ validset = PairRelDataset(valid_df)
95
+ print('Obtained train set of size', len(dataset), 'and validation set of size', len(validset))
96
+ return dataset, validset
97
+
98
+ @staticmethod
99
+ def instance_from_row(row):
100
+ unpacked_arr = literal_eval(row['relationMentions']) if type(row['relationMentions']) is str else row['relationMentions']
101
+ rms = [rm for rm in unpacked_arr if 'label' not in rm or rm['label'] in RELATIONS]
102
+ if len(rms) == 1:
103
+ prod, feat, rel = rms[0]['em1Text'], rms[0]['em2Text'], (rms[0]['label'] if 'label' in rms[0] else None)
104
+ else:
105
+ return None # raise AttributeError('Instances must have exactly one relation')
106
+
107
+ text = row['sentText']
108
+ return PairRelDataset.get_instance(text, [prod, feat], relation=rel)
109
+
110
+ @staticmethod
111
+ def get_instance(text, entities, relation=None):
112
+ tokens = tokenizer.tokenize(text)
113
+
114
+ i = 0
115
+ found_entities = []
116
+ ranges = []
117
+ while i < len(tokens):
118
+ match = False
119
+ for entity in entities:
120
+ match_length = PairRelDataset.token_entity_match(i, entity.lower(), tokens)
121
+ if match_length is not None:
122
+ if entity in found_entities:
123
+ return None # raise AttributeError('Entity {} appears twice in text {}'.format(entity, text))
124
+ match = True
125
+ found_entities.append(entity)
126
+ tokens[i:i+match_length] = [MASK_TOKEN] * match_length
127
+ ranges.append((i + 1, i + match_length)) # + 1 taking into account the [CLS] token
128
+ i += match_length
129
+ break
130
+ if not match:
131
+ i += 1
132
+
133
+ if len(found_entities) != 2:
134
+ return None # raise AttributeError('Could not find entities {} and {} in {}. Found entities {}'.format(e1, e2, text, found_entities))
135
+
136
+ if relation is None:
137
+ return PairRelInstance(tokens, found_entities[0], found_entities[1], ranges, None, text)
138
+
139
+ if relation == '/has_feature':
140
+ if found_entities == entities:
141
+ return PairRelInstance(tokens, found_entities[0], found_entities[1], ranges, 1, text)
142
+ else:
143
+ assert found_entities == entities[::-1]
144
+ return PairRelInstance(tokens, found_entities[0], found_entities[1], ranges, 2, text)
145
+
146
+ assert relation == '/no_relation'
147
+ return PairRelInstance(tokens, found_entities[0], found_entities[1], ranges, 0, text)
148
+
149
+ @staticmethod
150
+ def token_entity_match(first_token_idx, entity, tokens):
151
+ token_idx = first_token_idx
152
+ remaining_entity = entity
153
+ while remaining_entity:
154
+ if remaining_entity == entity or remaining_entity.lstrip() != remaining_entity:
155
+ # start of new word
156
+ remaining_entity = remaining_entity.lstrip()
157
+ if token_idx < len(tokens) and tokens[token_idx] == remaining_entity[:len(tokens[token_idx])]:
158
+ remaining_entity = remaining_entity[len(tokens[token_idx]):]
159
+ token_idx += 1
160
+ else:
161
+ break
162
+ else:
163
+ # continuing same word
164
+ if (token_idx < len(tokens) and tokens[token_idx].startswith('##')
165
+ and tokens[token_idx][2:] == remaining_entity[:len(tokens[token_idx][2:])]):
166
+ remaining_entity = remaining_entity[len(tokens[token_idx][2:]):]
167
+ token_idx += 1
168
+ else:
169
+ break
170
+ if remaining_entity:
171
+ return None
172
+ else:
173
+ return token_idx - first_token_idx
174
+
175
+ def __len__(self):
176
+ return len(self.df.index)
177
+
178
+ def __getitem__(self, idx):
179
+ return PairRelDataset.instance_from_row(self.df.iloc[idx])
180
+
181
+
182
+ class PairRelInstance:
183
+
184
+ def __init__(self, tokens, fst, snd, ranges, label, text):
185
+ self.tokens = tokens
186
+ self.fst = fst
187
+ self.snd = snd
188
+ self.ranges = ranges
189
+ self.label = label
190
+ self.text = text
191
+
192
+ def get_relation_for_label(self, label):
193
+ if label == 0:
194
+ return self.fst, '/no_relation', self.snd
195
+ if label == 1:
196
+ return self.fst, '/has_feature', self.snd
197
+ if label == 2:
198
+ return self.snd, '/has_feature', self.fst
agent/target_extraction/BERT/relation_extractor/pairbertnet.py ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+ from transformers import *
4
+
5
+ HIDDEN_OUTPUT_FEATURES = 768
6
+ TRAINED_WEIGHTS = 'bert-base-uncased'
7
+ NUM_CLASSES = 3 # no relation, fst hasFeature snd, snd hasFeature fst
8
+ HIDDEN_ENTITY_FEATURES = 6 # lower -> more general but less informative entity representations
9
+
10
+
11
+ class PairBertNet(nn.Module):
12
+
13
+ def __init__(self):
14
+ super(PairBertNet, self).__init__()
15
+ # self.entity_fc1 = nn.Linear(HIDDEN_OUTPUT_FEATURES, HIDDEN_ENTITY_FEATURES)
16
+ # self.entity_fc2 = nn.Linear(HIDDEN_ENTITY_FEATURES, HIDDEN_OUTPUT_FEATURES)
17
+ config = BertConfig.from_pretrained(TRAINED_WEIGHTS)
18
+ self.bert_base = BertModel.from_pretrained(TRAINED_WEIGHTS, config=config)
19
+ self.fc = nn.Linear(HIDDEN_OUTPUT_FEATURES * 2, NUM_CLASSES)
20
+
21
+ def forward(self, input_ids, attn_mask, masked_indices, fst_indices, snd_indices):
22
+ # embeddings = self.bert_base.get_input_embeddings()
23
+ # input_embeddings = embeddings(input_ids)
24
+ #
25
+ # # get partially masked input_embeddings for entity terms
26
+ # unmasked_entity_embeddings = input_embeddings[masked_indices[:, 0], masked_indices[:, 1]]
27
+ # hidden_entity_repr = torch.tanh(self.entity_fc1(unmasked_entity_embeddings))
28
+ # masked_entity_embeddings = torch.repeat_interleave(hidden_entity_repr, 128, dim=1) # 768 / 12 = 64
29
+ #
30
+ # # replace input_embeddings with partially masked ones for entities
31
+ # input_embeddings[masked_indices[:, 0], masked_indices[:, 1]] = masked_entity_embeddings
32
+
33
+ # BERT
34
+ bert_output, _ = self.bert_base(input_ids=input_ids, attention_mask=attn_mask,return_dict=False)
35
+
36
+ # max pooling at entity locations
37
+ fst_pooled_output = PairBertNet.pooled_output(bert_output, fst_indices)
38
+ snd_pooled_output = PairBertNet.pooled_output(bert_output, snd_indices)
39
+
40
+ # concat pooled outputs from prod and feat entities
41
+ combined = torch.cat((fst_pooled_output, snd_pooled_output), dim=1)
42
+
43
+ # fc layer (softmax activation done in loss function)
44
+ x = self.fc(combined)
45
+ return x
46
+
47
+ @staticmethod
48
+
49
+ def pooled_output(bert_output, indices):
50
+ print(bert_output.shape,indices.shape)
51
+ outputs = torch.gather(bert_output, dim=1, index=indices)
52
+ pooled_output, _ = torch.max(outputs, dim=1)
53
+ return pooled_output
54
+
55
+
agent/target_extraction/__pycache__/argument.cpython-38.pyc ADDED
Binary file (685 Bytes). View file
 
agent/target_extraction/__pycache__/product.cpython-38.pyc ADDED
Binary file (2.76 kB). View file
 
agent/target_extraction/__pycache__/target_extractor.cpython-38.pyc ADDED
Binary file (23.6 kB). View file
 
agent/target_extraction/argument.py ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class Argument:
2
+
3
+ def __init__(self, id, name):
4
+ self.id = id
5
+ self.name = name
6
+ self.queries = []
7
+
8
+ def with_queries(self, queries):
9
+ arg = Argument(self.id, self.name)
10
+ arg.queries = queries
11
+ return arg
agent/target_extraction/product.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from anytree import Node
2
+ import pickle
3
+ from os.path import isfile
4
+ from agent.target_extraction.argument import Argument
5
+ from nltk.stem import WordNetLemmatizer
6
+
7
+ wnl = WordNetLemmatizer()
8
+
9
+
10
+ class Product:
11
+ FILE_DIR = '/content/drive/MyDrive/EXAMPLE_DATASET/'
12
+ FILE_EXTENSION = '.pickle'
13
+
14
+ def __init__(self, root: Node, syn_dict):
15
+ self.root = root
16
+ self.feature_nodes = [n for n in root.descendants]
17
+ self.argument_nodes = [root] + self.feature_nodes
18
+ self.glossary = {a_node: [syn.split(' ') for syn in syns]
19
+ for a, syns in syn_dict.items() for a_node in self.argument_nodes if a_node.name == a}
20
+ self.arguments = {a_node: Argument(a_idx, a_node.name.replace('_', ' '))
21
+ for a_idx, a_node in enumerate(self.argument_nodes)}
22
+ self.singularities = {a_node: wnl.lemmatize(a_node.name) == a_node.name for a_node in self.argument_nodes}
23
+
24
+ def argument_node_for_id(self, id):
25
+ return self.argument_nodes[id]
26
+
27
+ def argument_for_id(self, id):
28
+ return self.argument_for_node(self.argument_node_for_id(id))
29
+
30
+ def argument_for_node(self, n):
31
+ return self.arguments[n]
32
+
33
+ def name(self):
34
+ return self.root.name
35
+
36
+ @staticmethod
37
+ def get_product(name):
38
+ path = Product.FILE_DIR + name + Product.FILE_EXTENSION
39
+ if isfile(path):
40
+ f = open(path, 'rb')
41
+ product: Product = pickle.load(f)
42
+ f.close()
43
+ return product
44
+ else:
45
+ raise Exception('No representation found for product {} at {}'.format(name, path))
agent/target_extraction/target_extractor.py ADDED
@@ -0,0 +1,612 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ from collections import Counter
3
+ from nltk import pos_tag
4
+ from nltk.tokenize import word_tokenize, sent_tokenize
5
+ from nltk.corpus import stopwords
6
+ from nltk.stem import WordNetLemmatizer
7
+ import string
8
+ from gensim.models.phrases import Phrases, Phraser
9
+ from anytree import Node, RenderTree, PreOrderIter
10
+ import numpy as np
11
+ import re
12
+ from gensim.models import Word2Vec
13
+ import itertools
14
+ import pickle
15
+ from agent.target_extraction.product import Product
16
+ from agent.target_extraction.BERT.entity_extractor.entity_dataset import EntityDataset
17
+ from agent.target_extraction.BERT.entity_extractor.bert_entity_extractor import BertEntityExtractor
18
+ from agent.target_extraction.BERT.relation_extractor.pair_rel_dataset import PairRelDataset
19
+ from agent.target_extraction.BERT.relation_extractor.bert_rel_extractor import BertRelExtractor
20
+ from pathos.multiprocessing import ProcessingPool as Pool
21
+ import itertools
22
+ from time import time
23
+ import os
24
+ import streamlit as st
25
+
26
+ #to get the current working directory
27
+ directory = os.getcwd()
28
+
29
+ print(directory)
30
+ np.set_printoptions(precision=4, threshold=np.inf, suppress=True)
31
+ stop_words = stopwords.words('english')
32
+ wnl = WordNetLemmatizer()
33
+
34
+ pool = Pool(1)
35
+ sentiment_lexicon = pd.read_csv(directory+'/NRC_Emotion_Lexicon-master/NRC-Emotion-Lexicon-Wordlevel-v0.92.txt', index_col=0)
36
+ entity_extractor_path = directory+'/models/entity_model.pt'
37
+ rel_extractor_path = directory+'/models/model.pt'
38
+
39
+ def ngrams(text, phraser):
40
+ if any(isinstance(subtext, list) for subtext in text):
41
+ return
42
+
43
+ tags = [tag for _, tag in pos_tag(text)]
44
+ unfiltered = [term.split('_') for term in phraser[text]]
45
+ tagged_unfiltered = []
46
+ n = 0
47
+ for term in unfiltered:
48
+ tagged_unfiltered.append([(subterm, tags[n + idx]) for idx, subterm in enumerate(term)])
49
+ n += len(term)
50
+
51
+ def filter_ngram(term):
52
+ if len(term) > 1 and (any(not re.compile('NN|JJ').match(tag) for _, tag in term)
53
+ or any(tag.startswith('JJ') and polar_adjective(t) for t, tag in term)):
54
+ return [subterm for subterm, _ in term]
55
+ return [' '.join([subterm for subterm, _ in term])]
56
+
57
+ def polar_adjective(adj):
58
+ print("adjjj"+str(adj))
59
+ return adj in sentiment_lexicon.index and (sentiment_lexicon.loc[adj]['positive'] == 1 or
60
+ sentiment_lexicon.loc[adj]['negative'] == 1)
61
+
62
+ return [subterm for term in tagged_unfiltered for subterm in filter_ngram(term)]
63
+
64
+
65
+ def get_nouns(phrase, ngrams):
66
+ pos_tags = pos_tag(phrase)
67
+
68
+ def is_noun(pos_tagged):
69
+ word, tag = pos_tagged
70
+ return tag.startswith('NN') and word not in string.punctuation and word not in stop_words
71
+
72
+ # true if term is not a preposition and does not include special characters
73
+ def is_valid_term(pos_tagged):
74
+ alpha_numeric_pat = '^\w+$'
75
+ word, tag = pos_tagged
76
+ return tag != 'IN' and re.match(alpha_numeric_pat, word)
77
+
78
+ nouns = []
79
+ word_idx = 0
80
+ for token in ngrams:
81
+ if ' ' in token:
82
+ words = token.split(' ')
83
+ word_range = range(word_idx, word_idx + len(words))
84
+ has_noun = any(is_noun(pos_tags[i]) for i in word_range)
85
+ all_terms_valid = all(is_valid_term(pos_tags[i]) for i in word_range)
86
+ if has_noun and all_terms_valid:
87
+ nouns.append(token)
88
+ word_idx += len(words)
89
+ else:
90
+ token_is_noun = is_noun(pos_tags[word_idx])
91
+ is_valid = is_valid_term(pos_tags[word_idx])
92
+ if len(token) > 1 and token_is_noun and is_valid:
93
+ nouns.append(token)
94
+ word_idx += 1
95
+ return nouns
96
+
97
+
98
+ def entity_mentions_in_text(text, phrase, ngrams, entities):
99
+ all_tokens = set().union(*[phrase, ngrams])
100
+
101
+ entity_mention = None
102
+ for entity in entities:
103
+ n_mentions = sum(1 for token in all_tokens if entity == token.lower())
104
+ if n_mentions > 1:
105
+ # many mentions of same entity
106
+ return None
107
+ if n_mentions == 1:
108
+ if entity_mention is None:
109
+ entity_mention = entity
110
+ elif entity_mention in entity:
111
+ entity_mention = entity
112
+ elif entity not in entity_mention:
113
+ # text cannot have more than one entity mention, unless one is a subset of the other,
114
+ # in which case the longer one is taken
115
+ return None
116
+
117
+ if entity_mention is not None:
118
+ return text, [{'text': entity_mention}]
119
+
120
+ return None
121
+
122
+
123
+ def pair_relations_for_text(text, ngrams, aspects, syn_dict):
124
+
125
+ def overlapping_terms(ts, t):
126
+ if len(ts) == 0:
127
+ return False
128
+ return any(t in t2.split(' ') if len(t) < len(t2) else t2 in t.split(' ') for t2 in ts)
129
+
130
+ noun_ngrams = [ngram for ngram, tag in pos_tag(ngrams) if tag.startswith('NN')]
131
+
132
+ found_aspects = []
133
+ for aspect in aspects:
134
+ found_form = False
135
+ for form in syn_dict[aspect]:
136
+ if form in noun_ngrams:
137
+ if len(found_aspects) > 1 or found_form or overlapping_terms(found_aspects, form):
138
+ # cannot have more than two aspects, or two forms of the same aspect, or overlapping terms
139
+ return None
140
+ found_aspects.append(form)
141
+ found_form = True
142
+
143
+ return (text, [{'em1Text': found_aspects[0], 'em2Text': found_aspects[1]}]) if len(found_aspects) == 2 else None
144
+
145
+
146
+ class TargetExtractor:
147
+ N_ASPECTS = 100
148
+
149
+ # phraser
150
+ PHRASE_THRESHOLD = 4
151
+
152
+ # tree
153
+ SUBFEATURE_MULT = 1.4 # for z to be a subfeature of x, matrix(z, x) > matrix(z, f) * SUBFEATURE_MULT for all other f
154
+ COUNT_MULT = 5
155
+ MAX_DEPTH = 2
156
+
157
+ # word2vec
158
+ MIN_TERM_COUNT = 100
159
+ SYNONYM_SIMILARITY = 0.21
160
+ SYNONYM_SIMILARITY_PRODUCT = 0.08
161
+ WV_SIZE = 300
162
+ WV_WINDOW = 4
163
+
164
+ # bert
165
+ ENTITY_PROB_THRESHOLD = 0.65
166
+
167
+ # parent is a TargetExtrator of a parent category, eg. > electronics > camera
168
+ def __init__(self, product, file_path, text_column):
169
+ self.product = product
170
+ self.file_path = file_path
171
+ self.sentiment_lexicon=sentiment_lexicon
172
+ self.entity_extractor_path=entity_extractor_path
173
+ self.rel_extractor_path=rel_extractor_path
174
+
175
+ ts = time()
176
+
177
+ print('tokenizing phrases...')
178
+ st.write('tokenizing phrases...')
179
+
180
+ print("hello")
181
+ # tokenize and normalize phrases
182
+ texts = TargetExtractor.obtain_texts(self.file_path, text_column, n=50)
183
+ self.sentences = list(itertools.chain.from_iterable(map(sent_tokenize, texts)))
184
+ self.sentences =list(map(lambda s: s.replace('_', ' ').lower(), self.sentences))
185
+ self.phrases = list(map(word_tokenize, self.sentences))
186
+
187
+ print('obtaining n-grams...')
188
+ st.write('obtaining n-grams...')
189
+
190
+ # train bigram map
191
+ bigram = Phrases(self.phrases, threshold=TargetExtractor.PHRASE_THRESHOLD)
192
+ trigram = Phrases(bigram[self.phrases], threshold=TargetExtractor.PHRASE_THRESHOLD)
193
+ phraser = Phraser(trigram)
194
+ self.ngram_phrases = list(map(ngrams, self.phrases, itertools.repeat(phraser, len(self.phrases))))
195
+
196
+ print('counting terms...')
197
+ st.write('counting terms...')
198
+
199
+ # count terms
200
+ self.counter = self.count_nouns()
201
+ self.total_count = sum(self.counter.values())
202
+
203
+ t_noun = time()
204
+ print('Noun extraction took {} seconds'.format(t_noun - ts))
205
+ st.write('Noun extraction took {} seconds'.format(t_noun - ts))
206
+
207
+ print('mining aspects...')
208
+ st.write('mining aspects...')
209
+
210
+ # mine aspects
211
+ self.aspects, self.counts = self.get_aspects(self.counter)
212
+
213
+ t_feature = time()
214
+ print('Feature extraction took {} seconds'.format(t_feature - t_noun))
215
+ st.write('Feature extraction took {} seconds'.format(t_feature - t_noun))
216
+
217
+
218
+ print('training word2vec model...')
219
+ st.write('training word2vec model...')
220
+
221
+ # train word2vec model
222
+ self.wv = self.get_word2vec_model(TargetExtractor.WV_SIZE, window=TargetExtractor.WV_WINDOW,
223
+ min_count=TargetExtractor.MIN_TERM_COUNT)
224
+
225
+ print('extracting synonyms...')
226
+ st.write('extracting synonyms...')
227
+
228
+ # obtain synonyms
229
+ self.syn_dict = self.get_syn_dict()
230
+
231
+ # remove aspect synonyms and reorder list based on sum of all synonym counts
232
+ self.aspects = [aspect for aspect in self.aspects if aspect in self.syn_dict.keys()]
233
+ dt={}
234
+ for aspect in self.aspects:
235
+ summ=0
236
+ for syn in self.syn_dict[aspect]:
237
+ try:
238
+ print(self.counts[syn])
239
+ st.write(self.counts[syn])
240
+
241
+ summ=summ+1
242
+ except:
243
+ print("nothing")
244
+ st.write("nothing")
245
+
246
+ dt[aspect]=summ
247
+ self.counts = dt #{aspect: sum(self.counts[syn] for syn in self.syn_dict[aspect]) for aspect in self.aspects}
248
+ print(self.counts)
249
+ st.write(self.counts)
250
+
251
+ self.aspects = sorted(self.aspects, key=self.counts.get, reverse=True)
252
+
253
+ t_syn = time()
254
+ print('Synonym extraction took {} seconds'.format(t_syn - t_feature))
255
+ st.write('Synonym extraction took {} seconds'.format(t_syn - t_feature))
256
+
257
+
258
+ print('extracting relatedness matrix...')
259
+ st.write('extracting relatedness matrix...')
260
+
261
+ self.relatedness_matrix = self.get_bert_relations()
262
+
263
+ print('extracting aspect tree...')
264
+ st.write('extracting aspect tree...')
265
+
266
+ self.tree = self.get_product_tree3()
267
+
268
+ te = time()
269
+ print('Ontology extraction took {} seconds'.format(te - t_syn))
270
+ st.write('Ontology extraction took {} seconds'.format(te - t_syn))
271
+
272
+ print('Full process took {} seconds'.format(te - ts))
273
+ st.write('Full process took {} seconds'.format(te - ts))
274
+
275
+
276
+ print('saving...')
277
+ st.write('saving...')
278
+
279
+ self.save()
280
+
281
+ print('done:')
282
+ st.write('done:')
283
+
284
+
285
+ print(self.aspects)
286
+ st.write(self.aspects)
287
+
288
+ print(self.syn_dict)
289
+ st.write(self.syn_dict)
290
+
291
+ print(self.relatedness_matrix)
292
+ st.write(self.relatedness_matrix)
293
+
294
+ print(self.tree)
295
+ st.write(self.tree)
296
+
297
+ print(RenderTree(self.tree))
298
+ st.write(RenderTree(self.tree))
299
+
300
+
301
+ def save_product_representation(self,project_dir):
302
+ f = open(directory+ project_dir +"/"+ self.product + Product.FILE_EXTENSION, 'wb')
303
+ p = Product(self.tree, self.syn_dict)
304
+ pickle.dump(p, f)
305
+ f.close()
306
+
307
+ @staticmethod
308
+ def obtain_texts(path, col, n=None):
309
+ print(path)
310
+ file = pd.read_csv(path)
311
+ file = file[~file[col].isnull()]
312
+ if n and n < len(file.index):
313
+ file = file.sample(frac=1).reset_index(drop=True)
314
+ file = file.head(n)
315
+ texts = [text for _, text in file[col].items() if not pd.isnull(text)]
316
+ print('Obtained {} texts'.format(len(texts)))
317
+ st.write('Obtained {} texts'.format(len(texts)))
318
+
319
+ return texts
320
+
321
+ def get_bert_relations(self):
322
+ print(' select phrases for relation extraction...')
323
+ st.write(' select phrases for relation extraction...')
324
+
325
+ pair_texts = [rel for rel in map(pair_relations_for_text, self.sentences, self.ngram_phrases,
326
+ itertools.repeat(self.aspects, len(self.sentences)),
327
+ itertools.repeat(self.syn_dict, len(self.sentences))) if rel is not None]
328
+ df = pd.DataFrame(pair_texts, columns=['sentText', 'relationMentions'])
329
+
330
+ print(' extracting relations with BERT...')
331
+ st.write(' extracting relations with BERT...')
332
+
333
+ dataset = PairRelDataset.from_df(df)
334
+ bert_extractor = BertRelExtractor.load_saved(self.rel_extractor_path)
335
+ aspect_counts = np.array([self.counts[aspect] for aspect in self.aspects])
336
+ prob_matrix, count_matrix = bert_extractor.extract_relations(len(self.aspects), self.aspect_index_map(),
337
+ aspect_counts, dataset=dataset)
338
+
339
+ self.relatedness_matrix = prob_matrix / aspect_counts # scale rows by aspect counts
340
+ return self.relatedness_matrix
341
+
342
+ def extract_synset(self):
343
+ for idx, aspect in enumerate(self.aspects):
344
+ if idx == 0:
345
+ continue
346
+ synset = {idx}
347
+ aspect_dependence = self.aspect_dependence(idx)
348
+ for syn_idx in self.get_syns(aspect):
349
+ if syn_idx < idx and syn_idx != aspect_dependence:
350
+ synset.add(syn_idx)
351
+ self.print_relations_from(aspect)
352
+ if len(synset) > 1:
353
+ return synset
354
+ return None
355
+
356
+ def get_syns(self, aspect):
357
+ return {idx for idx, a in enumerate(self.aspects)
358
+ if a != aspect and self.wv.relative_cosine_similarity(a, aspect) > TargetExtractor.SYNONYM_SIMILARITY}
359
+
360
+ def aspect_index_map(self):
361
+ return {syn: idx for idx, aspect in enumerate(self.aspects) for syn in self.syn_dict[aspect]}
362
+
363
+ def count_nouns(self):
364
+ nouns = itertools.chain.from_iterable(map(get_nouns, self.phrases, self.ngram_phrases))
365
+ return Counter(nouns)
366
+
367
+ def get_aspects(self, counter):
368
+ # take N_ASPECTS most common terms
369
+ term_counts = counter.most_common()[:TargetExtractor.N_ASPECTS]
370
+ terms = [term for term, count in term_counts]
371
+
372
+ print(' preparing entity texts for BERT...')
373
+ st.write(' preparing entity texts for BERT...')
374
+
375
+ entity_texts = [t for t in map(entity_mentions_in_text, self.sentences, self.phrases, self.ngram_phrases,
376
+ itertools.repeat(terms, len(self.sentences)))
377
+ if t is not None]
378
+ df = pd.DataFrame(entity_texts, columns=['sentText', 'entityMentions'])
379
+
380
+ print(' extracting entities with BERT...')
381
+ st.write(' extracting entities with BERT...')
382
+
383
+ dataset = EntityDataset.from_df(df)
384
+ entity_extractor = BertEntityExtractor.load_saved(self.entity_extractor_path)
385
+ probs = entity_extractor.extract_entity_probabilities(terms, dataset=dataset)
386
+
387
+ aspects = [term for term in terms if probs[term] is not None and probs[term] >= TargetExtractor.ENTITY_PROB_THRESHOLD]
388
+
389
+ # bring product to front of list
390
+ if self.product in aspects:
391
+ aspects.remove(self.product)
392
+ aspects.insert(0, self.product)
393
+
394
+ return aspects, {term: count for term, count in term_counts if term in aspects}
395
+
396
+ def get_word2vec_model(self, size, window, min_count):
397
+ print("phrases",str(self.ngram_phrases))
398
+ model = Word2Vec(self.ngram_phrases, size=size, window=window, min_count=min_count).wv
399
+ return model
400
+
401
+ def save(self):
402
+ f = open(directory+'/content/{}_extractor_f.pickle'.format(self.product), 'wb')
403
+ pickle.dump(self, f)
404
+ f.close()
405
+
406
+ @staticmethod
407
+ def load_saved(product):
408
+ f = open(directory+'/content/{}_extractor_f.pickle'.format(product), 'rb')
409
+ extractor = pickle.load(f)
410
+ f.close()
411
+ return extractor
412
+
413
+ def closest_relative_for_idx(self, idx):
414
+ return np.argmax(self.relatedness_matrix[idx])
415
+
416
+ def aspect_dependence(self, idx):
417
+ row = self.relatedness_matrix[idx]
418
+ max_idx1, max_idx2 = row[1:].argsort()[-2:][::-1] + 1
419
+ if max_idx1 < idx and row[max_idx1] >= row[max_idx2] * TargetExtractor.SUBFEATURE_MULT:
420
+ return max_idx1
421
+ else:
422
+ return None
423
+
424
+ def get_product_tree(self):
425
+ root = Node(self.aspects[0])
426
+ root.idx = 0
427
+
428
+ for idx in range(1, len(self.aspects)): # for each feature in order from highest to lowest count
429
+ dep_idx = self.aspect_dependence(idx)
430
+ if dep_idx is not None:
431
+ parent = next(n for n in root.descendants if n.idx == dep_idx)
432
+ else:
433
+ parent = root
434
+ node = Node(self.aspects[idx], parent=parent)
435
+ node.idx = idx
436
+
437
+ self.node_map = {n.idx: n for n in (root,) + root.descendants}
438
+
439
+ return root
440
+
441
+ def aspect_dependence_with_strength(self, idx):
442
+ row = self.relatedness_matrix[idx]
443
+ max_idx1, max_idx2 = row[1:].argsort()[-2:][::-1] + 1
444
+ if (row[max_idx1] >= row[max_idx2] * TargetExtractor.SUBFEATURE_MULT and
445
+ self.counts[self.aspects[max_idx1]] * TargetExtractor.COUNT_MULT > self.counts[self.aspects[idx]]):
446
+ return max_idx1, row[max_idx1]
447
+ else:
448
+ return None
449
+
450
+ def aspect_dependence_with_strength2(self, idx):
451
+ row = self.relatedness_matrix[idx]
452
+ max_idx1 = np.argmax(row[1:]) + 1
453
+ if (row[max_idx1] >= row[0] and
454
+ self.counts[self.aspects[max_idx1]] * TargetExtractor.COUNT_MULT > self.counts[self.aspects[idx]]):
455
+ return max_idx1, row[max_idx1]
456
+ else:
457
+ return None
458
+
459
+ def get_product_tree2(self):
460
+ root = Node(self.aspects[0])
461
+ root.idx = 0
462
+
463
+ deps = {idx: self.aspect_dependence_with_strength2(idx) for idx in range(1, len(self.aspects))}
464
+
465
+ for no_dep_idx in {idx for idx, dep in deps.items() if dep is None}:
466
+ node = Node(self.aspects[no_dep_idx], parent=root)
467
+ node.idx = no_dep_idx
468
+ del deps[no_dep_idx]
469
+
470
+ sorted_deps = sorted(deps.items(), key=lambda x: x[1][1], reverse=True)
471
+
472
+ for idx, (dep, _) in sorted_deps:
473
+ n = next((n for n in root.descendants if n.idx == idx), None)
474
+ dep_n = next((n for n in root.descendants if n.idx == dep), None)
475
+ if dep_n is None:
476
+ dep_n = Node(self.aspects[dep], parent=root)
477
+ dep_n.idx = dep
478
+
479
+ if n is not None:
480
+ if dep_n not in n.descendants and dep_n.depth + (max(c.depth for c in n.descendants) if n.descendants else 0) <= TargetExtractor.MAX_DEPTH:
481
+ n.parent = dep_n
482
+ else:
483
+ if dep_n.depth < TargetExtractor.MAX_DEPTH:
484
+ n = Node(self.aspects[idx], parent=dep_n)
485
+ else:
486
+ n = Node(self.aspects[idx], parent=root)
487
+ n.idx = idx
488
+
489
+ return root
490
+
491
+ def get_product_tree3(self):
492
+ root = Node(self.aspects[0])
493
+ root.idx = 0
494
+
495
+ deps = {idx: self.aspect_dependence_with_strength2(idx) for idx in range(1, len(self.aspects))}
496
+
497
+ for no_dep_idx in {idx for idx, dep in deps.items() if dep is None}:
498
+ node = Node(self.aspects[no_dep_idx], parent=root)
499
+ node.idx = no_dep_idx
500
+ del deps[no_dep_idx]
501
+
502
+ sorted_deps = sorted(deps.items(), key=lambda x: x[1][1], reverse=True)
503
+
504
+ for idx, (dep_idx, _) in sorted_deps:
505
+ if any(n for n in root.descendants if n.idx == idx):
506
+ continue
507
+
508
+ dep_n = next((n for n in root.descendants if n.idx == dep_idx), None)
509
+ if dep_n:
510
+ if dep_n.depth < 2:
511
+ n = Node(self.aspects[idx], parent=dep_n)
512
+ else:
513
+ n = Node(self.aspects[idx], parent=dep_n.parent)
514
+ else:
515
+ dep_n = Node(self.aspects[dep_idx], parent=root)
516
+ dep_n.idx = dep_idx
517
+ n = Node(self.aspects[idx], parent=dep_n)
518
+ n.idx = idx
519
+
520
+ return root
521
+
522
+ @staticmethod
523
+ def print_relations(target_indices, dep_matrix, targets):
524
+ idx_pairs = {frozenset((idx1, idx2)) for idx1 in target_indices for idx2 in target_indices if idx1 != idx2}
525
+ for idx1, idx2 in idx_pairs:
526
+ t1 = targets[idx1]
527
+ t2 = targets[idx2]
528
+ print('{} {:.4f} {}'.format(t1, dep_matrix[idx1][idx2], t2))
529
+ print('{} {:.4f} {}'.format(' ' * len(t1), dep_matrix[idx2][idx1], ' ' * len(t2)))
530
+ print('')
531
+ st.write('{} {:.4f} {}'.format(t1, dep_matrix[idx1][idx2], t2))
532
+ st.write('{} {:.4f} {}'.format(' ' * len(t1), dep_matrix[idx2][idx1], ' ' * len(t2)))
533
+ st.write('')
534
+
535
+ def print_relations_from(self, aspect):
536
+ idx = self.aspects.index(aspect)
537
+ rels = self.relatedness_matrix[idx].copy()
538
+ print(' relations from {}:'.format(aspect))
539
+ st.write(' relations from {}:'.format(aspect))
540
+
541
+ for rel_idx in sorted(range(len(self.aspects)), key=lambda i: rels[i], reverse=True)[:20]:
542
+ print(' {:.4f}'.format(rels[rel_idx]), self.aspects[rel_idx])
543
+ st.write(' {:.4f}'.format(rels[rel_idx]), self.aspects[rel_idx])
544
+
545
+
546
+ def get_syn_dict(self):
547
+ all_pairs = {frozenset((t1, t2)) for t1 in self.aspects for t2 in self.aspects if t1 != t2}
548
+ syn_pairs = {frozenset((t1, t2)) for t1, t2 in all_pairs if self.are_syns(t1, t2)}
549
+ synset = Synset(self.aspects, syn_pairs, self.product)
550
+ return synset.get_dict(self.counts)
551
+
552
+ def are_syns(self, t1, t2):
553
+ if wnl.lemmatize(t1) == wnl.lemmatize(t2):
554
+ return True
555
+ try:
556
+ if self.product in [t1, t2]:
557
+ print(t1,t2,self.wv.wv.n_similarity([t1], [t2]))
558
+ st.write(t1,t2,self.wv.wv.n_similarity([t1], [t2]))
559
+
560
+ return (self.wv.wv.n_similarity([t1], [t2]) >= TargetExtractor.SYNONYM_SIMILARITY_PRODUCT or
561
+ self.wv.wv.n_similarity([t2], [t1]) >= TargetExtractor.SYNONYM_SIMILARITY_PRODUCT)
562
+ else:
563
+ print(t1,t2)
564
+ st.write(t1,t2)
565
+
566
+ sim_sum = self.wv.wv.n_similarity([t1], [t2]) + self.wv.wv.n_similarity([t2], [t1])
567
+ return sim_sum >= TargetExtractor.SYNONYM_SIMILARITY
568
+ except:
569
+ return False
570
+
571
+ class Synset:
572
+
573
+ def __init__(self, aspects, syn_pairs, product):
574
+ self.vocab = aspects
575
+ self.syn_pairs = syn_pairs
576
+ self.product = product
577
+
578
+ def get_dict(self, counts):
579
+ groups = self.get_groups()
580
+ return {max(group, key=counts.get) if self.product not in group else self.product: group for group in groups}
581
+
582
+ def get_groups(self):
583
+ groups = []
584
+ for w1, w2 in self.syn_pairs:
585
+ if not Synset.join_groups(w1, w2, groups):
586
+ groups.append({w1, w2})
587
+ for word in self.vocab:
588
+ if not Synset.group_for(word, groups):
589
+ groups.append({word})
590
+ return groups
591
+
592
+ @staticmethod
593
+ def join_groups(w1, w2, groups):
594
+ g1 = Synset.group_for(w1, groups)
595
+ g2 = Synset.group_for(w2, groups)
596
+ if g1 and g2 and g1 == g2:
597
+ return True
598
+ if g1:
599
+ groups.remove(g1)
600
+ if g2:
601
+ groups.remove(g2)
602
+ g1 = g1 if g1 else {w1}
603
+ g2 = g2 if g2 else {w2}
604
+ groups.append(g1.union(g2))
605
+ return True
606
+
607
+ @staticmethod
608
+ def group_for(w, groups):
609
+ for group in groups:
610
+ if w in group:
611
+ return group
612
+ return None
app.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Import necessary libraries
2
+ import streamlit as st
3
+ import pandas as pd
4
+ import numpy as np
5
+ import pandas as pd
6
+ import os
7
+ import nltk
8
+ nltk.download('stopwords')
9
+ nltk.download('punkt')
10
+ nltk.download('averaged_perceptron_tagger')
11
+ import pandas as pd
12
+ from collections import Counter
13
+ import string
14
+ import numpy as np
15
+ import re
16
+ import pickle
17
+ import os
18
+ # os.chdir(bert_dir)
19
+ from agent.target_extraction.target_extractor import TargetExtractor
20
+ #os.chdir('/content/')
21
+ from pathos.multiprocessing import ProcessingPool as Pool
22
+ import itertools
23
+ from time import time
24
+ import time
25
+ import itertools
26
+ import nltk
27
+ nltk.download('wordnet')
28
+ nltk.download('omw-1.4')
29
+ device="cpu"
30
+ from gensim.models import word2vec
31
+
32
+
33
+ project_dir='/content'
34
+
35
+ # # Set a title
36
+ # import torch
37
+
38
+ st.title("Get entity and relations")
39
+
40
+ # # Add text to the app
41
+ uploaded_file = st.file_uploader("Choose a file")
42
+
43
+
44
+ if uploaded_file is not None:
45
+ df = pd.read_csv(uploaded_file)
46
+ with open(os.path.join("data",uploaded_file.name),"wb") as f:
47
+ f.write(uploaded_file.getbuffer() )
48
+ st.write(df)
49
+ print(os.path.join("data",uploaded_file.name))
50
+
51
+ if(st.button("Submit")):
52
+ with st.spinner('Wait for extraction'):
53
+ te=TargetExtractor("mobile",os.path.join("data",uploaded_file.name), "reviewText")
54
+ te.save_product_representation(project_dir)
55
+
56
+
57
+
58
+
59
+
60
+
content/mobile.pickle ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f147306e6b85a89d94025178c96e15c5f6fa860d7dc02653abbc92b9449d1356
3
+ size 733
content/mobile_extractor_f.pickle ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4015bf91bc0b7696fa2dcf48c336eb76c4fbb6b50c2b250f758c32efea4569b0
3
+ size 2910516
content/phone_extractor_f.pickle ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:05a672df52ec4de4500f11569838e4a4f1302df336ca5339f59377ee82d5607d
3
+ size 2862136
data/ent_test.csv ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ sentText,entityMentions
2
+ I had the Samsung A600 for awhile which is absolute doo doo.,"[{'text': 'samsung', 'label': 'NAN'}]"
3
+ Bad: ===> I hate the menu.,"[{'text': 'menu', 'label': 'NAN'}]"
4
+ Usually phones have numbered categories so u can simply press the # and get where you want to go.,"[{'text': 'phones', 'label': 'ASPECT'}]"
5
+ ===> It's a pain to put it on silent or vibrate.,"[{'text': 'a pain', 'label': 'NAN'}]"
6
+ "If you're in class and it rings, you have to turn it off immediately.","[{'text': 'class', 'label': 'NAN'}]"
7
+ I learned that the hard way.,"[{'text': 'way', 'label': 'NAN'}]"
8
+ ===> It's so true about the case.,"[{'text': 'case', 'label': 'ASPECT'}]"
9
+ It's a mission to get off and will break ur nails in the process.,"[{'text': 'process', 'label': 'NAN'}]"
10
+ Good: ===> Reception is not too shabby.,"[{'text': 'reception', 'label': 'NAN'}]"
11
+ It doesn't heat up like a potatoe in the oven either during long phone convos.,"[{'text': 'phone', 'label': 'ASPECT'}]"
12
+ ===> Cute ways to customize it.,"[{'text': 'ways', 'label': 'NAN'}]"
data/entities.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/entitiesv2 (1).csv ADDED
@@ -0,0 +1,898 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ sentText,entityMentions
2
+ I had the Samsung A600 for awhile which is absolute doo doo.,"[{'text': 'samsung', 'label': 'NAN'}]"
3
+ Bad: ===> I hate the menu.,"[{'text': 'menu', 'label': 'NAN'}]"
4
+ Usually phones have numbered categories so u can simply press the # and get where you want to go.,"[{'text': 'phones', 'label': 'ASPECT'}]"
5
+ ===> It's a pain to put it on silent or vibrate.,"[{'text': 'a pain', 'label': 'NAN'}]"
6
+ "If you're in class and it rings, you have to turn it off immediately.","[{'text': 'class', 'label': 'NAN'}]"
7
+ I learned that the hard way.,"[{'text': 'way', 'label': 'NAN'}]"
8
+ ===> It's so true about the case.,"[{'text': 'case', 'label': 'ASPECT'}]"
9
+ It's a mission to get off and will break ur nails in the process.,"[{'text': 'process', 'label': 'NAN'}]"
10
+ Good: ===> Reception is not too shabby.,"[{'text': 'reception', 'label': 'NAN'}]"
11
+ It doesn't heat up like a potatoe in the oven either during long phone convos.,"[{'text': 'phone', 'label': 'ASPECT'}]"
12
+ ===> Cute ways to customize it.,"[{'text': 'ways', 'label': 'NAN'}]"
13
+ "Scroll bar can be set to purple, pink, aqua, orange, etc.","[{'text': 'bar', 'label': 'NAN'}]"
14
+ "This is a great, reliable phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
15
+ "There is a skydiving game, bowling, and tennis (like pong).","[{'text': 'game', 'label': 'NAN'}]"
16
+ There are vibrating ringtones and regular (midi) polyphonic tones.,"[{'text': 'ringtones', 'label': 'NAN'}]"
17
+ "Well, he could barely even get it off- he came close to snapping the casing in half.","[{'text': 'half', 'label': 'NAN'}]"
18
+ "I was never able to get it off after that which isnt THAT big of a deal, but it got dirty under the clear casing and it looks really dirty now.","[{'text': 'deal', 'label': 'NAN'}]"
19
+ Cool.,"[{'text': 'cool', 'label': 'NAN'}]"
20
+ Cheap.,"[{'text': 'cheap', 'label': 'NAN'}]"
21
+ The 3588 also has some amazing ringtones.,"[{'text': 'ringtones', 'label': 'NAN'}]"
22
+ NOW are ya convinced that this mobile's REAL!,"[{'text': 'mobile', 'label': 'NAN'}]"
23
+ They ended up suggesting the HDB-5 headset.,"[{'text': 'headset', 'label': 'NAN'}]"
24
+ I highly recommend this phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
25
+ The keylock is a simple two-button sequence though I do wish it had a timer for the keylock like my old phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
26
+ You're few options are pretty girly.,"[{'text': 'options', 'label': 'NAN'}]"
27
+ "Also, if you're thinking about getting a different case for it, DON'T!","[{'text': 'case', 'label': 'ASPECT'}]"
28
+ "It never attaches firmly again, and neither does the new case you bought.","[{'text': 'case', 'label': 'ASPECT'}]"
29
+ I've read this in other reviews too.,"[{'text': 'reviews', 'label': 'NAN'}]"
30
+ "Of course, it will take you half a second to read the message...and you probably don't care about what it says.","[{'text': 'message', 'label': 'NAN'}]"
31
+ Annoying - Ever had anyone scream in your ear?,"[{'text': 'anyone', 'label': 'NAN'}]"
32
+ Fragile - My phone is cracked.,"[{'text': 'phone', 'label': 'ASPECT'}]"
33
+ My recommendation: buy a better phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
34
+ "*cheap feel, cheaply made, cheap materials.","[{'text': 'feel', 'label': 'NAN'}]"
35
+ It's made out of rather flimsy plastic.,"[{'text': 'plastic', 'label': 'NAN'}]"
36
+ "Also, the screen can be difficult to read in bright sunlight, but it's quite bright otherwise.","[{'text': 'screen', 'label': 'ASPECT'}]"
37
+ The product has been very good.,"[{'text': 'product', 'label': 'NAN'}]"
38
+ "In the largest subdivision, you cannot get service anywhere.","[{'text': 'service', 'label': 'ASPECT'}]"
39
+ Direct connect only works MAYBE half the time I tried to use it.,"[{'text': 'time', 'label': 'NAN'}]"
40
+ Don't make the same mistake I did.,"[{'text': 'mistake', 'label': 'NAN'}]"
41
+ "Second, the screen is easily scratched.","[{'text': 'screen', 'label': 'ASPECT'}]"
42
+ This one got scratched making it difficult to read in sunlight.,"[{'text': 'this one', 'label': 'NAN'}]"
43
+ The price was right.,"[{'text': 'price', 'label': 'ASPECT'}]"
44
+ Phone stoped working,"[{'text': 'phone', 'label': 'ASPECT'}]"
45
+ It does a beautiful job.,"[{'text': 'job', 'label': 'NAN'}]"
46
+ "The texting takes a little to get used to, but I digress.","[{'text': 'texting', 'label': 'NAN'}]"
47
+ way too small,"[{'text': 'way', 'label': 'NAN'}]"
48
+ The phone went through the washer and dryer and still works as well as ever!!,"[{'text': 'phone', 'label': 'ASPECT'}]"
49
+ "I'm not sure how it would work as an everyday phone, but for those who only need it occasionally I would highly recommend.","[{'text': 'phone', 'label': 'ASPECT'}]"
50
+ This phone is great.,"[{'text': 'phone', 'label': 'ASPECT'}]"
51
+ "this is a good little inexpensive phone - basic, but that's what I wanted!","[{'text': 'phone', 'label': 'ASPECT'}]"
52
+ My goal was just not to spend $150 on another phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
53
+ "It has not been treated lightly (I recently opened up the back to find the serial #, and found it full of dirt & dust).","[{'text': 'back', 'label': 'NAN'}]"
54
+ "It has crashed with me skiing, been splashed with salt water while sailing, and been drenched in sweat while in my bike jersey.","[{'text': 'water', 'label': 'NAN'}]"
55
+ Sometimes the exposed buttons get pressed accidentally.,"[{'text': 'buttons', 'label': 'NAN'}]"
56
+ It has no fancy features.,"[{'text': 'features', 'label': 'NAN'}]"
57
+ 5+ years now.,"[{'text': 'years', 'label': 'NAN'}]"
58
+ "I have never tried soaking it in water, but I have dropped it, thrown it, scraped it, kicked it etc.","[{'text': 'water', 'label': 'NAN'}]"
59
+ My battery has NEVER run out on me.,"[{'text': 'battery', 'label': 'ASPECT'}]"
60
+ I also talked a good 25 minutes too.,"[{'text': 'minutes', 'label': 'NAN'}]"
61
+ I have had this phone since august (its Feb. 11).,"[{'text': 'phone', 'label': 'ASPECT'}]"
62
+ I highly recommend this phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
63
+ I bought the phone and loved it.,"[{'text': 'phone', 'label': 'ASPECT'}]"
64
+ "It was very low cost, came with airtime.","[{'text': 'cost', 'label': 'NAN'}]"
65
+ I charged it up and it ran for several days on its own.,"[{'text': 'days', 'label': 'NAN'}]"
66
+ This will be just right for her limited calls when she is on the road.,"[{'text': 'calls', 'label': 'ASPECT'}]"
67
+ "This is not nokia quality your used to, it must be some sort of a clone.","[{'text': 'quality', 'label': 'ASPECT'}]"
68
+ It is robustly built and the slider glides easily in place with zero wobbling.,"[{'text': 'place', 'label': 'NAN'}]"
69
+ I'm going to something else.,"[{'text': 'something', 'label': 'NAN'}]"
70
+ This one looks and feels really crappy.,"[{'text': 'feels', 'label': 'NAN'}]"
71
+ "As much as I beat up my last phone and as well as it fared, I had to get another one.","[{'text': 'phone', 'label': 'ASPECT'}]"
72
+ i wont ( enter special code ),"[{'text': 'code', 'label': 'NAN'}]"
73
+ A huge pain for something that is $24.,"[{'text': 'something', 'label': 'NAN'}]"
74
+ very simple to use.dropped a few times and still works fine.,"[{'text': 'times', 'label': 'NAN'}]"
75
+ It's been a month!,"[{'text': 'month', 'label': 'NAN'}]"
76
+ "A second critique is the very small screen which is, in addition, not very well lit.","[{'text': 'screen', 'label': 'ASPECT'}]"
77
+ "It can be a problem viewing, even in the shade.","[{'text': 'problem', 'label': 'NAN'}]"
78
+ All and all a very good phone despite the weaknesses cited above.,"[{'text': 'phone', 'label': 'ASPECT'}]"
79
+ What a terrible mistake.,"[{'text': 'mistake', 'label': 'NAN'}]"
80
+ Everytime I DT with someone it works.,"[{'text': 'someone', 'label': 'NAN'}]"
81
+ This phone is awesome.,"[{'text': 'phone', 'label': 'ASPECT'}]"
82
+ This little gem was built to be a phone and that's exactly what it is.,"[{'text': 'phone', 'label': 'ASPECT'}]"
83
+ "In short.... See it as it really is, a phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
84
+ There has to be better phones out there.,"[{'text': 'phones', 'label': 'ASPECT'}]"
85
+ I recently had an i776 which was ruined at work.,"[{'text': 'work', 'label': 'NAN'}]"
86
+ I had good service with it and it worked well.,"[{'text': 'service', 'label': 'ASPECT'}]"
87
+ "I spent $50 on this piece, the service is horrible, very patchy.","[{'text': 'service', 'label': 'ASPECT'}]"
88
+ You will then have the responsibility of manually turning your transmitters back on for the phone to work again.,"[{'text': 'phone', 'label': 'ASPECT'}]"
89
+ They should reaname this phone the i666.,"[{'text': 'phone', 'label': 'ASPECT'}]"
90
+ Thank you Mark,"[{'text': 'thank you', 'label': 'NAN'}]"
91
+ Thanks.,"[{'text': 'thanks', 'label': 'NAN'}]"
92
+ Thank you.,"[{'text': 'thank you', 'label': 'NAN'}]"
93
+ It's a nice phone only if it worked properly.,"[{'text': 'phone', 'label': 'ASPECT'}]"
94
+ If you are looking for regular phone that's fairly durable this is great!,"[{'text': 'phone', 'label': 'ASPECT'}]"
95
+ Especially if used in heavy case?,"[{'text': 'case', 'label': 'ASPECT'}]"
96
+ Yes I would recommend this phone,"[{'text': 'phone', 'label': 'ASPECT'}]"
97
+ My signal was not constant.,"[{'text': 'signal', 'label': 'NAN'}]"
98
+ Bought in 2008.,"[{'text': 'bought', 'label': 'NAN'}]"
99
+ "If you go to [...], they talk about cable CA-126, which works with the 1680.","[{'text': 'cable', 'label': 'NAN'}]"
100
+ "It rings loud & clear, and the speakerphone is easy to hear.","[{'text': 'speakerphone', 'label': 'NAN'}]"
101
+ Navigating menus can be a little sluggish.,"[{'text': 'menus', 'label': 'NAN'}]"
102
+ "The keypad is stiff, making text messaging a chore.","[{'text': 'keypad', 'label': 'NAN'}]"
103
+ Retro early 2000s kind of phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
104
+ No cracks or breaks.,"[{'text': 'cracks', 'label': 'NAN'}]"
105
+ This thing has been dropped on cement more than once!!,"[{'text': 'thing', 'label': 'ASPECT'}]"
106
+ This is my favorite phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
107
+ For more details see the wikipedea article on it.,"[{'text': 'details', 'label': 'NAN'}]"
108
+ I'm still using one of these as my phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
109
+ Minutes accumulate as you go.,"[{'text': 'minutes', 'label': 'NAN'}]"
110
+ I used to have a Nokia 1100.,"[{'text': 'nokia', 'label': 'NAN'}]"
111
+ (I often charged it like once every other week!),"[{'text': 'week', 'label': 'NAN'}]"
112
+ They are primarily made for sale in developing countries.,"[{'text': 'sale', 'label': 'NAN'}]"
113
+ They said that the browser would not connect to the tower.,"[{'text': 'browser', 'label': 'NAN'}]"
114
+ All worked great except the lack of a browser.,"[{'text': 'browser', 'label': 'NAN'}]"
115
+ Did I mention that I only have to charge it twice a week?,"[{'text': 'week', 'label': 'NAN'}]"
116
+ This is a pretty neat cheap phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
117
+ It activates easy and came with 20 minutes free!,"[{'text': 'minutes', 'label': 'NAN'}]"
118
+ I would recommend this product.,"[{'text': 'product', 'label': 'NAN'}]"
119
+ "The price is great, too!","[{'text': 'price', 'label': 'ASPECT'}]"
120
+ My elderly aunt uses it specially because she can see the big numbers she is dialing.,"[{'text': 'numbers', 'label': 'NAN'}]"
121
+ "Little slider phone, nice and simple.","[{'text': 'phone', 'label': 'ASPECT'}]"
122
+ This is a fine instrument for a second phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
123
+ "It is light, reliable and not expensive.","[{'text': 'light', 'label': 'NAN'}]"
124
+ Comes easily to hand.,"[{'text': 'hand', 'label': 'NAN'}]"
125
+ It's for my 9yo son.,"[{'text': 'son', 'label': 'NAN'}]"
126
+ "Therefore, no other bluetooth devices can see it!","[{'text': 'devices', 'label': 'NAN'}]"
127
+ Excelent Phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
128
+ "With Movistar, Movilnet and Digitel.","[{'text': 'movistar', 'label': 'NAN'}]"
129
+ Thanks.,"[{'text': 'thanks', 'label': 'NAN'}]"
130
+ I tried a card I had and it was refused.,"[{'text': 'card', 'label': 'NAN'}]"
131
+ And coverage -- who knew?,"[{'text': 'coverage', 'label': 'NAN'}]"
132
+ "Has a game I like, lol.","[{'text': 'game', 'label': 'NAN'}]"
133
+ "Husband says that's all he needs, No texting just say hello when answering.","[{'text': 'no', 'label': 'NAN'}]"
134
+ ok,"[{'text': 'ok', 'label': 'NAN'}]"
135
+ Works great!,"[{'text': 'works great', 'label': 'NAN'}]"
136
+ Glad to have the double minutes but wish it had the triple minutes like our last Tracphone,"[{'text': 'minutes', 'label': 'NAN'}]"
137
+ Great old reliable.,"[{'text': 'great', 'label': 'NAN'}]"
138
+ its ok to call in and out,"[{'text': 'ok', 'label': 'NAN'}]"
139
+ "Very convenient because it is very inexpensive and can be used only when you need it, ie.","[{'text': 'convenient', 'label': 'NAN'}]"
140
+ emergencies or important calls.,"[{'text': 'calls', 'label': 'ASPECT'}]"
141
+ "Cheaper for me that any other ""unlimited"" plan out there.","[{'text': 'plan', 'label': 'NAN'}]"
142
+ Thanks again,"[{'text': 'thanks', 'label': 'NAN'}]"
143
+ The phone works fine.,"[{'text': 'phone', 'label': 'ASPECT'}]"
144
+ "I tried to get Tracfone to replace them ,but was unable to get them to do that.","[{'text': 'tracfone', 'label': 'NAN'}]"
145
+ My daughter loves it,"[{'text': 'my daughter', 'label': 'NAN'}]"
146
+ i have not got the phone yet but i heard it is really good and it is really cool.,"[{'text': 'phone', 'label': 'ASPECT'}]"
147
+ "When I got it, I found out that I could not unlock the phone and it was therefore useless to me so I returned it.","[{'text': 'phone', 'label': 'ASPECT'}]"
148
+ "That aside, the TracPhone charges are ridiculously high.","[{'text': 'charges', 'label': 'NAN'}]"
149
+ I recommend T-Mobile's prepay plan.,"[{'text': 'plan', 'label': 'NAN'}]"
150
+ "Those are the ""pros.""","[{'text': 'pros', 'label': 'NAN'}]"
151
+ This line is too small and and just about useless to use.,"[{'text': 'line', 'label': 'NAN'}]"
152
+ #NAME?,"[{'text': 'keys', 'label': 'NAN'}]"
153
+ "The keys themselves, however, are still too small.","[{'text': 'keys', 'label': 'NAN'}]"
154
+ You purchase the minutes/time and they appear on the phone almost immediately.,"[{'text': 'phone', 'label': 'ASPECT'}]"
155
+ "Keep the phone ""on"" while doing this.","[{'text': 'phone', 'label': 'ASPECT'}]"
156
+ Much less expensive to operate than than most any other phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
157
+ "__________________________________ March, 2014 -I have to add these thoughts to the above review.","[{'text': 'review', 'label': 'NAN'}]"
158
+ The rugged little screen is no worse for the constant manipulation.,"[{'text': 'screen', 'label': 'ASPECT'}]"
159
+ It was necessary to call a person at the local historical society.,"[{'text': 'person', 'label': 'NAN'}]"
160
+ And I agree 100% about the browser.,"[{'text': 'browser', 'label': 'NAN'}]"
161
+ Terrible terrible feature.,"[{'text': 'feature', 'label': 'NAN'}]"
162
+ My brother said I would have to take it apart right away and dry everything as quickly as possible.,"[{'text': 'everything', 'label': 'NAN'}]"
163
+ "I wasn't sure how to take it apart, and didn't have any tools, but it was still working, so I figured it might be okay.","[{'text': 'okay', 'label': 'NAN'}]"
164
+ "Later the screen wouldn't come on, and I thought it was done.","[{'text': 'screen', 'label': 'ASPECT'}]"
165
+ It has been fine ever since and that was over a week ago.,"[{'text': 'week', 'label': 'NAN'}]"
166
+ "It does offer double minutes, so I figure it is still worth it.","[{'text': 'minutes', 'label': 'NAN'}]"
167
+ Now I get a kick out of using it knowing it laid on the sand under two feet of water and still works great.,"[{'text': 'water', 'label': 'NAN'}]"
168
+ I have played Sudoku till my eyes hurt.,"[{'text': 'eyes', 'label': 'NAN'}]"
169
+ It takes pretty nice pictures.,"[{'text': 'pictures', 'label': 'ASPECT'}]"
170
+ It has a voice recorder that I even forget to use.,"[{'text': 'voice', 'label': 'NAN'}]"
171
+ The bluetooth never worked.,"[{'text': 'bluetooth', 'label': 'NAN'}]"
172
+ I used the browser occasionally.,"[{'text': 'browser', 'label': 'NAN'}]"
173
+ I don't think the browser works anymore.,"[{'text': 'browser', 'label': 'NAN'}]"
174
+ Not sure what to do with a phone that really is a phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
175
+ No warnings of money to be taken.,"[{'text': 'money', 'label': 'ASPECT'}]"
176
+ Or maybe a scam by design.,"[{'text': 'design', 'label': 'NAN'}]"
177
+ No more samsung for me.,"[{'text': 'samsung', 'label': 'NAN'}]"
178
+ So its not the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
179
+ "Why a got a second phone is a long, boring story.","[{'text': 'phone', 'label': 'ASPECT'}]"
180
+ "-Jill, Age 12","[{'text': 'age', 'label': 'NAN'}]"
181
+ "Yes, sometimes locks up randomly in spite of using the menu to leave it unlocked.","[{'text': 'menu', 'label': 'NAN'}]"
182
+ (Can unlock by entering code 1234.),"[{'text': 'code', 'label': 'NAN'}]"
183
+ It's an unnecessary step.,"[{'text': 'step', 'label': 'NAN'}]"
184
+ Sending a text could be simplified.,"[{'text': 'text', 'label': 'NAN'}]"
185
+ "), once you get through, they're usually able to solve the problem pretty quickly.","[{'text': 'problem', 'label': 'NAN'}]"
186
+ "(We live in Oregon, Portland area.)","[{'text': 'area', 'label': 'NAN'}]"
187
+ Very light in weight.,"[{'text': 'weight', 'label': 'NAN'}]"
188
+ (my 7 yr old can slap it in half easily) Voice is crisp and clear while talking.,"[{'text': 'voice', 'label': 'NAN'}]"
189
+ You cannot change the menu.,"[{'text': 'menu', 'label': 'NAN'}]"
190
+ Fingerprints on screen of course.,"[{'text': 'screen', 'label': 'ASPECT'}]"
191
+ Easily slide opened.,"[{'text': 'slide', 'label': 'NAN'}]"
192
+ TracFone support is basically non-existent.,"[{'text': 'support', 'label': 'NAN'}]"
193
+ It's been nearly 3 weeks now!,"[{'text': 'weeks', 'label': 'NAN'}]"
194
+ hard to tell what youre doing in the menu if youre not used to it.,"[{'text': 'menu', 'label': 'NAN'}]"
195
+ "You get what u paid for, more value per $ .","[{'text': 'value', 'label': 'NAN'}]"
196
+ Here is what it took to get RA #...4 calls/over 2 days.,"[{'text': 'days', 'label': 'NAN'}]"
197
+ "I waited 20 minutes on the 3rd, without reaching an agent (I had to drop).","[{'text': 'minutes', 'label': 'NAN'}]"
198
+ I thought that they were being nice when they gave me an unpublished number to call.,"[{'text': 'number', 'label': 'NAN'}]"
199
+ The browser not being able to be turned off is ridiculous.,"[{'text': 'browser', 'label': 'NAN'}]"
200
+ thats my honest opinion.,"[{'text': 'opinion', 'label': 'NAN'}]"
201
+ This is the phone I was looking for.,"[{'text': 'phone', 'label': 'ASPECT'}]"
202
+ I tried every store.,"[{'text': 'store', 'label': 'NAN'}]"
203
+ All around a vary good phone!,"[{'text': 'phone', 'label': 'ASPECT'}]"
204
+ "no signal, no signal, what a joke!!","[{'text': 'signal', 'label': 'NAN'}]"
205
+ thank you AT&T!,"[{'text': 'thank you', 'label': 'NAN'}]"
206
+ "I can understand accidentally hitting it until you stop doing so due to a learned response; ""Fire is hot, and burns, causing pain.","[{'text': 'response', 'label': 'NAN'}]"
207
+ In fact I haven't used it at all.,"[{'text': 'fact', 'label': 'NAN'}]"
208
+ It's a decent phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
209
+ Or emergency.,"[{'text': 'emergency', 'label': 'NAN'}]"
210
+ I mainly use it to get info.,"[{'text': 'info', 'label': 'NAN'}]"
211
+ You can upgrade to another Tracfone later on.,"[{'text': 'tracfone', 'label': 'NAN'}]"
212
+ Does the job.,"[{'text': 'job', 'label': 'NAN'}]"
213
+ I found it on sale here for $5.00 and got it.,"[{'text': 'sale', 'label': 'NAN'}]"
214
+ "So far, it seems to be working okay.","[{'text': 'okay', 'label': 'NAN'}]"
215
+ Not a bad deal.,"[{'text': 'deal', 'label': 'NAN'}]"
216
+ "Stylish, easy to use, and just as advertised.","[{'text': 'use', 'label': 'NAN'}]"
217
+ Amazon has done it again!,"[{'text': 'amazon', 'label': 'NAN'}]"
218
+ I bought it for my 7th grader to text me after games or practices.,"[{'text': 'games', 'label': 'NAN'}]"
219
+ When it fell in the water and broke I simply ordered another :),"[{'text': 'water', 'label': 'NAN'}]"
220
+ The price was great!,"[{'text': 'price', 'label': 'ASPECT'}]"
221
+ Well worth the money.,"[{'text': 'money', 'label': 'ASPECT'}]"
222
+ it have too time l do not remember.,"[{'text': 'time', 'label': 'NAN'}]"
223
+ Great fone.,"[{'text': 'great', 'label': 'NAN'}]"
224
+ bought thru Amazon.,"[{'text': 'amazon', 'label': 'NAN'}]"
225
+ ok,"[{'text': 'ok', 'label': 'NAN'}]"
226
+ it comes with 20 free minutes.,"[{'text': 'minutes', 'label': 'NAN'}]"
227
+ Washed my other phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
228
+ It will inform you that you need to restart the phone for this to take effect - do this later.,"[{'text': 'phone', 'label': 'ASPECT'}]"
229
+ Did have to wait on hold either; my call was answered quickly and efficently.,"[{'text': 'call', 'label': 'NAN'}]"
230
+ MINUTES DISAPPEAR.,"[{'text': 'minutes', 'label': 'NAN'}]"
231
+ "What irks me about this entire situation is, you KNOW they KNEW what was happening to me, yet feigned ignorance.","[{'text': 'situation', 'label': 'NAN'}]"
232
+ How much do we have to pay to be treated like garbage?,"[{'text': 'garbage', 'label': 'NAN'}]"
233
+ "They knew all along what it was, and kept denying there was a problem.","[{'text': 'problem', 'label': 'NAN'}]"
234
+ "It worked so well, I got it for myself, then my wife saw it and wanted one for her.","[{'text': 'wife', 'label': 'NAN'}]"
235
+ From a very adjustable camera.,"[{'text': 'camera', 'label': 'ASPECT'}]"
236
+ "Overall though, I give this phone high marks.","[{'text': 'phone', 'label': 'ASPECT'}]"
237
+ "But I have tried it in California, Florida, and the midwest and never had a dropped call.","[{'text': 'call', 'label': 'NAN'}]"
238
+ You get charged a minimum of 1/2 minute whenever this happens.,"[{'text': 'minute', 'label': 'NAN'}]"
239
+ "When it is off, you can see the keypad flash like it is trying to turn on.","[{'text': 'flash', 'label': 'NAN'}]"
240
+ "But if you do, expect a foretaste of hell.","[{'text': 'hell', 'label': 'NAN'}]"
241
+ I switched to another company.,"[{'text': 'company', 'label': 'NAN'}]"
242
+ Left for vacation and my LG600g phone was in the console.,"[{'text': 'phone', 'label': 'ASPECT'}]"
243
+ Only for headset.,"[{'text': 'headset', 'label': 'NAN'}]"
244
+ 2 steps to unlock slider.,"[{'text': 'steps', 'label': 'NAN'}]"
245
+ "Also, no explanation on how to use the speakerphone.","[{'text': 'speakerphone', 'label': 'NAN'}]"
246
+ Loaded with good features but not complicated to use.,"[{'text': 'features', 'label': 'NAN'}]"
247
+ Trying to get technical support I was only allowed to buy new airtime.,"[{'text': 'support', 'label': 'NAN'}]"
248
+ Indoor reception is poor.,"[{'text': 'reception', 'label': 'NAN'}]"
249
+ "You try to turn the phone back on, and it is 'locked'.","[{'text': 'phone', 'label': 'ASPECT'}]"
250
+ It will have a space for you to enter a passcode.,"[{'text': 'space', 'label': 'NAN'}]"
251
+ GARBAGE.,"[{'text': 'garbage', 'label': 'NAN'}]"
252
+ the new one only rings 1 time in 4 :(,"[{'text': 'time', 'label': 'NAN'}]"
253
+ AT&T should inform sellers!,"[{'text': 'sellers', 'label': 'NAN'}]"
254
+ He likes it and I like not having to replace it all the time.,"[{'text': 'time', 'label': 'NAN'}]"
255
+ It's doing good but I was expecting a charger to come with it.,"[{'text': 'charger', 'label': 'ASPECT'}]"
256
+ I had to get one to fit the phone,"[{'text': 'phone', 'label': 'ASPECT'}]"
257
+ I am returning to Amazon.,"[{'text': 'amazon', 'label': 'NAN'}]"
258
+ Other than those quibbles we're very happy with the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
259
+ I researched low SAR (absorbed radiation) and this was the cheapest most simple phone available.,"[{'text': 'phone', 'label': 'ASPECT'}]"
260
+ "Love the speakerphone, internal antenna.","[{'text': 'speakerphone', 'label': 'NAN'}]"
261
+ "I bought this off of ""I sell things"".","[{'text': 'things', 'label': 'NAN'}]"
262
+ "It is the wrong color, scratched and beat up badly!","[{'text': 'color', 'label': 'NAN'}]"
263
+ I had to return the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
264
+ Menus are difficult to follow and aren't logical.,"[{'text': 'menus', 'label': 'NAN'}]"
265
+ I even found it difficult to answer when someone called.,"[{'text': 'someone', 'label': 'NAN'}]"
266
+ It's now known in my family as the StopPhone.,"[{'text': 'family', 'label': 'NAN'}]"
267
+ "I have this "" sane phone "" in "" Paris Hilton Red "".","[{'text': 'phone', 'label': 'ASPECT'}]"
268
+ "I Love It some much ---------- I'm "" soon going to pruchase this same phone again "" !","[{'text': 'phone', 'label': 'ASPECT'}]"
269
+ First of all I ordered a pink one for my daughter and it arrived in silver.,"[{'text': 'my daughter', 'label': 'NAN'}]"
270
+ "I have not tried an alternate charger yet, but I shouldn't have to.","[{'text': 'charger', 'label': 'ASPECT'}]"
271
+ Too much of a hassle spent charging all the time.,"[{'text': 'time', 'label': 'NAN'}]"
272
+ Horrible purchase.,"[{'text': 'purchase', 'label': 'NAN'}]"
273
+ Avoid at all costs.,"[{'text': 'costs', 'label': 'NAN'}]"
274
+ Dont waste your money,"[{'text': 'money', 'label': 'ASPECT'}]"
275
+ You shipped what I asked for so not your fault.,"[{'text': 'fault', 'label': 'NAN'}]"
276
+ Repeated attempts to make it work were useless.,"[{'text': 'attempts', 'label': 'NAN'}]"
277
+ "Be very wary about buying used phones, esp those that claim to be ""refurbished"" and fully functional.","[{'text': 'phones', 'label': 'ASPECT'}]"
278
+ I never could get it to turn on and wasn't able to hook it up to the line I needed it on.,"[{'text': 'line', 'label': 'NAN'}]"
279
+ Returns take forever and I really needed a phone so I wound up having to just buy another one.,"[{'text': 'phone', 'label': 'ASPECT'}]"
280
+ Money doesn't grow on trees.,"[{'text': 'money', 'label': 'ASPECT'}]"
281
+ I bought this for my mom.,"[{'text': 'my mom', 'label': 'NAN'}]"
282
+ It is a used phone and I dont think I would get another one.,"[{'text': 'phone', 'label': 'ASPECT'}]"
283
+ "The next day, it was totally drained.","[{'text': 'day', 'label': 'NAN'}]"
284
+ "Again ,I left the phone and low and behold, it was totally drained.","[{'text': 'phone', 'label': 'ASPECT'}]"
285
+ I will not buy from these people again.,"[{'text': 'people', 'label': 'NAN'}]"
286
+ This phone is great.,"[{'text': 'phone', 'label': 'ASPECT'}]"
287
+ "They seem to be more fragile, lighter weight and cheaply made.","[{'text': 'weight', 'label': 'NAN'}]"
288
+ Good phone!,"[{'text': 'phone', 'label': 'ASPECT'}]"
289
+ Didn't work.,"[{'text': 'work', 'label': 'NAN'}]"
290
+ These are great phones.,"[{'text': 'phones', 'label': 'ASPECT'}]"
291
+ "It was (and still is) annoying that they didn't upgrade their error messge when trying to run GetItNow/Get_New_App from ""Unable to retrieve catalog.","[{'text': 'error', 'label': 'NAN'}]"
292
+ Please try again later.,"[{'text': 'please', 'label': 'NAN'}]"
293
+ "(3332)"" to ""Legacy/unsupported phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
294
+ "Don't waste your time to try again"".","[{'text': 'time', 'label': 'NAN'}]"
295
+ Going to have to buy another phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
296
+ It really needs to be plugged in each night.,"[{'text': 'night', 'label': 'NAN'}]"
297
+ "I bought a newer battery, but it still doesn't last that long.","[{'text': 'battery', 'label': 'ASPECT'}]"
298
+ Like the size and how easily it opens.,"[{'text': 'size', 'label': 'ASPECT'}]"
299
+ I am even getting used to the pink color.,"[{'text': 'color', 'label': 'NAN'}]"
300
+ I was only refunded the amount I paid for the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
301
+ That was a nice surprise.,"[{'text': 'surprise', 'label': 'NAN'}]"
302
+ People may say wow they still sell those!,"[{'text': 'people', 'label': 'NAN'}]"
303
+ The charger collapsed on receipt.,"[{'text': 'charger', 'label': 'ASPECT'}]"
304
+ The cost was less than $50.,"[{'text': 'cost', 'label': 'NAN'}]"
305
+ Works well as a secondary devise.,"[{'text': 'works well', 'label': 'NAN'}]"
306
+ Seller was great to deal with.,"[{'text': 'seller', 'label': 'NAN'}]"
307
+ Delivered on time.,"[{'text': 'time', 'label': 'NAN'}]"
308
+ Works Great!,"[{'text': 'great', 'label': 'NAN'}]"
309
+ Well pleased with the secondhand RAZR.,"[{'text': 'razr', 'label': 'NAN'}]"
310
+ Thank you so much.,"[{'text': 'thank you', 'label': 'NAN'}]"
311
+ Thanks Golden Net !,"[{'text': 'thanks', 'label': 'NAN'}]"
312
+ We tried a they said it wouldn't work.,"[{'text': 'work', 'label': 'NAN'}]"
313
+ Should have known by the low price it was to good to be true.,"[{'text': 'price', 'label': 'ASPECT'}]"
314
+ This particular phone is a dud!,"[{'text': 'phone', 'label': 'ASPECT'}]"
315
+ "It says it's verizon wireless compatible, but it's not.","[{'text': 'wireless', 'label': 'NAN'}]"
316
+ "Only works with ""Alltel"" plans.","[{'text': 'plans', 'label': 'NAN'}]"
317
+ At first I thought it was Verizon but obviously it's not.,"[{'text': 'verizon', 'label': 'NAN'}]"
318
+ Didn't even work.,"[{'text': 'work', 'label': 'NAN'}]"
319
+ Was told differently that it worked.,"[{'text': 'was', 'label': 'NAN'}]"
320
+ No damage.,"[{'text': 'damage', 'label': 'NAN'}]"
321
+ "Did work, but not correctly.","[{'text': 'work', 'label': 'NAN'}]"
322
+ Shut off at will waste of money.,"[{'text': 'money', 'label': 'ASPECT'}]"
323
+ I've purchased many over the years and this is the nicest.,"[{'text': 'years', 'label': 'NAN'}]"
324
+ It has been plugged into the wall more than used to talk on.,"[{'text': 'wall', 'label': 'NAN'}]"
325
+ Do not recommend.,"[{'text': 'do not', 'label': 'NAN'}]"
326
+ Piece of crap.,"[{'text': 'crap', 'label': 'NAN'}]"
327
+ It worked for a while BUT started going crazy.,"[{'text': 'but', 'label': 'NAN'}]"
328
+ I think yall sold me a defect battery,"[{'text': 'battery', 'label': 'ASPECT'}]"
329
+ I am not a texter so this phone is perfect.,"[{'text': 'phone', 'label': 'ASPECT'}]"
330
+ Thanks,"[{'text': 'thanks', 'label': 'NAN'}]"
331
+ I activated the phone and it work perfect.,"[{'text': 'phone', 'label': 'ASPECT'}]"
332
+ This was a waste of money.,"[{'text': 'money', 'label': 'ASPECT'}]"
333
+ I would not buy a used phone on Amozon again.,"[{'text': 'phone', 'label': 'ASPECT'}]"
334
+ Happy with the purchase.,"[{'text': 'purchase', 'label': 'NAN'}]"
335
+ This is a great phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
336
+ It did not work.,"[{'text': 'work', 'label': 'NAN'}]"
337
+ Won't hold a charge.,"[{'text': 'charge', 'label': 'NAN'}]"
338
+ Stays hot when in use.,"[{'text': 'use', 'label': 'NAN'}]"
339
+ Was returned.,"[{'text': 'was', 'label': 'NAN'}]"
340
+ The sender is not giving me the option to return it either.,"[{'text': 'option', 'label': 'NAN'}]"
341
+ I'm calling amazon.,"[{'text': 'amazon', 'label': 'NAN'}]"
342
+ The one works.,"[{'text': 'works', 'label': 'NAN'}]"
343
+ There's a numerous amount of deep scratches.,"[{'text': 'scratches', 'label': 'NAN'}]"
344
+ & there's still photos from the orinial user that I cannot delete,"[{'text': 'user', 'label': 'NAN'}]"
345
+ "Yes, I was very glad to have my ""old"" phone back.","[{'text': 'phone', 'label': 'ASPECT'}]"
346
+ "Good at the time I use them, but now they are not needed.","[{'text': 'time', 'label': 'NAN'}]"
347
+ She did not have permission or authority (our fault) to purchase it.,"[{'text': 'fault', 'label': 'NAN'}]"
348
+ To use the phone it had to be plugged in.,"[{'text': 'phone', 'label': 'ASPECT'}]"
349
+ I want AT&T phone,"[{'text': 'phone', 'label': 'ASPECT'}]"
350
+ Deal with it.,"[{'text': 'deal', 'label': 'NAN'}]"
351
+ Keep in mind- these are OLD ELECTRONIC DEVICES!,"[{'text': 'devices', 'label': 'NAN'}]"
352
+ Did you really think they would work just like new?!,"[{'text': 'work', 'label': 'NAN'}]"
353
+ Its hinge is strong and durable; I never had it break or cease to function.,"[{'text': 'function', 'label': 'NAN'}]"
354
+ The paint never chipped (except when I dropped it) or lost its color.,"[{'text': 'color', 'label': 'NAN'}]"
355
+ Why is this a best seller in 2018?,"[{'text': 'seller', 'label': 'NAN'}]"
356
+ "When I took them to Verizon to have them activated, they could not activate them...they are only compatible with TMobile, and one other signal.","[{'text': 'signal', 'label': 'NAN'}]"
357
+ I do not want anyone else getting screwed over.,"[{'text': 'anyone', 'label': 'NAN'}]"
358
+ These dinky phones were po,"[{'text': 'phones', 'label': 'ASPECT'}]"
359
+ Anyway... SUCKS and never again!!!,"[{'text': 'sucks', 'label': 'NAN'}]"
360
+ It didn't work when received.,"[{'text': 'work', 'label': 'NAN'}]"
361
+ I wanted it because of the slim design.,"[{'text': 'design', 'label': 'NAN'}]"
362
+ It wouldn't charge.,"[{'text': 'charge', 'label': 'NAN'}]"
363
+ Arrived in good shape and works just fine!,"[{'text': 'shape', 'label': 'NAN'}]"
364
+ Nice and slim fits in my jeans pocket nicely.,"[{'text': 'nice', 'label': 'NAN'}]"
365
+ Tried to return to the seller: Dealscaly but they refused.,"[{'text': 'seller', 'label': 'NAN'}]"
366
+ She loves her `new' (reconditioned) phone!,"[{'text': 'phone', 'label': 'ASPECT'}]"
367
+ I received it in a great amount of time.,"[{'text': 'time', 'label': 'NAN'}]"
368
+ I am more that satisfied and look for to using them possibly in the future.,"[{'text': 'the future', 'label': 'NAN'}]"
369
+ The phone was fine.,"[{'text': 'phone', 'label': 'ASPECT'}]"
370
+ We had it turned on and contacts switched over.,"[{'text': 'contacts', 'label': 'NAN'}]"
371
+ Would have been happier to have just switched out the backing and charger.,"[{'text': 'charger', 'label': 'ASPECT'}]"
372
+ "Additionally, due to time constraints I did not attempt to take advantage of any guarantees.","[{'text': 'time', 'label': 'NAN'}]"
373
+ I currently own an ALLTEL Motorola V3c.,"[{'text': 'motorola', 'label': 'NAN'}]"
374
+ The V3c is nothing like the V3m.,"[{'text': 'nothing', 'label': 'NAN'}]"
375
+ I wish I could remove that star.,"[{'text': 'star', 'label': 'NAN'}]"
376
+ OK for me as I like silver.,"[{'text': 'ok', 'label': 'NAN'}]"
377
+ Always reliable and small enough to fit in the smallest pockets!,"[{'text': 'pockets', 'label': 'NAN'}]"
378
+ Dead battery basically worthless,"[{'text': 'battery', 'label': 'ASPECT'}]"
379
+ I replaced my older RAZR V3m that I dropped on concrete with this exact duplicate.,"[{'text': 'razr', 'label': 'NAN'}]"
380
+ I originally bought this phone 6 or 7 yrs.,"[{'text': 'phone', 'label': 'ASPECT'}]"
381
+ I had to pray over it to get it to last the additional year.,"[{'text': 'year', 'label': 'NAN'}]"
382
+ Battery runs out so fast.,"[{'text': 'battery', 'label': 'ASPECT'}]"
383
+ I need to charge it everyday even I didn't make any calls and receive any calls.,"[{'text': 'calls', 'label': 'ASPECT'}]"
384
+ I needed a simple but uesful phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
385
+ However it took about 6 months to break.,"[{'text': 'months', 'label': 'NAN'}]"
386
+ Got here very fast too!,"[{'text': 'got', 'label': 'NAN'}]"
387
+ I got this to replaced a device I had (lost?),"[{'text': 'device', 'label': 'ASPECT'}]"
388
+ Great,"[{'text': 'great', 'label': 'NAN'}]"
389
+ I love my phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
390
+ But Verizon stopped that.,"[{'text': 'verizon', 'label': 'NAN'}]"
391
+ Excellent,"[{'text': 'excellent', 'label': 'NAN'}]"
392
+ i love my phone,"[{'text': 'phone', 'label': 'ASPECT'}]"
393
+ plus i have already dropped it over 6 times and its still good,"[{'text': 'times', 'label': 'NAN'}]"
394
+ works like it should.,"[{'text': 'works', 'label': 'NAN'}]"
395
+ thank you,"[{'text': 'thank you', 'label': 'NAN'}]"
396
+ Not the condition it was stated to be in.,"[{'text': 'condition', 'label': 'NAN'}]"
397
+ Battery isnt the best.,"[{'text': 'battery', 'label': 'ASPECT'}]"
398
+ Was dirty but worked fine.,"[{'text': 'was', 'label': 'NAN'}]"
399
+ You really can't get these anymore and we don't want the new kind at this time.,"[{'text': 'time', 'label': 'NAN'}]"
400
+ i will def recommend your store!,"[{'text': 'store', 'label': 'NAN'}]"
401
+ thank you again.,"[{'text': 'thank you', 'label': 'NAN'}]"
402
+ "the phone is awesome, amazing, and easy to read.","[{'text': 'phone', 'label': 'ASPECT'}]"
403
+ "I still need to upgrade , but my razr needed replacing.","[{'text': 'razr', 'label': 'NAN'}]"
404
+ Actually it doesn't even deserve 1 star.,"[{'text': 'star', 'label': 'NAN'}]"
405
+ The V3m is still one of the best non-smart phones available.,"[{'text': 'phones', 'label': 'ASPECT'}]"
406
+ it does the job.,"[{'text': 'job', 'label': 'NAN'}]"
407
+ Thank you!,"[{'text': 'thank you', 'label': 'NAN'}]"
408
+ "Terrible responsiveness, show shipment, defective product.","[{'text': 'product', 'label': 'NAN'}]"
409
+ Does not work!!,"[{'text': 'work', 'label': 'NAN'}]"
410
+ a piece of junk!!,"[{'text': 'junk', 'label': 'NAN'}]"
411
+ from Verizon.,"[{'text': 'verizon', 'label': 'NAN'}]"
412
+ I am not affiliated with anyone.,"[{'text': 'anyone', 'label': 'NAN'}]"
413
+ "On returning, that phone was run over...bummer!","[{'text': 'phone', 'label': 'ASPECT'}]"
414
+ "Replaced 2 more, Yup, his was accidentally dumped into a glass of fortified grapefruit juice.","[{'text': 'glass', 'label': 'NAN'}]"
415
+ It has more capabilities also but being financially restricted I just keep expenses as minimal as possible.,"[{'text': 'capabilities', 'label': 'NAN'}]"
416
+ I got this for my mom and she's thrilled.,"[{'text': 'my mom', 'label': 'NAN'}]"
417
+ It has a great feel to it as well.,"[{'text': 'feel', 'label': 'NAN'}]"
418
+ It is Very small.,"[{'text': 'very', 'label': 'NAN'}]"
419
+ Totally programmable and very easy to understand and manage online.,"[{'text': 'online', 'label': 'NAN'}]"
420
+ Can’t set in service,"[{'text': 'service', 'label': 'ASPECT'}]"
421
+ "Other than that, everything is great!","[{'text': 'everything', 'label': 'NAN'}]"
422
+ Thanks a lot..,"[{'text': 'thanks', 'label': 'NAN'}]"
423
+ Garbage,"[{'text': 'garbage', 'label': 'NAN'}]"
424
+ It was conveniently returned without problems,"[{'text': 'problems', 'label': 'NAN'}]"
425
+ I sent the phone back pronto.,"[{'text': 'phone', 'label': 'ASPECT'}]"
426
+ "Maybe I am dreaming, expecting communication.","[{'text': 'communication', 'label': 'NAN'}]"
427
+ Please do clean business.,"[{'text': 'business', 'label': 'NAN'}]"
428
+ Do not sell used one as a new.,"[{'text': 'do not', 'label': 'NAN'}]"
429
+ I would definitely order from you again!,"[{'text': 'order', 'label': 'NAN'}]"
430
+ "After getting totally fed up with Tracfone, I bought this.","[{'text': 'tracfone', 'label': 'NAN'}]"
431
+ "It's not fancy, but it serves its purpose well.","[{'text': 'purpose', 'label': 'NAN'}]"
432
+ "When it arrived and I put it in the handset, it displayed the same malfunction.","[{'text': 'handset', 'label': 'NAN'}]"
433
+ "REJECTED - INCOMPLETE KIT The original item will be shipped back to you unrepaired.""","[{'text': 'item', 'label': 'NAN'}]"
434
+ "That message, though, was completely erroneous.","[{'text': 'message', 'label': 'NAN'}]"
435
+ Nothing was shipped back to me.,"[{'text': 'nothing', 'label': 'NAN'}]"
436
+ "It was followed by ""We received your Samsung SCH-U350MBPVZW on 11/23/2010 at 12:41 EST"".","[{'text': 'samsung', 'label': 'NAN'}]"
437
+ Not the best but that is not what I purchased the phone for.,"[{'text': 'phone', 'label': 'ASPECT'}]"
438
+ I'm most likely going to buy the same phone to replace it.,"[{'text': 'phone', 'label': 'ASPECT'}]"
439
+ I get an excellent signal elsewhere.,"[{'text': 'signal', 'label': 'NAN'}]"
440
+ It really is a phenomenal device.,"[{'text': 'device', 'label': 'ASPECT'}]"
441
+ The case is so smooth and tapered it is very hard to grasp to flip open.,"[{'text': 'case', 'label': 'ASPECT'}]"
442
+ The keys are also hard to push you have to press just right.,"[{'text': 'keys', 'label': 'NAN'}]"
443
+ Very happy with your products.,"[{'text': 'products', 'label': 'NAN'}]"
444
+ "But, this one time, I was not satisfied.","[{'text': 'time', 'label': 'NAN'}]"
445
+ The problem I had is it would not stay charged.,"[{'text': 'problem', 'label': 'NAN'}]"
446
+ She had no problems with it.,"[{'text': 'problems', 'label': 'NAN'}]"
447
+ Thanks for sending so promptly.,"[{'text': 'thanks', 'label': 'NAN'}]"
448
+ Thanks again,"[{'text': 'thanks', 'label': 'NAN'}]"
449
+ All in all a grat inexpensive phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
450
+ verizon acct.,"[{'text': 'verizon', 'label': 'NAN'}]"
451
+ this is not the phone for you.,"[{'text': 'phone', 'label': 'ASPECT'}]"
452
+ get a non pre-paid phone to add to your acct.,"[{'text': 'phone', 'label': 'ASPECT'}]"
453
+ good phone,"[{'text': 'phone', 'label': 'ASPECT'}]"
454
+ very low battery consumption,"[{'text': 'battery', 'label': 'ASPECT'}]"
455
+ Thank You,"[{'text': 'thank you', 'label': 'NAN'}]"
456
+ Piece of junk.,"[{'text': 'junk', 'label': 'NAN'}]"
457
+ Don't buy.,"[{'text': 'buy', 'label': 'NAN'}]"
458
+ wrong item,"[{'text': 'item', 'label': 'NAN'}]"
459
+ 1) I ordered two identical items.,"[{'text': 'items', 'label': 'NAN'}]"
460
+ I received one item exactly as ordered and one with an extra attachment.,"[{'text': 'item', 'label': 'NAN'}]"
461
+ It makes me want the 2nd attachment for the 2nd phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
462
+ I was amazed by how fast my phone was delivered.,"[{'text': 'phone', 'label': 'ASPECT'}]"
463
+ Thanks.,"[{'text': 'thanks', 'label': 'NAN'}]"
464
+ It is difficult to open and the sound is terrible.,"[{'text': 'sound', 'label': 'NAN'}]"
465
+ And then it starts to sound like everyone you call is cutting in and out.,"[{'text': 'everyone', 'label': 'NAN'}]"
466
+ You cant get just talk anymore.,"[{'text': 'talk', 'label': 'NAN'}]"
467
+ When i first looked at the phone it was so bright it made my great grandma go blind.,"[{'text': 'phone', 'label': 'ASPECT'}]"
468
+ Update.....,"[{'text': 'update', 'label': 'NAN'}]"
469
+ We have 2 of these (my husband and I each have one) that we use in rural Alaska and they have lasted and lasted and lasted.,"[{'text': 'my husband', 'label': 'NAN'}]"
470
+ "We have carried these while doing firewood, in and out of the boat in the ocean air, and dropped them more times than I can count.","[{'text': 'times', 'label': 'NAN'}]"
471
+ "Therefore, the phone will not work with AT&T.","[{'text': 'phone', 'label': 'ASPECT'}]"
472
+ "Then I waited to see if any msg will come later, like the other buyer said in his/her comment.","[{'text': 'buyer', 'label': 'NAN'}]"
473
+ "Anyways, it's a good deal.","[{'text': 'deal', 'label': 'NAN'}]"
474
+ #NAME?,"[{'text': 'is', 'label': 'NAN'}]"
475
+ Cons: - Doesn't withstand hammers?,"[{'text': 'cons', 'label': 'NAN'}]"
476
+ It is compact and simple to use.,"[{'text': 'simple', 'label': 'NAN'}]"
477
+ 1 meter and no harm was made (not even a small scratch).,"[{'text': 'scratch', 'label': 'NAN'}]"
478
+ Everyone is happy,"[{'text': 'everyone', 'label': 'NAN'}]"
479
+ I received the GoPhone very quickly but unfortunately I hasnt been very reliable.,"[{'text': 'gophone', 'label': 'NAN'}]"
480
+ Delivery was excellent - arrived early.,"[{'text': 'delivery', 'label': 'NAN'}]"
481
+ ATT is a real PITA!,"[{'text': 'att', 'label': 'NAN'}]"
482
+ Thanks.,"[{'text': 'thanks', 'label': 'NAN'}]"
483
+ Long battery life.,"[{'text': 'life', 'label': 'NAN'}]"
484
+ Also cost is just right.,"[{'text': 'cost', 'label': 'NAN'}]"
485
+ I do not have any problem whatsoever.,"[{'text': 'problem', 'label': 'NAN'}]"
486
+ Thank you.,"[{'text': 'thank you', 'label': 'NAN'}]"
487
+ Customer.,"[{'text': 'customer', 'label': 'NAN'}]"
488
+ Works great,"[{'text': 'works great', 'label': 'NAN'}]"
489
+ I love the different alarms that I need at different times.,"[{'text': 'times', 'label': 'NAN'}]"
490
+ "First, I never got to use them because I only received one and, it wasn't new, as advertised, and it didn't come with everything needed to activate.","[{'text': 'everything', 'label': 'NAN'}]"
491
+ "So, I really can't give a high rating or any rating really.","[{'text': 'rating', 'label': 'NAN'}]"
492
+ "Yes, this is a really ancient phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
493
+ a great buy :),"[{'text': 'buy', 'label': 'NAN'}]"
494
+ This item was not what it seem to be and I was very disappointed with the item.I didnt even get an earpiece,"[{'text': 'item', 'label': 'NAN'}]"
495
+ I tried to call from several places and it's still the same.,"[{'text': 'places', 'label': 'NAN'}]"
496
+ Mom only used it for phone and loved it.,"[{'text': 'phone', 'label': 'ASPECT'}]"
497
+ "This is a great phone, i was a little skepticle at first, but it does just what i need it to do.","[{'text': 'phone', 'label': 'ASPECT'}]"
498
+ It is OK .not what I hoped for.,"[{'text': 'ok', 'label': 'NAN'}]"
499
+ I needed a phone only.,"[{'text': 'phone', 'label': 'ASPECT'}]"
500
+ perfect,"[{'text': 'perfect', 'label': 'NAN'}]"
501
+ Got a cheap ginsu steak knife I was taking to Goodwill and bent the tip.,"[{'text': 'got', 'label': 'NAN'}]"
502
+ I was able to pursuade the SIM out.,"[{'text': 'sim', 'label': 'NAN'}]"
503
+ Initially bought back when my original AT&T Samsung Impression went kaput.,"[{'text': 'samsung', 'label': 'NAN'}]"
504
+ Ruggedness was excellent: I am notorious for dropping my phones.,"[{'text': 'phones', 'label': 'ASPECT'}]"
505
+ "When I did charge it, I'd charge it overnight (8~hours) and use it until it was about dead again.","[{'text': 'charge', 'label': 'NAN'}]"
506
+ "It would last for days though, I am positive on that.","[{'text': 'days', 'label': 'NAN'}]"
507
+ "*Not sure about if you're seeing this at the $27 price I am now, but I can honestly say I'd hold off on it for that price.","[{'text': 'price', 'label': 'ASPECT'}]"
508
+ It did take at least 10 minutes to activate.,"[{'text': 'minutes', 'label': 'NAN'}]"
509
+ "But, smartphones are getting cheaper and cheaper...","[{'text': 'smartphones', 'label': 'NAN'}]"
510
+ "It has what it calls ""Apps"" was are a few limited and unimaginative mini-programs.","[{'text': 'apps', 'label': 'ASPECT'}]"
511
+ An iPhone it's not.,"[{'text': 'iphone', 'label': 'NAN'}]"
512
+ Cons: 1.,"[{'text': 'cons', 'label': 'NAN'}]"
513
+ I'm a student so I always keep my phone on vibrate (in fear that my phone will go off during lecture).,"[{'text': 'phone', 'label': 'ASPECT'}]"
514
+ Sometimes even if I'm standing outside I cannot get good reception.,"[{'text': 'reception', 'label': 'NAN'}]"
515
+ If it lasts me six months I'll be happy.,"[{'text': 'months', 'label': 'NAN'}]"
516
+ "It makes calls, it takes calls.","[{'text': 'calls', 'label': 'ASPECT'}]"
517
+ "If it does anything fancy, I don't know or care.","[{'text': 'anything', 'label': 'NAN'}]"
518
+ A fine choice for a mild technophobe like myself.,"[{'text': 'choice', 'label': 'NAN'}]"
519
+ at&te lost is totally off my list forever.,"[{'text': 'list', 'label': 'NAN'}]"
520
+ I lost over $125 to the scum because we do not use the phone except for emergencies.,"[{'text': 'phone', 'label': 'ASPECT'}]"
521
+ I told them to go suck an egg and I will go to great lenght to avoid anything to help at&t.,"[{'text': 'anything', 'label': 'NAN'}]"
522
+ I'll say it's just for emergency.,"[{'text': 'emergency', 'label': 'NAN'}]"
523
+ Its a good phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
524
+ Poor coverage.,"[{'text': 'coverage', 'label': 'NAN'}]"
525
+ Its a phone that is alas...just a phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
526
+ "So its a phone that works as a phone should work, and for $17 if I lose it ill just get another..","[{'text': 'phone', 'label': 'ASPECT'}]"
527
+ i have been unable to activate or use the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
528
+ Samsung could take a lesson from AT&T.,"[{'text': 'samsung', 'label': 'NAN'}]"
529
+ This was not a user friendly startup.,"[{'text': 'user', 'label': 'NAN'}]"
530
+ I have yet to find that the phone is very useful.,"[{'text': 'phone', 'label': 'ASPECT'}]"
531
+ It was then I realized the essential battery was [gasp!],"[{'text': 'battery', 'label': 'ASPECT'}]"
532
+ Not in package.,"[{'text': 'package', 'label': 'NAN'}]"
533
+ Not in phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
534
+ Not in shipping box.,"[{'text': 'box', 'label': 'NAN'}]"
535
+ If you are looking for a small AT&T phone then look no further.,"[{'text': 'phone', 'label': 'ASPECT'}]"
536
+ The price is also good.,"[{'text': 'price', 'label': 'ASPECT'}]"
537
+ Didn't come with charger.,"[{'text': 'charger', 'label': 'ASPECT'}]"
538
+ This phone is great and I'm enjoying using it.,"[{'text': 'phone', 'label': 'ASPECT'}]"
539
+ what a deal!!!!,"[{'text': 'deal', 'label': 'NAN'}]"
540
+ "2g, doesn't work","[{'text': 'work', 'label': 'NAN'}]"
541
+ No shipping and no free airtime.,"[{'text': 'shipping', 'label': 'NAN'}]"
542
+ Just as pictured and it worked fine.,"[{'text': 'fine', 'label': 'NAN'}]"
543
+ "It didn't pick up service very well, though.","[{'text': 'service', 'label': 'ASPECT'}]"
544
+ Hold up very well and are easy to use all the functions.,"[{'text': 'functions', 'label': 'NAN'}]"
545
+ Thsi phone is great!,"[{'text': 'phone', 'label': 'ASPECT'}]"
546
+ Good GoPhone.,"[{'text': 'gophone', 'label': 'NAN'}]"
547
+ This was a good sale.,"[{'text': 'sale', 'label': 'NAN'}]"
548
+ I think is a new one but its use,"[{'text': 'use', 'label': 'NAN'}]"
549
+ "Good phone, and works fine.","[{'text': 'phone', 'label': 'ASPECT'}]"
550
+ JUNK!,"[{'text': 'junk', 'label': 'NAN'}]"
551
+ Very small and screen is tiny.,"[{'text': 'screen', 'label': 'ASPECT'}]"
552
+ very small and light.,"[{'text': 'light', 'label': 'NAN'}]"
553
+ It is obviously a used and broken item.,"[{'text': 'item', 'label': 'NAN'}]"
554
+ What a shame it will go into history.,"[{'text': 'history', 'label': 'NAN'}]"
555
+ Technology has made it obsolete.,"[{'text': 'technology', 'label': 'NAN'}]"
556
+ I love its almost only text browsing.,"[{'text': 'browsing', 'label': 'NAN'}]"
557
+ "Service: So far, I have to say I am quite happy with it.","[{'text': 'service', 'label': 'ASPECT'}]"
558
+ It costs $.10/min to talk which gets deducted from your prepaid balance.,"[{'text': 'balance', 'label': 'NAN'}]"
559
+ "There is no exterior screen, making it that much more stable/energy efficient.","[{'text': 'screen', 'label': 'ASPECT'}]"
560
+ Crazy right?,"[{'text': 'right', 'label': 'NAN'}]"
561
+ I paid only $2.99 when it was on sale.,"[{'text': 'sale', 'label': 'NAN'}]"
562
+ The ring tone sound is not loud at all.,"[{'text': 'sound', 'label': 'NAN'}]"
563
+ Works now and then.,"[{'text': 'works', 'label': 'NAN'}]"
564
+ Don't expect too much from a cheap phone and you won't be disappointed.,"[{'text': 'phone', 'label': 'ASPECT'}]"
565
+ "In short, look elsewhere for a reliable phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
566
+ It works sometimes but not all the time.,"[{'text': 'time', 'label': 'NAN'}]"
567
+ I bought them on ebay and wasted my money.,"[{'text': 'money', 'label': 'ASPECT'}]"
568
+ i think it is worth the money and its fuctions are exactly what you pay for.,"[{'text': 'money', 'label': 'ASPECT'}]"
569
+ "You may be thinking, 'but it's an inexpensive phone?","[{'text': 'phone', 'label': 'ASPECT'}]"
570
+ Cover is very lose and moves side to side.,"[{'text': 'cover', 'label': 'NAN'}]"
571
+ It seems like it is a refurbished item but they say it is new.,"[{'text': 'item', 'label': 'NAN'}]"
572
+ I have ordered a second on and it does the same things.,"[{'text': 'things', 'label': 'NAN'}]"
573
+ Don't waste your money.,"[{'text': 'money', 'label': 'ASPECT'}]"
574
+ He didn't want a smartphone.,"[{'text': 'smartphone', 'label': 'NAN'}]"
575
+ This is perfect for the older crowd who just don't want to mess with learning something new.,"[{'text': 'something', 'label': 'NAN'}]"
576
+ I threw the box away.,"[{'text': 'box', 'label': 'NAN'}]"
577
+ It's a good phone for me,"[{'text': 'phone', 'label': 'ASPECT'}]"
578
+ This is the best phone I have ever owned!,"[{'text': 'phone', 'label': 'ASPECT'}]"
579
+ "It is light plastic and not as heavy or as rubberized as I was expecting, but, all in all, it will hold up quite well.","[{'text': 'plastic', 'label': 'NAN'}]"
580
+ It arrived on time.,"[{'text': 'time', 'label': 'NAN'}]"
581
+ He's not interested in smartphones.,"[{'text': 'smartphones', 'label': 'NAN'}]"
582
+ Anyway what I wanted was a tough phone with 3G.,"[{'text': 'phone', 'label': 'ASPECT'}]"
583
+ "This was done to get good adhesion for step two, superglue.","[{'text': 'step', 'label': 'NAN'}]"
584
+ The soft keys are programmable and I have made them match my old tundra.,"[{'text': 'keys', 'label': 'NAN'}]"
585
+ That is a real plus.,"[{'text': 'plus', 'label': 'NAN'}]"
586
+ It consistently performs very poorly as far as reception goes.,"[{'text': 'reception', 'label': 'NAN'}]"
587
+ I've had to terminate calls because I couldn't hear the ther party well enough to continue.,"[{'text': 'calls', 'label': 'ASPECT'}]"
588
+ "As a phone, it leaves a lot to be desired.","[{'text': 'phone', 'label': 'ASPECT'}]"
589
+ I had an absolutely terrible experience with the original Rugby..,"[{'text': 'experience', 'label': 'NAN'}]"
590
+ "So, I was forced into The Rugby II.","[{'text': 'ii', 'label': 'NAN'}]"
591
+ It will take pretty decent pictures when it's folded.,"[{'text': 'pictures', 'label': 'ASPECT'}]"
592
+ "If I'm suddenly feeling lighter, I know I've left my phone somewhere.","[{'text': 'phone', 'label': 'ASPECT'}]"
593
+ "You'll need a heavy duty case, too.","[{'text': 'case', 'label': 'ASPECT'}]"
594
+ I use a magnetic one made by body glove.,"[{'text': 'body', 'label': 'NAN'}]"
595
+ with no difficulty.,"[{'text': 'difficulty', 'label': 'NAN'}]"
596
+ Don't try to voice dial 911.,"[{'text': 'voice', 'label': 'NAN'}]"
597
+ lol).,"[{'text': 'lol', 'label': 'NAN'}]"
598
+ "It took awhile for me to get used to the Rugbys after having a more ""consumer-ized"" phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
599
+ "Now that my faith in Samsung has turned slightly for the better again, I'm getting a Samsung WEP570 bluetooth earpiece.","[{'text': 'samsung', 'label': 'NAN'}]"
600
+ "I'll review that soon, too.","[{'text': 'review', 'label': 'NAN'}]"
601
+ And that kind of defeats the purpose of texting.,"[{'text': 'purpose', 'label': 'NAN'}]"
602
+ "After 18 mos of rugged use, my rugby 2 is starting to freeze up.","[{'text': 'use', 'label': 'NAN'}]"
603
+ This is a good phone if all you want is a phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
604
+ The manual is not very useful and is confusing at times.,"[{'text': 'times', 'label': 'NAN'}]"
605
+ My complaints are: 1.,"[{'text': 'complaints', 'label': 'NAN'}]"
606
+ The instructions were wrong and the manual was wrong.,"[{'text': 'instructions', 'label': 'NAN'}]"
607
+ Both said to turn the screw the wrong way!!!,"[{'text': 'way', 'label': 'NAN'}]"
608
+ "For instance, once I accidentally left it powered on and inside my pants pocket while those pants were being machine washed.","[{'text': 'pocket', 'label': 'NAN'}]"
609
+ "When I discovered the phone, after the wash machine was finished, the phone was still on.","[{'text': 'phone', 'label': 'ASPECT'}]"
610
+ I have noticed that recently it goes through cycles of annoyances: turning itself off or restarting in the middle of a conversion.,"[{'text': 'the middle', 'label': 'NAN'}]"
611
+ And date it still takes all daily the punishment I give it.,"[{'text': 'date', 'label': 'NAN'}]"
612
+ "I used RTV Black Silicone gasket goop, but I am sure any silicone will do nicely.","[{'text': 'black', 'label': 'NAN'}]"
613
+ The rugged description sold them.,"[{'text': 'description', 'label': 'NAN'}]"
614
+ We also like to customize our ringtones and that works out fine.,"[{'text': 'ringtones', 'label': 'NAN'}]"
615
+ I can't speak for any of the other features since we really don't care about them.,"[{'text': 'features', 'label': 'NAN'}]"
616
+ "I often answer it with wet, muddy gloves without a problem.","[{'text': 'problem', 'label': 'NAN'}]"
617
+ My customers and potential customers know they can always get a hold of me.,"[{'text': 'customers', 'label': 'NAN'}]"
618
+ ATT could certainly learn from them.,"[{'text': 'att', 'label': 'NAN'}]"
619
+ It is rugged and can take a good drop and take getting wet.,"[{'text': 'drop', 'label': 'NAN'}]"
620
+ Now days with the new D.O.T.,"[{'text': 'days', 'label': 'NAN'}]"
621
+ "I promptly called AT&T and spoke with a representative who recommended the Sumsung Rugby as one of the most ""rugged"" phones they have.","[{'text': 'phones', 'label': 'ASPECT'}]"
622
+ "I gladly purchased the phone for about $50.00 as I was looking forward to having a phone that was able to take some ""wear and tear"".","[{'text': 'phone', 'label': 'ASPECT'}]"
623
+ One week and it broke in two.,"[{'text': 'week', 'label': 'NAN'}]"
624
+ I do like the simplicity of the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
625
+ The samsung PC studio is a joke.,"[{'text': 'pc', 'label': 'NAN'}]"
626
+ And if the messages are more than a couple sentences then you cannot print them out.,"[{'text': 'messages', 'label': 'NAN'}]"
627
+ I would not recommend this phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
628
+ I even went to the AT&T store and they could not help either.,"[{'text': 'store', 'label': 'NAN'}]"
629
+ It seems like it is so until you start endlessly having to decline adding services.,"[{'text': 'services', 'label': 'NAN'}]"
630
+ Were we not stuck with AT&T due to location this would certainly have been the final straw.,"[{'text': 'location', 'label': 'NAN'}]"
631
+ It's been dropped dozens of times and this past weekend it was dropped into a pool.,"[{'text': 'times', 'label': 'NAN'}]"
632
+ It still works as good as it did on day one.,"[{'text': 'day', 'label': 'NAN'}]"
633
+ It was working fine so far.,"[{'text': 'fine', 'label': 'NAN'}]"
634
+ I never abused or dropped the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
635
+ Now the dealer wants me to buy another?,"[{'text': 'dealer', 'label': 'NAN'}]"
636
+ This is a piece of junk.,"[{'text': 'junk', 'label': 'NAN'}]"
637
+ Samsung advertises the a837 as 'Rugged Military Spec.,"[{'text': 'samsung', 'label': 'NAN'}]"
638
+ I suggest you find another phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
639
+ everything my old one was.,"[{'text': 'everything', 'label': 'NAN'}]"
640
+ Long battery life.,"[{'text': 'life', 'label': 'NAN'}]"
641
+ "Bluetooth works great, pairs well with my Bose BT-2 and Plantronics Voyager Legend.","[{'text': 'bluetooth', 'label': 'NAN'}]"
642
+ "The earphone volume seems too low initially, but now seems fine.","[{'text': 'volume', 'label': 'NAN'}]"
643
+ "I either have gotten use to it or it may be ""broken-in"".","[{'text': 'use', 'label': 'NAN'}]"
644
+ "It didn't seem random...rather, it seemed to happen when the phone rang and I attempted to pick it up.","[{'text': 'phone', 'label': 'ASPECT'}]"
645
+ Rugby II SGH A847 .,"[{'text': 'ii', 'label': 'NAN'}]"
646
+ "It works in US, over Europe even in Japan.","[{'text': 'us', 'label': 'NAN'}]"
647
+ What a terrible phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
648
+ Just crap.,"[{'text': 'crap', 'label': 'NAN'}]"
649
+ . . those who have had open faced phones know how they tend to dial unexpectedly!,"[{'text': 'phones', 'label': 'ASPECT'}]"
650
+ "The physical features the website displayed were the ruggedized body which could withstand shock, humidity, high temperatures, resist dirt, and repel rain.","[{'text': 'body', 'label': 'NAN'}]"
651
+ T9 is suppose to be faster because it is suppose to predict the text you are going to write.,"[{'text': 'text', 'label': 'NAN'}]"
652
+ I can understand now why these phone are supposedly rugged and shockproof.,"[{'text': 'phone', 'label': 'ASPECT'}]"
653
+ I managed to ditch this clunker just before my 30-day trial period ended.,"[{'text': 'period', 'label': 'NAN'}]"
654
+ "I guess many of you love your Rugby phones, and I am glad you had better experiences with yours than I did with either of the two I tried.","[{'text': 'phones', 'label': 'ASPECT'}]"
655
+ "It landed on the hinge, broke to pieces and is NOT covered under warrantee.","[{'text': 'not', 'label': 'NAN'}]"
656
+ I carry it in a tool belt or in a leather pouch on my belt.,"[{'text': 'tool', 'label': 'NAN'}]"
657
+ "I am sure I could break it if I wanted to, but it is by far the most durable phone I have had.","[{'text': 'phone', 'label': 'ASPECT'}]"
658
+ "Over all, a good phone but hoping to get a more durable phone soon.","[{'text': 'phone', 'label': 'ASPECT'}]"
659
+ The speakerphone is nice and loud.,"[{'text': 'speakerphone', 'label': 'NAN'}]"
660
+ It would be nice if the push to talk button could be disabled; it's easy to hit by accident.,"[{'text': 'button', 'label': 'NAN'}]"
661
+ "It's made to call people, not to get dropped on concrete.","[{'text': 'people', 'label': 'NAN'}]"
662
+ I have not intention of ever using PTT anyway.,"[{'text': 'ptt', 'label': 'NAN'}]"
663
+ Horrible reception.,"[{'text': 'reception', 'label': 'NAN'}]"
664
+ Dropped Calls 6.,"[{'text': 'calls', 'label': 'ASPECT'}]"
665
+ Also it has begun to drop calls.,"[{'text': 'calls', 'label': 'ASPECT'}]"
666
+ Helped but still have a problem.,"[{'text': 'problem', 'label': 'NAN'}]"
667
+ Oh how I'd like to have a Razor phone!!!,"[{'text': 'phone', 'label': 'ASPECT'}]"
668
+ "Click on ""Create Message"" 4.","[{'text': 'message', 'label': 'NAN'}]"
669
+ Compose your text.,"[{'text': 'text', 'label': 'NAN'}]"
670
+ "BUT, if it doesn't work properly, continue here: 9.","[{'text': 'but', 'label': 'NAN'}]"
671
+ Scroll down to choice no.,"[{'text': 'choice', 'label': 'NAN'}]"
672
+ Find your text in the outbox and select it 14.,"[{'text': 'text', 'label': 'NAN'}]"
673
+ We had the phone approx.,"[{'text': 'phone', 'label': 'ASPECT'}]"
674
+ Still works with the crack.,"[{'text': 'crack', 'label': 'NAN'}]"
675
+ THANK SO MUCH!!,"[{'text': 'so', 'label': 'NAN'}]"
676
+ No battery.,"[{'text': 'battery', 'label': 'ASPECT'}]"
677
+ I will use it for several months and resale it,"[{'text': 'months', 'label': 'NAN'}]"
678
+ That's more then I paid for the phone!,"[{'text': 'phone', 'label': 'ASPECT'}]"
679
+ I guess I should be thankful the headset is only $20.,"[{'text': 'headset', 'label': 'NAN'}]"
680
+ "Samsung, you let me down!","[{'text': 'samsung', 'label': 'NAN'}]"
681
+ "The reception was extremely good, especially considering that she lives in rural West Virginia.","[{'text': 'reception', 'label': 'NAN'}]"
682
+ The marketing rep answered.,"[{'text': 'rep', 'label': 'NAN'}]"
683
+ I reported that I was not interested in the gift but the marketer was persistent.,"[{'text': 'gift', 'label': 'NAN'}]"
684
+ I finally hung up without activation.,"[{'text': 'activation', 'label': 'NAN'}]"
685
+ The next day I tried again and dialed *611.,"[{'text': 'day', 'label': 'NAN'}]"
686
+ I dialed the number and once again was greeted by a marketer who explained that I had won $500.,"[{'text': 'number', 'label': 'NAN'}]"
687
+ "Also, the camera is essentially useless.","[{'text': 'camera', 'label': 'ASPECT'}]"
688
+ "Similarly I've had friends ask why I didn't text them back, when I never received it.","[{'text': 'friends', 'label': 'NAN'}]"
689
+ You can't zoom in on pictures.,"[{'text': 'pictures', 'label': 'ASPECT'}]"
690
+ "Simply put, I'm about to upgrade phones though.","[{'text': 'phones', 'label': 'ASPECT'}]"
691
+ What the heck?!,"[{'text': 'heck', 'label': 'NAN'}]"
692
+ "I tried 2 other good batteries, no luck.","[{'text': 'batteries', 'label': 'NAN'}]"
693
+ I had to upgrade because my previous phone broke.,"[{'text': 'phone', 'label': 'ASPECT'}]"
694
+ What a mistake.,"[{'text': 'mistake', 'label': 'NAN'}]"
695
+ Hundreds of contacts.,"[{'text': 'contacts', 'label': 'NAN'}]"
696
+ An alert keeps going off for a calendar reminder that is passed and I can't delete it because it is not even listed!,"[{'text': 'calendar', 'label': 'NAN'}]"
697
+ I called for help and it is better but not great.,"[{'text': 'help', 'label': 'NAN'}]"
698
+ "Terrible, unpredictable product.","[{'text': 'product', 'label': 'NAN'}]"
699
+ Of the 10 or so cell phone we've experienced -- this is by far the dumbest.,"[{'text': 'phone', 'label': 'ASPECT'}]"
700
+ I miss my old slimmer Samsung.,"[{'text': 'samsung', 'label': 'NAN'}]"
701
+ 'still works great.,"[{'text': 'works great', 'label': 'NAN'}]"
702
+ BOTH of these two phones had this.,"[{'text': 'phones', 'label': 'ASPECT'}]"
703
+ "It shipped from South Carolina, and arrived in less than 3 days!","[{'text': 'days', 'label': 'NAN'}]"
704
+ More than 4500 miles in that short of time.,"[{'text': 'time', 'label': 'NAN'}]"
705
+ The phone itself was better than I expected it to be.,"[{'text': 'phone', 'label': 'ASPECT'}]"
706
+ It was NOT compatible.,"[{'text': 'not', 'label': 'NAN'}]"
707
+ "It is just OK, not great.","[{'text': 'ok', 'label': 'NAN'}]"
708
+ Good phone I just pray that it lasts because it is used,"[{'text': 'phone', 'label': 'ASPECT'}]"
709
+ Worked great with Verizon.,"[{'text': 'verizon', 'label': 'NAN'}]"
710
+ Quick shipping.,"[{'text': 'shipping', 'label': 'NAN'}]"
711
+ The fast shipping is always great.,"[{'text': 'shipping', 'label': 'NAN'}]"
712
+ They actually told me I could have done it at home.,"[{'text': 'home', 'label': 'NAN'}]"
713
+ Issues with screen failure.,"[{'text': 'issues', 'label': 'NAN'}]"
714
+ All I need for calls,"[{'text': 'calls', 'label': 'ASPECT'}]"
715
+ "Also, a great conversation piece.","[{'text': 'conversation', 'label': 'NAN'}]"
716
+ good phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
717
+ Love this phone,"[{'text': 'phone', 'label': 'ASPECT'}]"
718
+ Good Quality too,"[{'text': 'quality', 'label': 'ASPECT'}]"
719
+ Sucks!,"[{'text': 'sucks', 'label': 'NAN'}]"
720
+ Waste of money all it is is a paperweight !,"[{'text': 'money', 'label': 'ASPECT'}]"
721
+ He said that he would replace the phone for free and all I had to do was send back the 1st one.,"[{'text': 'phone', 'label': 'ASPECT'}]"
722
+ He said to keep both phones.,"[{'text': 'phones', 'label': 'ASPECT'}]"
723
+ This was a refurbished phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
724
+ fast service.,"[{'text': 'service', 'label': 'ASPECT'}]"
725
+ product is as stated.,"[{'text': 'product', 'label': 'NAN'}]"
726
+ It truly is rugged and I am very hard on phones.,"[{'text': 'phones', 'label': 'ASPECT'}]"
727
+ hard for old man to use,"[{'text': 'man', 'label': 'NAN'}]"
728
+ wife loves it,"[{'text': 'wife', 'label': 'NAN'}]"
729
+ Purchased used from NuTwo on Amazon.,"[{'text': 'amazon', 'label': 'NAN'}]"
730
+ "It was rated as in ""very good"" condition.","[{'text': 'condition', 'label': 'NAN'}]"
731
+ Highly recommend seller.,"[{'text': 'seller', 'label': 'NAN'}]"
732
+ Font adjustment is adequate.,"[{'text': 'font', 'label': 'NAN'}]"
733
+ Screens are clear and bright.,"[{'text': 'screens', 'label': 'NAN'}]"
734
+ I inserted a 16GB Sandisk MicroSD and it worked flawlessly for both pics and camcorder.,"[{'text': 'pics', 'label': 'NAN'}]"
735
+ I played with it briefly and seems to work o.k.,"[{'text': 'work', 'label': 'NAN'}]"
736
+ I plugged in mid-grade headphones and tunes sounded good.,"[{'text': 'headphones', 'label': 'NAN'}]"
737
+ "As for TargetWireless, I started by asking them a question.","[{'text': 'question', 'label': 'NAN'}]"
738
+ I ordered the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
739
+ They shipped it the same day.,"[{'text': 'day', 'label': 'NAN'}]"
740
+ Thank you!,"[{'text': 'thank you', 'label': 'NAN'}]"
741
+ I bought 10 phones from them.,"[{'text': 'phones', 'label': 'ASPECT'}]"
742
+ I'm please.,"[{'text': 'please', 'label': 'NAN'}]"
743
+ "However, it has numerous issues.","[{'text': 'issues', 'label': 'NAN'}]"
744
+ I hope this one last as long as the previous one did.,"[{'text': 'this one', 'label': 'NAN'}]"
745
+ Topic stated it had a few scratches but was readable.,"[{'text': 'scratches', 'label': 'NAN'}]"
746
+ "My assumption is that the phone is just fine,although I can't say for certain.","[{'text': 'phone', 'label': 'ASPECT'}]"
747
+ Because my assumption was that it came with a charger.,"[{'text': 'charger', 'label': 'ASPECT'}]"
748
+ Just make sure you get the damn charger.,"[{'text': 'charger', 'label': 'ASPECT'}]"
749
+ It is durable but I am on my 4th phone so I am not sure how rugged it is.,"[{'text': 'phone', 'label': 'ASPECT'}]"
750
+ love this phone,"[{'text': 'phone', 'label': 'ASPECT'}]"
751
+ Product as described.,"[{'text': 'product', 'label': 'NAN'}]"
752
+ Works perfect.,"[{'text': 'works', 'label': 'NAN'}]"
753
+ fast,"[{'text': 'fast', 'label': 'NAN'}]"
754
+ Vert good choice.,"[{'text': 'choice', 'label': 'NAN'}]"
755
+ Works as expected,"[{'text': 'works', 'label': 'NAN'}]"
756
+ "Okay, I must eat crow here.","[{'text': 'okay', 'label': 'NAN'}]"
757
+ My apologies to the vendor.,"[{'text': 'vendor', 'label': 'NAN'}]"
758
+ "It has push to talk, and is built to military specs.","[{'text': 'specs', 'label': 'NAN'}]"
759
+ Verizon took care of that though.,"[{'text': 'verizon', 'label': 'NAN'}]"
760
+ "If you just want a, you know, a *phone*, this is smart enough.","[{'text': 'phone', 'label': 'ASPECT'}]"
761
+ Scratch that.,"[{'text': 'scratch', 'label': 'NAN'}]"
762
+ It looked more like the $40 I paid rather than this $10 phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
763
+ Scratch that.,"[{'text': 'scratch', 'label': 'NAN'}]"
764
+ The worst is all the overlays (for punctuation and things like $ / etc.,"[{'text': 'things', 'label': 'NAN'}]"
765
+ "), which, if you have started losing your fine eyesight as I have, is murder, because it's very hard to see what's on each key.","[{'text': 'key', 'label': 'NAN'}]"
766
+ The downloading of website pages is a bit slow to complete.,"[{'text': 'pages', 'label': 'NAN'}]"
767
+ I could not browse or navigate through any site until the downloading completely finished.,"[{'text': 'site', 'label': 'NAN'}]"
768
+ KEYPAD: 1).,"[{'text': 'keypad', 'label': 'NAN'}]"
769
+ pressing 2 keys at once or pressing the wrong keys).,"[{'text': 'keys', 'label': 'NAN'}]"
770
+ Surprisingly I've had no trouble typing.,"[{'text': 'trouble', 'label': 'NAN'}]"
771
+ I didn't know that until I read the instruction booklet a few days later.,"[{'text': 'days', 'label': 'NAN'}]"
772
+ MUCH clearer than my 2 laptops' speakers that's for sure.,"[{'text': 'speakers', 'label': 'NAN'}]"
773
+ I also like that there's a character count which lets you know when you're about to hit the maximum (160 character per text).,"[{'text': 'text', 'label': 'NAN'}]"
774
+ "Quick, easy, and done in less than a half hour.","[{'text': 'hour', 'label': 'NAN'}]"
775
+ At first I was a little concerned about the small buttons but I got used to them very quickly.,"[{'text': 'buttons', 'label': 'NAN'}]"
776
+ Amazon is Amazing!,"[{'text': 'amazon', 'label': 'NAN'}]"
777
+ My unlocked HP Pre 3 messed up and I saw this for only $9.99 FREE PRIME shipping.,"[{'text': 'shipping', 'label': 'NAN'}]"
778
+ It was a steal.This phone is exactly what I needed.,"[{'text': 'phone', 'label': 'ASPECT'}]"
779
+ Which I think is achievable once I get used to the keyboard.,"[{'text': 'keyboard', 'label': 'NAN'}]"
780
+ It wasn't as slow as the other reviews led me to believe it would be.,"[{'text': 'reviews', 'label': 'NAN'}]"
781
+ I'll only use it in emergency situations.,"[{'text': 'emergency', 'label': 'NAN'}]"
782
+ "If I lose it or it get dropped into water, not that much of a loss.","[{'text': 'water', 'label': 'NAN'}]"
783
+ I attributed this to the rubberized hard cover.,"[{'text': 'cover', 'label': 'NAN'}]"
784
+ I like the phone and it does what it says it will do.,"[{'text': 'phone', 'label': 'ASPECT'}]"
785
+ Buttons are small but easy to get used to.,"[{'text': 'buttons', 'label': 'NAN'}]"
786
+ "There is a camera, its not an especially great one but its there if you need it.","[{'text': 'camera', 'label': 'ASPECT'}]"
787
+ It is very affordable and works great.,"[{'text': 'works great', 'label': 'NAN'}]"
788
+ Pros: 1.),"[{'text': 'pros', 'label': 'NAN'}]"
789
+ Very user-friendly (I find Samung phones easy to use) 3.),"[{'text': 'phones', 'label': 'ASPECT'}]"
790
+ Cons: 1.),"[{'text': 'cons', 'label': 'NAN'}]"
791
+ Poor sound quality 2.),"[{'text': 'sound quality', 'label': 'NAN'}]"
792
+ "With my Tracfone, they only cost 0.3 minute/text.","[{'text': 'tracfone', 'label': 'NAN'}]"
793
+ Good reception everywhere.,"[{'text': 'reception', 'label': 'NAN'}]"
794
+ Product as described.,"[{'text': 'product', 'label': 'NAN'}]"
795
+ Excellent seller.,"[{'text': 'seller', 'label': 'NAN'}]"
796
+ Would purchase from seller again.,"[{'text': 'seller', 'label': 'NAN'}]"
797
+ This is a great and affordable phone for calling and texting purposes.,"[{'text': 'phone', 'label': 'ASPECT'}]"
798
+ It is five stars for that.,"[{'text': 'stars', 'label': 'NAN'}]"
799
+ "Never used it since it doesn't work in Mexico, otherwise I guess it's fine for the U.S.","[{'text': 'fine', 'label': 'NAN'}]"
800
+ "After this, the phone couldn’t receive a signal… almost anywhere.","[{'text': 'phone', 'label': 'ASPECT'}]"
801
+ I was fine with this even putting aside that we’d had the produce well over a month and never got to use it.,"[{'text': 'month', 'label': 'NAN'}]"
802
+ "So, I called Net 10 yet again to explain the problem to them.","[{'text': 'problem', 'label': 'NAN'}]"
803
+ They said that they’d send another phone and never did.,"[{'text': 'phone', 'label': 'ASPECT'}]"
804
+ Instead they cancelled my service with them which is just fine as I would’ve done that anyway.,"[{'text': 'service', 'label': 'ASPECT'}]"
805
+ This is a great product!,"[{'text': 'product', 'label': 'NAN'}]"
806
+ Charger included.,"[{'text': 'charger', 'label': 'ASPECT'}]"
807
+ "Music, ringtones sound great!","[{'text': 'music', 'label': 'ASPECT'}]"
808
+ Can t beat price !,"[{'text': 'price', 'label': 'ASPECT'}]"
809
+ Good photos... don't print well for me.,"[{'text': 'photos', 'label': 'ASPECT'}]"
810
+ great work!,"[{'text': 'work', 'label': 'NAN'}]"
811
+ This is the best deal out there.,"[{'text': 'deal', 'label': 'NAN'}]"
812
+ Other than that it's fine.,"[{'text': 'fine', 'label': 'NAN'}]"
813
+ Delivery was a dream...,"[{'text': 'delivery', 'label': 'NAN'}]"
814
+ "Oh, what I would give to have that phone back!","[{'text': 'phone', 'label': 'ASPECT'}]"
815
+ The keyboard is also kind of weird.,"[{'text': 'keyboard', 'label': 'NAN'}]"
816
+ "All in all, this is not a good phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
817
+ It has all the features I was looking for!,"[{'text': 'features', 'label': 'NAN'}]"
818
+ I am happy with the product that I bought.,"[{'text': 'product', 'label': 'NAN'}]"
819
+ Highly recommend as a phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
820
+ it was defective the baterry didnt work.,"[{'text': 'work', 'label': 'NAN'}]"
821
+ I bought two of these from Amazon.,"[{'text': 'amazon', 'label': 'NAN'}]"
822
+ I never let it past 2 bars(out of 5) so I don't know how long it truly lasts.,"[{'text': 'bars', 'label': 'NAN'}]"
823
+ I lost my first one of these 2 days ago.,"[{'text': 'days', 'label': 'NAN'}]"
824
+ I had it over a year.,"[{'text': 'year', 'label': 'NAN'}]"
825
+ It has a good speakerphone.,"[{'text': 'speakerphone', 'label': 'NAN'}]"
826
+ No extra features.,"[{'text': 'features', 'label': 'NAN'}]"
827
+ Sometimes you have to ask them what it is a photo of.,"[{'text': 'photo', 'label': 'NAN'}]"
828
+ (the LG900g has a nice camera).,"[{'text': 'camera', 'label': 'ASPECT'}]"
829
+ "The browser, well, it's a browser.","[{'text': 'browser', 'label': 'NAN'}]"
830
+ Not a smartphone.,"[{'text': 'smartphone', 'label': 'NAN'}]"
831
+ I was really sad to lose my first one and really happy to find another one here at this price.,"[{'text': 'price', 'label': 'ASPECT'}]"
832
+ However it Is not without A few aggravating features.,"[{'text': 'features', 'label': 'NAN'}]"
833
+ I have purchased 3 of these phones.,"[{'text': 'phones', 'label': 'ASPECT'}]"
834
+ To my knowledge it has never actually butt-dialed anyone.,"[{'text': 'anyone', 'label': 'NAN'}]"
835
+ "I can lock it by just holding down the spacebar, but I often forget.","[{'text': 'lock', 'label': 'NAN'}]"
836
+ So why do I give them 5 stars?,"[{'text': 'stars', 'label': 'NAN'}]"
837
+ "As far as usability, the phone is great.","[{'text': 'phone', 'label': 'ASPECT'}]"
838
+ "First off, the deal is crazy.","[{'text': 'deal', 'label': 'NAN'}]"
839
+ "Secondly, I like Net10, because you can switch their calling plans hassle-free!","[{'text': 'plans', 'label': 'NAN'}]"
840
+ I mainly use them for backgrounds on the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
841
+ I love the querty keyboard.,"[{'text': 'keyboard', 'label': 'NAN'}]"
842
+ I was going to return it BUT it's almost $7.00 to do a UPS drop-off and $13.00 for UPS to pick it up.,"[{'text': 'but', 'label': 'NAN'}]"
843
+ This is a great starter phone for a kid.,"[{'text': 'phone', 'label': 'ASPECT'}]"
844
+ I absolutely do not want Tracfone.,"[{'text': 'tracfone', 'label': 'NAN'}]"
845
+ I am really upset about this right now.,"[{'text': 'right', 'label': 'NAN'}]"
846
+ It doesn't take one and you can activate it on Net10 without one.,"[{'text': 'net10', 'label': 'NAN'}]"
847
+ Thank you Shopcelldeals!,"[{'text': 'thank you', 'label': 'NAN'}]"
848
+ Junk.,"[{'text': 'junk', 'label': 'NAN'}]"
849
+ Net 10 couldn't even get it to work or load minutes.,"[{'text': 'minutes', 'label': 'NAN'}]"
850
+ One tech said it was used previously.,"[{'text': 'tech', 'label': 'NAN'}]"
851
+ I returned it to Amazon.,"[{'text': 'amazon', 'label': 'NAN'}]"
852
+ Will update further when I have a chance to play around with it!,"[{'text': 'a chance', 'label': 'NAN'}]"
853
+ Pleased with the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
854
+ Call clarity is excellent.,"[{'text': 'clarity', 'label': 'NAN'}]"
855
+ "bought this for my 7 yr old granddaughter , she loved it !","[{'text': 'bought this', 'label': 'NAN'}]"
856
+ lol,"[{'text': 'lol', 'label': 'NAN'}]"
857
+ Thanks Amazon!!!!!!!!,"[{'text': 'thanks', 'label': 'NAN'}]"
858
+ "Good ""slightly more than just basic"" phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
859
+ 3.5 headphone jack.,"[{'text': 'jack', 'label': 'NAN'}]"
860
+ I like it a lot.,"[{'text': 'a lot', 'label': 'NAN'}]"
861
+ Other phones it's 0.50.,"[{'text': 'phones', 'label': 'ASPECT'}]"
862
+ For me that was a big selling point.,"[{'text': 'point', 'label': 'NAN'}]"
863
+ It was very fustrating to figure out so hope this avoids this for the next customer.,"[{'text': 'customer', 'label': 'NAN'}]"
864
+ Bought it for my daughter.,"[{'text': 'my daughter', 'label': 'NAN'}]"
865
+ She can't have that happening in school.,"[{'text': 'school', 'label': 'NAN'}]"
866
+ It is much more convenient than my previous phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
867
+ The main selling poing for me was the keyboard.,"[{'text': 'keyboard', 'label': 'NAN'}]"
868
+ My old phone would not let me do this.,"[{'text': 'phone', 'label': 'ASPECT'}]"
869
+ It blows my mind that the phone is so inexpensive and yet does SO much.,"[{'text': 'phone', 'label': 'ASPECT'}]"
870
+ Delivered on time and was just as expecting.,"[{'text': 'time', 'label': 'NAN'}]"
871
+ I like simple phones and this works - for $10 what can you expect!,"[{'text': 'phones', 'label': 'ASPECT'}]"
872
+ Ok,"[{'text': 'ok', 'label': 'NAN'}]"
873
+ This phone is great!,"[{'text': 'phone', 'label': 'ASPECT'}]"
874
+ I just need a phone!,"[{'text': 'phone', 'label': 'ASPECT'}]"
875
+ The phone is great for texting!,"[{'text': 'phone', 'label': 'ASPECT'}]"
876
+ Crystal clear and easy to use.,"[{'text': 'use', 'label': 'NAN'}]"
877
+ "No Complaints as of yet, but i will let you know if there is.","[{'text': 'complaints', 'label': 'NAN'}]"
878
+ No data;),"[{'text': 'data', 'label': 'NAN'}]"
879
+ Very inexpensive while providing him with a full keyboard making texting a little easier.,"[{'text': 'keyboard', 'label': 'NAN'}]"
880
+ Thanks again!!,"[{'text': 'thanks', 'label': 'NAN'}]"
881
+ Thanks,"[{'text': 'thanks', 'label': 'NAN'}]"
882
+ Excellent,"[{'text': 'excellent', 'label': 'NAN'}]"
883
+ It provides you will all of the essentials you need in a phone!,"[{'text': 'phone', 'label': 'ASPECT'}]"
884
+ I highly recommend this phone for the budget conscious individuals!,"[{'text': 'phone', 'label': 'ASPECT'}]"
885
+ Also you can lock the keypad by pressing and holding the spacebar down.,"[{'text': 'keypad', 'label': 'NAN'}]"
886
+ works ok,"[{'text': 'works', 'label': 'NAN'}]"
887
+ I really love the phone and it has been working great for me.,"[{'text': 'phone', 'label': 'ASPECT'}]"
888
+ "Net 10 and their service is without a doubt the most frustrating ,inefficient poor service I've ever encountered in any industry.","[{'text': 'service', 'label': 'ASPECT'}]"
889
+ Strange it expired the minute they tried to transfer it!,"[{'text': 'minute', 'label': 'NAN'}]"
890
+ Liked the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
891
+ Just got it today 4-19-2013.,"[{'text': 'today', 'label': 'NAN'}]"
892
+ It will not charge.,"[{'text': 'charge', 'label': 'NAN'}]"
893
+ Do not know how to get another one.,"[{'text': 'do not', 'label': 'NAN'}]"
894
+ Probably will just have to pitch the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
895
+ Therefore my phone could not be used but was usable when I traveled to two different major cities in Texas.,"[{'text': 'phone', 'label': 'ASPECT'}]"
896
+ "So, into the garbage it goes.","[{'text': 'garbage', 'label': 'NAN'}]"
897
+ I will keep that part),"[{'text': 'part', 'label': 'NAN'}]"
898
+ If your looking for an android phone you need look no farther.,"[{'text': 'phone', 'label': 'ASPECT'}]"
data/entitiesv2.csv ADDED
@@ -0,0 +1,898 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ sentText,entityMentions
2
+ I had the Samsung A600 for awhile which is absolute doo doo.,"[{'text': 'samsung', 'label': 'NAN'}]"
3
+ Bad: ===> I hate the menu.,"[{'text': 'menu', 'label': 'NAN'}]"
4
+ Usually phones have numbered categories so u can simply press the # and get where you want to go.,"[{'text': 'phones', 'label': 'ASPECT'}]"
5
+ ===> It's a pain to put it on silent or vibrate.,"[{'text': 'a pain', 'label': 'NAN'}]"
6
+ "If you're in class and it rings, you have to turn it off immediately.","[{'text': 'class', 'label': 'NAN'}]"
7
+ I learned that the hard way.,"[{'text': 'way', 'label': 'NAN'}]"
8
+ ===> It's so true about the case.,"[{'text': 'case', 'label': 'ASPECT'}]"
9
+ It's a mission to get off and will break ur nails in the process.,"[{'text': 'process', 'label': 'NAN'}]"
10
+ Good: ===> Reception is not too shabby.,"[{'text': 'reception', 'label': 'NAN'}]"
11
+ It doesn't heat up like a potatoe in the oven either during long phone convos.,"[{'text': 'phone', 'label': 'ASPECT'}]"
12
+ ===> Cute ways to customize it.,"[{'text': 'ways', 'label': 'NAN'}]"
13
+ "Scroll bar can be set to purple, pink, aqua, orange, etc.","[{'text': 'bar', 'label': 'NAN'}]"
14
+ "This is a great, reliable phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
15
+ "There is a skydiving game, bowling, and tennis (like pong).","[{'text': 'game', 'label': 'NAN'}]"
16
+ There are vibrating ringtones and regular (midi) polyphonic tones.,"[{'text': 'ringtones', 'label': 'NAN'}]"
17
+ "Well, he could barely even get it off- he came close to snapping the casing in half.","[{'text': 'half', 'label': 'NAN'}]"
18
+ "I was never able to get it off after that which isnt THAT big of a deal, but it got dirty under the clear casing and it looks really dirty now.","[{'text': 'deal', 'label': 'NAN'}]"
19
+ Cool.,"[{'text': 'cool', 'label': 'NAN'}]"
20
+ Cheap.,"[{'text': 'cheap', 'label': 'NAN'}]"
21
+ The 3588 also has some amazing ringtones.,"[{'text': 'ringtones', 'label': 'NAN'}]"
22
+ NOW are ya convinced that this mobile's REAL!,"[{'text': 'mobile', 'label': 'NAN'}]"
23
+ They ended up suggesting the HDB-5 headset.,"[{'text': 'headset', 'label': 'NAN'}]"
24
+ I highly recommend this phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
25
+ The keylock is a simple two-button sequence though I do wish it had a timer for the keylock like my old phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
26
+ You're few options are pretty girly.,"[{'text': 'options', 'label': 'NAN'}]"
27
+ "Also, if you're thinking about getting a different case for it, DON'T!","[{'text': 'case', 'label': 'ASPECT'}]"
28
+ "It never attaches firmly again, and neither does the new case you bought.","[{'text': 'case', 'label': 'ASPECT'}]"
29
+ I've read this in other reviews too.,"[{'text': 'reviews', 'label': 'NAN'}]"
30
+ "Of course, it will take you half a second to read the message...and you probably don't care about what it says.","[{'text': 'message', 'label': 'NAN'}]"
31
+ Annoying - Ever had anyone scream in your ear?,"[{'text': 'anyone', 'label': 'NAN'}]"
32
+ Fragile - My phone is cracked.,"[{'text': 'phone', 'label': 'ASPECT'}]"
33
+ My recommendation: buy a better phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
34
+ "*cheap feel, cheaply made, cheap materials.","[{'text': 'feel', 'label': 'NAN'}]"
35
+ It's made out of rather flimsy plastic.,"[{'text': 'plastic', 'label': 'NAN'}]"
36
+ "Also, the screen can be difficult to read in bright sunlight, but it's quite bright otherwise.","[{'text': 'screen', 'label': 'ASPECT'}]"
37
+ The product has been very good.,"[{'text': 'product', 'label': 'NAN'}]"
38
+ "In the largest subdivision, you cannot get service anywhere.","[{'text': 'service', 'label': 'ASPECT'}]"
39
+ Direct connect only works MAYBE half the time I tried to use it.,"[{'text': 'time', 'label': 'NAN'}]"
40
+ Don't make the same mistake I did.,"[{'text': 'mistake', 'label': 'NAN'}]"
41
+ "Second, the screen is easily scratched.","[{'text': 'screen', 'label': 'ASPECT'}]"
42
+ This one got scratched making it difficult to read in sunlight.,"[{'text': 'this one', 'label': 'NAN'}]"
43
+ The price was right.,"[{'text': 'price', 'label': 'ASPECT'}]"
44
+ Phone stoped working,"[{'text': 'phone', 'label': 'ASPECT'}]"
45
+ It does a beautiful job.,"[{'text': 'job', 'label': 'NAN'}]"
46
+ "The texting takes a little to get used to, but I digress.","[{'text': 'texting', 'label': 'NAN'}]"
47
+ way too small,"[{'text': 'way', 'label': 'NAN'}]"
48
+ The phone went through the washer and dryer and still works as well as ever!!,"[{'text': 'phone', 'label': 'ASPECT'}]"
49
+ "I'm not sure how it would work as an everyday phone, but for those who only need it occasionally I would highly recommend.","[{'text': 'phone', 'label': 'ASPECT'}]"
50
+ This phone is great.,"[{'text': 'phone', 'label': 'ASPECT'}]"
51
+ "this is a good little inexpensive phone - basic, but that's what I wanted!","[{'text': 'phone', 'label': 'ASPECT'}]"
52
+ My goal was just not to spend $150 on another phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
53
+ "It has not been treated lightly (I recently opened up the back to find the serial #, and found it full of dirt & dust).","[{'text': 'back', 'label': 'NAN'}]"
54
+ "It has crashed with me skiing, been splashed with salt water while sailing, and been drenched in sweat while in my bike jersey.","[{'text': 'water', 'label': 'NAN'}]"
55
+ Sometimes the exposed buttons get pressed accidentally.,"[{'text': 'buttons', 'label': 'NAN'}]"
56
+ It has no fancy features.,"[{'text': 'features', 'label': 'NAN'}]"
57
+ 5+ years now.,"[{'text': 'years', 'label': 'NAN'}]"
58
+ "I have never tried soaking it in water, but I have dropped it, thrown it, scraped it, kicked it etc.","[{'text': 'water', 'label': 'NAN'}]"
59
+ My battery has NEVER run out on me.,"[{'text': 'battery', 'label': 'ASPECT'}]"
60
+ I also talked a good 25 minutes too.,"[{'text': 'minutes', 'label': 'NAN'}]"
61
+ I have had this phone since august (its Feb. 11).,"[{'text': 'phone', 'label': 'ASPECT'}]"
62
+ I highly recommend this phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
63
+ I bought the phone and loved it.,"[{'text': 'phone', 'label': 'ASPECT'}]"
64
+ "It was very low cost, came with airtime.","[{'text': 'cost', 'label': 'NAN'}]"
65
+ I charged it up and it ran for several days on its own.,"[{'text': 'days', 'label': 'NAN'}]"
66
+ This will be just right for her limited calls when she is on the road.,"[{'text': 'calls', 'label': 'ASPECT'}]"
67
+ "This is not nokia quality your used to, it must be some sort of a clone.","[{'text': 'quality', 'label': 'ASPECT'}]"
68
+ It is robustly built and the slider glides easily in place with zero wobbling.,"[{'text': 'place', 'label': 'NAN'}]"
69
+ I'm going to something else.,"[{'text': 'something', 'label': 'NAN'}]"
70
+ This one looks and feels really crappy.,"[{'text': 'feels', 'label': 'NAN'}]"
71
+ "As much as I beat up my last phone and as well as it fared, I had to get another one.","[{'text': 'phone', 'label': 'ASPECT'}]"
72
+ i wont ( enter special code ),"[{'text': 'code', 'label': 'NAN'}]"
73
+ A huge pain for something that is $24.,"[{'text': 'something', 'label': 'NAN'}]"
74
+ very simple to use.dropped a few times and still works fine.,"[{'text': 'times', 'label': 'NAN'}]"
75
+ It's been a month!,"[{'text': 'month', 'label': 'NAN'}]"
76
+ "A second critique is the very small screen which is, in addition, not very well lit.","[{'text': 'screen', 'label': 'ASPECT'}]"
77
+ "It can be a problem viewing, even in the shade.","[{'text': 'problem', 'label': 'NAN'}]"
78
+ All and all a very good phone despite the weaknesses cited above.,"[{'text': 'phone', 'label': 'ASPECT'}]"
79
+ What a terrible mistake.,"[{'text': 'mistake', 'label': 'NAN'}]"
80
+ Everytime I DT with someone it works.,"[{'text': 'someone', 'label': 'NAN'}]"
81
+ This phone is awesome.,"[{'text': 'phone', 'label': 'ASPECT'}]"
82
+ This little gem was built to be a phone and that's exactly what it is.,"[{'text': 'phone', 'label': 'ASPECT'}]"
83
+ "In short.... See it as it really is, a phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
84
+ There has to be better phones out there.,"[{'text': 'phones', 'label': 'ASPECT'}]"
85
+ I recently had an i776 which was ruined at work.,"[{'text': 'work', 'label': 'NAN'}]"
86
+ I had good service with it and it worked well.,"[{'text': 'service', 'label': 'ASPECT'}]"
87
+ "I spent $50 on this piece, the service is horrible, very patchy.","[{'text': 'service', 'label': 'ASPECT'}]"
88
+ You will then have the responsibility of manually turning your transmitters back on for the phone to work again.,"[{'text': 'phone', 'label': 'ASPECT'}]"
89
+ They should reaname this phone the i666.,"[{'text': 'phone', 'label': 'ASPECT'}]"
90
+ Thank you Mark,"[{'text': 'thank you', 'label': 'NAN'}]"
91
+ Thanks.,"[{'text': 'thanks', 'label': 'NAN'}]"
92
+ Thank you.,"[{'text': 'thank you', 'label': 'NAN'}]"
93
+ It's a nice phone only if it worked properly.,"[{'text': 'phone', 'label': 'ASPECT'}]"
94
+ If you are looking for regular phone that's fairly durable this is great!,"[{'text': 'phone', 'label': 'ASPECT'}]"
95
+ Especially if used in heavy case?,"[{'text': 'case', 'label': 'ASPECT'}]"
96
+ Yes I would recommend this phone,"[{'text': 'phone', 'label': 'ASPECT'}]"
97
+ My signal was not constant.,"[{'text': 'signal', 'label': 'NAN'}]"
98
+ Bought in 2008.,"[{'text': 'bought', 'label': 'NAN'}]"
99
+ "If you go to [...], they talk about cable CA-126, which works with the 1680.","[{'text': 'cable', 'label': 'NAN'}]"
100
+ "It rings loud & clear, and the speakerphone is easy to hear.","[{'text': 'speakerphone', 'label': 'NAN'}]"
101
+ Navigating menus can be a little sluggish.,"[{'text': 'menus', 'label': 'NAN'}]"
102
+ "The keypad is stiff, making text messaging a chore.","[{'text': 'keypad', 'label': 'NAN'}]"
103
+ Retro early 2000s kind of phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
104
+ No cracks or breaks.,"[{'text': 'cracks', 'label': 'NAN'}]"
105
+ This thing has been dropped on cement more than once!!,"[{'text': 'thing', 'label': 'ASPECT'}]"
106
+ This is my favorite phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
107
+ For more details see the wikipedea article on it.,"[{'text': 'details', 'label': 'NAN'}]"
108
+ I'm still using one of these as my phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
109
+ Minutes accumulate as you go.,"[{'text': 'minutes', 'label': 'NAN'}]"
110
+ I used to have a Nokia 1100.,"[{'text': 'nokia', 'label': 'NAN'}]"
111
+ (I often charged it like once every other week!),"[{'text': 'week', 'label': 'NAN'}]"
112
+ They are primarily made for sale in developing countries.,"[{'text': 'sale', 'label': 'NAN'}]"
113
+ They said that the browser would not connect to the tower.,"[{'text': 'browser', 'label': 'NAN'}]"
114
+ All worked great except the lack of a browser.,"[{'text': 'browser', 'label': 'NAN'}]"
115
+ Did I mention that I only have to charge it twice a week?,"[{'text': 'week', 'label': 'NAN'}]"
116
+ This is a pretty neat cheap phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
117
+ It activates easy and came with 20 minutes free!,"[{'text': 'minutes', 'label': 'NAN'}]"
118
+ I would recommend this product.,"[{'text': 'product', 'label': 'NAN'}]"
119
+ "The price is great, too!","[{'text': 'price', 'label': 'ASPECT'}]"
120
+ My elderly aunt uses it specially because she can see the big numbers she is dialing.,"[{'text': 'numbers', 'label': 'NAN'}]"
121
+ "Little slider phone, nice and simple.","[{'text': 'phone', 'label': 'ASPECT'}]"
122
+ This is a fine instrument for a second phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
123
+ "It is light, reliable and not expensive.","[{'text': 'light', 'label': 'NAN'}]"
124
+ Comes easily to hand.,"[{'text': 'hand', 'label': 'NAN'}]"
125
+ It's for my 9yo son.,"[{'text': 'son', 'label': 'NAN'}]"
126
+ "Therefore, no other bluetooth devices can see it!","[{'text': 'devices', 'label': 'NAN'}]"
127
+ Excelent Phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
128
+ "With Movistar, Movilnet and Digitel.","[{'text': 'movistar', 'label': 'NAN'}]"
129
+ Thanks.,"[{'text': 'thanks', 'label': 'NAN'}]"
130
+ I tried a card I had and it was refused.,"[{'text': 'card', 'label': 'NAN'}]"
131
+ And coverage -- who knew?,"[{'text': 'coverage', 'label': 'NAN'}]"
132
+ "Has a game I like, lol.","[{'text': 'game', 'label': 'NAN'}]"
133
+ "Husband says that's all he needs, No texting just say hello when answering.","[{'text': 'no', 'label': 'NAN'}]"
134
+ ok,"[{'text': 'ok', 'label': 'NAN'}]"
135
+ Works great!,"[{'text': 'works great', 'label': 'NAN'}]"
136
+ Glad to have the double minutes but wish it had the triple minutes like our last Tracphone,"[{'text': 'minutes', 'label': 'NAN'}]"
137
+ Great old reliable.,"[{'text': 'great', 'label': 'NAN'}]"
138
+ its ok to call in and out,"[{'text': 'ok', 'label': 'NAN'}]"
139
+ "Very convenient because it is very inexpensive and can be used only when you need it, ie.","[{'text': 'convenient', 'label': 'NAN'}]"
140
+ emergencies or important calls.,"[{'text': 'calls', 'label': 'ASPECT'}]"
141
+ "Cheaper for me that any other ""unlimited"" plan out there.","[{'text': 'plan', 'label': 'NAN'}]"
142
+ Thanks again,"[{'text': 'thanks', 'label': 'NAN'}]"
143
+ The phone works fine.,"[{'text': 'phone', 'label': 'ASPECT'}]"
144
+ "I tried to get Tracfone to replace them ,but was unable to get them to do that.","[{'text': 'tracfone', 'label': 'NAN'}]"
145
+ My daughter loves it,"[{'text': 'my daughter', 'label': 'NAN'}]"
146
+ i have not got the phone yet but i heard it is really good and it is really cool.,"[{'text': 'phone', 'label': 'ASPECT'}]"
147
+ "When I got it, I found out that I could not unlock the phone and it was therefore useless to me so I returned it.","[{'text': 'phone', 'label': 'ASPECT'}]"
148
+ "That aside, the TracPhone charges are ridiculously high.","[{'text': 'charges', 'label': 'NAN'}]"
149
+ I recommend T-Mobile's prepay plan.,"[{'text': 'plan', 'label': 'NAN'}]"
150
+ "Those are the ""pros.""","[{'text': 'pros', 'label': 'NAN'}]"
151
+ This line is too small and and just about useless to use.,"[{'text': 'line', 'label': 'NAN'}]"
152
+ #NAME?,"[{'text': 'keys', 'label': 'NAN'}]"
153
+ "The keys themselves, however, are still too small.","[{'text': 'keys', 'label': 'NAN'}]"
154
+ You purchase the minutes/time and they appear on the phone almost immediately.,"[{'text': 'phone', 'label': 'ASPECT'}]"
155
+ "Keep the phone ""on"" while doing this.","[{'text': 'phone', 'label': 'ASPECT'}]"
156
+ Much less expensive to operate than than most any other phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
157
+ "__________________________________ March, 2014 -I have to add these thoughts to the above review.","[{'text': 'review', 'label': 'NAN'}]"
158
+ The rugged little screen is no worse for the constant manipulation.,"[{'text': 'screen', 'label': 'ASPECT'}]"
159
+ It was necessary to call a person at the local historical society.,"[{'text': 'person', 'label': 'NAN'}]"
160
+ And I agree 100% about the browser.,"[{'text': 'browser', 'label': 'NAN'}]"
161
+ Terrible terrible feature.,"[{'text': 'feature', 'label': 'NAN'}]"
162
+ My brother said I would have to take it apart right away and dry everything as quickly as possible.,"[{'text': 'everything', 'label': 'NAN'}]"
163
+ "I wasn't sure how to take it apart, and didn't have any tools, but it was still working, so I figured it might be okay.","[{'text': 'okay', 'label': 'NAN'}]"
164
+ "Later the screen wouldn't come on, and I thought it was done.","[{'text': 'screen', 'label': 'ASPECT'}]"
165
+ It has been fine ever since and that was over a week ago.,"[{'text': 'week', 'label': 'NAN'}]"
166
+ "It does offer double minutes, so I figure it is still worth it.","[{'text': 'minutes', 'label': 'NAN'}]"
167
+ Now I get a kick out of using it knowing it laid on the sand under two feet of water and still works great.,"[{'text': 'water', 'label': 'NAN'}]"
168
+ I have played Sudoku till my eyes hurt.,"[{'text': 'eyes', 'label': 'NAN'}]"
169
+ It takes pretty nice pictures.,"[{'text': 'pictures', 'label': 'ASPECT'}]"
170
+ It has a voice recorder that I even forget to use.,"[{'text': 'voice', 'label': 'NAN'}]"
171
+ The bluetooth never worked.,"[{'text': 'bluetooth', 'label': 'NAN'}]"
172
+ I used the browser occasionally.,"[{'text': 'browser', 'label': 'NAN'}]"
173
+ I don't think the browser works anymore.,"[{'text': 'browser', 'label': 'NAN'}]"
174
+ Not sure what to do with a phone that really is a phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
175
+ No warnings of money to be taken.,"[{'text': 'money', 'label': 'ASPECT'}]"
176
+ Or maybe a scam by design.,"[{'text': 'design', 'label': 'NAN'}]"
177
+ No more samsung for me.,"[{'text': 'samsung', 'label': 'NAN'}]"
178
+ So its not the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
179
+ "Why a got a second phone is a long, boring story.","[{'text': 'phone', 'label': 'ASPECT'}]"
180
+ "-Jill, Age 12","[{'text': 'age', 'label': 'NAN'}]"
181
+ "Yes, sometimes locks up randomly in spite of using the menu to leave it unlocked.","[{'text': 'menu', 'label': 'NAN'}]"
182
+ (Can unlock by entering code 1234.),"[{'text': 'code', 'label': 'NAN'}]"
183
+ It's an unnecessary step.,"[{'text': 'step', 'label': 'NAN'}]"
184
+ Sending a text could be simplified.,"[{'text': 'text', 'label': 'NAN'}]"
185
+ "), once you get through, they're usually able to solve the problem pretty quickly.","[{'text': 'problem', 'label': 'NAN'}]"
186
+ "(We live in Oregon, Portland area.)","[{'text': 'area', 'label': 'NAN'}]"
187
+ Very light in weight.,"[{'text': 'weight', 'label': 'NAN'}]"
188
+ (my 7 yr old can slap it in half easily) Voice is crisp and clear while talking.,"[{'text': 'voice', 'label': 'NAN'}]"
189
+ You cannot change the menu.,"[{'text': 'menu', 'label': 'NAN'}]"
190
+ Fingerprints on screen of course.,"[{'text': 'screen', 'label': 'ASPECT'}]"
191
+ Easily slide opened.,"[{'text': 'slide', 'label': 'NAN'}]"
192
+ TracFone support is basically non-existent.,"[{'text': 'support', 'label': 'NAN'}]"
193
+ It's been nearly 3 weeks now!,"[{'text': 'weeks', 'label': 'NAN'}]"
194
+ hard to tell what youre doing in the menu if youre not used to it.,"[{'text': 'menu', 'label': 'NAN'}]"
195
+ "You get what u paid for, more value per $ .","[{'text': 'value', 'label': 'NAN'}]"
196
+ Here is what it took to get RA #...4 calls/over 2 days.,"[{'text': 'days', 'label': 'NAN'}]"
197
+ "I waited 20 minutes on the 3rd, without reaching an agent (I had to drop).","[{'text': 'minutes', 'label': 'NAN'}]"
198
+ I thought that they were being nice when they gave me an unpublished number to call.,"[{'text': 'number', 'label': 'NAN'}]"
199
+ The browser not being able to be turned off is ridiculous.,"[{'text': 'browser', 'label': 'NAN'}]"
200
+ thats my honest opinion.,"[{'text': 'opinion', 'label': 'NAN'}]"
201
+ This is the phone I was looking for.,"[{'text': 'phone', 'label': 'ASPECT'}]"
202
+ I tried every store.,"[{'text': 'store', 'label': 'NAN'}]"
203
+ All around a vary good phone!,"[{'text': 'phone', 'label': 'ASPECT'}]"
204
+ "no signal, no signal, what a joke!!","[{'text': 'signal', 'label': 'NAN'}]"
205
+ thank you AT&T!,"[{'text': 'thank you', 'label': 'NAN'}]"
206
+ "I can understand accidentally hitting it until you stop doing so due to a learned response; ""Fire is hot, and burns, causing pain.","[{'text': 'response', 'label': 'NAN'}]"
207
+ In fact I haven't used it at all.,"[{'text': 'fact', 'label': 'NAN'}]"
208
+ It's a decent phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
209
+ Or emergency.,"[{'text': 'emergency', 'label': 'NAN'}]"
210
+ I mainly use it to get info.,"[{'text': 'info', 'label': 'NAN'}]"
211
+ You can upgrade to another Tracfone later on.,"[{'text': 'tracfone', 'label': 'NAN'}]"
212
+ Does the job.,"[{'text': 'job', 'label': 'NAN'}]"
213
+ I found it on sale here for $5.00 and got it.,"[{'text': 'sale', 'label': 'NAN'}]"
214
+ "So far, it seems to be working okay.","[{'text': 'okay', 'label': 'NAN'}]"
215
+ Not a bad deal.,"[{'text': 'deal', 'label': 'NAN'}]"
216
+ "Stylish, easy to use, and just as advertised.","[{'text': 'use', 'label': 'NAN'}]"
217
+ Amazon has done it again!,"[{'text': 'amazon', 'label': 'NAN'}]"
218
+ I bought it for my 7th grader to text me after games or practices.,"[{'text': 'games', 'label': 'NAN'}]"
219
+ When it fell in the water and broke I simply ordered another :),"[{'text': 'water', 'label': 'NAN'}]"
220
+ The price was great!,"[{'text': 'price', 'label': 'ASPECT'}]"
221
+ Well worth the money.,"[{'text': 'money', 'label': 'ASPECT'}]"
222
+ it have too time l do not remember.,"[{'text': 'time', 'label': 'NAN'}]"
223
+ Great fone.,"[{'text': 'great', 'label': 'NAN'}]"
224
+ bought thru Amazon.,"[{'text': 'amazon', 'label': 'NAN'}]"
225
+ ok,"[{'text': 'ok', 'label': 'NAN'}]"
226
+ it comes with 20 free minutes.,"[{'text': 'minutes', 'label': 'NAN'}]"
227
+ Washed my other phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
228
+ It will inform you that you need to restart the phone for this to take effect - do this later.,"[{'text': 'phone', 'label': 'ASPECT'}]"
229
+ Did have to wait on hold either; my call was answered quickly and efficently.,"[{'text': 'call', 'label': 'NAN'}]"
230
+ MINUTES DISAPPEAR.,"[{'text': 'minutes', 'label': 'NAN'}]"
231
+ "What irks me about this entire situation is, you KNOW they KNEW what was happening to me, yet feigned ignorance.","[{'text': 'situation', 'label': 'NAN'}]"
232
+ How much do we have to pay to be treated like garbage?,"[{'text': 'garbage', 'label': 'NAN'}]"
233
+ "They knew all along what it was, and kept denying there was a problem.","[{'text': 'problem', 'label': 'NAN'}]"
234
+ "It worked so well, I got it for myself, then my wife saw it and wanted one for her.","[{'text': 'wife', 'label': 'NAN'}]"
235
+ From a very adjustable camera.,"[{'text': 'camera', 'label': 'ASPECT'}]"
236
+ "Overall though, I give this phone high marks.","[{'text': 'phone', 'label': 'ASPECT'}]"
237
+ "But I have tried it in California, Florida, and the midwest and never had a dropped call.","[{'text': 'call', 'label': 'NAN'}]"
238
+ You get charged a minimum of 1/2 minute whenever this happens.,"[{'text': 'minute', 'label': 'NAN'}]"
239
+ "When it is off, you can see the keypad flash like it is trying to turn on.","[{'text': 'flash', 'label': 'NAN'}]"
240
+ "But if you do, expect a foretaste of hell.","[{'text': 'hell', 'label': 'NAN'}]"
241
+ I switched to another company.,"[{'text': 'company', 'label': 'NAN'}]"
242
+ Left for vacation and my LG600g phone was in the console.,"[{'text': 'phone', 'label': 'ASPECT'}]"
243
+ Only for headset.,"[{'text': 'headset', 'label': 'NAN'}]"
244
+ 2 steps to unlock slider.,"[{'text': 'steps', 'label': 'NAN'}]"
245
+ "Also, no explanation on how to use the speakerphone.","[{'text': 'speakerphone', 'label': 'NAN'}]"
246
+ Loaded with good features but not complicated to use.,"[{'text': 'features', 'label': 'NAN'}]"
247
+ Trying to get technical support I was only allowed to buy new airtime.,"[{'text': 'support', 'label': 'NAN'}]"
248
+ Indoor reception is poor.,"[{'text': 'reception', 'label': 'NAN'}]"
249
+ "You try to turn the phone back on, and it is 'locked'.","[{'text': 'phone', 'label': 'ASPECT'}]"
250
+ It will have a space for you to enter a passcode.,"[{'text': 'space', 'label': 'NAN'}]"
251
+ GARBAGE.,"[{'text': 'garbage', 'label': 'NAN'}]"
252
+ the new one only rings 1 time in 4 :(,"[{'text': 'time', 'label': 'NAN'}]"
253
+ AT&T should inform sellers!,"[{'text': 'sellers', 'label': 'NAN'}]"
254
+ He likes it and I like not having to replace it all the time.,"[{'text': 'time', 'label': 'NAN'}]"
255
+ It's doing good but I was expecting a charger to come with it.,"[{'text': 'charger', 'label': 'ASPECT'}]"
256
+ I had to get one to fit the phone,"[{'text': 'phone', 'label': 'ASPECT'}]"
257
+ I am returning to Amazon.,"[{'text': 'amazon', 'label': 'NAN'}]"
258
+ Other than those quibbles we're very happy with the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
259
+ I researched low SAR (absorbed radiation) and this was the cheapest most simple phone available.,"[{'text': 'phone', 'label': 'ASPECT'}]"
260
+ "Love the speakerphone, internal antenna.","[{'text': 'speakerphone', 'label': 'NAN'}]"
261
+ "I bought this off of ""I sell things"".","[{'text': 'things', 'label': 'NAN'}]"
262
+ "It is the wrong color, scratched and beat up badly!","[{'text': 'color', 'label': 'NAN'}]"
263
+ I had to return the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
264
+ Menus are difficult to follow and aren't logical.,"[{'text': 'menus', 'label': 'NAN'}]"
265
+ I even found it difficult to answer when someone called.,"[{'text': 'someone', 'label': 'NAN'}]"
266
+ It's now known in my family as the StopPhone.,"[{'text': 'family', 'label': 'NAN'}]"
267
+ "I have this "" sane phone "" in "" Paris Hilton Red "".","[{'text': 'phone', 'label': 'ASPECT'}]"
268
+ "I Love It some much ---------- I'm "" soon going to pruchase this same phone again "" !","[{'text': 'phone', 'label': 'ASPECT'}]"
269
+ First of all I ordered a pink one for my daughter and it arrived in silver.,"[{'text': 'my daughter', 'label': 'NAN'}]"
270
+ "I have not tried an alternate charger yet, but I shouldn't have to.","[{'text': 'charger', 'label': 'ASPECT'}]"
271
+ Too much of a hassle spent charging all the time.,"[{'text': 'time', 'label': 'NAN'}]"
272
+ Horrible purchase.,"[{'text': 'purchase', 'label': 'NAN'}]"
273
+ Avoid at all costs.,"[{'text': 'costs', 'label': 'NAN'}]"
274
+ Dont waste your money,"[{'text': 'money', 'label': 'ASPECT'}]"
275
+ You shipped what I asked for so not your fault.,"[{'text': 'fault', 'label': 'NAN'}]"
276
+ Repeated attempts to make it work were useless.,"[{'text': 'attempts', 'label': 'NAN'}]"
277
+ "Be very wary about buying used phones, esp those that claim to be ""refurbished"" and fully functional.","[{'text': 'phones', 'label': 'ASPECT'}]"
278
+ I never could get it to turn on and wasn't able to hook it up to the line I needed it on.,"[{'text': 'line', 'label': 'NAN'}]"
279
+ Returns take forever and I really needed a phone so I wound up having to just buy another one.,"[{'text': 'phone', 'label': 'ASPECT'}]"
280
+ Money doesn't grow on trees.,"[{'text': 'money', 'label': 'ASPECT'}]"
281
+ I bought this for my mom.,"[{'text': 'my mom', 'label': 'NAN'}]"
282
+ It is a used phone and I dont think I would get another one.,"[{'text': 'phone', 'label': 'ASPECT'}]"
283
+ "The next day, it was totally drained.","[{'text': 'day', 'label': 'NAN'}]"
284
+ "Again ,I left the phone and low and behold, it was totally drained.","[{'text': 'phone', 'label': 'ASPECT'}]"
285
+ I will not buy from these people again.,"[{'text': 'people', 'label': 'NAN'}]"
286
+ This phone is great.,"[{'text': 'phone', 'label': 'ASPECT'}]"
287
+ "They seem to be more fragile, lighter weight and cheaply made.","[{'text': 'weight', 'label': 'NAN'}]"
288
+ Good phone!,"[{'text': 'phone', 'label': 'ASPECT'}]"
289
+ Didn't work.,"[{'text': 'work', 'label': 'NAN'}]"
290
+ These are great phones.,"[{'text': 'phones', 'label': 'ASPECT'}]"
291
+ "It was (and still is) annoying that they didn't upgrade their error messge when trying to run GetItNow/Get_New_App from ""Unable to retrieve catalog.","[{'text': 'error', 'label': 'NAN'}]"
292
+ Please try again later.,"[{'text': 'please', 'label': 'NAN'}]"
293
+ "(3332)"" to ""Legacy/unsupported phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
294
+ "Don't waste your time to try again"".","[{'text': 'time', 'label': 'NAN'}]"
295
+ Going to have to buy another phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
296
+ It really needs to be plugged in each night.,"[{'text': 'night', 'label': 'NAN'}]"
297
+ "I bought a newer battery, but it still doesn't last that long.","[{'text': 'battery', 'label': 'ASPECT'}]"
298
+ Like the size and how easily it opens.,"[{'text': 'size', 'label': 'ASPECT'}]"
299
+ I am even getting used to the pink color.,"[{'text': 'color', 'label': 'NAN'}]"
300
+ I was only refunded the amount I paid for the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
301
+ That was a nice surprise.,"[{'text': 'surprise', 'label': 'NAN'}]"
302
+ People may say wow they still sell those!,"[{'text': 'people', 'label': 'NAN'}]"
303
+ The charger collapsed on receipt.,"[{'text': 'charger', 'label': 'ASPECT'}]"
304
+ The cost was less than $50.,"[{'text': 'cost', 'label': 'NAN'}]"
305
+ Works well as a secondary devise.,"[{'text': 'works well', 'label': 'NAN'}]"
306
+ Seller was great to deal with.,"[{'text': 'seller', 'label': 'NAN'}]"
307
+ Delivered on time.,"[{'text': 'time', 'label': 'NAN'}]"
308
+ Works Great!,"[{'text': 'great', 'label': 'NAN'}]"
309
+ Well pleased with the secondhand RAZR.,"[{'text': 'razr', 'label': 'NAN'}]"
310
+ Thank you so much.,"[{'text': 'thank you', 'label': 'NAN'}]"
311
+ Thanks Golden Net !,"[{'text': 'thanks', 'label': 'NAN'}]"
312
+ We tried a they said it wouldn't work.,"[{'text': 'work', 'label': 'NAN'}]"
313
+ Should have known by the low price it was to good to be true.,"[{'text': 'price', 'label': 'ASPECT'}]"
314
+ This particular phone is a dud!,"[{'text': 'phone', 'label': 'ASPECT'}]"
315
+ "It says it's verizon wireless compatible, but it's not.","[{'text': 'wireless', 'label': 'NAN'}]"
316
+ "Only works with ""Alltel"" plans.","[{'text': 'plans', 'label': 'NAN'}]"
317
+ At first I thought it was Verizon but obviously it's not.,"[{'text': 'verizon', 'label': 'NAN'}]"
318
+ Didn't even work.,"[{'text': 'work', 'label': 'NAN'}]"
319
+ Was told differently that it worked.,"[{'text': 'was', 'label': 'NAN'}]"
320
+ No damage.,"[{'text': 'damage', 'label': 'NAN'}]"
321
+ "Did work, but not correctly.","[{'text': 'work', 'label': 'NAN'}]"
322
+ Shut off at will waste of money.,"[{'text': 'money', 'label': 'ASPECT'}]"
323
+ I've purchased many over the years and this is the nicest.,"[{'text': 'years', 'label': 'NAN'}]"
324
+ It has been plugged into the wall more than used to talk on.,"[{'text': 'wall', 'label': 'NAN'}]"
325
+ Do not recommend.,"[{'text': 'do not', 'label': 'NAN'}]"
326
+ Piece of crap.,"[{'text': 'crap', 'label': 'NAN'}]"
327
+ It worked for a while BUT started going crazy.,"[{'text': 'but', 'label': 'NAN'}]"
328
+ I think yall sold me a defect battery,"[{'text': 'battery', 'label': 'ASPECT'}]"
329
+ I am not a texter so this phone is perfect.,"[{'text': 'phone', 'label': 'ASPECT'}]"
330
+ Thanks,"[{'text': 'thanks', 'label': 'NAN'}]"
331
+ I activated the phone and it work perfect.,"[{'text': 'phone', 'label': 'ASPECT'}]"
332
+ This was a waste of money.,"[{'text': 'money', 'label': 'ASPECT'}]"
333
+ I would not buy a used phone on Amozon again.,"[{'text': 'phone', 'label': 'ASPECT'}]"
334
+ Happy with the purchase.,"[{'text': 'purchase', 'label': 'NAN'}]"
335
+ This is a great phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
336
+ It did not work.,"[{'text': 'work', 'label': 'NAN'}]"
337
+ Won't hold a charge.,"[{'text': 'charge', 'label': 'NAN'}]"
338
+ Stays hot when in use.,"[{'text': 'use', 'label': 'NAN'}]"
339
+ Was returned.,"[{'text': 'was', 'label': 'NAN'}]"
340
+ The sender is not giving me the option to return it either.,"[{'text': 'option', 'label': 'NAN'}]"
341
+ I'm calling amazon.,"[{'text': 'amazon', 'label': 'NAN'}]"
342
+ The one works.,"[{'text': 'works', 'label': 'NAN'}]"
343
+ There's a numerous amount of deep scratches.,"[{'text': 'scratches', 'label': 'NAN'}]"
344
+ & there's still photos from the orinial user that I cannot delete,"[{'text': 'user', 'label': 'NAN'}]"
345
+ "Yes, I was very glad to have my ""old"" phone back.","[{'text': 'phone', 'label': 'ASPECT'}]"
346
+ "Good at the time I use them, but now they are not needed.","[{'text': 'time', 'label': 'NAN'}]"
347
+ She did not have permission or authority (our fault) to purchase it.,"[{'text': 'fault', 'label': 'NAN'}]"
348
+ To use the phone it had to be plugged in.,"[{'text': 'phone', 'label': 'ASPECT'}]"
349
+ I want AT&T phone,"[{'text': 'phone', 'label': 'ASPECT'}]"
350
+ Deal with it.,"[{'text': 'deal', 'label': 'NAN'}]"
351
+ Keep in mind- these are OLD ELECTRONIC DEVICES!,"[{'text': 'devices', 'label': 'NAN'}]"
352
+ Did you really think they would work just like new?!,"[{'text': 'work', 'label': 'NAN'}]"
353
+ Its hinge is strong and durable; I never had it break or cease to function.,"[{'text': 'function', 'label': 'NAN'}]"
354
+ The paint never chipped (except when I dropped it) or lost its color.,"[{'text': 'color', 'label': 'NAN'}]"
355
+ Why is this a best seller in 2018?,"[{'text': 'seller', 'label': 'NAN'}]"
356
+ "When I took them to Verizon to have them activated, they could not activate them...they are only compatible with TMobile, and one other signal.","[{'text': 'signal', 'label': 'NAN'}]"
357
+ I do not want anyone else getting screwed over.,"[{'text': 'anyone', 'label': 'NAN'}]"
358
+ These dinky phones were po,"[{'text': 'phones', 'label': 'ASPECT'}]"
359
+ Anyway... SUCKS and never again!!!,"[{'text': 'sucks', 'label': 'NAN'}]"
360
+ It didn't work when received.,"[{'text': 'work', 'label': 'NAN'}]"
361
+ I wanted it because of the slim design.,"[{'text': 'design', 'label': 'NAN'}]"
362
+ It wouldn't charge.,"[{'text': 'charge', 'label': 'NAN'}]"
363
+ Arrived in good shape and works just fine!,"[{'text': 'shape', 'label': 'NAN'}]"
364
+ Nice and slim fits in my jeans pocket nicely.,"[{'text': 'nice', 'label': 'NAN'}]"
365
+ Tried to return to the seller: Dealscaly but they refused.,"[{'text': 'seller', 'label': 'NAN'}]"
366
+ She loves her `new' (reconditioned) phone!,"[{'text': 'phone', 'label': 'ASPECT'}]"
367
+ I received it in a great amount of time.,"[{'text': 'time', 'label': 'NAN'}]"
368
+ I am more that satisfied and look for to using them possibly in the future.,"[{'text': 'the future', 'label': 'NAN'}]"
369
+ The phone was fine.,"[{'text': 'phone', 'label': 'ASPECT'}]"
370
+ We had it turned on and contacts switched over.,"[{'text': 'contacts', 'label': 'NAN'}]"
371
+ Would have been happier to have just switched out the backing and charger.,"[{'text': 'charger', 'label': 'ASPECT'}]"
372
+ "Additionally, due to time constraints I did not attempt to take advantage of any guarantees.","[{'text': 'time', 'label': 'NAN'}]"
373
+ I currently own an ALLTEL Motorola V3c.,"[{'text': 'motorola', 'label': 'NAN'}]"
374
+ The V3c is nothing like the V3m.,"[{'text': 'nothing', 'label': 'NAN'}]"
375
+ I wish I could remove that star.,"[{'text': 'star', 'label': 'NAN'}]"
376
+ OK for me as I like silver.,"[{'text': 'ok', 'label': 'NAN'}]"
377
+ Always reliable and small enough to fit in the smallest pockets!,"[{'text': 'pockets', 'label': 'NAN'}]"
378
+ Dead battery basically worthless,"[{'text': 'battery', 'label': 'ASPECT'}]"
379
+ I replaced my older RAZR V3m that I dropped on concrete with this exact duplicate.,"[{'text': 'razr', 'label': 'NAN'}]"
380
+ I originally bought this phone 6 or 7 yrs.,"[{'text': 'phone', 'label': 'ASPECT'}]"
381
+ I had to pray over it to get it to last the additional year.,"[{'text': 'year', 'label': 'NAN'}]"
382
+ Battery runs out so fast.,"[{'text': 'battery', 'label': 'ASPECT'}]"
383
+ I need to charge it everyday even I didn't make any calls and receive any calls.,"[{'text': 'calls', 'label': 'ASPECT'}]"
384
+ I needed a simple but uesful phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
385
+ However it took about 6 months to break.,"[{'text': 'months', 'label': 'NAN'}]"
386
+ Got here very fast too!,"[{'text': 'got', 'label': 'NAN'}]"
387
+ I got this to replaced a device I had (lost?),"[{'text': 'device', 'label': 'ASPECT'}]"
388
+ Great,"[{'text': 'great', 'label': 'NAN'}]"
389
+ I love my phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
390
+ But Verizon stopped that.,"[{'text': 'verizon', 'label': 'NAN'}]"
391
+ Excellent,"[{'text': 'excellent', 'label': 'NAN'}]"
392
+ i love my phone,"[{'text': 'phone', 'label': 'ASPECT'}]"
393
+ plus i have already dropped it over 6 times and its still good,"[{'text': 'times', 'label': 'NAN'}]"
394
+ works like it should.,"[{'text': 'works', 'label': 'NAN'}]"
395
+ thank you,"[{'text': 'thank you', 'label': 'NAN'}]"
396
+ Not the condition it was stated to be in.,"[{'text': 'condition', 'label': 'NAN'}]"
397
+ Battery isnt the best.,"[{'text': 'battery', 'label': 'ASPECT'}]"
398
+ Was dirty but worked fine.,"[{'text': 'was', 'label': 'NAN'}]"
399
+ You really can't get these anymore and we don't want the new kind at this time.,"[{'text': 'time', 'label': 'NAN'}]"
400
+ i will def recommend your store!,"[{'text': 'store', 'label': 'NAN'}]"
401
+ thank you again.,"[{'text': 'thank you', 'label': 'NAN'}]"
402
+ "the phone is awesome, amazing, and easy to read.","[{'text': 'phone', 'label': 'ASPECT'}]"
403
+ "I still need to upgrade , but my razr needed replacing.","[{'text': 'razr', 'label': 'NAN'}]"
404
+ Actually it doesn't even deserve 1 star.,"[{'text': 'star', 'label': 'NAN'}]"
405
+ The V3m is still one of the best non-smart phones available.,"[{'text': 'phones', 'label': 'ASPECT'}]"
406
+ it does the job.,"[{'text': 'job', 'label': 'NAN'}]"
407
+ Thank you!,"[{'text': 'thank you', 'label': 'NAN'}]"
408
+ "Terrible responsiveness, show shipment, defective product.","[{'text': 'product', 'label': 'NAN'}]"
409
+ Does not work!!,"[{'text': 'work', 'label': 'NAN'}]"
410
+ a piece of junk!!,"[{'text': 'junk', 'label': 'NAN'}]"
411
+ from Verizon.,"[{'text': 'verizon', 'label': 'NAN'}]"
412
+ I am not affiliated with anyone.,"[{'text': 'anyone', 'label': 'NAN'}]"
413
+ "On returning, that phone was run over...bummer!","[{'text': 'phone', 'label': 'ASPECT'}]"
414
+ "Replaced 2 more, Yup, his was accidentally dumped into a glass of fortified grapefruit juice.","[{'text': 'glass', 'label': 'NAN'}]"
415
+ It has more capabilities also but being financially restricted I just keep expenses as minimal as possible.,"[{'text': 'capabilities', 'label': 'NAN'}]"
416
+ I got this for my mom and she's thrilled.,"[{'text': 'my mom', 'label': 'NAN'}]"
417
+ It has a great feel to it as well.,"[{'text': 'feel', 'label': 'NAN'}]"
418
+ It is Very small.,"[{'text': 'very', 'label': 'NAN'}]"
419
+ Totally programmable and very easy to understand and manage online.,"[{'text': 'online', 'label': 'NAN'}]"
420
+ Can’t set in service,"[{'text': 'service', 'label': 'ASPECT'}]"
421
+ "Other than that, everything is great!","[{'text': 'everything', 'label': 'NAN'}]"
422
+ Thanks a lot..,"[{'text': 'thanks', 'label': 'NAN'}]"
423
+ Garbage,"[{'text': 'garbage', 'label': 'NAN'}]"
424
+ It was conveniently returned without problems,"[{'text': 'problems', 'label': 'NAN'}]"
425
+ I sent the phone back pronto.,"[{'text': 'phone', 'label': 'ASPECT'}]"
426
+ "Maybe I am dreaming, expecting communication.","[{'text': 'communication', 'label': 'NAN'}]"
427
+ Please do clean business.,"[{'text': 'business', 'label': 'NAN'}]"
428
+ Do not sell used one as a new.,"[{'text': 'do not', 'label': 'NAN'}]"
429
+ I would definitely order from you again!,"[{'text': 'order', 'label': 'NAN'}]"
430
+ "After getting totally fed up with Tracfone, I bought this.","[{'text': 'tracfone', 'label': 'NAN'}]"
431
+ "It's not fancy, but it serves its purpose well.","[{'text': 'purpose', 'label': 'NAN'}]"
432
+ "When it arrived and I put it in the handset, it displayed the same malfunction.","[{'text': 'handset', 'label': 'NAN'}]"
433
+ "REJECTED - INCOMPLETE KIT The original item will be shipped back to you unrepaired.""","[{'text': 'item', 'label': 'NAN'}]"
434
+ "That message, though, was completely erroneous.","[{'text': 'message', 'label': 'NAN'}]"
435
+ Nothing was shipped back to me.,"[{'text': 'nothing', 'label': 'NAN'}]"
436
+ "It was followed by ""We received your Samsung SCH-U350MBPVZW on 11/23/2010 at 12:41 EST"".","[{'text': 'samsung', 'label': 'NAN'}]"
437
+ Not the best but that is not what I purchased the phone for.,"[{'text': 'phone', 'label': 'ASPECT'}]"
438
+ I'm most likely going to buy the same phone to replace it.,"[{'text': 'phone', 'label': 'ASPECT'}]"
439
+ I get an excellent signal elsewhere.,"[{'text': 'signal', 'label': 'NAN'}]"
440
+ It really is a phenomenal device.,"[{'text': 'device', 'label': 'ASPECT'}]"
441
+ The case is so smooth and tapered it is very hard to grasp to flip open.,"[{'text': 'case', 'label': 'ASPECT'}]"
442
+ The keys are also hard to push you have to press just right.,"[{'text': 'keys', 'label': 'NAN'}]"
443
+ Very happy with your products.,"[{'text': 'products', 'label': 'NAN'}]"
444
+ "But, this one time, I was not satisfied.","[{'text': 'time', 'label': 'NAN'}]"
445
+ The problem I had is it would not stay charged.,"[{'text': 'problem', 'label': 'NAN'}]"
446
+ She had no problems with it.,"[{'text': 'problems', 'label': 'NAN'}]"
447
+ Thanks for sending so promptly.,"[{'text': 'thanks', 'label': 'NAN'}]"
448
+ Thanks again,"[{'text': 'thanks', 'label': 'NAN'}]"
449
+ All in all a grat inexpensive phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
450
+ verizon acct.,"[{'text': 'verizon', 'label': 'NAN'}]"
451
+ this is not the phone for you.,"[{'text': 'phone', 'label': 'ASPECT'}]"
452
+ get a non pre-paid phone to add to your acct.,"[{'text': 'phone', 'label': 'ASPECT'}]"
453
+ good phone,"[{'text': 'phone', 'label': 'ASPECT'}]"
454
+ very low battery consumption,"[{'text': 'battery', 'label': 'ASPECT'}]"
455
+ Thank You,"[{'text': 'thank you', 'label': 'NAN'}]"
456
+ Piece of junk.,"[{'text': 'junk', 'label': 'NAN'}]"
457
+ Don't buy.,"[{'text': 'buy', 'label': 'NAN'}]"
458
+ wrong item,"[{'text': 'item', 'label': 'NAN'}]"
459
+ 1) I ordered two identical items.,"[{'text': 'items', 'label': 'NAN'}]"
460
+ I received one item exactly as ordered and one with an extra attachment.,"[{'text': 'item', 'label': 'NAN'}]"
461
+ It makes me want the 2nd attachment for the 2nd phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
462
+ I was amazed by how fast my phone was delivered.,"[{'text': 'phone', 'label': 'ASPECT'}]"
463
+ Thanks.,"[{'text': 'thanks', 'label': 'NAN'}]"
464
+ It is difficult to open and the sound is terrible.,"[{'text': 'sound', 'label': 'NAN'}]"
465
+ And then it starts to sound like everyone you call is cutting in and out.,"[{'text': 'everyone', 'label': 'NAN'}]"
466
+ You cant get just talk anymore.,"[{'text': 'talk', 'label': 'NAN'}]"
467
+ When i first looked at the phone it was so bright it made my great grandma go blind.,"[{'text': 'phone', 'label': 'ASPECT'}]"
468
+ Update.....,"[{'text': 'update', 'label': 'NAN'}]"
469
+ We have 2 of these (my husband and I each have one) that we use in rural Alaska and they have lasted and lasted and lasted.,"[{'text': 'my husband', 'label': 'NAN'}]"
470
+ "We have carried these while doing firewood, in and out of the boat in the ocean air, and dropped them more times than I can count.","[{'text': 'times', 'label': 'NAN'}]"
471
+ "Therefore, the phone will not work with AT&T.","[{'text': 'phone', 'label': 'ASPECT'}]"
472
+ "Then I waited to see if any msg will come later, like the other buyer said in his/her comment.","[{'text': 'buyer', 'label': 'NAN'}]"
473
+ "Anyways, it's a good deal.","[{'text': 'deal', 'label': 'NAN'}]"
474
+ #NAME?,"[{'text': 'is', 'label': 'NAN'}]"
475
+ Cons: - Doesn't withstand hammers?,"[{'text': 'cons', 'label': 'NAN'}]"
476
+ It is compact and simple to use.,"[{'text': 'simple', 'label': 'NAN'}]"
477
+ 1 meter and no harm was made (not even a small scratch).,"[{'text': 'scratch', 'label': 'NAN'}]"
478
+ Everyone is happy,"[{'text': 'everyone', 'label': 'NAN'}]"
479
+ I received the GoPhone very quickly but unfortunately I hasnt been very reliable.,"[{'text': 'gophone', 'label': 'NAN'}]"
480
+ Delivery was excellent - arrived early.,"[{'text': 'delivery', 'label': 'NAN'}]"
481
+ ATT is a real PITA!,"[{'text': 'att', 'label': 'NAN'}]"
482
+ Thanks.,"[{'text': 'thanks', 'label': 'NAN'}]"
483
+ Long battery life.,"[{'text': 'life', 'label': 'NAN'}]"
484
+ Also cost is just right.,"[{'text': 'cost', 'label': 'NAN'}]"
485
+ I do not have any problem whatsoever.,"[{'text': 'problem', 'label': 'NAN'}]"
486
+ Thank you.,"[{'text': 'thank you', 'label': 'NAN'}]"
487
+ Customer.,"[{'text': 'customer', 'label': 'NAN'}]"
488
+ Works great,"[{'text': 'works great', 'label': 'NAN'}]"
489
+ I love the different alarms that I need at different times.,"[{'text': 'times', 'label': 'NAN'}]"
490
+ "First, I never got to use them because I only received one and, it wasn't new, as advertised, and it didn't come with everything needed to activate.","[{'text': 'everything', 'label': 'NAN'}]"
491
+ "So, I really can't give a high rating or any rating really.","[{'text': 'rating', 'label': 'NAN'}]"
492
+ "Yes, this is a really ancient phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
493
+ a great buy :),"[{'text': 'buy', 'label': 'NAN'}]"
494
+ This item was not what it seem to be and I was very disappointed with the item.I didnt even get an earpiece,"[{'text': 'item', 'label': 'NAN'}]"
495
+ I tried to call from several places and it's still the same.,"[{'text': 'places', 'label': 'NAN'}]"
496
+ Mom only used it for phone and loved it.,"[{'text': 'phone', 'label': 'ASPECT'}]"
497
+ "This is a great phone, i was a little skepticle at first, but it does just what i need it to do.","[{'text': 'phone', 'label': 'ASPECT'}]"
498
+ It is OK .not what I hoped for.,"[{'text': 'ok', 'label': 'NAN'}]"
499
+ I needed a phone only.,"[{'text': 'phone', 'label': 'ASPECT'}]"
500
+ perfect,"[{'text': 'perfect', 'label': 'NAN'}]"
501
+ Got a cheap ginsu steak knife I was taking to Goodwill and bent the tip.,"[{'text': 'got', 'label': 'NAN'}]"
502
+ I was able to pursuade the SIM out.,"[{'text': 'sim', 'label': 'NAN'}]"
503
+ Initially bought back when my original AT&T Samsung Impression went kaput.,"[{'text': 'samsung', 'label': 'NAN'}]"
504
+ Ruggedness was excellent: I am notorious for dropping my phones.,"[{'text': 'phones', 'label': 'ASPECT'}]"
505
+ "When I did charge it, I'd charge it overnight (8~hours) and use it until it was about dead again.","[{'text': 'charge', 'label': 'NAN'}]"
506
+ "It would last for days though, I am positive on that.","[{'text': 'days', 'label': 'NAN'}]"
507
+ "*Not sure about if you're seeing this at the $27 price I am now, but I can honestly say I'd hold off on it for that price.","[{'text': 'price', 'label': 'ASPECT'}]"
508
+ It did take at least 10 minutes to activate.,"[{'text': 'minutes', 'label': 'NAN'}]"
509
+ "But, smartphones are getting cheaper and cheaper...","[{'text': 'smartphones', 'label': 'NAN'}]"
510
+ "It has what it calls ""Apps"" was are a few limited and unimaginative mini-programs.","[{'text': 'apps', 'label': 'ASPECT'}]"
511
+ An iPhone it's not.,"[{'text': 'iphone', 'label': 'NAN'}]"
512
+ Cons: 1.,"[{'text': 'cons', 'label': 'NAN'}]"
513
+ I'm a student so I always keep my phone on vibrate (in fear that my phone will go off during lecture).,"[{'text': 'phone', 'label': 'ASPECT'}]"
514
+ Sometimes even if I'm standing outside I cannot get good reception.,"[{'text': 'reception', 'label': 'NAN'}]"
515
+ If it lasts me six months I'll be happy.,"[{'text': 'months', 'label': 'NAN'}]"
516
+ "It makes calls, it takes calls.","[{'text': 'calls', 'label': 'ASPECT'}]"
517
+ "If it does anything fancy, I don't know or care.","[{'text': 'anything', 'label': 'NAN'}]"
518
+ A fine choice for a mild technophobe like myself.,"[{'text': 'choice', 'label': 'NAN'}]"
519
+ at&te lost is totally off my list forever.,"[{'text': 'list', 'label': 'NAN'}]"
520
+ I lost over $125 to the scum because we do not use the phone except for emergencies.,"[{'text': 'phone', 'label': 'ASPECT'}]"
521
+ I told them to go suck an egg and I will go to great lenght to avoid anything to help at&t.,"[{'text': 'anything', 'label': 'NAN'}]"
522
+ I'll say it's just for emergency.,"[{'text': 'emergency', 'label': 'NAN'}]"
523
+ Its a good phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
524
+ Poor coverage.,"[{'text': 'coverage', 'label': 'NAN'}]"
525
+ Its a phone that is alas...just a phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
526
+ "So its a phone that works as a phone should work, and for $17 if I lose it ill just get another..","[{'text': 'phone', 'label': 'ASPECT'}]"
527
+ i have been unable to activate or use the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
528
+ Samsung could take a lesson from AT&T.,"[{'text': 'samsung', 'label': 'NAN'}]"
529
+ This was not a user friendly startup.,"[{'text': 'user', 'label': 'NAN'}]"
530
+ I have yet to find that the phone is very useful.,"[{'text': 'phone', 'label': 'ASPECT'}]"
531
+ It was then I realized the essential battery was [gasp!],"[{'text': 'battery', 'label': 'ASPECT'}]"
532
+ Not in package.,"[{'text': 'package', 'label': 'NAN'}]"
533
+ Not in phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
534
+ Not in shipping box.,"[{'text': 'box', 'label': 'NAN'}]"
535
+ If you are looking for a small AT&T phone then look no further.,"[{'text': 'phone', 'label': 'ASPECT'}]"
536
+ The price is also good.,"[{'text': 'price', 'label': 'ASPECT'}]"
537
+ Didn't come with charger.,"[{'text': 'charger', 'label': 'ASPECT'}]"
538
+ This phone is great and I'm enjoying using it.,"[{'text': 'phone', 'label': 'ASPECT'}]"
539
+ what a deal!!!!,"[{'text': 'deal', 'label': 'NAN'}]"
540
+ "2g, doesn't work","[{'text': 'work', 'label': 'NAN'}]"
541
+ No shipping and no free airtime.,"[{'text': 'shipping', 'label': 'NAN'}]"
542
+ Just as pictured and it worked fine.,"[{'text': 'fine', 'label': 'NAN'}]"
543
+ "It didn't pick up service very well, though.","[{'text': 'service', 'label': 'ASPECT'}]"
544
+ Hold up very well and are easy to use all the functions.,"[{'text': 'functions', 'label': 'NAN'}]"
545
+ Thsi phone is great!,"[{'text': 'phone', 'label': 'ASPECT'}]"
546
+ Good GoPhone.,"[{'text': 'gophone', 'label': 'NAN'}]"
547
+ This was a good sale.,"[{'text': 'sale', 'label': 'NAN'}]"
548
+ I think is a new one but its use,"[{'text': 'use', 'label': 'NAN'}]"
549
+ "Good phone, and works fine.","[{'text': 'phone', 'label': 'ASPECT'}]"
550
+ JUNK!,"[{'text': 'junk', 'label': 'NAN'}]"
551
+ Very small and screen is tiny.,"[{'text': 'screen', 'label': 'ASPECT'}]"
552
+ very small and light.,"[{'text': 'light', 'label': 'NAN'}]"
553
+ It is obviously a used and broken item.,"[{'text': 'item', 'label': 'NAN'}]"
554
+ What a shame it will go into history.,"[{'text': 'history', 'label': 'NAN'}]"
555
+ Technology has made it obsolete.,"[{'text': 'technology', 'label': 'NAN'}]"
556
+ I love its almost only text browsing.,"[{'text': 'browsing', 'label': 'NAN'}]"
557
+ "Service: So far, I have to say I am quite happy with it.","[{'text': 'service', 'label': 'ASPECT'}]"
558
+ It costs $.10/min to talk which gets deducted from your prepaid balance.,"[{'text': 'balance', 'label': 'NAN'}]"
559
+ "There is no exterior screen, making it that much more stable/energy efficient.","[{'text': 'screen', 'label': 'ASPECT'}]"
560
+ Crazy right?,"[{'text': 'right', 'label': 'NAN'}]"
561
+ I paid only $2.99 when it was on sale.,"[{'text': 'sale', 'label': 'NAN'}]"
562
+ The ring tone sound is not loud at all.,"[{'text': 'sound', 'label': 'NAN'}]"
563
+ Works now and then.,"[{'text': 'works', 'label': 'NAN'}]"
564
+ Don't expect too much from a cheap phone and you won't be disappointed.,"[{'text': 'phone', 'label': 'ASPECT'}]"
565
+ "In short, look elsewhere for a reliable phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
566
+ It works sometimes but not all the time.,"[{'text': 'time', 'label': 'NAN'}]"
567
+ I bought them on ebay and wasted my money.,"[{'text': 'money', 'label': 'ASPECT'}]"
568
+ i think it is worth the money and its fuctions are exactly what you pay for.,"[{'text': 'money', 'label': 'ASPECT'}]"
569
+ "You may be thinking, 'but it's an inexpensive phone?","[{'text': 'phone', 'label': 'ASPECT'}]"
570
+ Cover is very lose and moves side to side.,"[{'text': 'cover', 'label': 'NAN'}]"
571
+ It seems like it is a refurbished item but they say it is new.,"[{'text': 'item', 'label': 'NAN'}]"
572
+ I have ordered a second on and it does the same things.,"[{'text': 'things', 'label': 'NAN'}]"
573
+ Don't waste your money.,"[{'text': 'money', 'label': 'ASPECT'}]"
574
+ He didn't want a smartphone.,"[{'text': 'smartphone', 'label': 'NAN'}]"
575
+ This is perfect for the older crowd who just don't want to mess with learning something new.,"[{'text': 'something', 'label': 'NAN'}]"
576
+ I threw the box away.,"[{'text': 'box', 'label': 'NAN'}]"
577
+ It's a good phone for me,"[{'text': 'phone', 'label': 'ASPECT'}]"
578
+ This is the best phone I have ever owned!,"[{'text': 'phone', 'label': 'ASPECT'}]"
579
+ "It is light plastic and not as heavy or as rubberized as I was expecting, but, all in all, it will hold up quite well.","[{'text': 'plastic', 'label': 'NAN'}]"
580
+ It arrived on time.,"[{'text': 'time', 'label': 'NAN'}]"
581
+ He's not interested in smartphones.,"[{'text': 'smartphones', 'label': 'NAN'}]"
582
+ Anyway what I wanted was a tough phone with 3G.,"[{'text': 'phone', 'label': 'ASPECT'}]"
583
+ "This was done to get good adhesion for step two, superglue.","[{'text': 'step', 'label': 'NAN'}]"
584
+ The soft keys are programmable and I have made them match my old tundra.,"[{'text': 'keys', 'label': 'NAN'}]"
585
+ That is a real plus.,"[{'text': 'plus', 'label': 'NAN'}]"
586
+ It consistently performs very poorly as far as reception goes.,"[{'text': 'reception', 'label': 'NAN'}]"
587
+ I've had to terminate calls because I couldn't hear the ther party well enough to continue.,"[{'text': 'calls', 'label': 'ASPECT'}]"
588
+ "As a phone, it leaves a lot to be desired.","[{'text': 'phone', 'label': 'ASPECT'}]"
589
+ I had an absolutely terrible experience with the original Rugby..,"[{'text': 'experience', 'label': 'NAN'}]"
590
+ "So, I was forced into The Rugby II.","[{'text': 'ii', 'label': 'NAN'}]"
591
+ It will take pretty decent pictures when it's folded.,"[{'text': 'pictures', 'label': 'ASPECT'}]"
592
+ "If I'm suddenly feeling lighter, I know I've left my phone somewhere.","[{'text': 'phone', 'label': 'ASPECT'}]"
593
+ "You'll need a heavy duty case, too.","[{'text': 'case', 'label': 'ASPECT'}]"
594
+ I use a magnetic one made by body glove.,"[{'text': 'body', 'label': 'NAN'}]"
595
+ with no difficulty.,"[{'text': 'difficulty', 'label': 'NAN'}]"
596
+ Don't try to voice dial 911.,"[{'text': 'voice', 'label': 'NAN'}]"
597
+ lol).,"[{'text': 'lol', 'label': 'NAN'}]"
598
+ "It took awhile for me to get used to the Rugbys after having a more ""consumer-ized"" phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
599
+ "Now that my faith in Samsung has turned slightly for the better again, I'm getting a Samsung WEP570 bluetooth earpiece.","[{'text': 'samsung', 'label': 'NAN'}]"
600
+ "I'll review that soon, too.","[{'text': 'review', 'label': 'NAN'}]"
601
+ And that kind of defeats the purpose of texting.,"[{'text': 'purpose', 'label': 'NAN'}]"
602
+ "After 18 mos of rugged use, my rugby 2 is starting to freeze up.","[{'text': 'use', 'label': 'NAN'}]"
603
+ This is a good phone if all you want is a phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
604
+ The manual is not very useful and is confusing at times.,"[{'text': 'times', 'label': 'NAN'}]"
605
+ My complaints are: 1.,"[{'text': 'complaints', 'label': 'NAN'}]"
606
+ The instructions were wrong and the manual was wrong.,"[{'text': 'instructions', 'label': 'NAN'}]"
607
+ Both said to turn the screw the wrong way!!!,"[{'text': 'way', 'label': 'NAN'}]"
608
+ "For instance, once I accidentally left it powered on and inside my pants pocket while those pants were being machine washed.","[{'text': 'pocket', 'label': 'NAN'}]"
609
+ "When I discovered the phone, after the wash machine was finished, the phone was still on.","[{'text': 'phone', 'label': 'ASPECT'}]"
610
+ I have noticed that recently it goes through cycles of annoyances: turning itself off or restarting in the middle of a conversion.,"[{'text': 'the middle', 'label': 'NAN'}]"
611
+ And date it still takes all daily the punishment I give it.,"[{'text': 'date', 'label': 'NAN'}]"
612
+ "I used RTV Black Silicone gasket goop, but I am sure any silicone will do nicely.","[{'text': 'black', 'label': 'NAN'}]"
613
+ The rugged description sold them.,"[{'text': 'description', 'label': 'NAN'}]"
614
+ We also like to customize our ringtones and that works out fine.,"[{'text': 'ringtones', 'label': 'NAN'}]"
615
+ I can't speak for any of the other features since we really don't care about them.,"[{'text': 'features', 'label': 'NAN'}]"
616
+ "I often answer it with wet, muddy gloves without a problem.","[{'text': 'problem', 'label': 'NAN'}]"
617
+ My customers and potential customers know they can always get a hold of me.,"[{'text': 'customers', 'label': 'NAN'}]"
618
+ ATT could certainly learn from them.,"[{'text': 'att', 'label': 'NAN'}]"
619
+ It is rugged and can take a good drop and take getting wet.,"[{'text': 'drop', 'label': 'NAN'}]"
620
+ Now days with the new D.O.T.,"[{'text': 'days', 'label': 'NAN'}]"
621
+ "I promptly called AT&T and spoke with a representative who recommended the Sumsung Rugby as one of the most ""rugged"" phones they have.","[{'text': 'phones', 'label': 'ASPECT'}]"
622
+ "I gladly purchased the phone for about $50.00 as I was looking forward to having a phone that was able to take some ""wear and tear"".","[{'text': 'phone', 'label': 'ASPECT'}]"
623
+ One week and it broke in two.,"[{'text': 'week', 'label': 'NAN'}]"
624
+ I do like the simplicity of the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
625
+ The samsung PC studio is a joke.,"[{'text': 'pc', 'label': 'NAN'}]"
626
+ And if the messages are more than a couple sentences then you cannot print them out.,"[{'text': 'messages', 'label': 'NAN'}]"
627
+ I would not recommend this phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
628
+ I even went to the AT&T store and they could not help either.,"[{'text': 'store', 'label': 'NAN'}]"
629
+ It seems like it is so until you start endlessly having to decline adding services.,"[{'text': 'services', 'label': 'NAN'}]"
630
+ Were we not stuck with AT&T due to location this would certainly have been the final straw.,"[{'text': 'location', 'label': 'NAN'}]"
631
+ It's been dropped dozens of times and this past weekend it was dropped into a pool.,"[{'text': 'times', 'label': 'NAN'}]"
632
+ It still works as good as it did on day one.,"[{'text': 'day', 'label': 'NAN'}]"
633
+ It was working fine so far.,"[{'text': 'fine', 'label': 'NAN'}]"
634
+ I never abused or dropped the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
635
+ Now the dealer wants me to buy another?,"[{'text': 'dealer', 'label': 'NAN'}]"
636
+ This is a piece of junk.,"[{'text': 'junk', 'label': 'NAN'}]"
637
+ Samsung advertises the a837 as 'Rugged Military Spec.,"[{'text': 'samsung', 'label': 'NAN'}]"
638
+ I suggest you find another phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
639
+ everything my old one was.,"[{'text': 'everything', 'label': 'NAN'}]"
640
+ Long battery life.,"[{'text': 'life', 'label': 'NAN'}]"
641
+ "Bluetooth works great, pairs well with my Bose BT-2 and Plantronics Voyager Legend.","[{'text': 'bluetooth', 'label': 'NAN'}]"
642
+ "The earphone volume seems too low initially, but now seems fine.","[{'text': 'volume', 'label': 'NAN'}]"
643
+ "I either have gotten use to it or it may be ""broken-in"".","[{'text': 'use', 'label': 'NAN'}]"
644
+ "It didn't seem random...rather, it seemed to happen when the phone rang and I attempted to pick it up.","[{'text': 'phone', 'label': 'ASPECT'}]"
645
+ Rugby II SGH A847 .,"[{'text': 'ii', 'label': 'NAN'}]"
646
+ "It works in US, over Europe even in Japan.","[{'text': 'us', 'label': 'NAN'}]"
647
+ What a terrible phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
648
+ Just crap.,"[{'text': 'crap', 'label': 'NAN'}]"
649
+ . . those who have had open faced phones know how they tend to dial unexpectedly!,"[{'text': 'phones', 'label': 'ASPECT'}]"
650
+ "The physical features the website displayed were the ruggedized body which could withstand shock, humidity, high temperatures, resist dirt, and repel rain.","[{'text': 'body', 'label': 'NAN'}]"
651
+ T9 is suppose to be faster because it is suppose to predict the text you are going to write.,"[{'text': 'text', 'label': 'NAN'}]"
652
+ I can understand now why these phone are supposedly rugged and shockproof.,"[{'text': 'phone', 'label': 'ASPECT'}]"
653
+ I managed to ditch this clunker just before my 30-day trial period ended.,"[{'text': 'period', 'label': 'NAN'}]"
654
+ "I guess many of you love your Rugby phones, and I am glad you had better experiences with yours than I did with either of the two I tried.","[{'text': 'phones', 'label': 'ASPECT'}]"
655
+ "It landed on the hinge, broke to pieces and is NOT covered under warrantee.","[{'text': 'not', 'label': 'NAN'}]"
656
+ I carry it in a tool belt or in a leather pouch on my belt.,"[{'text': 'tool', 'label': 'NAN'}]"
657
+ "I am sure I could break it if I wanted to, but it is by far the most durable phone I have had.","[{'text': 'phone', 'label': 'ASPECT'}]"
658
+ "Over all, a good phone but hoping to get a more durable phone soon.","[{'text': 'phone', 'label': 'ASPECT'}]"
659
+ The speakerphone is nice and loud.,"[{'text': 'speakerphone', 'label': 'NAN'}]"
660
+ It would be nice if the push to talk button could be disabled; it's easy to hit by accident.,"[{'text': 'button', 'label': 'NAN'}]"
661
+ "It's made to call people, not to get dropped on concrete.","[{'text': 'people', 'label': 'NAN'}]"
662
+ I have not intention of ever using PTT anyway.,"[{'text': 'ptt', 'label': 'NAN'}]"
663
+ Horrible reception.,"[{'text': 'reception', 'label': 'NAN'}]"
664
+ Dropped Calls 6.,"[{'text': 'calls', 'label': 'ASPECT'}]"
665
+ Also it has begun to drop calls.,"[{'text': 'calls', 'label': 'ASPECT'}]"
666
+ Helped but still have a problem.,"[{'text': 'problem', 'label': 'NAN'}]"
667
+ Oh how I'd like to have a Razor phone!!!,"[{'text': 'phone', 'label': 'ASPECT'}]"
668
+ "Click on ""Create Message"" 4.","[{'text': 'message', 'label': 'NAN'}]"
669
+ Compose your text.,"[{'text': 'text', 'label': 'NAN'}]"
670
+ "BUT, if it doesn't work properly, continue here: 9.","[{'text': 'but', 'label': 'NAN'}]"
671
+ Scroll down to choice no.,"[{'text': 'choice', 'label': 'NAN'}]"
672
+ Find your text in the outbox and select it 14.,"[{'text': 'text', 'label': 'NAN'}]"
673
+ We had the phone approx.,"[{'text': 'phone', 'label': 'ASPECT'}]"
674
+ Still works with the crack.,"[{'text': 'crack', 'label': 'NAN'}]"
675
+ THANK SO MUCH!!,"[{'text': 'so', 'label': 'NAN'}]"
676
+ No battery.,"[{'text': 'battery', 'label': 'ASPECT'}]"
677
+ I will use it for several months and resale it,"[{'text': 'months', 'label': 'NAN'}]"
678
+ That's more then I paid for the phone!,"[{'text': 'phone', 'label': 'ASPECT'}]"
679
+ I guess I should be thankful the headset is only $20.,"[{'text': 'headset', 'label': 'NAN'}]"
680
+ "Samsung, you let me down!","[{'text': 'samsung', 'label': 'NAN'}]"
681
+ "The reception was extremely good, especially considering that she lives in rural West Virginia.","[{'text': 'reception', 'label': 'NAN'}]"
682
+ The marketing rep answered.,"[{'text': 'rep', 'label': 'NAN'}]"
683
+ I reported that I was not interested in the gift but the marketer was persistent.,"[{'text': 'gift', 'label': 'NAN'}]"
684
+ I finally hung up without activation.,"[{'text': 'activation', 'label': 'NAN'}]"
685
+ The next day I tried again and dialed *611.,"[{'text': 'day', 'label': 'NAN'}]"
686
+ I dialed the number and once again was greeted by a marketer who explained that I had won $500.,"[{'text': 'number', 'label': 'NAN'}]"
687
+ "Also, the camera is essentially useless.","[{'text': 'camera', 'label': 'ASPECT'}]"
688
+ "Similarly I've had friends ask why I didn't text them back, when I never received it.","[{'text': 'friends', 'label': 'NAN'}]"
689
+ You can't zoom in on pictures.,"[{'text': 'pictures', 'label': 'ASPECT'}]"
690
+ "Simply put, I'm about to upgrade phones though.","[{'text': 'phones', 'label': 'ASPECT'}]"
691
+ What the heck?!,"[{'text': 'heck', 'label': 'NAN'}]"
692
+ "I tried 2 other good batteries, no luck.","[{'text': 'batteries', 'label': 'NAN'}]"
693
+ I had to upgrade because my previous phone broke.,"[{'text': 'phone', 'label': 'ASPECT'}]"
694
+ What a mistake.,"[{'text': 'mistake', 'label': 'NAN'}]"
695
+ Hundreds of contacts.,"[{'text': 'contacts', 'label': 'NAN'}]"
696
+ An alert keeps going off for a calendar reminder that is passed and I can't delete it because it is not even listed!,"[{'text': 'calendar', 'label': 'NAN'}]"
697
+ I called for help and it is better but not great.,"[{'text': 'help', 'label': 'NAN'}]"
698
+ "Terrible, unpredictable product.","[{'text': 'product', 'label': 'NAN'}]"
699
+ Of the 10 or so cell phone we've experienced -- this is by far the dumbest.,"[{'text': 'phone', 'label': 'ASPECT'}]"
700
+ I miss my old slimmer Samsung.,"[{'text': 'samsung', 'label': 'NAN'}]"
701
+ 'still works great.,"[{'text': 'works great', 'label': 'NAN'}]"
702
+ BOTH of these two phones had this.,"[{'text': 'phones', 'label': 'ASPECT'}]"
703
+ "It shipped from South Carolina, and arrived in less than 3 days!","[{'text': 'days', 'label': 'NAN'}]"
704
+ More than 4500 miles in that short of time.,"[{'text': 'time', 'label': 'NAN'}]"
705
+ The phone itself was better than I expected it to be.,"[{'text': 'phone', 'label': 'ASPECT'}]"
706
+ It was NOT compatible.,"[{'text': 'not', 'label': 'NAN'}]"
707
+ "It is just OK, not great.","[{'text': 'ok', 'label': 'NAN'}]"
708
+ Good phone I just pray that it lasts because it is used,"[{'text': 'phone', 'label': 'ASPECT'}]"
709
+ Worked great with Verizon.,"[{'text': 'verizon', 'label': 'NAN'}]"
710
+ Quick shipping.,"[{'text': 'shipping', 'label': 'NAN'}]"
711
+ The fast shipping is always great.,"[{'text': 'shipping', 'label': 'NAN'}]"
712
+ They actually told me I could have done it at home.,"[{'text': 'home', 'label': 'NAN'}]"
713
+ Issues with screen failure.,"[{'text': 'issues', 'label': 'NAN'}]"
714
+ All I need for calls,"[{'text': 'calls', 'label': 'ASPECT'}]"
715
+ "Also, a great conversation piece.","[{'text': 'conversation', 'label': 'NAN'}]"
716
+ good phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
717
+ Love this phone,"[{'text': 'phone', 'label': 'ASPECT'}]"
718
+ Good Quality too,"[{'text': 'quality', 'label': 'ASPECT'}]"
719
+ Sucks!,"[{'text': 'sucks', 'label': 'NAN'}]"
720
+ Waste of money all it is is a paperweight !,"[{'text': 'money', 'label': 'ASPECT'}]"
721
+ He said that he would replace the phone for free and all I had to do was send back the 1st one.,"[{'text': 'phone', 'label': 'ASPECT'}]"
722
+ He said to keep both phones.,"[{'text': 'phones', 'label': 'ASPECT'}]"
723
+ This was a refurbished phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
724
+ fast service.,"[{'text': 'service', 'label': 'ASPECT'}]"
725
+ product is as stated.,"[{'text': 'product', 'label': 'NAN'}]"
726
+ It truly is rugged and I am very hard on phones.,"[{'text': 'phones', 'label': 'ASPECT'}]"
727
+ hard for old man to use,"[{'text': 'man', 'label': 'NAN'}]"
728
+ wife loves it,"[{'text': 'wife', 'label': 'NAN'}]"
729
+ Purchased used from NuTwo on Amazon.,"[{'text': 'amazon', 'label': 'NAN'}]"
730
+ "It was rated as in ""very good"" condition.","[{'text': 'condition', 'label': 'NAN'}]"
731
+ Highly recommend seller.,"[{'text': 'seller', 'label': 'NAN'}]"
732
+ Font adjustment is adequate.,"[{'text': 'font', 'label': 'NAN'}]"
733
+ Screens are clear and bright.,"[{'text': 'screens', 'label': 'NAN'}]"
734
+ I inserted a 16GB Sandisk MicroSD and it worked flawlessly for both pics and camcorder.,"[{'text': 'pics', 'label': 'NAN'}]"
735
+ I played with it briefly and seems to work o.k.,"[{'text': 'work', 'label': 'NAN'}]"
736
+ I plugged in mid-grade headphones and tunes sounded good.,"[{'text': 'headphones', 'label': 'NAN'}]"
737
+ "As for TargetWireless, I started by asking them a question.","[{'text': 'question', 'label': 'NAN'}]"
738
+ I ordered the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
739
+ They shipped it the same day.,"[{'text': 'day', 'label': 'NAN'}]"
740
+ Thank you!,"[{'text': 'thank you', 'label': 'NAN'}]"
741
+ I bought 10 phones from them.,"[{'text': 'phones', 'label': 'ASPECT'}]"
742
+ I'm please.,"[{'text': 'please', 'label': 'NAN'}]"
743
+ "However, it has numerous issues.","[{'text': 'issues', 'label': 'NAN'}]"
744
+ I hope this one last as long as the previous one did.,"[{'text': 'this one', 'label': 'NAN'}]"
745
+ Topic stated it had a few scratches but was readable.,"[{'text': 'scratches', 'label': 'NAN'}]"
746
+ "My assumption is that the phone is just fine,although I can't say for certain.","[{'text': 'phone', 'label': 'ASPECT'}]"
747
+ Because my assumption was that it came with a charger.,"[{'text': 'charger', 'label': 'ASPECT'}]"
748
+ Just make sure you get the damn charger.,"[{'text': 'charger', 'label': 'ASPECT'}]"
749
+ It is durable but I am on my 4th phone so I am not sure how rugged it is.,"[{'text': 'phone', 'label': 'ASPECT'}]"
750
+ love this phone,"[{'text': 'phone', 'label': 'ASPECT'}]"
751
+ Product as described.,"[{'text': 'product', 'label': 'NAN'}]"
752
+ Works perfect.,"[{'text': 'works', 'label': 'NAN'}]"
753
+ fast,"[{'text': 'fast', 'label': 'NAN'}]"
754
+ Vert good choice.,"[{'text': 'choice', 'label': 'NAN'}]"
755
+ Works as expected,"[{'text': 'works', 'label': 'NAN'}]"
756
+ "Okay, I must eat crow here.","[{'text': 'okay', 'label': 'NAN'}]"
757
+ My apologies to the vendor.,"[{'text': 'vendor', 'label': 'NAN'}]"
758
+ "It has push to talk, and is built to military specs.","[{'text': 'specs', 'label': 'NAN'}]"
759
+ Verizon took care of that though.,"[{'text': 'verizon', 'label': 'NAN'}]"
760
+ "If you just want a, you know, a *phone*, this is smart enough.","[{'text': 'phone', 'label': 'ASPECT'}]"
761
+ Scratch that.,"[{'text': 'scratch', 'label': 'NAN'}]"
762
+ It looked more like the $40 I paid rather than this $10 phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
763
+ Scratch that.,"[{'text': 'scratch', 'label': 'NAN'}]"
764
+ The worst is all the overlays (for punctuation and things like $ / etc.,"[{'text': 'things', 'label': 'NAN'}]"
765
+ "), which, if you have started losing your fine eyesight as I have, is murder, because it's very hard to see what's on each key.","[{'text': 'key', 'label': 'NAN'}]"
766
+ The downloading of website pages is a bit slow to complete.,"[{'text': 'pages', 'label': 'NAN'}]"
767
+ I could not browse or navigate through any site until the downloading completely finished.,"[{'text': 'site', 'label': 'NAN'}]"
768
+ KEYPAD: 1).,"[{'text': 'keypad', 'label': 'NAN'}]"
769
+ pressing 2 keys at once or pressing the wrong keys).,"[{'text': 'keys', 'label': 'NAN'}]"
770
+ Surprisingly I've had no trouble typing.,"[{'text': 'trouble', 'label': 'NAN'}]"
771
+ I didn't know that until I read the instruction booklet a few days later.,"[{'text': 'days', 'label': 'NAN'}]"
772
+ MUCH clearer than my 2 laptops' speakers that's for sure.,"[{'text': 'speakers', 'label': 'NAN'}]"
773
+ I also like that there's a character count which lets you know when you're about to hit the maximum (160 character per text).,"[{'text': 'text', 'label': 'NAN'}]"
774
+ "Quick, easy, and done in less than a half hour.","[{'text': 'hour', 'label': 'NAN'}]"
775
+ At first I was a little concerned about the small buttons but I got used to them very quickly.,"[{'text': 'buttons', 'label': 'NAN'}]"
776
+ Amazon is Amazing!,"[{'text': 'amazon', 'label': 'NAN'}]"
777
+ My unlocked HP Pre 3 messed up and I saw this for only $9.99 FREE PRIME shipping.,"[{'text': 'shipping', 'label': 'NAN'}]"
778
+ It was a steal.This phone is exactly what I needed.,"[{'text': 'phone', 'label': 'ASPECT'}]"
779
+ Which I think is achievable once I get used to the keyboard.,"[{'text': 'keyboard', 'label': 'NAN'}]"
780
+ It wasn't as slow as the other reviews led me to believe it would be.,"[{'text': 'reviews', 'label': 'NAN'}]"
781
+ I'll only use it in emergency situations.,"[{'text': 'emergency', 'label': 'NAN'}]"
782
+ "If I lose it or it get dropped into water, not that much of a loss.","[{'text': 'water', 'label': 'NAN'}]"
783
+ I attributed this to the rubberized hard cover.,"[{'text': 'cover', 'label': 'NAN'}]"
784
+ I like the phone and it does what it says it will do.,"[{'text': 'phone', 'label': 'ASPECT'}]"
785
+ Buttons are small but easy to get used to.,"[{'text': 'buttons', 'label': 'NAN'}]"
786
+ "There is a camera, its not an especially great one but its there if you need it.","[{'text': 'camera', 'label': 'ASPECT'}]"
787
+ It is very affordable and works great.,"[{'text': 'works great', 'label': 'NAN'}]"
788
+ Pros: 1.),"[{'text': 'pros', 'label': 'NAN'}]"
789
+ Very user-friendly (I find Samung phones easy to use) 3.),"[{'text': 'phones', 'label': 'ASPECT'}]"
790
+ Cons: 1.),"[{'text': 'cons', 'label': 'NAN'}]"
791
+ Poor sound quality 2.),"[{'text': 'sound quality', 'label': 'NAN'}]"
792
+ "With my Tracfone, they only cost 0.3 minute/text.","[{'text': 'tracfone', 'label': 'NAN'}]"
793
+ Good reception everywhere.,"[{'text': 'reception', 'label': 'NAN'}]"
794
+ Product as described.,"[{'text': 'product', 'label': 'NAN'}]"
795
+ Excellent seller.,"[{'text': 'seller', 'label': 'NAN'}]"
796
+ Would purchase from seller again.,"[{'text': 'seller', 'label': 'NAN'}]"
797
+ This is a great and affordable phone for calling and texting purposes.,"[{'text': 'phone', 'label': 'ASPECT'}]"
798
+ It is five stars for that.,"[{'text': 'stars', 'label': 'NAN'}]"
799
+ "Never used it since it doesn't work in Mexico, otherwise I guess it's fine for the U.S.","[{'text': 'fine', 'label': 'NAN'}]"
800
+ "After this, the phone couldn’t receive a signal… almost anywhere.","[{'text': 'phone', 'label': 'ASPECT'}]"
801
+ I was fine with this even putting aside that we’d had the produce well over a month and never got to use it.,"[{'text': 'month', 'label': 'NAN'}]"
802
+ "So, I called Net 10 yet again to explain the problem to them.","[{'text': 'problem', 'label': 'NAN'}]"
803
+ They said that they’d send another phone and never did.,"[{'text': 'phone', 'label': 'ASPECT'}]"
804
+ Instead they cancelled my service with them which is just fine as I would’ve done that anyway.,"[{'text': 'service', 'label': 'ASPECT'}]"
805
+ This is a great product!,"[{'text': 'product', 'label': 'NAN'}]"
806
+ Charger included.,"[{'text': 'charger', 'label': 'ASPECT'}]"
807
+ "Music, ringtones sound great!","[{'text': 'music', 'label': 'ASPECT'}]"
808
+ Can t beat price !,"[{'text': 'price', 'label': 'ASPECT'}]"
809
+ Good photos... don't print well for me.,"[{'text': 'photos', 'label': 'ASPECT'}]"
810
+ great work!,"[{'text': 'work', 'label': 'NAN'}]"
811
+ This is the best deal out there.,"[{'text': 'deal', 'label': 'NAN'}]"
812
+ Other than that it's fine.,"[{'text': 'fine', 'label': 'NAN'}]"
813
+ Delivery was a dream...,"[{'text': 'delivery', 'label': 'NAN'}]"
814
+ "Oh, what I would give to have that phone back!","[{'text': 'phone', 'label': 'ASPECT'}]"
815
+ The keyboard is also kind of weird.,"[{'text': 'keyboard', 'label': 'NAN'}]"
816
+ "All in all, this is not a good phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
817
+ It has all the features I was looking for!,"[{'text': 'features', 'label': 'NAN'}]"
818
+ I am happy with the product that I bought.,"[{'text': 'product', 'label': 'NAN'}]"
819
+ Highly recommend as a phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
820
+ it was defective the baterry didnt work.,"[{'text': 'work', 'label': 'NAN'}]"
821
+ I bought two of these from Amazon.,"[{'text': 'amazon', 'label': 'NAN'}]"
822
+ I never let it past 2 bars(out of 5) so I don't know how long it truly lasts.,"[{'text': 'bars', 'label': 'NAN'}]"
823
+ I lost my first one of these 2 days ago.,"[{'text': 'days', 'label': 'NAN'}]"
824
+ I had it over a year.,"[{'text': 'year', 'label': 'NAN'}]"
825
+ It has a good speakerphone.,"[{'text': 'speakerphone', 'label': 'NAN'}]"
826
+ No extra features.,"[{'text': 'features', 'label': 'NAN'}]"
827
+ Sometimes you have to ask them what it is a photo of.,"[{'text': 'photo', 'label': 'NAN'}]"
828
+ (the LG900g has a nice camera).,"[{'text': 'camera', 'label': 'ASPECT'}]"
829
+ "The browser, well, it's a browser.","[{'text': 'browser', 'label': 'NAN'}]"
830
+ Not a smartphone.,"[{'text': 'smartphone', 'label': 'NAN'}]"
831
+ I was really sad to lose my first one and really happy to find another one here at this price.,"[{'text': 'price', 'label': 'ASPECT'}]"
832
+ However it Is not without A few aggravating features.,"[{'text': 'features', 'label': 'NAN'}]"
833
+ I have purchased 3 of these phones.,"[{'text': 'phones', 'label': 'ASPECT'}]"
834
+ To my knowledge it has never actually butt-dialed anyone.,"[{'text': 'anyone', 'label': 'NAN'}]"
835
+ "I can lock it by just holding down the spacebar, but I often forget.","[{'text': 'lock', 'label': 'NAN'}]"
836
+ So why do I give them 5 stars?,"[{'text': 'stars', 'label': 'NAN'}]"
837
+ "As far as usability, the phone is great.","[{'text': 'phone', 'label': 'ASPECT'}]"
838
+ "First off, the deal is crazy.","[{'text': 'deal', 'label': 'NAN'}]"
839
+ "Secondly, I like Net10, because you can switch their calling plans hassle-free!","[{'text': 'plans', 'label': 'NAN'}]"
840
+ I mainly use them for backgrounds on the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
841
+ I love the querty keyboard.,"[{'text': 'keyboard', 'label': 'NAN'}]"
842
+ I was going to return it BUT it's almost $7.00 to do a UPS drop-off and $13.00 for UPS to pick it up.,"[{'text': 'but', 'label': 'NAN'}]"
843
+ This is a great starter phone for a kid.,"[{'text': 'phone', 'label': 'ASPECT'}]"
844
+ I absolutely do not want Tracfone.,"[{'text': 'tracfone', 'label': 'NAN'}]"
845
+ I am really upset about this right now.,"[{'text': 'right', 'label': 'NAN'}]"
846
+ It doesn't take one and you can activate it on Net10 without one.,"[{'text': 'net10', 'label': 'NAN'}]"
847
+ Thank you Shopcelldeals!,"[{'text': 'thank you', 'label': 'NAN'}]"
848
+ Junk.,"[{'text': 'junk', 'label': 'NAN'}]"
849
+ Net 10 couldn't even get it to work or load minutes.,"[{'text': 'minutes', 'label': 'NAN'}]"
850
+ One tech said it was used previously.,"[{'text': 'tech', 'label': 'NAN'}]"
851
+ I returned it to Amazon.,"[{'text': 'amazon', 'label': 'NAN'}]"
852
+ Will update further when I have a chance to play around with it!,"[{'text': 'a chance', 'label': 'NAN'}]"
853
+ Pleased with the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
854
+ Call clarity is excellent.,"[{'text': 'clarity', 'label': 'NAN'}]"
855
+ "bought this for my 7 yr old granddaughter , she loved it !","[{'text': 'bought this', 'label': 'NAN'}]"
856
+ lol,"[{'text': 'lol', 'label': 'NAN'}]"
857
+ Thanks Amazon!!!!!!!!,"[{'text': 'thanks', 'label': 'NAN'}]"
858
+ "Good ""slightly more than just basic"" phone.","[{'text': 'phone', 'label': 'ASPECT'}]"
859
+ 3.5 headphone jack.,"[{'text': 'jack', 'label': 'NAN'}]"
860
+ I like it a lot.,"[{'text': 'a lot', 'label': 'NAN'}]"
861
+ Other phones it's 0.50.,"[{'text': 'phones', 'label': 'ASPECT'}]"
862
+ For me that was a big selling point.,"[{'text': 'point', 'label': 'NAN'}]"
863
+ It was very fustrating to figure out so hope this avoids this for the next customer.,"[{'text': 'customer', 'label': 'NAN'}]"
864
+ Bought it for my daughter.,"[{'text': 'my daughter', 'label': 'NAN'}]"
865
+ She can't have that happening in school.,"[{'text': 'school', 'label': 'NAN'}]"
866
+ It is much more convenient than my previous phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
867
+ The main selling poing for me was the keyboard.,"[{'text': 'keyboard', 'label': 'NAN'}]"
868
+ My old phone would not let me do this.,"[{'text': 'phone', 'label': 'ASPECT'}]"
869
+ It blows my mind that the phone is so inexpensive and yet does SO much.,"[{'text': 'phone', 'label': 'ASPECT'}]"
870
+ Delivered on time and was just as expecting.,"[{'text': 'time', 'label': 'NAN'}]"
871
+ I like simple phones and this works - for $10 what can you expect!,"[{'text': 'phones', 'label': 'ASPECT'}]"
872
+ Ok,"[{'text': 'ok', 'label': 'NAN'}]"
873
+ This phone is great!,"[{'text': 'phone', 'label': 'ASPECT'}]"
874
+ I just need a phone!,"[{'text': 'phone', 'label': 'ASPECT'}]"
875
+ The phone is great for texting!,"[{'text': 'phone', 'label': 'ASPECT'}]"
876
+ Crystal clear and easy to use.,"[{'text': 'use', 'label': 'NAN'}]"
877
+ "No Complaints as of yet, but i will let you know if there is.","[{'text': 'complaints', 'label': 'NAN'}]"
878
+ No data;),"[{'text': 'data', 'label': 'NAN'}]"
879
+ Very inexpensive while providing him with a full keyboard making texting a little easier.,"[{'text': 'keyboard', 'label': 'NAN'}]"
880
+ Thanks again!!,"[{'text': 'thanks', 'label': 'NAN'}]"
881
+ Thanks,"[{'text': 'thanks', 'label': 'NAN'}]"
882
+ Excellent,"[{'text': 'excellent', 'label': 'NAN'}]"
883
+ It provides you will all of the essentials you need in a phone!,"[{'text': 'phone', 'label': 'ASPECT'}]"
884
+ I highly recommend this phone for the budget conscious individuals!,"[{'text': 'phone', 'label': 'ASPECT'}]"
885
+ Also you can lock the keypad by pressing and holding the spacebar down.,"[{'text': 'keypad', 'label': 'NAN'}]"
886
+ works ok,"[{'text': 'works', 'label': 'NAN'}]"
887
+ I really love the phone and it has been working great for me.,"[{'text': 'phone', 'label': 'ASPECT'}]"
888
+ "Net 10 and their service is without a doubt the most frustrating ,inefficient poor service I've ever encountered in any industry.","[{'text': 'service', 'label': 'ASPECT'}]"
889
+ Strange it expired the minute they tried to transfer it!,"[{'text': 'minute', 'label': 'NAN'}]"
890
+ Liked the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
891
+ Just got it today 4-19-2013.,"[{'text': 'today', 'label': 'NAN'}]"
892
+ It will not charge.,"[{'text': 'charge', 'label': 'NAN'}]"
893
+ Do not know how to get another one.,"[{'text': 'do not', 'label': 'NAN'}]"
894
+ Probably will just have to pitch the phone.,"[{'text': 'phone', 'label': 'ASPECT'}]"
895
+ Therefore my phone could not be used but was usable when I traveled to two different major cities in Texas.,"[{'text': 'phone', 'label': 'ASPECT'}]"
896
+ "So, into the garbage it goes.","[{'text': 'garbage', 'label': 'NAN'}]"
897
+ I will keep that part),"[{'text': 'part', 'label': 'NAN'}]"
898
+ If your looking for an android phone you need look no farther.,"[{'text': 'phone', 'label': 'ASPECT'}]"
data/rel_test.csv ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ sentText,relationMentions
2
+ "Voice dialing is also a nice feature, but it takes longer than speed dialing.","[{'entity1': 'voice', 'entity2': 'speed', 'label': '/no_relation'}]"
3
+ "Other than that, I do love the phone and all that I am able to do with it; and I'm not just talking about making the phone calls!","[{'entity1': 'phone', 'entity2': 'phone calls', 'label': '/has_feature'}]"
4
+ "You can take the case off to put your own pictures in the jaket which is super cool, but when i took it back to the store-an employee said they were meant to be hard to get off.","[{'entity1': 'case', 'entity2': 'pictures', 'label': '/no_relation'}]"
5
+ Color: 3 words that describe the Nokia 3588 perfectly.,"[{'entity1': 'nokia', 'entity2': 'color', 'label': '/has_feature'}]"
6
+ ": The Nokia 3599 includes an alarm clock, calendar, voice recorder, calculator and stopwatch .","[{'entity1': 'nokia', 'entity2': 'voice', 'label': '/has_feature'}]"
7
+ "And oh, if you're thinking of getting this for a teenager, you've come to the right phone; they'll go crazy after its looks AND its color LCD (which happens to be a little oversize).","[{'entity1': 'phone', 'entity2': 'color', 'label': '/has_feature'}]"
8
+ A phone call to tech support was required to find out that you need to buy a headset that plugs into the Pop-port accessory connector on the bottom of the phone.,"[{'entity1': 'phone', 'entity2': 'call', 'label': '/has_feature'}]"
9
+ "The quality of the phone is great too, it feels sturdy and weighted.","[{'entity1': 'phone', 'entity2': 'quality', 'label': '/has_feature'}]"
10
+ The color screen is very nice and all of the features are easy to use.,"[{'entity1': 'color', 'entity2': 'screen', 'label': '/no_relation'}]"
11
+ The downside to this cute phone is the case.,"[{'entity1': 'phone', 'entity2': 'case', 'label': '/has_feature'}]"
12
+ Who really uses the camera on thier phone anyway?,"[{'entity1': 'phone', 'entity2': 'camera', 'label': '/has_feature'}]"
13
+ It has the nice ability to attach a voice tag to a phone number...a useful feature...when it works.,"[{'entity1': 'phone', 'entity2': 'voice', 'label': '/has_feature'}]"
14
+ "In my residence, I use my husband's Sanyo, as it gets an excellent signal, and doesn't drop nearly as many calls.","[{'entity1': 'signal', 'entity2': 'calls', 'label': '/no_relation'}]"
15
+ I can only assume it is the poor quality of the phone that is to blame.,"[{'entity1': 'phone', 'entity2': 'quality', 'label': '/has_feature'}]"
16
+ "When I went to get a new phone a day before my contract expired, I of course wanted to keep my number.","[{'entity1': 'phone', 'entity2': 'contract', 'label': '/has_feature'}]"
17
+ "Most of the time I would not even recieve incoming calls, calls would go straight to my voice mail.","[{'entity1': 'calls', 'entity2': 'voice', 'label': '/no_relation'}]"
18
+ "Not only would I not get the calls, but often I would not even get the voice mails until days or even weeks later.","[{'entity1': 'voice', 'entity2': 'calls', 'label': '/no_relation'}]"
19
+ I recieved so many different error messages sometimes I wonder if they just spend all their time at nextel thinking of different error messages to program into their phones.,"[{'entity1': 'phones', 'entity2': 'messages', 'label': '/has_feature'}]"
20
+ The phone did not come with a charger and didn't have a sims card.,"[{'entity1': 'phone', 'entity2': 'charger', 'label': '/has_feature'}]"
21
+ "Needless to say this is a very sturdy phone, very simple and easy to use, long battery life (Like really long, like Stretch Armstrong long), takes being dropped and smacked around like a champ.","[{'entity1': 'phone', 'entity2': 'battery', 'label': '/has_feature'}]"
22
+ "Easy to use features, slim in size at a very good price.","[{'entity1': 'size', 'entity2': 'price', 'label': '/no_relation'}]"
23
+ "I called from a landline to both phones and the at& t picked up within 13 seconds while the T-Mobile at 25 sec or most of the time, just jumped to my voice mail only.","[{'entity1': 'phones', 'entity2': 'voice', 'label': '/has_feature'}]"
24
+ "I hoped it might last 6 months, until I decided what to do next (change service providers, get a new contract with a free phone, etc.)","[{'entity1': 'phone', 'entity2': 'contract', 'label': '/has_feature'}]"
25
+ thats a fraction of a price than the cheapest upgrade service plan phone.,"[{'entity1': 'phone', 'entity2': 'price', 'label': '/has_feature'}]"
26
+ She said she never turned it on at all until that day so maybe it got turned on accidently in her purse (phone turns on by pressing a button on the front for 4 or 5 seconds).,"[{'entity1': 'phone', 'entity2': 'button', 'label': '/has_feature'}]"
27
+ "The buttons are large enough for adult fingers and, important for a slider phone, even the top buttons are fully accessible.","[{'entity1': 'phone', 'entity2': 'buttons', 'label': '/has_feature'}]"
28
+ "It may seem excessive for a phone, however when increasing the pixel number beyond 3M, image stabilization is actually essential if photos of any value are to be taken.","[{'entity1': 'phone', 'entity2': 'photos', 'label': '/has_feature'}]"
29
+ "The quality of this Nokia 6300 slide, I was going to have as a souvenir, is completely different from the one used to be when I had it brand new in 2008 which was made not in China.","[{'entity1': 'nokia', 'entity2': 'quality', 'label': '/has_feature'}]"
30
+ It's battery was just about dead so I decided to leave it in the car to charge.,"[{'entity1': 'charge', 'entity2': 'battery', 'label': '/no_relation'}]"
data/reviews100.csv ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ reviewerID,reviewText
2
+ 0,I love this case! It's so pretty.And I love the way the case feels to the touch because of the rubber. Very happy!
3
+ 0,The idea of the design is a sweet idea but it wears off as the paint is over the case and not under a sealant or anything. It has a cool 3D effect but at the cost of the paint rubbing off.It is quite pretty though.
4
+ 0,"I was worried about this order because the picture on the description page kept changing to a less-desireable green/orange cover. But alas, it came a day earlier than expected, and the beautiful pink product expected! The ""rubberized"" cover feels a little greasy (like it was armor-all'd), but the design is gorgeous and a little 3D looking!"
5
+ 0,Another pretty phone case that I really love. I have many as I love t o change them around .thanks
6
+ 0,"The case is not white, its more of a silver. It's still a very pretty case- it fit my phone perfectly. It took too long to arrive."
7
+ 0,Defintiely worth the price...You should order several. Most cases are $15 and up especially at the cell phone stores. I can't believe the mark up on these things!
8
+ 0,This is a great case... It fit my phone perfectly and I still use it from time to time. Would recommend
9
+ 0,"Received this item very quickly. The design is even more vivid than expected. The cover is soft (rubberized) but durable. I have received many compliments. It was an excellent buy! I would recommend this to anyone wanting a ""good look"" for their phone."
10
+ 0,this cover makes an old phone look and feel new. I like that I can order covers for little money and snazzy up my phone.
11
+ 0,"I loved the case when I first received it but shortly after, the case started to peel off at first i did not know what it was until i looked on the back of the case and it was missing spots. Guess sometimes a good deal is not really a good deal.would not purchase."
12
+ 0,"The color is more dark in person, and this isnt the best protection case. I get a lot of compliments on the case, and it was easy to put on."
13
+ 0,Simple to install and a great way to help protect your phone.My wife really liked the ability to change the look of her phone.
14
+ 0,The case is pretty good. It dose have some scratches on one side of the phone but its every little. Other then that i like it. Ive dropped my phone a few times since putting on the case and it didnt break or scratch. Ive gotten many complements on this case and over all it was worth the few bucks I spent.
15
+ 0,This case is afordable and yes it peels very easy but thats to be expected because its a dollor. I bought mine from Electromaster. It snaps on fine for me but if I were to drop my phone the phone would be fine but the case would surely be done for. its only a dollar so do not get your hopes up. it looks great but its for show not for protection. if you want your phone to be protected go the extra mile for an outter box
16
+ 0,This is one of my favorite cases I have this one on my phone I really love the color a lot.
17
+ 0,It looked like it was used! It was broken when it got to be the paint job was horrible.I would never get it again
18
+ 0,"This case for some reason is peeling, there isn't much left of the orginal skin, i loved the case with pink being my favorite color but i wouldn't recommend this specific one for anyone."
19
+ 0,Its rubberized doesn't look like it in the picture but it is It's really cute I love this case used it for awhile but I switch out cases like I do my shoes.
20
+ 0,"Received this in about a weeks time. Very nice actually considering how cheap the price was. It's a pink/purple with black leopard spots and has a very nice feel to it. I haven't tried to remove it yet, but hopefully it won't give me any trouble when I do want to change covers."
21
+ 0,This case was by far the best case I bought for this phone. It is very stylish and I received many compliments
22
+ 0,"This is the cutest case EVER! I love it because it was easy to apply. I had to switch from the rubber one because after so many uses, it wears out like the bottom hem of a sweater that has been stretched. This case keeps my phone intact and protected at the same time...WOO HOO!!"
23
+ 0,my daughter liked it for a few days and then i didnt see it anymore on the phone. Use your judgement on that one.
24
+ 0,"so far no problems, it charges fast that is what i need it. it doesn' have an USB as it specified, jus a direct wall charger."
25
+ 0,Great ! So far.I had this charger before and it seem to last pretty good 3 years fits most phones except Iphone and Galaxy 5 but that phone can still use it in the right side of the portal it will Judy charge it a bit slower. When this charger goes it tends to loose it's fit firmly in usb and has a short.
26
+ 0,Another very good phone charger that does the job and has a very affordable price that anyone can afford to buy it.
27
+ 0,Works well. We use this for travel and it lives in our luggage most of the year. For the low price having an extra USB charger this works great. Charges our Galaxy S3 and Note 2.
28
+ 0,"I needed a charger quick and I didn't want to spend $20.00 at the convenience store for a short, crappy charger. For this price, the charger is great.Pros: The cord length is perfect if you have a tall bed. I don't have to struggle to see my phone when I'm laying down.Cons: The plug in is a little blocky but nothing to worry about. The connecter doesn't like to stay in place 100% of the time. It does NOT fall out but if you wiggle it just right it disconnects the charge. My phone is also old and the port is a little worn. That could be my issue.If you need a good charger for a cheap price. Buy this!"
29
+ 0,Bought as a spare charger for the house and turned into my main charger because my other one failed. Nice long cable and has held up for tons of charges for my Galaxy S3.
30
+ 0,The charger only lasted a week ad after that it just stopped charging my Samsung Galaxy S3. They really need to start making these chargers better....I've been thru several!!!!
31
+ 0,"This Charger is awesome! First of all I wasn't expecting it until between 12/12 and 12/17, but it arrived on 12/11,So That was a plus for me! Second, I was kinda skeptical about purchasing it because it says that its for a Galaxy S and Blackberry so that can mean a lot of things! but I figured what the heck its cheap, so what can I loose! Well, I just got it today and decided to give it a try at work on my Galaxy S4, it charged from 80% to 100% in about 7 minutes!! Yes i timed it! and also the cord is long which is a plus for me! So if your looking for a fast charger with a long cord and not to mention a great price, this is the one!!update: not sure what the other reviewer meant by saying these are poor quality chargers, because I've had mine for a little over 2 weeks and it's still going strong!! Love this charger especially for the length!!"
32
+ 0,I purchase this for a backup at work. It charges my SGS4. I would recommend this charger for the Samsung Galaxy S4.
33
+ 0,This charger woks wonderfully on the Samsung Galaxy S4. it chargers the phone fast and the price is great! Highly Recommended product!
34
+ 0,Works great nice long cord. Does the trick. Bought several of these to put in diff. rooms & one for work.
35
+ 0,Good charger and is perfect because it is also has a USB connection. Also love that it is original material it works like that too giving a quick charge when i need it.
36
+ 0,I have had 3 phone chargers go bad in two weeks. I can not say where I purchased them. Most chargers for cell phones are cheaply made. This one is OK I guess.
37
+ 0,"Got this to replace a frayed OEM cord. The cord itself is ok ;however, the plug that looks like OEM and is stamped as such, is crap! Took 8 times longer to charge with this unit! When the cord was paired with the actual OEM plug in, it worked fine. So if you need a cord its ok; however, it is definitely not OEM and the plug is worthless. For the price and really just needing a cord it is a good value but I am very disappointed with the false markings as OEM when it is certainly not."
38
+ 0,"I received this product in a very timely manner which was delightful, however, I gave it as a gift and was embarrassed to find out it was a defective item. I was reimbursed for the product but would have much rather had a product that worked the first time."
39
+ 0,It worked fine for a few days then I had to change to cord........The charger itself working fine up to this point..........Rather than send it back I bought another cord from sprint for $19.00
40
+ 0,"fast delivery, works well. Not very long."
41
+ 0,I thought this would be a Samsung product but look like a cheap counterfiet. It came crushed and is slow to charge my phone.
42
+ 0,This detachable sansung galaxy s2 travel charger is simply good. It works perfectly. The cherry on the cake is because it is longer than the factory original l received with the phone.
43
+ 0,Had all the marking of a legit samsung product but the cord stop working after 3 days. I'm not upset because it was very inexpensive but maybe you should spend a little more and buy a better product off amazon. When it did work it worked very well.
44
+ 0,"First off, the charger works just as it should and all the ports stay connected just fine.People in other reviews were complaining that the cord was too short-- about 2 or 3 feet-- and that was what I was expecting. Instead, I got a 5 foot cord which is a bit long for the purpose I was going to use it for (in my car). Now I have a long cord dangling everywhere. That extra length may be a bonus for most, but I bumped down the rating due to seller's lack of description and/or consistency. Also I'm fairly certain the product image was changed because when I ordered it, a different style adapter was pictured... I was expecting a square shape with the USB port on the side; I got the longer rectangle shape with the USB port on the end... hmm. There's no way to verify that now.In sum: Good charger with good connectivity, looks and acts like it's an original Samsung. Cord length and adapter style may vary as it seems like the seller is not consistent."
45
+ 0,it's a charger for dirt cheap and the shipping wasn't more than the item. I wish they had the batteries i needed as well for my phone. but great all an all
46
+ 0,"although i do not use the charger, the cable is useful. it is longer than what is given with the phone. the additional length allows the phone to be placed in plain sight, instead of down by the wall receptical"
47
+ 0,"This charger doesn't charge the battery of my Samsung Galaxy S2 (i9100) properly.When I connect it to my S2, the screen gets frozen and the cell behaves in a unusual (abnormal) way."
48
+ 0,This charger is exactly like the original one that came with my phone. It is most definitely a good buy for the price!
49
+ 0,"works good with our phones, better actually than the charger that came with one of the phones initially , great price"
50
+ 0,"Was here right on time.Wall adapter what I expected and works well but dose Not Have Quick-Charge As This ad states and that was the,Whole reason I chose this chager so that is horribly disappointing and inconvenient ..... The micro usb is useless it looks and acts cheaply made, and dose not fit well in to ports an either end will periodically stop working and my phone will freeze and turn off periodically as well....I know its the usd because I tried it in several devices and adapters and it had the same problems....I Will never order from Amazon Again Only two orders out of 13 have come without Defect or Wrong Probuct!Ugh!"
51
+ 0,I haven't had any problems with it. It just like the oringal charger that comes with the Galaxy S 2.
52
+ 0,"I would like to start off by saying that this product is what I ordered and I have no complaints about shipping or the condition of the product when it came to my house, the problem I do have is the micro usb cable that comes with the charger. Why is it that all of the different companies that sell chargers on Amazon can get the plug part of the charger right but not the micro usb cord? The cord is cheap and not the original cord that comes with the other part of the charger. I am having the same issue with the charger that I ordered for my galaxy note 2. It's a very thin cord, and also very short. Maybe, a 2 21/2 foot cord? And its of a cheaper quality than the part of the charger that the micro usb plugs into..."
53
+ 0,thank you. it did not disappoint. was as expected and does the job though I am going to a new phone as the galaxy 2 has been acting up consistently. shutting down by surprise etc...
54
+ 0,I love it. It charges my phone quickly and the cord is super long. I leave it at home but will purchase another to leave at work.
55
+ 0,"In a nutshell, this is NOT an OEM charger. Although it has the Samsung markings, it doesn't seat well with a Samsung phone. This means that it's either meant for another market or it's counterfeit. With that said, I wouldn't buy this again.~~~~~~~~~~August 17, 2013 - UpdateThe seller tried to make amends by sending me three replacement chargers. After using this for a while, it is still garbage. It does not charge my phone and in fact, it drains the phone. This must be a counterfeit product. It has Samsung markings but it does not charge the phone. DO NOT BUY THIS PRODUCT!!!!"
56
+ 0,"After 2 weeks my charger just fell apart while i was taking it from the plug , not a strong charger at all i would have asked for my money but it wasn't even worth it ."
57
+ 0,I am pleased with this purchase. The detachable cable option gives very good flexibility for use with other USB cable chargers. Good quality for a travel charger.
58
+ 0,It works great thus far no issues. The only thing i might have limited was a usb Connect or it charges my t989 without fail
59
+ 0,"The big store that is in every town now (can't say their name) either does not carry anything or is always out of stock. If they ever have anything is stock, it is cheap junk that does not last. I got this cord thru amazon for a fraction of the price I usually pay for the junk at that big national store. This cord works perfectly and has lasted for months now. I also bought at the same time 2 other cheaper charger cords thru amazon that work perfectly. Since this one still works, I have the other two to fall back on when this one finally goes out. This is a great car charger, and it does not cost near as much as the junk you get at the local store--not to mention this is the Samsung brand charger verses their junk."
60
+ 0,Good lengthEasy to useVery fast chargingI would recommend it to persons who use their phone a lot.
61
+ 0,luving it right now will last about 4 mo so you cant beat the price for it I got 4 of them
62
+ 0,"JUNK!!!......This product must be miss labeled. I can not get my Samsung S2 phone to charge with this OEM charger. The lights are on, the phone says its charging but nothing happens. I am not sure if I got a defective product but it is very upsetting to sit in your car for hours and not see your phone recharge. If you need a reliable charger, DO NOT purchase this product.If you need a car charger for your Samsung S2, I would recommend the Motorola Vehicle Power Adapter. It charges fast and is dependable."
63
+ 0,"A very good car charger for your phones, charged my phone pretty quickly and quite affordable, I recommend it to anyone to have as a back up to your charger."
64
+ 0,"The Samsung car charger has stopped working within a 6 month period. I thought a fuse was blown inside the unit but when I attempted to change it, I've noticed that it doesn't come apart like most vehicle chargers."
65
+ 0,"WHAT A GREAT PRICE!RIGHT OUT OF THE BOX, PLUG N UPLOAD SUM JUICE ...DON'T KNOW IF DROPPING IT REPEATEDLY ON THE FLOORBOARD,OR OCCASIONALLY STUFFING IT IN CONSOLE TO HIDE CAUSED FAILURE ...BUT SOON THE GREEN LIGHT FAILED TO LIGHT, AND PHONES DISPLAY SHOWEDIT WASN'T CHARGING. SO EITHER SPEND SEVERAL MORE DOLLARS FOR ONE WITHA HEAVIER CORD/STRONGER SHELL OR TREAT IT AS A DELICATE FLOWER."
66
+ 0,Sprint wanted $30 fro the same item. This is OEM and not third party after market. Bought two. Work great
67
+ 0,Plugged into the car and worked the first couple of days. Hasn't worked since. My phone does not even recognize it's plugged in.
68
+ 0,This charger works great. I love the fact that the LED on it does not light up until it is plugged into the phone. Great bargain.
69
+ 0,"Though I`m not a expert in cell phone chargers. This thing works good, but its not all fireworks and hotel parties. Its a charger and it works so I guess buy it."
70
+ 0,I used this charger for a couple of months now. Its a very good charger. It charges my phone very quickly.
71
+ 0,It is Samsung brand..works with my Android phones..Galaxy Nexus 4 and Galaxy S2 and S3...recommend it highly for anyone with a microUSB phone
72
+ 0,I needed a car charger and this was very affordable and it worksgreat! The same thing from the store was three times the price.
73
+ 0,"good oem car charger, i originally bought it for my galaxy S2 and later on that week I upgrated to the Galaxy S3 and it works prefectly fine, I would recommend this product"
74
+ 0,You have to hold it in a certain place in other for it to charge. I'll just buy the Verizon charger instead
75
+ 0,This charger works perfectly. It is the official Samsung charger so I was sure it would work just fine. I highly recommend it.
76
+ 0,"I use this charger with my GS2 from Straight Talk. This charger is working as expected, charges the phone fine and seems like a quality product, not flimsy and cheap feeling like some chargers I have ordered in the past."
77
+ 0,"This thing worked well when it actually functioned, but today it stopped working and I am past the 30 day return window by 10 days give or take.I'm guessing the quality might not be great as that is why it stopped working, who knows.. What a waste of money."
78
+ 0,Hope to use it soon. My other one worked sometimes. This one does not have the light on unless you are charging.
79
+ 0,"es un cable para carro de excelente calidad , original de samsung , lo tengo algun tiempo sin ningun problema"
80
+ 0,"I went thru 3 car charges which they all either stopped working after a few uses or never worked to begin with.This car harder not only works it also charges my phone lightening fast!!! LOVE IT, LOVE IT LOVE IT!!If u are debating u can rest assured this thing is awesome."
81
+ 0,"First, this is kind of cheap-looking, but I did try to buy the cheapest OEM car charger I could for my phone, so that's forgiveable. The springs on the side don't have much force, though, so this is constantly slipping out of the 12V car port. The cable is sturdy, but the rubber near the connector is kind of stiff, which makes charging AND operating your phone on the go a bit of a hassle. It's held up well since I purchased it though.UPDATE: Stopped charging after a month."
82
+ 0,"I've been using this for about 4 months now and it works just as it is intended. I would buy again. Quality product.The cord could stand to be a little longer, but it is of a decent length."
83
+ 0,"A note of caution from someone who owned and used just about every major Blackberry model: if you already own a standard USB 2.0 cable and you don't need an extra, then you do NOT need this cable. All a Blackberry needs for data transfer is a STANDARD USB 2.0 cable with a Micro-USB connector at one end.There is NOTHING special about this cable and nothing justifies the artificially inflated MSRP listed for it. While this item is sold at a 90% off the MSRP discount, it's probably okay to purchase one, for as long as, after reading the first paragraph you decide that you will need a USB 2.0 cable.The items has 2 stars taken away for the exaggerated marketing claim (professional grade custom cable) and for the inflated MSRP.NOTE: Please make sure that you buy cable with a MICRO-USB connector because this is what your Blackberry needs."
84
+ 0,this is a good product is just a usb cable it work perfect just like a oem cable. . .
85
+ 0,"Well, went on the internet first....$14.00, then to a very well known store, here in Gloucester, MA, $28. I was not happy. Then, of course, I knew Amazon would come up with something...they did, $4.00 and change...it arrived promptly. I cannot say enough about Amazon, they are realistic in their prices, knowing that people do not have that kind of money to pay for a wire,,for 14 or 28 dollars. I have never been so happy to get what I need without spending my last dollar for it. Thank you again and again."
86
+ 0,"I would like a extra cable for my smartphones at work, so I purchased this one. Nothing special as long as it is working, and it is.No complain."
87
+ 0,"There is a difference in USB cables. On some computers, including mine, the USB ports are underpowered, and some poor cables do not transmit data well. I have purchased some cheaper cables that would not transmit data between my computer and my Blackberry Storm 9530. This cable works great, even with my underpowered USB ports."
88
+ 0,"I bought this micro usb cable because it was cheap, and that it is. I use this with my Nexus s 4g from sprint and although it does indeed charge my device it causes some major issues, such as screen lag, my computer not being able to recognize what kind of device this is, and causing my phone to constantly jump into car mode. So if you need a real quick cable for basic charging, this will do it, anything else...spend the extra buck on a higher end cable."
89
+ 0,"I purchased 3 of these cables because they were cheap and got good reviews. I don't know how people are getting these cables to work... but out of the 3 I bought, 0 have functioned properly with my Palm Pre! The best I can do is get it to charge, though the entire time it is charging the computer is complaining about ""Unknown Device"" and ""Could not install drivers"" even though it works beautifully with the original cable. The only setting that works is ""Just Charge""! Each of the 3 cables fails slightly differently which makes me believe that each has a different flaw! I've tried this with my Wife's Palm Pixi as well as used different computers and that failed as well. Look elsewhere when attempting to purchase a cable for your Palm device!"
90
+ 0,this phone cord is so easy to use and easily connected from phone to computer. great value for the price.
91
+ 0,"This cable is better than original. Never any issues with phone recognizing USB connection, as the original does, when plugged to PC."
92
+ 0,"I bought this recently and did not expect much, as it was only $2.99 shipped to my door. For that much money, how can you go wrong? So, I have not used it to transfer data yet, as it it plugged into my PC at work just for charging. When plugged in, my Palm Pixi prompts me, just as the factory cable does, to transfer or charge. I have used this cable about 10x to charge now, and it works great! Do not hesitate to purchase this if you need another cable, or two!"
93
+ 0,"A good inexpensive cable that works like the original. I purchased this cable because I wanted one that would work with the touch stone I just purchased. After reading several reviews and looking at competing cables I deciding on this one. While several inches shorter (40"") than the original it works well and with the touch stone. I used this cable mainly for use in the car."
94
+ 0,"The cable worked great with the pre if you need an extra one, but I suggest purchasing the whole unit--plug and all, not just the cable, because with shipping and handling it gets to be the same price."
95
+ 0,"It's true! This cable outperforms the original! When I charge my phone, it's chargier. The data is more datery and the phone is more phoney in general. If I wear the cable around my neck like a bolo tie, people like me better and I can run faster and jump higher. If I circle my dinner plate with it, the food tastes better. Basically this cable makes everything better than the original. I'm thinking about getting a 2nd one!"
96
+ 0,"This is clearly not a HTC cable as it has the Blackberry logo on it and the bulk packaging label says Blackberry...but it's a OEM micro usb cable none the less and works perfectly on any micro usb device I plugged it into.While I haven't tested it's speed against other cables I doubt it outperforms any other OEM cable but it works and that's all I asked for of it.The cable is a bit thick and as a result is stiff but not unmanageably so.It should also be noted that the cable shown in the picture is not of the actual product, that is a mini usb cable and appears to be quite a bit longer than the product, this cable is 1m long."
97
+ 0,"""This cable not recommended for this device."" That is what I get for an error message. Plus it is really short."
98
+ 0,"I only trust HTC accessories for HTC phones having bad luck with aftermarket products that are cheaper, but cheap is expensive."
99
+ 0,"I'll never understand how one review can say this item works exactly as it should and how the next complains about it not working...for the EXACT same phone! I just don't get it. I decided to try it out despite the people that said it didn't work, and I'm glad I did. It's exactly what I expected and wanted. I actually bought 2 of these so I could leave one in my car and one at work. For only $4 and some change for the both...this was a GREAT buy for me and now I never have to worry about my Incredible running out of battery!"
100
+ 0,I was really impressed by the price and was very excited when it arrived. But it doesn't work like it says it does. At first it charged my phone just fine but then it stopped charging; I waited a day to charge again but it still didn't charge.
101
+ 0,well bought this so i could have a spare cord since i have the original cord in my car with a usb charger there got tired of keeping track where i had it last. so this cord works on when plugged into the wall. when hooked to a pc phone wont stay connected to the pc to transfer files or anything. so if you just need a cord to plug into the wall this will work but don't even think of this cord if you want to use it with a pc.
102
+ 0,These things are just a confidence trick. They don't do a thing. They can't do a thing. If you believe these make your phone work better then you probably find the stripes down the side of cars make them go faster too.
103
+ 0,"Come on Amazon, I can't really believe you are selling this under your own name!"
104
+ 0,"This thing is a waste of paper, it doesn't give u any better reception. This is a total rip off in my book :-("
105
+ 0,"I would like to say that this is not cheap junk, but it did nothing at all for my cell reception.On the other hand I have an iPhone with AT&T;, so it could be that combination doesn't work with it.It appears it worked for a few people with a different phone, so I am going to be generous and give it 2 stars, taking into account it could have been my unit.;-)"
106
+ 0,I gave it 3 stars because I was generously sent a bunch of these on only one order. Otherwise I am not so sure that these work very well. I have tried on 2 phones and the results have been inconclusive.
107
+ 0,Want to try one? They sell these at the dollar stores. It does nothing to improve your signal.
108
+ 0,I set my phone down on my computer desk for 10 minutes and I checked the Signal Strength on my Droid X and it read -87 dBm. After putting the Universal Cell Phone Antenna Booster on the inside of my batter cover I set my phone in the exact same spot for 10 minutes and It read -83 dBm (closer the number to zero the better the reception). So I guess it works a little bit. Check out the picture I posted of the signal strength before and after.
109
+ 0,"DO NOT USE THIS THOUGH IF YOUR PHONE IS STILL UNDER WARRANTY CUZ US CELLULAR SAID IT VOIDED MY WARRANTY, BUT US CELLULAR IS THE WORST CELL PHONE CARRIER OUT THERE. I SHOULD NOT HAVE EVEN NEEDED THIS WITH A BRAND NEW SAMSUNG GALAXY S3 BUT I DID...THE INSTRUCTIONS COULD HAVE BEEN A LITTLE BETTER IS MY ONLY COMPLAINT"
110
+ 0,"I've always had one of these on my phone. Had to get a new phone while on vacation and the service at my rental was terrible!!! Slapped one of these on and, I don't know if it's the power of suggestion, but my new phone works soooo much better!!!! Love these things! Recommend!!!"
111
+ 0,"Didn't work, It did not work at all. I have a dead spot when I drive to work, where I totally lose the Signal. This device did not help at all. DO NOT WASTE your money on it. even for less than $2.00, its not worth anything."
112
+ 0,"I bought tis booster for my phone because I needed better recepion, I tryed it and it made my phone come in a little better I would buy is product again, if fact I bought one for the whole family."
113
+ 0,i cant say it works because i tryit for a long time on my iphone and it didnt made a difference at all...
114
+ 0,"It helped me get improved signal strength for cellular (phone) communications, but does nothing to improve my Android phone's 3G data signal or WiFi data signal. I didn't expect it to and I don't think it's design to improve 3G/Wifi so if that's what you're hoping for, forget it. If you want more bars... this works very well."
115
+ 0,Order this product just to find out if it does work..and sure enough I was surprise that I get more bars reception in my cell than I had before and the price is right.
116
+ 0,"I purchased this for my sisters phone. She continually has calls dropped, so I got her this signal booster, and it hasn't made a bit of difference. I bought these before for my previous cell phones, and they really seemed to help. But apparently not so much anymore."
117
+ 0,I bought this for my son and this is what he has to say: &#34;This is a great case and held my phone waterproof on a whole cold weekend trip. My whole pack got wet and this case kept my phone dry. I would recommend this to anyone who needs tough waterproof case.&#34;
118
+ 0,I got this otterbox to hold my valuables at the pool this summer. It is the perfect size for what I need and it is completely waterproof and crush proof. I put some paper inside of it and held it under water and it was dry as a bone. Then I had my 100 pound son stand on it and then me at nearly 200 pounds and it did not crack.
119
+ 0,"very durable, water tight, use this in my backpack to keep medical supplies dry, the clamps hold tight with a solid click when shut"
data/reviews1000.csv ADDED
The diff for this file is too large to render. See raw diff
 
data/reviews_test.csv ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ reviewerID,reviewText
2
+ 0,I love this case! It's so pretty.And I love the way the case feels to the touch because of the rubber. Very happy!
3
+ 0,The idea of the design is a sweet idea but it wears off as the paint is over the case and not under a sealant or anything. It has a cool 3D effect but at the cost of the paint rubbing off.It is quite pretty though.
4
+ 0,"I was worried about this order because the picture on the description page kept changing to a less-desireable green/orange cover. But alas, it came a day earlier than expected, and the beautiful pink product expected! The ""rubberized"" cover feels a little greasy (like it was armor-all'd), but the design is gorgeous and a little 3D looking!"
5
+ 0,Another pretty phone case that I really love. I have many as I love t o change them around .thanks
6
+ 0,"The case is not white, its more of a silver. It's still a very pretty case- it fit my phone perfectly. It took too long to arrive."
7
+ 0,Defintiely worth the price...You should order several. Most cases are $15 and up especially at the cell phone stores. I can't believe the mark up on these things!
8
+ 0,This is a great case... It fit my phone perfectly and I still use it from time to time. Would recommend
9
+ 0,"Received this item very quickly. The design is even more vivid than expected. The cover is soft (rubberized) but durable. I have received many compliments. It was an excellent buy! I would recommend this to anyone wanting a ""good look"" for their phone."
10
+ 0,this cover makes an old phone look and feel new. I like that I can order covers for little money and snazzy up my phone.
11
+ 0,"I loved the case when I first received it but shortly after, the case started to peel off at first i did not know what it was until i looked on the back of the case and it was missing spots. Guess sometimes a good deal is not really a good deal.would not purchase."
12
+ 0,"The color is more dark in person, and this isnt the best protection case. I get a lot of compliments on the case, and it was easy to put on."
dockerfile ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.8-slim-buster
2
+ COPY . /app
3
+ WORKDIR /app
4
+ RUN apt-get update -q \
5
+ && apt-get install --no-install-recommends -qy python3-dev g++ gcc inetutils-ping \
6
+ && pip install --progress-bar off gunicorn \
7
+ && pip install --progress-bar off -r requirements.txt \
8
+ && apt-get remove -qy python3-dev g++ gcc --purge \
9
+ && rm -rf /var/lib/apt/lists/*
10
+ RUN pip install -r requirements.txt
11
+ RUN pip install --upgrade numpy scipy pandas
12
+ EXPOSE 8501
13
+ HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health
14
+
15
+ ENTRYPOINT ["streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"]
16
+ CMD ["app.py"]
models/.DS_Store ADDED
Binary file (6.15 kB). View file
 
models/entity_model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fb492c57a3eea1746220f63e14f8d907c08962075feed4f98954cfe0a88f6828
3
+ size 438022253
models/model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:62e514971e3adac072ab21846df050e0c77eefc54743a47a5db2438417ba11a2
3
+ size 438034541
requirements.txt ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ numpy==1.21.5
2
+ nltk==3.7
3
+ matplotlib==3.5.1
4
+ pandas==1.4.2
5
+ scikit_learn==1.0.2
6
+ streamlit==1.20.0
7
+ readchar
8
+ transformers==4.27.4
9
+ sacremoses==0.0.53
10
+ pathos==0.3.0
11
+ sty==1.0.4
12
+ parmap==1.6.0
13
+ gensim==3.6.0
14
+ torch==2.0.0
15
+ torchaudio==2.0.1
16
+ torchvision==0.15.1
17
+ anytree==2.8.0