├── code ├── config │ ├── __init__.py │ ├── elmo.yml │ ├── logicnn.yml │ ├── default.yml │ └── arguments.py ├── logs │ └── .gitignore ├── model │ ├── __init__.py │ ├── features.py │ └── nn.py ├── utils │ ├── __init__.py │ ├── l1_schedule.py │ ├── logger.py │ ├── data_utils.py │ └── initialize.py ├── data │ ├── w2v │ │ └── .gitignore │ ├── process_sst2.sh │ ├── process_sst2_sentence.sh │ ├── build_negation.py │ ├── process-sst2-sentence.py │ ├── process-sst2.py │ └── sst2-sentence │ │ └── sst_crowd_discourse.txt ├── run.sh ├── requirements.txt ├── main.py ├── analysis │ ├── crowd-data-stats.py │ ├── data-stats.py │ └── performance.py ├── README.md ├── logicnn.py ├── CONFIG.md ├── test.py ├── analysis.py └── train.py ├── .gitignore ├── crowd-data ├── README.md └── sst_crowd_discourse.txt └── README.md /code/config/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/logs/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/model/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code/data/w2v/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | code/save 2 | code/save_best 3 | *.yml 4 | code/data/w2v 5 | code/logs 6 | code/data 7 | __pycache__ 8 | *.tsv 9 | *.pdf -------------------------------------------------------------------------------- /code/data/process_sst2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # preprocess raw data 4 | python process-sst2.py ./sst2/ ./w2v/GoogleNews-vectors-negative300.bin 5 | -------------------------------------------------------------------------------- /code/data/process_sst2_sentence.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # preprocess raw data 4 | python process-sst2-sentence.py ./sst2-sentence/ ./w2v/GoogleNews-vectors-negative300.bin 5 | -------------------------------------------------------------------------------- /code/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # mode can be default, elmo or logicnn 4 | mode=default 5 | 6 | for i in {1..100} 7 | do 8 | python main.py --data_dir data/sst2-sentence/ --config config/${mode}.yml \ 9 | --no-cache --seed $i --job_id ${mode}_seed_${i} 2>&1 | tee logs/${mode}_seed_${i}.log 10 | done 11 | -------------------------------------------------------------------------------- /code/utils/l1_schedule.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | def logicnn(epoch, step, num_batches, value): 5 | return value ** (float(step) / num_batches) 6 | 7 | 8 | def constant(epoch, step, num_batches, value): 9 | return 1.0 10 | 11 | 12 | def step(epoch, step, num_batches, value): 13 | if epoch == 0: 14 | return 1.0 15 | else: 16 | return 0.0 17 | 18 | 19 | def interpolate(epoch, step, num_batches, value): 20 | return value 21 | -------------------------------------------------------------------------------- /code/requirements.txt: -------------------------------------------------------------------------------- 1 | absl-py==0.5.0 2 | astor==0.7.1 3 | cycler==0.10.0 4 | gast==0.2.0 5 | grpcio==1.15.0 6 | h5py==2.8.0 7 | Keras-Applications==1.0.6 8 | Keras-Preprocessing==1.0.5 9 | kiwisolver==1.0.1 10 | logger==1.4 11 | Markdown==3.0.1 12 | matplotlib==3.0.0 13 | munch==2.3.2 14 | numpy==1.14.5 15 | protobuf==3.6.1 16 | pyparsing==2.2.2 17 | python-dateutil==2.7.3 18 | PyYAML==3.13 19 | scipy==1.1.0 20 | six==1.11.0 21 | tensorboard==1.10.0 22 | tensorflow-gpu==1.10.0 23 | tensorflow-hub==0.1.1 24 | termcolor==1.1.0 25 | Werkzeug==0.14.1 26 | -------------------------------------------------------------------------------- /code/utils/logger.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import sys 3 | 4 | 5 | def get_logger(name, level=logging.INFO, handler=sys.stdout, 6 | formatter='%(asctime)s - %(name)s - %(levelname)s - %(message)s'): 7 | logger = logging.getLogger(name) 8 | logger.setLevel(logging.INFO) 9 | formatter = logging.Formatter(formatter) 10 | stream_handler = logging.StreamHandler(handler) 11 | stream_handler.setLevel(level) 12 | stream_handler.setFormatter(formatter) 13 | logger.addHandler(stream_handler) 14 | 15 | return logger 16 | -------------------------------------------------------------------------------- /code/config/elmo.yml: -------------------------------------------------------------------------------- 1 | # model configuration 2 | batch_size: 50 3 | eval_batch_size: 50 4 | lr: 1.0 5 | embedding_size: 300 6 | num_classes: 2 7 | keep_prob: 0.6 8 | clipped_norm: 3 9 | optimizer: adadelta 10 | conv_filters: 11 | - size: 3 12 | channels: 100 13 | - size: 4 14 | channels: 100 15 | - size: 5 16 | channels: 100 17 | max_epochs: 20 18 | shuffle: True 19 | cnn_mode: nonstatic 20 | 21 | ## Iterative Distillation Configuration 22 | iterative: False 23 | l1_schedule: interpolate 24 | l1_val: 1.0 25 | 26 | # ELMo word representations 27 | elmo: True -------------------------------------------------------------------------------- /code/config/logicnn.yml: -------------------------------------------------------------------------------- 1 | # model configuration 2 | batch_size: 50 3 | eval_batch_size: 50 4 | lr: 1.0 5 | embedding_size: 300 6 | num_classes: 2 7 | keep_prob: 0.6 8 | clipped_norm: 3 9 | optimizer: adadelta 10 | conv_filters: 11 | - size: 3 12 | channels: 100 13 | - size: 4 14 | channels: 100 15 | - size: 5 16 | channels: 100 17 | max_epochs: 20 18 | shuffle: True 19 | cnn_mode: nonstatic 20 | 21 | ## Iterative Distillation Configuration 22 | iterative: True 23 | l1_schedule: logicnn 24 | l1_val: 0.95 25 | 26 | # ELMo word representations 27 | elmo: False -------------------------------------------------------------------------------- /code/config/default.yml: -------------------------------------------------------------------------------- 1 | # model configuration 2 | batch_size: 50 3 | eval_batch_size: 50 4 | lr: 1.0 5 | embedding_size: 300 6 | num_classes: 2 7 | keep_prob: 0.6 8 | clipped_norm: 3 9 | optimizer: adadelta 10 | conv_filters: 11 | - size: 3 12 | channels: 100 13 | - size: 4 14 | channels: 100 15 | - size: 5 16 | channels: 100 17 | max_epochs: 20 18 | shuffle: True 19 | cnn_mode: nonstatic 20 | 21 | ## Iterative Distillation Configuration 22 | iterative: False 23 | l1_schedule: interpolate 24 | l1_val: 1.0 25 | 26 | # ELMo word representations 27 | elmo: False -------------------------------------------------------------------------------- /crowd-data/README.md: -------------------------------------------------------------------------------- 1 | This is the dataset used for Section 5 of the EMNLP 2018 paper "Revisiting the Importance of Encoding Logic Rules in Sentiment Classification". 2 | 3 | This dataset contains 447 sentences (of style A-but-B and negations), taken from the test set of Stanford Sentiment Treebank (SST2). Each sentence has been labelled by 9 or 10 people on Figure Eight (previously known as CrowdFlower). Every line consists of the average sentiment score and the individual sentiment scores. 4 | 5 | Each user has been presented three choices for the sentiment of the sentence, 6 | 7 | * 0.0 - negative 8 | * 0.5 - neutral 9 | * 1.0 - positive 10 | -------------------------------------------------------------------------------- /code/main.py: -------------------------------------------------------------------------------- 1 | import yaml 2 | 3 | import tensorflow as tf 4 | import numpy as np 5 | import random 6 | 7 | from munch import Munch 8 | 9 | from analysis import analysis 10 | from config.arguments import modify_arguments, modify_config, parser 11 | from train import train 12 | from test import test 13 | from utils.logger import get_logger 14 | 15 | logger = get_logger(__name__) 16 | 17 | 18 | def main(): 19 | args = parser.parse_args() 20 | modify_arguments(args) 21 | 22 | # Resetting the graph and setting seeds 23 | tf.reset_default_graph() 24 | tf.set_random_seed(args.seed) 25 | np.random.seed(args.seed) 26 | random.seed(args.seed) 27 | 28 | with open(args.config_file, 'r') as stream: 29 | config = yaml.load(stream) 30 | args.config = Munch(modify_config(args, config)) 31 | 32 | logger.info(args) 33 | 34 | if args.mode == 'train': 35 | train(args) 36 | elif args.mode == 'test': 37 | test(args) 38 | elif args.mode == 'analysis': 39 | analysis(args) 40 | 41 | 42 | if __name__ == '__main__': 43 | main() 44 | -------------------------------------------------------------------------------- /code/utils/data_utils.py: -------------------------------------------------------------------------------- 1 | import pickle 2 | import os 3 | import sys 4 | 5 | import numpy as np 6 | 7 | from utils.logger import get_logger 8 | 9 | logger = get_logger(__name__) 10 | 11 | 12 | def load_pickle(args, split): 13 | logger.info("Loading split '%s'", split) 14 | with open(os.path.join(args.data_dir, split + ".pickle"), 'rb') as f: 15 | data = pickle.load(f) 16 | logger.info("Total # of %s samples - %d", split, len(data)) 17 | return data 18 | 19 | 20 | def load_vocab(args): 21 | vocab_file = os.path.join(args.data_dir, args.vocab_file) 22 | with open(vocab_file, 'r') as f: 23 | rev_vocab = f.read().split('\n') 24 | vocab = {v: i for i, v in enumerate(rev_vocab)} 25 | return vocab, rev_vocab 26 | 27 | 28 | def load_w2v(args, rev_vocab): 29 | with open(os.path.join(args.data_dir, args.w2v_file), 'rb') as f: 30 | w2v = pickle.load(f) 31 | # Sanity check of the order of vectors 32 | for i, word in enumerate(rev_vocab): 33 | if w2v[i]['word'] != word: 34 | logger.info("Incorrect w2v file") 35 | sys.exit(0) 36 | w2v_array = np.array([x['vector'] for x in w2v]) 37 | return w2v_array 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Logic Rules for Sentiment Classification 2 | 3 | This repository contains the code and dataset used in our EMNLP 2018 paper "Revisiting the Importance of Encoding Logic Rules in Sentiment Classification". 4 | 5 | You can find the paper on arXiv - [https://arxiv.org/abs/1808.07733](https://arxiv.org/abs/1808.07733). 6 | 7 | ## Code 8 | 9 | The README for the source code has been added to `code/README.md`. 10 | 11 | Experiments in Section 3.2 were conducted using [ZhitingHu/logicnn](https://github.com/ZhitingHu/logicnn/) for a direct comparison with Zhiting Hu's paper, [Harnessing Deep Neural Networks with Logic Rules](https://arxiv.org/abs/1603.06318). 12 | 13 | ## Crowdsourced Dataset 14 | 15 | The dataset used in the crowdsourcing experiment (Section 5) is contained in `crowd-data/sst_crowd_discourse.txt`, with details in `crowd-data/README.md`. 16 | 17 | ## Citation 18 | 19 | If you use this code or dataset, please cite: 20 | 21 | ```` 22 | @inproceedings{KrishnaRevisit2018, 23 | Author = {Kalpesh Krishna and Preethi Jyothi and Mohit Iyyer}, 24 | Booktitle = {Empirical Methods in Natural Language Processing}, 25 | Year = "2018", 26 | Title = {Revisiting the Importance of Encoding Logic Rules in Sentiment Classification} 27 | } 28 | ```` 29 | -------------------------------------------------------------------------------- /code/data/build_negation.py: -------------------------------------------------------------------------------- 1 | import pickle 2 | import os 3 | 4 | from stanfordcorenlp import StanfordCoreNLP 5 | 6 | nlp = StanfordCoreNLP(r'../../stanford-corenlp-full-2018-02-27') 7 | 8 | 9 | def load_vocab(vocab_file): 10 | with open(vocab_file, 'r') as f: 11 | rev_vocab = f.read().split('\n') 12 | vocab = {v: i for i, v in enumerate(rev_vocab)} 13 | return vocab, rev_vocab 14 | 15 | 16 | def has_negation(sentence): 17 | tags = {x[0]: 1 for x in nlp.dependency_parse(sentence)} 18 | return 'neg' in tags 19 | 20 | dirs = ['sst2-sentence/'] 21 | files = ['train.pickle', 'dev.pickle', 'test.pickle'] 22 | negation_database = {} 23 | 24 | for dr in dirs: 25 | vocab, rev_vocab = load_vocab(os.path.join(dr, 'vocab')) 26 | for filename in files: 27 | print(filename) 28 | with open(os.path.join(dr, filename), 'rb') as f: 29 | data = pickle.load(f) 30 | sentences = [' '.join([rev_vocab[x] for x in sent['sentence'] if x != 0]) for sent in data] 31 | for i, sentence in enumerate(sentences): 32 | if i % 100 == 0: 33 | print('Completed %d / %d in file %s' % (i, len(sentences), filename)) 34 | if has_negation(sentence) is True: 35 | negation_database[sentence] = 1 36 | 37 | with open(os.path.join(dr, 'neg_db'), 'wb') as f: 38 | data = pickle.dump(negation_database, f) 39 | -------------------------------------------------------------------------------- /code/utils/initialize.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | 3 | from utils.logger import get_logger 4 | 5 | logger = get_logger(__name__) 6 | 7 | 8 | def initialize_w2v(sess, model, w2v_array): 9 | feed_dict = { 10 | model.w2v_embeddings.name: w2v_array 11 | } 12 | sess.run(model.load_embeddings, feed_dict=feed_dict) 13 | logger.info("loaded word2vec values") 14 | 15 | 16 | def initialize_weights(sess, model, args, mode='train'): 17 | ckpt = tf.train.get_checkpoint_state(args.load_dir) 18 | ckpt_best = tf.train.get_checkpoint_state(args.best_dir) 19 | if mode == 'test' and ckpt_best: 20 | logger.info("Reading best model parameters from %s", ckpt_best.model_checkpoint_path) 21 | model.saver.restore(sess, ckpt_best.model_checkpoint_path) 22 | steps_done = int(ckpt_best.model_checkpoint_path.split('-')[-1]) 23 | # Since local variables are not saved 24 | sess.run([ 25 | tf.local_variables_initializer() 26 | ]) 27 | elif mode == 'train' and ckpt: 28 | logger.info("Reading model parameters from %s", ckpt.model_checkpoint_path) 29 | model.saver.restore(sess, ckpt.model_checkpoint_path) 30 | steps_done = int(ckpt.model_checkpoint_path.split('-')[-1]) 31 | # Since local variables are not saved 32 | sess.run([ 33 | tf.local_variables_initializer() 34 | ]) 35 | else: 36 | steps_done = 0 37 | sess.run([ 38 | tf.global_variables_initializer(), 39 | tf.local_variables_initializer() 40 | ]) 41 | return steps_done 42 | -------------------------------------------------------------------------------- /code/analysis/crowd-data-stats.py: -------------------------------------------------------------------------------- 1 | import pickle 2 | import numpy as np 3 | 4 | with open('data/sst2-sentence/neg_db', 'rb') as f: 5 | negation_database = pickle.load(f) 6 | 7 | 8 | # Global variable information 9 | def has_but(sentence): 10 | return ' but ' in sentence 11 | 12 | 13 | def has_negation(sentence): 14 | return sentence in negation_database 15 | 16 | 17 | # open SST2 data 18 | with open('data/sst2-sentence/test.pickle', 'rb') as f: 19 | data = pickle.load(f) 20 | 21 | sst2_database = {} 22 | for d in data: 23 | no_pad = d['pad_string'].split() 24 | no_pad = ' '.join(filter(lambda a: a != '', no_pad)) 25 | sst2_database[no_pad] = d['label'] 26 | 27 | # open crowd-sourced data 28 | crowd_database = {} 29 | with open('data/sst2-sentence/sst_crowd_discourse.txt', 'r') as f: 30 | data = f.read().split('\n') 31 | 32 | for d in data: 33 | if len(d.strip()) == 0: 34 | continue 35 | crowd_database[d.split('\t')[2]] = float(d.split('\t')[0]) 36 | 37 | for ci in [0.5, 0.6666, 0.75, 0.9]: 38 | neutral = 0 39 | flipped = 0 40 | neutral_but = 0 41 | flipped_but = 0 42 | flipped_sent = [] 43 | for k, v in crowd_database.items(): 44 | if v >= np.round(1 - ci, 3) and v <= np.round(ci, 3): 45 | neutral += 1 46 | if has_but(k): 47 | neutral_but += 1 48 | elif sst2_database[k] != np.round(v): 49 | flipped += 1 50 | flipped_sent.append([ 51 | k, v, sst2_database[k] 52 | ]) 53 | if has_but(k): 54 | flipped_but += 1 55 | print("Confidence Interval %.4f" % ci) 56 | print("Total neutral sentences = %d / %d" % (neutral, len(crowd_database.keys()))) 57 | print("Total flipped sentences = %d / %d" % (flipped, len(crowd_database.keys()))) 58 | print("Total neutral but sentences = %d / %d" % (neutral_but, len([k for k in crowd_database.keys() if has_but(k)]))) 59 | print("Total flipped but sentences = %d / %d" % (flipped_but, len([k for k in crowd_database.keys() if has_but(k)]))) 60 | print("Flipped Sentences - ") 61 | for i1, i2, i3 in flipped_sent: 62 | print("%.4f, %.4f, %s" % (i3, i2, i1)) 63 | -------------------------------------------------------------------------------- /code/model/features.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | class NeuralNetwork(object): 5 | def __init__(self, args, instance, info): 6 | self.seq_len = instance['sentence_len'] 7 | self.sentence = instance['sentence'] 8 | self.model = info['model_eval'] 9 | 10 | self.final_inputs = np.array(self.sentence) 11 | self.final_string = instance['pad_string'] 12 | self.final_seq_len = np.array(self.seq_len) 13 | 14 | def postprocess_func(self, output): 15 | # A logarithm is taken here to account for softmax in logicnn.compute_probability 16 | self.output = np.log(output) 17 | return self.output 18 | 19 | 20 | class LogicRuleBut(object): 21 | def __init__(self, args, instance, info): 22 | self.seq_len = instance['sentence_len'] 23 | self.sentence = instance['sentence'] 24 | self.model = info['model_eval'] 25 | self.vocab = vocab = info['vocab'] 26 | self.rev_vocab = rev_vocab = info['rev_vocab'] 27 | 28 | self.hasBut = vocab['but'] in self.sentence 29 | if self.hasBut is True: 30 | first_but = self.sentence.index(vocab['but']) 31 | new_sent = self.sentence[first_but + 1:] 32 | self.new_sent = [vocab['']] * 4 + new_sent + [vocab['']] * (self.seq_len - len(new_sent) - 4) 33 | self.final_inputs = np.array(self.new_sent) 34 | self.final_string = " ".join([rev_vocab[x] for x in self.new_sent]) 35 | self.final_seq_len = np.array(self.seq_len) 36 | else: 37 | self.final_string = instance['pad_string'] 38 | self.final_inputs = np.array(self.sentence) 39 | self.final_seq_len = np.array(self.seq_len) 40 | # Storing a mask with all 0 41 | self.A_mask = np.zeros(self.seq_len) 42 | 43 | def postprocess_func(self, output): 44 | # We directly use the output probabilities as the rule value 45 | # We ignore the -1 since it won't affect computation 46 | # In Hu et al. 2016, C = 6 and \lambda = 1 47 | if self.hasBut is True: 48 | self.output = output 49 | else: 50 | # These will cancel off when the sentence doesn't have 'but' 51 | self.output = np.array([0.5, 0.5]) 52 | return self.output 53 | 54 | 55 | features = [ 56 | NeuralNetwork, 57 | LogicRuleBut 58 | ] 59 | -------------------------------------------------------------------------------- /code/README.md: -------------------------------------------------------------------------------- 1 | ## Logic Rules for Sentiment Classification 2 | 3 | This folder contains the code accompanying our EMNLP 2018 paper "Revisiting the Importance of Encoding Logic Rules in Sentiment Classification". The baseline model is roughly an exact implementation of Kim et al. 2014, "Convolutional Neural Networks for Sentiment Classification". 4 | 5 | ## Setup 6 | 7 | 1. Download Google's `word2vec` embeddings and place them inside `data/w2v/`. This is a large file (~ `3.5G`). You may `git clone` [this](https://github.com/mmihaltz/word2vec-GoogleNews-vectors), or use the URL provided in that repository's README. In case you want to use another folder for the `word2vec` embeddings, please edit `data/process_sst2_sentence.sh` accordingly. 8 | 9 | 2. This code has been tested for Python 3.6.5, TensorFlow 1.10.0, with CUDA 9.0 and cuDNN 7.0, with the whole set of requirements given in `requirements.txt`. To install dependencies, run this in a new `virtualenv`, 10 | ``` 11 | pip install -r requirements.txt 12 | ``` 13 | To re-build the negation database, you will need `stanfordcorenlp`. This database has been preprocessed and added to the repository under `data/sst2-sentence/neg_db`. 14 | 15 | 3. Pre-process the data by using, 16 | ``` 17 | cd data 18 | ./process_sst2.sh 19 | ./process_sst2_sentence.sh 20 | ``` 21 | For the experiments in the paper, only sentence level SST2 has been used, so it is sufficient to run `./process-sst2-sentence.sh`. 22 | 23 | 4. Run `./run.sh` with `mode` set to `default`, `logicnn` or `elmo`. This script will loop over 100 random seeds and store the results in the `log` and `save` folders. 24 | 25 | 5. Run the evaluation script using `python analysis/performance.py`. 26 | 27 | 6. You could also analyze saved models using the flag `--save-model` while training and running `--mode analysis` with the same `--job-id`. You could extract some dataset statistics using `python analysis/data-stats.py` and crowd data statistics using `python analysis/crowd-data-stats.py`. 28 | 29 | ## Model Settings 30 | The argument and model configuration details have been added to `CONFIG.md`. 31 | 32 | ## Results 33 | 34 | This code has been used to produce all results in the paper except `Figure 2`. `Figure 2` has been generated using [ZhitingHu/logicnn](https://github.com/ZhitingHu/logicnn/), to measure reproducibility against the author's original codebase. 35 | 36 | ## Contributing 37 | Feel free to add Issues and PRs (for the existing issues)! 38 | -------------------------------------------------------------------------------- /code/logicnn.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | from model.features import features 4 | from utils.logger import get_logger 5 | 6 | logger = get_logger(__name__) 7 | 8 | 9 | def append_features(args, data, model, vocab, rev_vocab): 10 | info = { 11 | 'model_eval': model, 12 | 'vocab': vocab, 13 | 'rev_vocab': rev_vocab 14 | } 15 | for i, instance in enumerate(data): 16 | instance['features'] = [ft(args, instance, info) for ft in features] 17 | 18 | 19 | def compute_features(args, data, sess, model): 20 | feature_data = np.zeros([len(features), len(data), args.config.num_classes]) 21 | batch_size = args.config.eval_batch_size 22 | num_batches = int(np.ceil(float(len(data)) / batch_size)) 23 | for i in range(num_batches): 24 | split = data[i * batch_size:(i + 1) * batch_size] 25 | total = len(split) 26 | # The last batch is likely to be smaller than batch_size 27 | split.extend([split[-1]] * (batch_size - total)) 28 | for j, ft in enumerate(features): 29 | # Combining feature data into a single matrix for TF computation 30 | feed_dict = { 31 | model.inputs.name: np.stack([x['features'][j].final_inputs for x in split], axis=0) 32 | } 33 | if args.config.elmo is True: 34 | feed_dict.update({ 35 | model.input_strings.name: [x['features'][j].final_string for x in split] 36 | }) 37 | output = sess.run(model.softmax, feed_dict=feed_dict) 38 | # Distributing feature outputs into their respective objects 39 | output = np.stack( 40 | [x['features'][j].postprocess_func(output[k]) for k, x in enumerate(split)], axis=0 41 | ) 42 | feature_data[j, i * batch_size:(i + 1) * batch_size, :] = output[:total] 43 | return feature_data 44 | 45 | 46 | def compute_probability(args, weights, split, split_features): 47 | 48 | def softmax(x): 49 | e_x = np.exp(x - np.max(x)) 50 | return e_x / e_x.sum(axis=0) 51 | 52 | probs = np.zeros([len(split), args.config.num_classes]) 53 | for i, x in enumerate(split): 54 | # split_features has shape (fts, split_size, num_classes) 55 | logits = np.array([ 56 | np.dot(split_features[:, i, 0], weights), 57 | np.dot(split_features[:, i, 1], weights) 58 | ]) 59 | probs[i] = softmax(logits) 60 | return probs 61 | -------------------------------------------------------------------------------- /code/CONFIG.md: -------------------------------------------------------------------------------- 1 | ## Model Arguments 2 | 3 | These model flags can be see in `config/arguments.py`. Here's a short description, 4 | 5 | 1. `--config-file` - The model configuration file that needs to be loaded, with respect to parent directory. These files are typically located in the `config` folder. The current configurations include `default.yml`, `logicnn.yml` and `elmo.yml`. 6 | 2. `--modify-config` - JSON string giving users flexibility to adjust configuration via command line flags. 7 | 3. `--thread-restrict` - Restrict the model to 2 CPU threads only. 8 | 4. `--data_dir` - Directory containing preprocessed data. 9 | 5. `--train_dir` - Directory to store checkpoints and result files. 10 | 6. `--best_dir` - Directory to store best checkpoints. 11 | 7. `--vocab_file` - File having list of words. Assumed to be inside `data_dir`. 12 | 8. `--w2v_file` - File having processed word2vec embeddings for dataset. 13 | 9. `--seed` - Random seed used by all libraries. 14 | 10. `--job_id` - Unique string identifer for the job. 15 | 11. `--load_id` - Option to load current model from other completed job. 16 | 12. `--no-cache` - Delete all saved files with supplied `job_id`. Does not do this in `test` or `analysis` mode. 17 | 13. `--eval_splits` - Comma separated list of all evaluation split names. 18 | 14. `--save-model` - Whether or not model parameters need to be saved after every epoch. 19 | 15. `--mode` - This can be `train`, `test` or `analysis`. All modes should be supplied the same configuration file and `job_id` via arguments. 20 | 21 | ## Model Configuration 22 | 23 | These are YAML files located in the `config` folder. 24 | 25 | 1. `batch_size` - Batch size during training. 26 | 2. `eval_batch_size` - Batch size during evaluation. 27 | 3. `lr` - Learning rate. 28 | 4. `embedding_size` - Use `300` for `word2vec` in the `static` or `nonstatic` CNN modes. 29 | 5. `num_classes` - Number of output classes, stick with `2` for SST2. 30 | 6. `keep_prob` - `1 - dropout_rate`. 31 | 7. `clipped_norm` - Clipped norm for fully connected weight parameter in Kim et al. 2014. 32 | 8. `optimizer` - Only `adam` or `adadelta` supported. 33 | 9. `conv_filters` - List of filter sizes and number of channels in each filter. 34 | 10. `max_epochs` - Number of epochs the model is trained for. 35 | 11. `shuffle` - Shuffle training data from batch to batch. 36 | 12. `cnn_mode` - This can be `rand`, `static` or `nonstatic`. Refer to Kim et al. 2014 for a description of each of these modes. 37 | 13. `iterative` - Set `True` to use distillation in the loss function. 38 | 14. `l1_schedule` - Interpolation constant schedule between soft label and hard label loss. Currently supported schedules are `logicnn`, `constant`, `step` and `interpolate`. 39 | 15. `l1_val` - Interpolation value for hard label loss for the `interpolate` mode. This acts like the decay constant for the `logicnn` mode. 40 | 16. `elmo` - Set `True` to use ELMo word representations. -------------------------------------------------------------------------------- /code/config/arguments.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import json 3 | import os 4 | import shutil 5 | import sys 6 | 7 | parser = argparse.ArgumentParser() 8 | 9 | parser.add_argument("-config", "--config_file", default="config/default.yml", type=str, help="Configuration File") 10 | parser.add_argument("-modify-cfg", "--modify-config", default="{}", type=str, help="Modification to configuration") 11 | parser.add_argument("-thread-restrict", "--thread-restrict", default=False, action="store_true", help="Restrict to two threads") 12 | parser.add_argument("-data_dir", "--data_dir", default="data/sst2-sentence/", type=str, help="Training / Test data dir") 13 | parser.add_argument("-train_dir", "--train_dir", default="save", type=str, help="training base dir") 14 | parser.add_argument("-best_dir", "--best_dir", default="save_best", type=str, help="best model base dir") 15 | parser.add_argument("-vocab_file", "--vocab_file", default="vocab", type=str, help="file having reverse vocabulary") 16 | parser.add_argument("-w2v_file", "--w2v_file", default="w2v.pickle", type=str, help="file having word2vec embeddings") 17 | parser.add_argument("-seed", "--seed", default=1, type=int, help="value of the random seed") 18 | parser.add_argument("-job_id", "--job_id", default="save_0", type=str, help="Run ID") 19 | parser.add_argument("-load_id", "--load_id", default=None, type=str, help="Run ID to load from. Defaults to job_id") 20 | parser.add_argument("-no-cache", "--no-cache", default=False, action="store_true", help="Use cache or not") 21 | parser.add_argument("-eval_splits", "--eval_splits", type=str, default="dev,test", help="Set of splits to evaluate on") 22 | parser.add_argument("-save-model", "--save-model", default=False, action="store_true", help="Save the model or not?") 23 | 24 | parser.add_argument( 25 | "-mode", "--mode", default="train", type=str, 26 | help="train / test / analysis", 27 | choices=["train", "test", "analysis"] 28 | ) 29 | 30 | 31 | def modify_arguments(args): 32 | base_dir = args.train_dir 33 | args.train_dir = os.path.join(args.train_dir, args.job_id) 34 | args.best_dir = os.path.join(args.best_dir, args.job_id) 35 | 36 | if args.load_id is None: 37 | args.load_dir = os.path.join(base_dir, args.job_id) 38 | else: 39 | args.load_dir = os.path.join(base_dir, args.load_id) 40 | 41 | if not os.path.exists(args.train_dir): 42 | os.makedirs(args.train_dir) 43 | elif args.no_cache is True and args.mode == 'train': 44 | shutil.rmtree(args.train_dir) 45 | os.makedirs(args.train_dir) 46 | 47 | if not os.path.exists(args.best_dir): 48 | os.makedirs(args.best_dir) 49 | elif args.no_cache is True and args.mode == 'train': 50 | shutil.rmtree(args.best_dir) 51 | os.makedirs(args.best_dir) 52 | 53 | if not os.path.exists(args.load_dir): 54 | # Error, since we are explicitly asking to load from another directory 55 | # This directory will get created in the case it is the same as job_id 56 | print("Error in loading directory") 57 | sys.exit(0) 58 | 59 | 60 | def modify_config(args, config): 61 | new_config = json.loads(args.modify_config) 62 | for k, v in new_config.items(): 63 | config[k] = v 64 | return config 65 | -------------------------------------------------------------------------------- /code/analysis/data-stats.py: -------------------------------------------------------------------------------- 1 | import pickle 2 | import numpy as np 3 | import os 4 | 5 | 6 | with open('data/sst2-sentence/neg_db', 'rb') as f: 7 | negation_database = pickle.load(f) 8 | 9 | 10 | class Dataset(object): 11 | def __init__(self, dir, filename, rev_vocab): 12 | self.dir = dir 13 | self.filename = filename 14 | self.rev_vocab = rev_vocab 15 | 16 | with open(os.path.join(dr, filename), 'rb') as f: 17 | data = pickle.load(f) 18 | 19 | self.sentences = \ 20 | [' '.join([rev_vocab[x] for x in sent['sentence'] if x != 0]) for sent in data] 21 | 22 | def stats(self): 23 | text = self.filename 24 | print("=" * (len(text) + 4)) 25 | print("| %s |" % text) 26 | print("=" * (len(text) + 4)) 27 | print("total sentences :- %d" % len(self.sentences)) 28 | length = [len(sent.split()) for sent in self.sentences] 29 | print("average length :- %.4f +/- %.4f" % (np.mean(length), np.std(length))) 30 | a_but_b = [sent for sent in self.sentences if has_but(sent) is True] 31 | print("total A-but-B :- %d" % len(a_but_b)) 32 | length = [len(sent.split()) for sent in a_but_b] 33 | print("average A-but-B length :- %.4f +/- %.4f" % (np.mean(length), np.std(length))) 34 | length = [sent.split().index('but') for sent in a_but_b] 35 | print("average A length :- %.4f +/- %.4f" % (np.mean(length), np.std(length))) 36 | length = [len(sent.split()) - sent.split().index('but') - 1 for sent in a_but_b] 37 | print("average B length :- %.4f +/- %.4f" % (np.mean(length), np.std(length))) 38 | 39 | negation = [sent for sent in self.sentences if has_negation(sent) is True] 40 | print("total negation :- %d" % len(negation)) 41 | length = [len(sent.split()) for sent in negation] 42 | print("average negation length :- %.4f +/- %.4f" % (np.mean(length), np.std(length))) 43 | 44 | discourse = [sent for sent in self.sentences if has_discourse(sent) is True] 45 | print("total discourse :- %d" % len(discourse)) 46 | length = [len(sent.split()) for sent in discourse] 47 | print("average discourse length :- %.4f +/- %.4f" % (np.mean(length), np.std(length))) 48 | 49 | with open('analysis/discourse_%s.tsv' % self.filename, 'w') as f: 50 | f.write('\n'.join(discourse)) 51 | 52 | 53 | def has_but(sentence): 54 | return ' but ' in sentence 55 | 56 | 57 | def has_negation(sentence): 58 | return sentence in negation_database 59 | 60 | 61 | def has_discourse(sentence): 62 | return has_but(sentence) or has_negation(sentence) 63 | 64 | 65 | def load_vocab(vocab_file): 66 | with open(vocab_file, 'r') as f: 67 | rev_vocab = f.read().split('\n') 68 | vocab = {v: i for i, v in enumerate(rev_vocab)} 69 | return vocab, rev_vocab 70 | 71 | dirs = ['data/sst2/'] 72 | files = ['train.pickle', 'dev.pickle', 'test.pickle'] 73 | 74 | 75 | for dr in dirs: 76 | print("=" * (len(dr) + 4)) 77 | print("| %s |" % dr) 78 | print("=" * (len(dr) + 4)) 79 | vocab, rev_vocab = load_vocab(os.path.join(dr, 'vocab')) 80 | for file in files: 81 | dataset = Dataset(dr, file, rev_vocab) 82 | dataset.stats() 83 | -------------------------------------------------------------------------------- /code/test.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | 4 | import numpy as np 5 | import tensorflow as tf 6 | import tensorflow_hub as hub 7 | 8 | from model.nn import SentimentModel 9 | from utils.data_utils import ( 10 | load_pickle, 11 | load_vocab 12 | ) 13 | from utils.logger import get_logger 14 | from utils.initialize import initialize_weights 15 | 16 | 17 | logger = get_logger(__name__) 18 | 19 | 20 | def evaluate(sess, model_dev, data, args): 21 | batch_size = args.config.eval_batch_size 22 | num_batches = int(np.ceil(float(len(data)) / batch_size)) 23 | losses = 0.0 24 | incorrect = [] 25 | incorrect_probs = [] 26 | correct = [] 27 | correct_probs = [] 28 | for i in range(num_batches): 29 | split = data[i * batch_size:(i + 1) * batch_size] 30 | total = len(split) 31 | # The last batch is likely to be smaller than batch_size 32 | split.extend([split[-1]] * (batch_size - total)) 33 | 34 | seq_len = np.array([x['sentence_len'] for x in split]) 35 | max_seq_len = np.max(seq_len) 36 | sentence_id = np.array([x['sentence_id'] for x in split]) 37 | labels = np.array([x['label'] for x in split]) 38 | sents = [np.array(x['sentence']) for x in split] 39 | sentences = np.array([np.lib.pad(x, (0, max_seq_len - len(x)), 'constant') for x in sents]) 40 | feed_dict = { 41 | model_dev.inputs.name: sentences, 42 | model_dev.labels: labels 43 | } 44 | if args.config.elmo is True: 45 | feed_dict.update({ 46 | model_dev.input_strings.name: [x['pad_string'] for x in split] 47 | }) 48 | softmax, loss = sess.run([model_dev.softmax, model_dev.loss1], feed_dict=feed_dict) 49 | sentence_id, softmax, labels, loss = \ 50 | sentence_id[:total], softmax[:total], labels[:total], loss[:total] 51 | losses += np.sum(loss) 52 | outputs = np.argmax(softmax, axis=1) 53 | 54 | correct.extend(sentence_id[outputs == labels].tolist()) 55 | correct_probs.extend(softmax[outputs == labels].tolist()) 56 | incorrect.extend(sentence_id[outputs != labels].tolist()) 57 | incorrect_probs.extend(softmax[outputs != labels].tolist()) 58 | 59 | results = { 60 | 'correct': correct, 61 | 'correct_probs': correct_probs, 62 | 'incorrect': incorrect, 63 | 'incorrect_probs': incorrect_probs 64 | } 65 | return results, losses 66 | 67 | 68 | def evaluate_projection(args, weights, data, probs): 69 | incorrect = [] 70 | incorrect_probs = [] 71 | correct = [] 72 | correct_probs = [] 73 | for i, x in enumerate(data): 74 | label, sentence_id = x['label'], x['sentence_id'] 75 | if np.argmax(probs[i]) == label: 76 | correct.append(sentence_id) 77 | correct_probs.append(probs[i].tolist()) 78 | else: 79 | incorrect.append(sentence_id) 80 | incorrect_probs.append(probs[i].tolist()) 81 | 82 | results = { 83 | 'correct': correct, 84 | 'correct_probs': correct_probs, 85 | 'incorrect': incorrect, 86 | 'incorrect_probs': incorrect_probs 87 | } 88 | return results 89 | 90 | 91 | def detailed_results(args, split, test_set, rev_vocab, results): 92 | # Convert `incorrect` back into sentences 93 | incorrect, incorrect_probs = results['incorrect'], results['incorrect_probs'] 94 | correct, correct_probs = results['correct'], results['correct_probs'] 95 | incorrect_sents = "" 96 | correct_sents = "" 97 | for sent in test_set: 98 | sentence_id = sent['sentence_id'] 99 | sentence = ' '.join([rev_vocab[x] for x in sent['sentence'] if x != 0]) 100 | 101 | if sentence_id in incorrect: 102 | probs = incorrect_probs[incorrect.index(sentence_id)] 103 | probs = np.around(probs, 4) 104 | incorrect_sents += "%d\t%s\t%s\n" % (sent['label'], str(probs), sentence) 105 | elif sentence_id in correct: 106 | probs = correct_probs[correct.index(sentence_id)] 107 | probs = np.around(probs, 4) 108 | correct_sents += "%d\t%s\t%s\n" % (sent['label'], str(probs), sentence) 109 | else: 110 | logger.error("Wrong sentence id") 111 | sys.exit(0) 112 | 113 | with open(os.path.join(args.train_dir, 'incorrect_%s.txt' % split), 'w') as f: 114 | f.write(str(incorrect_sents)) 115 | with open(os.path.join(args.train_dir, 'correct_%s.txt' % split), 'w') as f: 116 | f.write(str(correct_sents)) 117 | 118 | 119 | def test(args): 120 | if args.thread_restrict is True: 121 | cfg_proto = tf.ConfigProto(intra_op_parallelism_threads=2) 122 | else: 123 | cfg_proto = None 124 | with tf.Session(config=cfg_proto) as sess: 125 | # Loading the vocabulary files 126 | vocab, rev_vocab = load_vocab(args) 127 | args.vocab_size = len(rev_vocab) 128 | # Creating test model 129 | 130 | # Hacky way to get seq_len 131 | test_set = load_pickle(args, split='test') 132 | args.config.seq_len = test_set[0]['sentence_len'] 133 | 134 | # Creating training model 135 | if args.config.elmo is True: 136 | elmo = hub.Module("https://tfhub.dev/google/elmo/1", trainable=True) 137 | else: 138 | elmo = None 139 | 140 | with tf.variable_scope("model", reuse=None): 141 | model_test = SentimentModel(args, queue=None, mode='eval', elmo=elmo) 142 | # Reload model from checkpoints, if any 143 | steps_done = initialize_weights(sess, model_test, args, mode='test') 144 | logger.info("loaded %d completed steps", steps_done) 145 | 146 | for split in args.eval_splits.split(','): 147 | test_set = load_pickle(args, split=split) 148 | results, losses = evaluate(sess, model_test, test_set, args) 149 | if args.mode != 'train': 150 | detailed_results(args, split, test_set, rev_vocab, results) 151 | percent_correct = float(len(results['correct'])) * 100.0 / len(test_set) 152 | logger.info("correct predictions on %s - %.4f. Eval Losses - %.4f", 153 | split, percent_correct, losses) 154 | -------------------------------------------------------------------------------- /code/data/process-sst2-sentence.py: -------------------------------------------------------------------------------- 1 | import pickle 2 | import os 3 | import random 4 | import re 5 | import sys 6 | 7 | import numpy as np 8 | 9 | from collections import defaultdict 10 | 11 | np.random.seed(1) 12 | random.seed(1) 13 | 14 | MAX_LEN = 53 15 | MAX_PAD = 4 16 | TOTAL_LEN = MAX_LEN + 2 * MAX_PAD 17 | 18 | 19 | def load_bin_vec(fname, vocab): 20 | """ 21 | Loads 300x1 word vecs from Google (Mikolov) word2vec 22 | """ 23 | word_vecs = {} 24 | with open(fname, "rb") as f: 25 | header = f.readline() 26 | vocab_size, layer1_size = map(int, header.split()) 27 | binary_len = np.dtype('float32').itemsize * layer1_size 28 | for line in range(vocab_size): 29 | word = [] 30 | while True: 31 | ch = f.read(1) 32 | if ch == b' ': 33 | word = ''.join([x.decode('latin-1') for x in word]) 34 | break 35 | if ch != b'\n': 36 | word.append(ch) 37 | if word in vocab: 38 | word_vecs[word] = np.fromstring(f.read(binary_len), dtype='float32') 39 | else: 40 | f.read(binary_len) 41 | return word_vecs, layer1_size 42 | 43 | 44 | def build_data(filename, word_freq, clean_string=True): 45 | """ 46 | Loads data 47 | """ 48 | revs = [] 49 | with open(filename, "r") as f: 50 | for line_no, line in enumerate(f): 51 | line = line.strip() 52 | label = int(line[0]) 53 | input_str = line[2:].strip() 54 | if clean_string: 55 | orig_rev = clean_str(input_str) 56 | else: 57 | orig_rev = input_str.lower() 58 | words = set(orig_rev.split()) 59 | for word in words: 60 | word_freq[word] += 1 61 | orig_rev = " " + orig_rev 62 | orig_rev += " " * (TOTAL_LEN - len(orig_rev.split())) 63 | datum = { 64 | "label": label, 65 | "text": orig_rev, 66 | "num_words": TOTAL_LEN, 67 | "sentence_id": line_no 68 | } 69 | revs.append(datum) 70 | random.shuffle(revs) 71 | return revs 72 | 73 | 74 | def clean_str(string, trec=False): 75 | """ 76 | Tokenization/string cleaning for all datasets except for SST. 77 | Every dataset is lower cased except for TREC 78 | """ 79 | string = re.sub(r"[^A-Za-z0-9(),!?\'\`]", " ", string) 80 | string = re.sub(r"\'s", " \'s", string) 81 | string = re.sub(r"\'ve", " \'ve", string) 82 | string = re.sub(r"n\'t", " n\'t", string) 83 | string = re.sub(r"\'re", " \'re", string) 84 | string = re.sub(r"\'d", " \'d", string) 85 | string = re.sub(r"\'ll", " \'ll", string) 86 | string = re.sub(r",", " , ", string) 87 | string = re.sub(r"!", " ! ", string) 88 | string = re.sub(r"\(", " \( ", string) 89 | string = re.sub(r"\)", " \) ", string) 90 | string = re.sub(r"\?", " \? ", string) 91 | string = re.sub(r"\s{2,}", " ", string) 92 | return string.strip() if trec else string.strip().lower() 93 | 94 | 95 | def build_vocab(word_freq): 96 | rev_vocab = [''] 97 | rev_vocab.extend([x[0] for x in sorted(word_freq.items(), key=lambda x: x[1], reverse=True)]) 98 | vocab = {v: k for k, v in enumerate(rev_vocab)} 99 | return rev_vocab, vocab 100 | 101 | 102 | def add_random_vectors(word_to_vec, rev_vocab, vector_size): 103 | counter1 = 0 104 | counter2 = 0 105 | for word in rev_vocab: 106 | counter1 += 1 107 | if word not in word_to_vec: 108 | counter2 += 1 109 | word_to_vec[word] = np.random.uniform(-0.25, 0.25, vector_size) 110 | print("Total vocab words = %d" % counter1) 111 | print("Total random vectors = %d" % counter2) 112 | 113 | 114 | def write_pickle(pickle_path, data, vocab): 115 | pickle_output = [] 116 | for i, datum in enumerate(data): 117 | sentence = [vocab[x] for x in datum['text'].split()] 118 | sentence_len = datum['num_words'] 119 | label = datum['label'] 120 | sentence_id = datum['sentence_id'] 121 | # Sanity check before save 122 | if sentence_len != len(sentence): 123 | print("error!") 124 | sys.exit(0) 125 | pickle_output.append({ 126 | 'sentence': sentence, 127 | 'label': label, 128 | 'sentence_len': sentence_len, 129 | "sentence_id": sentence_id, 130 | 'order_id': i, 131 | 'pad_string': datum['text'] 132 | }) 133 | pickle.dump(pickle_output, open(pickle_path, "wb")) 134 | 135 | 136 | if __name__ == "__main__": 137 | stsa_path = sys.argv[1] 138 | w2v_file = sys.argv[2] 139 | 140 | train_data_file = os.path.join(stsa_path, "stsa.binary.train") 141 | dev_data_file = os.path.join(stsa_path, "stsa.binary.dev") 142 | test_data_file = os.path.join(stsa_path, "stsa.binary.test") 143 | database = { 144 | 'train': { 145 | 'filename': train_data_file 146 | }, 147 | 'dev': { 148 | 'filename': dev_data_file 149 | }, 150 | 'test': { 151 | 'filename': test_data_file 152 | } 153 | } 154 | 155 | word_freq = defaultdict(int) 156 | for v in database.values(): 157 | v['data'] = build_data(v['filename'], word_freq) 158 | 159 | # Next, convert the vocabulary to correct form 160 | rev_vocab, vocab = build_vocab(word_freq) 161 | with open(os.path.join(stsa_path, 'vocab'), 'w') as f: 162 | f.write('\n'.join(rev_vocab)) 163 | 164 | # Next, load Google's word vectors 165 | word_to_vec, vector_size = load_bin_vec(w2v_file, vocab) 166 | word_to_vec[''] = np.zeros(vector_size) 167 | # Finally, add random vectors for unknown words 168 | add_random_vectors(word_to_vec, rev_vocab, vector_size) 169 | # Saving the word map 170 | word_map = [] 171 | for word in rev_vocab: 172 | word_map.append({ 173 | 'word': word, 174 | 'vector': word_to_vec[word] 175 | }) 176 | 177 | pickle.dump(word_map, open(os.path.join(stsa_path, "w2v.pickle"), "wb")) 178 | 179 | # Finally, build Pickle files 180 | for k, v in database.items(): 181 | pickle_path = os.path.join(stsa_path, k + ".pickle") 182 | write_pickle(pickle_path, v['data'], vocab) 183 | -------------------------------------------------------------------------------- /code/data/process-sst2.py: -------------------------------------------------------------------------------- 1 | import pickle 2 | import os 3 | import random 4 | import re 5 | import sys 6 | 7 | import numpy as np 8 | 9 | from collections import defaultdict 10 | 11 | np.random.seed(1) 12 | random.seed(1) 13 | 14 | MAX_LEN = 53 15 | MAX_PAD = 4 16 | TOTAL_LEN = MAX_LEN + 2 * MAX_PAD 17 | 18 | 19 | def load_bin_vec(fname, vocab): 20 | """ 21 | Loads 300x1 word vecs from Google (Mikolov) word2vec 22 | """ 23 | word_vecs = {} 24 | with open(fname, "rb") as f: 25 | header = f.readline() 26 | vocab_size, layer1_size = map(int, header.split()) 27 | binary_len = np.dtype('float32').itemsize * layer1_size 28 | for line in range(vocab_size): 29 | word = [] 30 | while True: 31 | ch = f.read(1) 32 | if ch == b' ': 33 | word = ''.join([x.decode('latin-1') for x in word]) 34 | break 35 | if ch != b'\n': 36 | word.append(ch) 37 | if word in vocab: 38 | word_vecs[word] = np.fromstring(f.read(binary_len), dtype='float32') 39 | else: 40 | f.read(binary_len) 41 | return word_vecs, layer1_size 42 | 43 | 44 | def build_data(filename, word_freq, clean_string=True): 45 | """ 46 | Loads data 47 | """ 48 | revs = [] 49 | with open(filename, "r") as f: 50 | for line_no, line in enumerate(f): 51 | line = line.strip() 52 | label = int(line[0]) 53 | input_str = line[2:].strip() 54 | if clean_string: 55 | orig_rev = clean_str(input_str) 56 | else: 57 | orig_rev = input_str.lower() 58 | words = set(orig_rev.split()) 59 | for word in words: 60 | word_freq[word] += 1 61 | orig_rev = " " + orig_rev 62 | orig_rev += " " * (TOTAL_LEN - len(orig_rev.split())) 63 | datum = { 64 | "label": label, 65 | "text": orig_rev, 66 | "num_words": TOTAL_LEN, 67 | "sentence_id": line_no 68 | } 69 | revs.append(datum) 70 | # Due to this shuffling, sentence IDs and order IDs are different 71 | random.shuffle(revs) 72 | return revs 73 | 74 | 75 | def clean_str(string, trec=False): 76 | """ 77 | Tokenization/string cleaning for all datasets except for SST. 78 | Every dataset is lower cased except for TREC 79 | """ 80 | string = re.sub(r"[^A-Za-z0-9(),!?\'\`]", " ", string) 81 | string = re.sub(r"\'s", " \'s", string) 82 | string = re.sub(r"\'ve", " \'ve", string) 83 | string = re.sub(r"n\'t", " n\'t", string) 84 | string = re.sub(r"\'re", " \'re", string) 85 | string = re.sub(r"\'d", " \'d", string) 86 | string = re.sub(r"\'ll", " \'ll", string) 87 | string = re.sub(r",", " , ", string) 88 | string = re.sub(r"!", " ! ", string) 89 | string = re.sub(r"\(", " \( ", string) 90 | string = re.sub(r"\)", " \) ", string) 91 | string = re.sub(r"\?", " \? ", string) 92 | string = re.sub(r"\s{2,}", " ", string) 93 | return string.strip() if trec else string.strip().lower() 94 | 95 | 96 | def build_vocab(word_freq): 97 | rev_vocab = [''] 98 | rev_vocab.extend([x[0] for x in sorted(word_freq.items(), key=lambda x: x[1], reverse=True)]) 99 | vocab = {v: k for k, v in enumerate(rev_vocab)} 100 | return rev_vocab, vocab 101 | 102 | 103 | def add_random_vectors(word_to_vec, rev_vocab, vector_size): 104 | counter1 = 0 105 | counter2 = 0 106 | for word in rev_vocab: 107 | counter1 += 1 108 | if word not in word_to_vec: 109 | counter2 += 1 110 | word_to_vec[word] = np.random.uniform(-0.25, 0.25, vector_size) 111 | print("Total vocab words = %d" % counter1) 112 | print("Total random vectors = %d" % counter2) 113 | 114 | 115 | def write_pickle(pickle_path, data, vocab): 116 | pickle_output = [] 117 | for i, datum in enumerate(data): 118 | sentence = [vocab[x] for x in datum['text'].split()] 119 | sentence_len = datum['num_words'] 120 | label = datum['label'] 121 | sentence_id = datum['sentence_id'] 122 | # Sanity check before save 123 | if sentence_len != len(sentence): 124 | print("error!") 125 | sys.exit(0) 126 | pickle_output.append({ 127 | 'sentence': sentence, 128 | 'label': label, 129 | 'sentence_len': sentence_len, 130 | "sentence_id": sentence_id, 131 | 'order_id': i, 132 | 'pad_string': datum['text'] 133 | }) 134 | pickle.dump(pickle_output, open(pickle_path, "wb")) 135 | 136 | 137 | if __name__ == "__main__": 138 | stsa_path = sys.argv[1] 139 | w2v_file = sys.argv[2] 140 | 141 | train_data_file = os.path.join(stsa_path, "stsa.binary.phrases.train") 142 | dev_data_file = os.path.join(stsa_path, "stsa.binary.dev") 143 | test_data_file = os.path.join(stsa_path, "stsa.binary.test") 144 | database = { 145 | 'train': { 146 | 'filename': train_data_file 147 | }, 148 | 'dev': { 149 | 'filename': dev_data_file 150 | }, 151 | 'test': { 152 | 'filename': test_data_file 153 | } 154 | } 155 | 156 | word_freq = defaultdict(int) 157 | for v in database.values(): 158 | v['data'] = build_data(v['filename'], word_freq) 159 | 160 | # Next, convert the vocabulary to correct form 161 | rev_vocab, vocab = build_vocab(word_freq) 162 | with open(os.path.join(stsa_path, 'vocab'), 'w') as f: 163 | f.write('\n'.join(rev_vocab)) 164 | 165 | # Next, load Google's word vectors 166 | word_to_vec, vector_size = load_bin_vec(w2v_file, vocab) 167 | word_to_vec[''] = np.zeros(vector_size) 168 | # Finally, add random vectors for unknown words 169 | add_random_vectors(word_to_vec, rev_vocab, vector_size) 170 | # Saving the word map 171 | word_map = [] 172 | for word in rev_vocab: 173 | word_map.append({ 174 | 'word': word, 175 | 'vector': word_to_vec[word] 176 | }) 177 | 178 | pickle.dump(word_map, open(os.path.join(stsa_path, "w2v.pickle"), "wb")) 179 | 180 | # Finally, build TFrecord / Pickle files 181 | for k, v in database.items(): 182 | pickle_path = os.path.join(stsa_path, k + ".pickle") 183 | write_pickle(pickle_path, v['data'], vocab) 184 | -------------------------------------------------------------------------------- /code/analysis/performance.py: -------------------------------------------------------------------------------- 1 | import pickle 2 | import numpy as np 3 | import os 4 | import re 5 | 6 | TOTAL_BUT = 210.0 7 | TOTAL_NEG = 314.0 8 | TOTAL_DISC = 447.0 9 | 10 | with open('data/sst2-sentence/neg_db', 'rb') as f: 11 | negation_database = pickle.load(f) 12 | 13 | 14 | # Global variable information 15 | def has_but(sentence): 16 | return ' but ' in sentence 17 | 18 | 19 | def has_negation(sentence): 20 | return sentence in negation_database 21 | 22 | 23 | def has_discourse(sentence): 24 | return has_but(sentence) or has_negation(sentence) 25 | 26 | 27 | def load_vocab(vocab_file): 28 | with open(vocab_file, 'r') as f: 29 | rev_vocab = f.read().split('\n') 30 | vocab = {v: i for i, v in enumerate(rev_vocab)} 31 | return vocab, rev_vocab 32 | 33 | 34 | class Result(object): 35 | re1 = re.compile(r'dev_p:\s(\d*\.?\d*),\stest_p:\s(\d*\.?\d*),\sdev_q:\s(\d*\.?\d*),\stest_q:\s(\d*\.?\d*)') 36 | 37 | def __init__(self, log, run, prior): 38 | self.log = log.split('\n') 39 | self.epochs = [] 40 | self.run = run 41 | epoch = 0 42 | for line in self.log: 43 | matches = Result.re1.findall(line) 44 | if len(matches) == 0: 45 | continue 46 | matches = matches[0] 47 | epoch += 1 48 | self.epochs.append({ 49 | 'epoch': epoch, 50 | 'val_q': float(matches[2]), 51 | 'val_p': float(matches[0]), 52 | 'test_q': float(matches[3]), 53 | 'test_p': float(matches[1]), 54 | }) 55 | if len(self.epochs) > 0 and self.epochs[-1]['val_q'] < 80: 56 | print(run) 57 | # Getting the mistakes data 58 | for e in range(len(self.epochs)): 59 | # Building p data 60 | f1 = 'save/%s_seed_%d/incorrect_p_epoch_%d.txt' % (prior, run, e) 61 | with open(f1, 'r') as f: 62 | log = f.read().split('\n') 63 | mistakes_p = [] 64 | for line in log: 65 | if len(line.strip()) == 0: 66 | continue 67 | mistakes_p.append(line.split('\t')[2]) 68 | self.epochs[e]['mistakes_p'] = mistakes_p 69 | self.epochs[e]['but_p'] = (TOTAL_BUT - sum(map(has_but, mistakes_p))) / TOTAL_BUT 70 | self.epochs[e]['neg_p'] = (TOTAL_NEG - sum(map(has_negation, mistakes_p))) / TOTAL_NEG 71 | self.epochs[e]['discourse_p'] = (TOTAL_DISC - sum(map(has_discourse, mistakes_p))) / TOTAL_DISC 72 | # Building q data 73 | f1 = 'save/%s_seed_%d/incorrect_q_epoch_%d.txt' % (prior, run, e) 74 | with open(f1, 'r') as f: 75 | log = f.read().split('\n') 76 | mistakes_q = [] 77 | for line in log: 78 | if len(line.strip()) == 0: 79 | continue 80 | mistakes_q.append(line.split('\t')[2]) 81 | self.epochs[e]['mistakes_q'] = mistakes_q 82 | self.epochs[e]['but_q'] = (TOTAL_BUT - sum(map(has_but, mistakes_q))) / TOTAL_BUT 83 | self.epochs[e]['neg_q'] = (TOTAL_NEG - sum(map(has_negation, mistakes_q))) / TOTAL_NEG 84 | self.epochs[e]['discourse_q'] = (TOTAL_DISC - sum(map(has_discourse, mistakes_q))) / TOTAL_DISC 85 | 86 | def best(self, mode='val_q'): 87 | return max(self.epochs, key=lambda x: x[mode]) 88 | 89 | def epoch(self, epoch=1): 90 | return self.epochs[epoch - 1] 91 | 92 | def num_epochs(self): 93 | return len(self.epochs) 94 | 95 | 96 | def print_result(text, results, keys=None, silent=False): 97 | if silent is False: 98 | print("=" * (len(text) + 4)) 99 | print("| %s |" % text) 100 | print("=" * (len(text) + 4)) 101 | avgs, stds, maxs = np.zeros(len(keys)), np.zeros(len(keys)), np.zeros(len(keys)) 102 | if keys is None: 103 | keys = results[0].keys() 104 | for i, key in enumerate(keys): 105 | array = [result[key] for result in results] 106 | value, std, max_val, min_val = np.mean(array), np.std(array), np.max(array), np.min(array) 107 | if silent is False: 108 | print("%s :- average = %.4f +/- %.4f; range = %.4f to %.4f" % (key, value, std, min_val, max_val)) 109 | avgs[i], stds[i], maxs[i] = value, std, max_val 110 | if silent is False: 111 | print("") 112 | return avgs, stds, maxs 113 | 114 | 115 | def print_best_n(text, results, silent=False, n=3): 116 | if silent is False: 117 | print("=" * (len(text) + 4)) 118 | print("| %s |" % text) 119 | print("=" * (len(text) + 4)) 120 | valid_results = np.array([result['val_p'] for result in results]) 121 | test_results = np.array([result['test_p'] for result in results]) 122 | best_n_indices = valid_results.argsort()[-n:][::-1] 123 | avg_valid, std_valid = np.mean(valid_results[best_n_indices]), np.std(valid_results[best_n_indices]) 124 | best_n_indices = test_results.argsort()[-n:][::-1] 125 | avg_test, std_test = np.mean(test_results[best_n_indices]), np.std(test_results[best_n_indices]) 126 | print("best %s :- average = %.2f \pm %.2f;" % ("valid", avg_valid, std_valid)) 127 | print("best %s :- average = %.2f \pm %.2f;" % ("test", avg_test, std_test)) 128 | 129 | worst_n_indices = valid_results.argsort()[:n] 130 | avg_valid, std_valid = np.mean(valid_results[worst_n_indices]), np.std(valid_results[worst_n_indices]) 131 | worst_n_indices = test_results.argsort()[:n] 132 | avg_test, std_test = np.mean(test_results[worst_n_indices]), np.std(test_results[worst_n_indices]) 133 | print("worst %s :- average = %.2f \pm %.2f;" % ("valid", avg_valid, std_valid)) 134 | print("worst %s :- average = %.2f \pm %.2f;" % ("test", avg_test, std_test)) 135 | 136 | priors = ['default', 'logicnn', 'elmo'] 137 | all_results = [] 138 | 139 | for prior in priors: 140 | print("Printing %s results" % prior) 141 | results = [] 142 | for i in range(1, 101): 143 | f1 = "logs/%s_seed_%d.log" % (prior, i) 144 | if os.path.exists(f1) is False: 145 | continue 146 | with open(f1, 'r') as f: 147 | log = f.read() 148 | r = Result(log, i, prior=prior) 149 | if r.num_epochs() == 20: 150 | results.append(r) 151 | 152 | all_results.append(results) 153 | 154 | print("Result files found - %d\n" % len(results)) 155 | 156 | keys = ['test_p', 'test_q', 'but_p', 'but_q', 'neg_p', 'neg_q', 'discourse_p', 'discourse_q'] 157 | 158 | print_result("early stopping on val_p", [result.best('val_p') for result in results], keys) 159 | -------------------------------------------------------------------------------- /code/analysis.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import tensorflow as tf 3 | import tensorflow_hub as hub 4 | 5 | import logicnn 6 | 7 | from model.nn import SentimentModel 8 | from utils.data_utils import ( 9 | load_pickle, 10 | load_vocab, 11 | load_w2v 12 | ) 13 | from utils.logger import get_logger 14 | from utils.initialize import initialize_weights 15 | 16 | import matplotlib 17 | matplotlib.use('Agg') 18 | 19 | from matplotlib import pyplot as plt 20 | from matplotlib.backends.backend_pdf import PdfPages 21 | 22 | import scipy 23 | from scipy.spatial.distance import cosine 24 | 25 | 26 | pp = PdfPages('analysis/embeddings.pdf') 27 | plt.figure() 28 | plt.clf() 29 | 30 | 31 | logger = get_logger(__name__) 32 | 33 | 34 | def has_but(sentence): 35 | return ' but ' in sentence 36 | 37 | 38 | def ids_to_sent(ids, rev_vocab): 39 | return ' '.join([rev_vocab[x] for x in ids['sentence'] if x != 0]) 40 | 41 | 42 | def elmo_embedding_analysis(sess, model_test, test_set): 43 | sentence = "there are slow and repetitive parts , but it has just enough spice to keep it interesting" 44 | zero_list = [(8, 15)] 45 | # sentence = "marisa tomei is good , but just a kiss is just a mess" 46 | # zero_list = [(2, 9), (6, 10), (7, 11)] 47 | # sentence = "the irwins emerge unscathed , but the fictional footage is unconvincing and criminally badly acted" 48 | # zero_list = [(0, 6)] 49 | # sentence = "all ends well , sort of , but the frenzied comic moments never click" 50 | # zero_list = [(3, 6)] 51 | model_test.use_elmo() 52 | feed_dict = { 53 | model_test.input_str: [sentence] 54 | } 55 | embeddings = sess.run(model_test.elmo_embeddings, feed_dict) 56 | elmo = np.squeeze(embeddings['elmo']) 57 | grid = np.zeros((elmo.shape[0], elmo.shape[0])) 58 | for i in range(elmo.shape[0]): 59 | for j in range(elmo.shape[0]): 60 | grid[i, j] = 1 - cosine(elmo[i], elmo[j]) 61 | 62 | mininum = np.min(grid) 63 | for i in range(elmo.shape[0]): 64 | grid[i, i] = mininum 65 | 66 | for zl in zero_list: 67 | grid[zl[0], zl[1]] = mininum 68 | grid[zl[1], zl[0]] = mininum 69 | 70 | ax = plt.gca() 71 | im = ax.imshow(grid) 72 | cbar = ax.figure.colorbar(im, ax=ax) 73 | # We want to show all ticks... 74 | ax.set_xticks(np.arange(elmo.shape[0])) 75 | ax.set_yticks(np.arange(elmo.shape[0])) 76 | # ... and label them with the respective list entries. 77 | ax.set_xticklabels(sentence.split(), rotation='vertical') 78 | ax.set_yticklabels(sentence.split()) 79 | 80 | # Let the horizontal axes labeling appear on top. 81 | ax.tick_params(top=True, bottom=False, 82 | labeltop=True, labelbottom=False) 83 | 84 | pp.savefig(bbox_inches="tight") 85 | pp.close() 86 | 87 | 88 | def w2v_embedding_analysis(sess, model_test, test_set): 89 | sentence = "there are slow and repetitive parts , but it has just enough spice to keep it interesting" 90 | zero_list = [(8, 15)] 91 | # sentence = "marisa tomei is good , but just a kiss is just a mess" 92 | # zero_list = [(2, 9), (6, 10), (7, 11)] 93 | # sentence = "the irwins emerge unscathed , but the fictional footage is unconvincing and criminally badly acted" 94 | # zero_list = [(0, 6)] 95 | # sentence = "all ends well , sort of , but the frenzied comic moments never click" 96 | # zero_list = [(3, 6)] 97 | input_str = None 98 | pad_str = None 99 | for sent in test_set: 100 | if sentence in sent['pad_string']: 101 | input_str = np.array([sent['sentence']]) 102 | break 103 | if input_str is None: 104 | import pdb; pdb.set_trace() 105 | feed_dict = { 106 | model_test.inputs: input_str 107 | } 108 | embeddings = sess.run(model_test.embedding_lookup, feed_dict) 109 | embed = np.squeeze(embeddings)[4:4 + len(sentence.split())] 110 | 111 | grid = np.zeros((embed.shape[0], embed.shape[0])) 112 | for i in range(embed.shape[0]): 113 | for j in range(embed.shape[0]): 114 | grid[i, j] = 1 - cosine(embed[i], embed[j]) 115 | 116 | mininum = np.min(grid) 117 | for i in range(embed.shape[0]): 118 | grid[i, i] = mininum 119 | 120 | for zl in zero_list: 121 | grid[zl[0], zl[1]] = mininum 122 | grid[zl[1], zl[0]] = mininum 123 | 124 | ax = plt.gca() 125 | im = ax.imshow(grid) 126 | cbar = ax.figure.colorbar(im, ax=ax) 127 | # We want to show all ticks... 128 | ax.set_xticks(np.arange(embed.shape[0])) 129 | ax.set_yticks(np.arange(embed.shape[0])) 130 | # ... and label them with the respective list entries. 131 | ax.set_xticklabels(sentence.split(), rotation='vertical') 132 | ax.set_yticklabels(sentence.split()) 133 | 134 | # Let the horizontal axes labeling appear on top. 135 | ax.tick_params(top=True, bottom=False, 136 | labeltop=True, labelbottom=False) 137 | 138 | pp.savefig(bbox_inches="tight") 139 | pp.close() 140 | 141 | 142 | def analysis(args): 143 | if args.thread_restrict is True: 144 | cfg_proto = tf.ConfigProto(intra_op_parallelism_threads=2) 145 | else: 146 | cfg_proto = None 147 | with tf.Session(config=cfg_proto) as sess: 148 | # Loading the vocabulary files 149 | vocab, rev_vocab = load_vocab(args) 150 | args.vocab_size = len(rev_vocab) 151 | # Creating test model 152 | 153 | train_set = load_pickle(args, split='train') 154 | args.config.seq_len = train_set[0]['sentence_len'] 155 | args.config.eval_batch_size = 1 156 | # Creating training model 157 | if args.config.elmo is True: 158 | elmo = hub.Module("https://tfhub.dev/google/elmo/1", trainable=True) 159 | else: 160 | elmo = None 161 | 162 | with tf.variable_scope("model", reuse=None): 163 | model_test = SentimentModel(args, queue=None, mode='eval', elmo=elmo) 164 | 165 | # Reload model from checkpoints, if any 166 | steps_done = initialize_weights(sess, model_test, args, mode='test') 167 | logger.info("loaded %d completed steps", steps_done) 168 | 169 | logicnn.append_features(args, train_set, model_test, vocab, rev_vocab) 170 | 171 | dev_set = load_pickle(args, split='dev') 172 | logicnn.append_features(args, dev_set, model_test, vocab, rev_vocab) 173 | 174 | test_set = load_pickle(args, split='test') 175 | logicnn.append_features(args, test_set, model_test, vocab, rev_vocab) 176 | 177 | if args.config.elmo is True: 178 | elmo_embedding_analysis(sess, model_test, test_set) 179 | else: 180 | w2v_embedding_analysis(sess, model_test, test_set) 181 | -------------------------------------------------------------------------------- /code/model/nn.py: -------------------------------------------------------------------------------- 1 | import math 2 | 3 | import tensorflow as tf 4 | 5 | from utils.logger import get_logger 6 | 7 | 8 | def random_uniform(limit): 9 | return tf.random_uniform_initializer(-limit, limit) 10 | 11 | 12 | class SentimentModel(object): 13 | def __init__(self, args, queue=None, mode='train', elmo=None): 14 | self.logger = logger = get_logger(__name__) 15 | self.config = config = args.config 16 | self.elmo = elmo 17 | 18 | # Epoch variable and its update op 19 | self.epoch = tf.Variable(0, trainable=False) 20 | self.epoch_incr = self.epoch.assign(self.epoch + 1) 21 | self.queue = queue 22 | self.embedding_size = e_size = config.embedding_size 23 | self.num_classes = num_classes = config.num_classes 24 | # We can keep a larger batch size during evaluation to speed up computation 25 | if mode == 'train': 26 | self.batch_size = batch_size = config.batch_size 27 | else: 28 | self.batch_size = batch_size = config.eval_batch_size 29 | self.keep_prob = keep_prob = config.keep_prob 30 | self.clipped_norm = clipped_norm = config.clipped_norm 31 | 32 | # Learning rate variable and it's update op 33 | self.learning_rate = tf.get_variable( 34 | "lr", shape=[], dtype=tf.float32, trainable=False, 35 | initializer=tf.constant_initializer(config.lr) 36 | ) 37 | self.global_step = tf.Variable(0, trainable=False) 38 | 39 | # Feeding inputs for evaluation 40 | self.inputs = tf.placeholder(tf.int64, [batch_size, args.config.seq_len]) 41 | self.labels = tf.placeholder(tf.int64, [batch_size]) 42 | self.segment_id = tf.placeholder(tf.int64, [batch_size]) 43 | 44 | # Logic for embeddings 45 | self.w2v_embeddings = tf.placeholder(tf.float32, [args.vocab_size, e_size]) 46 | if config.cnn_mode == 'static': 47 | embeddings = tf.get_variable( 48 | "embedding", [args.vocab_size, e_size], 49 | initializer=random_uniform(0.25), 50 | trainable=False 51 | ) 52 | else: 53 | embeddings = tf.get_variable( 54 | "embedding", [args.vocab_size, e_size], 55 | initializer=random_uniform(0.25), 56 | trainable=True 57 | ) 58 | # Used in the static / non-static configurations 59 | self.load_embeddings = embeddings.assign(self.w2v_embeddings) 60 | # Looking up input embeddings 61 | self.embedding_lookup = tf.nn.embedding_lookup(embeddings, self.inputs) 62 | 63 | if config.elmo is True: 64 | # Load the embeddings from the feed_dict 65 | self.input_strings = tf.placeholder(tf.string, [batch_size]) 66 | self.embedding_lookup = elmo(self.input_strings, signature='default', as_dict=True)['elmo'] 67 | self.input_vectors = input_vectors = tf.expand_dims( 68 | self.embedding_lookup, axis=3 69 | ) 70 | self.embedding_size = e_size = 1024 71 | else: 72 | self.input_vectors = input_vectors = tf.expand_dims(self.embedding_lookup, axis=3) 73 | 74 | # Apply a convolutional layer 75 | conv_outputs = [] 76 | self.debug = [] 77 | for i, filter_specs in enumerate(config.conv_filters): 78 | size = filter_specs['size'] 79 | channels = filter_specs['channels'] 80 | debug = {} 81 | with tf.variable_scope("conv%d" % i): 82 | # Convolution Layer begins 83 | debug['filter'] = conv_filter = tf.get_variable( 84 | "conv_filter%d" % i, [size, e_size, 1, channels], 85 | initializer=random_uniform(0.01) 86 | ) 87 | debug['bias'] = bias = tf.get_variable( 88 | "conv_bias%d" % i, [channels], 89 | initializer=tf.zeros_initializer() 90 | ) 91 | debug['conv_out'] = output = tf.nn.conv2d(input_vectors, conv_filter, [1, 1, 1, 1], "VALID") + bias 92 | # Applying non-linearity 93 | output = tf.nn.relu(output) 94 | # Pooling layer, max over time for each channel 95 | debug['output'] = output = tf.reduce_max(output, axis=[1, 2]) 96 | conv_outputs.append(output) 97 | self.debug.append(debug) 98 | 99 | # Concatenate all different filter outputs before fully connected layers 100 | conv_outputs = tf.concat(conv_outputs, axis=1) 101 | total_channels = conv_outputs.get_shape()[-1] 102 | 103 | # Adding a dropout layer during training 104 | # tf.nn.dropout is an inverted dropout implementation 105 | if mode == 'train': 106 | conv_outputs = tf.nn.dropout(conv_outputs, keep_prob=keep_prob) 107 | 108 | # Apply a fully connected layer 109 | with tf.variable_scope("full_connected"): 110 | self.W = W = tf.get_variable( 111 | "fc_weight", [total_channels, num_classes], 112 | initializer=random_uniform(math.sqrt(6.0 / (total_channels.value + num_classes))) 113 | ) 114 | self.clipped_W = clipped_W = tf.clip_by_norm(W, clipped_norm) 115 | self.b = b = tf.get_variable( 116 | "fc_bias", [num_classes], 117 | initializer=tf.zeros_initializer() 118 | ) 119 | self.logits = tf.matmul(conv_outputs, W) + b 120 | 121 | # Declare the vanilla cross-entropy loss function 122 | self.softmax = tf.nn.softmax(self.logits) 123 | self.one_hot_labels = tf.one_hot(self.labels, num_classes) 124 | 125 | # TODO :- For compatiblity with future versions, stop gradient for label tensors 126 | self.loss1 = tf.nn.softmax_cross_entropy_with_logits( 127 | logits=self.logits, 128 | labels=self.one_hot_labels 129 | ) 130 | self.cost1 = tf.reduce_sum(self.loss1) / batch_size 131 | 132 | # Declare the soft-label distillation loss function 133 | self.soft_labels = tf.placeholder(tf.float32, [batch_size, num_classes]) 134 | self.loss2 = tf.nn.softmax_cross_entropy_with_logits( 135 | logits=self.logits, 136 | labels=self.soft_labels 137 | ) 138 | self.cost2 = tf.reduce_sum(self.loss2) / batch_size 139 | 140 | # Interpolate the loss functions 141 | self.l1_weight = tf.placeholder(tf.float32) 142 | if config.iterative is False: 143 | self.final_cost = self.cost1 144 | else: 145 | self.final_cost = self.l1_weight * self.cost1 + (1.0 - self.l1_weight) * self.cost2 146 | 147 | if config.optimizer == 'adadelta': 148 | opt = tf.train.AdadeltaOptimizer( 149 | learning_rate=self.learning_rate, 150 | rho=0.95, 151 | epsilon=1e-6 152 | ) 153 | else: 154 | opt = tf.train.AdamOptimizer( 155 | learning_rate=self.learning_rate 156 | ) 157 | 158 | if mode == 'train': 159 | for variable in tf.trainable_variables(): 160 | logger.info("%s - %s", variable.name, str(variable.get_shape())) 161 | # Apply optimizer to minimize loss 162 | self.updates = opt.minimize(self.final_cost, global_step=self.global_step) 163 | 164 | # Clip fully connected layer's norm 165 | with tf.control_dependencies([self.updates]): 166 | self.clip = W.assign(clipped_W) 167 | 168 | self.saver = tf.train.Saver(tf.global_variables(), max_to_keep=1) 169 | self.best_saver = tf.train.Saver(tf.global_variables(), max_to_keep=1) 170 | 171 | def use_elmo(self): 172 | self.input_str = tf.placeholder(tf.string, [1]) 173 | self.elmo_embeddings = self.elmo( 174 | self.input_str, signature='default', as_dict=True 175 | ) 176 | -------------------------------------------------------------------------------- /code/train.py: -------------------------------------------------------------------------------- 1 | import os 2 | import random 3 | import time 4 | 5 | import numpy as np 6 | import tensorflow as tf 7 | import tensorflow_hub as hub 8 | 9 | import logicnn 10 | 11 | from model.nn import SentimentModel 12 | 13 | from test import evaluate, detailed_results, evaluate_projection 14 | from utils import l1_schedule 15 | from utils.data_utils import ( 16 | load_pickle, 17 | load_vocab, 18 | load_w2v 19 | ) 20 | from utils.logger import get_logger 21 | from utils.initialize import initialize_w2v, initialize_weights 22 | 23 | logger = get_logger(__name__) 24 | 25 | 26 | def train(args): 27 | """Training uses TensorFlow placeholders. Easier data handling, bad memory utilization.""" 28 | max_epochs = args.config.max_epochs 29 | batch_size = args.config.batch_size 30 | 31 | gpu_options = tf.GPUOptions(allow_growth=True) 32 | if args.thread_restrict is True: 33 | cfg_proto = tf.ConfigProto(gpu_options=gpu_options, intra_op_parallelism_threads=2) 34 | else: 35 | cfg_proto = tf.ConfigProto(gpu_options=gpu_options) 36 | 37 | with tf.Session(config=cfg_proto) as sess: 38 | # Loading the vocabulary files 39 | vocab, rev_vocab = load_vocab(args) 40 | args.vocab_size = len(rev_vocab) 41 | 42 | # Loading all the training data 43 | train_data = load_pickle(args, split='train') 44 | # Assuming a constant sentence length across the dataset 45 | args.config.seq_len = train_data[0]['sentence_len'] 46 | 47 | # Creating training model 48 | if args.config.elmo is True: 49 | elmo = hub.Module("https://tfhub.dev/google/elmo/1", trainable=True) 50 | else: 51 | elmo = None 52 | 53 | with tf.variable_scope("model", reuse=None): 54 | model = SentimentModel(args, queue=None, mode='train', elmo=elmo) 55 | 56 | # Reload model from checkpoints, if any 57 | steps_done = initialize_weights(sess, model, args, mode='train') 58 | logger.info("loaded %d completed steps", steps_done) 59 | 60 | # Load the w2v embeddings 61 | if steps_done == 0 and args.config.cnn_mode != 'rand': 62 | w2v_array = load_w2v(args, rev_vocab) 63 | initialize_w2v(sess, model, w2v_array) 64 | 65 | # Reusing weights for evaluation model 66 | with tf.variable_scope("model", reuse=True): 67 | model_eval = SentimentModel(args, None, mode='eval', elmo=elmo) 68 | 69 | if args.config.iterative is True: 70 | logicnn.append_features(args, train_data, model_eval, vocab, rev_vocab) 71 | num_batches = int(np.floor(float(len(train_data)) / batch_size)) 72 | # Loading the dev data 73 | dev_set = load_pickle(args, split='dev') 74 | logicnn.append_features(args, dev_set, model_eval, vocab, rev_vocab) 75 | # Loading the test data 76 | test_set = load_pickle(args, split='test') 77 | logicnn.append_features(args, test_set, model_eval, vocab, rev_vocab) 78 | 79 | # This need not be zero due to incomplete runs 80 | epoch = model.epoch.eval() 81 | # Best percentage 82 | if os.path.exists(os.path.join(args.train_dir, 'best.txt')): 83 | with open(os.path.join(args.train_dir, 'best.txt'), 'r') as f: 84 | percent_best = float(f.read().strip()) 85 | else: 86 | percent_best = 0.0 87 | 88 | start_batch = model.global_step.eval() % num_batches 89 | while epoch < max_epochs: 90 | # Shuffle training data every epoch 91 | if args.config.shuffle is True: 92 | random.shuffle(train_data) 93 | logger.info("Epochs done - %d", epoch) 94 | epoch_start = time.time() 95 | for i in range(start_batch, num_batches): 96 | split = train_data[i * batch_size:(i + 1) * batch_size] 97 | # Padding ignored here since it is time consuming and not necessary 98 | # Assumption is all sentences are pre-padded to same length 99 | labels = np.array([x['label'] for x in split]) 100 | sentences = [np.array(x['sentence']) for x in split] 101 | feed_dict = { 102 | model.inputs.name: sentences, 103 | model.labels.name: labels 104 | } 105 | 106 | # Interfacing the logicnn algorithm 107 | if args.config.iterative is True: 108 | # generate dynamic features for whole dataset 109 | split_feats = logicnn.compute_features(args, split, sess, model_eval) 110 | # weight settings in Hu et al. 2016 111 | weights = np.array([1.0, 6.0]) 112 | 113 | # calculate logicnn probabilities 114 | soft_labels = logicnn.compute_probability( 115 | args, weights, split, split_feats 116 | ) 117 | schedule = getattr(l1_schedule, args.config.l1_schedule) 118 | feed_dict.update({ 119 | model.l1_weight.name: schedule( 120 | epoch, num_batches * epoch + i, num_batches, args.config.l1_val 121 | ), 122 | model.soft_labels.name: soft_labels 123 | }) 124 | 125 | if args.config.elmo is True: 126 | feed_dict.update({ 127 | model.input_strings.name: [x['pad_string'] for x in split] 128 | }) 129 | 130 | output_feed = [ 131 | model.updates, 132 | model.clip, 133 | model.final_cost 134 | ] 135 | 136 | _, _, final_cost = sess.run(output_feed, feed_dict) 137 | if (i + 1) % 1000 == 0: 138 | logger.info( 139 | "Epoch %d, minibatches done %d / %d. Avg Training Loss %.4f. Time elapsed in epoch %.4f.", 140 | epoch, i + 1, num_batches, final_cost, (time.time() - epoch_start) / 3600.0 141 | ) 142 | if (i + 1) == num_batches: 143 | logger.info("Evaluating model after %d minibatches", i + 1) 144 | weights = np.array([1.0, 6.0]) 145 | 146 | dev_p_results, _ = evaluate(sess, model_eval, dev_set, args) 147 | dev_feats = logicnn.compute_features(args, dev_set, sess, model_eval) 148 | dev_probs = logicnn.compute_probability(args, weights, dev_set, dev_feats) 149 | dev_q_results = evaluate_projection(args, weights, dev_set, dev_probs) 150 | dev_p = float(len(dev_p_results['correct'])) * 100.0 / len(dev_set) 151 | dev_q = float(len(dev_q_results['correct'])) * 100.0 / len(dev_set) 152 | 153 | test_p_results, _ = evaluate(sess, model_eval, test_set, args) 154 | test_feats = logicnn.compute_features(args, test_set, sess, model_eval) 155 | test_probs = logicnn.compute_probability(args, weights, test_set, test_feats) 156 | test_q_results = evaluate_projection(args, weights, test_set, test_probs) 157 | test_p = float(len(test_p_results['correct'])) * 100.0 / len(test_set) 158 | test_q = float(len(test_q_results['correct'])) * 100.0 / len(test_set) 159 | 160 | detailed_results(args, 'p_epoch_%d' % epoch, test_set, rev_vocab, test_p_results) 161 | detailed_results(args, 'q_epoch_%d' % epoch, test_set, rev_vocab, test_q_results) 162 | 163 | logger.info( 164 | "dev_p: %.4f, test_p: %.4f, dev_q: %.4f, test_q: %.4f", 165 | dev_p, test_p, dev_q, test_q 166 | ) 167 | 168 | if dev_p > percent_best: 169 | percent_best = dev_p 170 | with open(os.path.join(args.train_dir, 'best.txt'), 'w') as f: 171 | f.write(str(dev_p)) 172 | if args.save_model is True: 173 | logger.info("Saving Best Model") 174 | checkpoint_path = os.path.join(args.best_dir, "sentence.ckpt") 175 | model.best_saver.save(sess, checkpoint_path, global_step=model.global_step, write_meta_graph=False) 176 | # Also save the model for continuing in future 177 | checkpoint_path = os.path.join(args.train_dir, "sentence.ckpt") 178 | model.saver.save(sess, checkpoint_path, global_step=model.global_step, write_meta_graph=False) 179 | # Update epoch counter 180 | sess.run(model.epoch_incr) 181 | epoch += 1 182 | start_batch = 0 183 | if args.save_model is True: 184 | checkpoint_path = os.path.join(args.train_dir, "sentence.ckpt") 185 | model.saver.save(sess, checkpoint_path, global_step=model.global_step, write_meta_graph=False) 186 | -------------------------------------------------------------------------------- /crowd-data/sst_crowd_discourse.txt: -------------------------------------------------------------------------------- 1 | 0.111 0.5,0,0,0,0,0,0,0.5,0 human nature talks the talk , but it fails to walk the silly walk that distinguishes the merely quirky from the surreal 2 | 1.000 1,1,1,1,1,1,1,1,1 having never been a huge fan of dickens ' 800 page novel , it surprised me how much pleasure i had watching mcgrath 's version 3 | 0.056 0,0,0,0.5,0,0,0,0,0 the irwins emerge unscathed , but the fictional footage is unconvincing and criminally badly acted 4 | 1.000 1,1,1,1,1,1,1,1,1 the powers team has fashioned a comedy with more laughs than many , no question 5 | 0.944 1,1,1,1,1,1,0.5,1,1 it 's amazingly perceptive in its subtle , supportive but unsentimental look at the marks family 6 | 1.000 1,1,1,1,1,1,1,1,1 disney 's live action division has a history of releasing cinematic flotsam , but this is one occasion when they have unearthed a rare gem 7 | 0.389 0.5,0.5,0.5,0.5,0.5,0,0.5,0.5,0 it 's the kind of movie you ca n't quite recommend because it is all windup and not much of a pitch , yet you ca n't bring yourself to dislike it 8 | 0.167 0.5,0,0,0,0.5,0,0.5,0,0 she lists ingredients , but never mixes and stirs 9 | 0.889 1,1,0.5,1,1,1,1,0.5,1 i do n't know precisely what to make of steven soderbergh 's full frontal , though that did n't stop me from enjoying much of it 10 | 0.000 0,0,0,0,0,0,0,0,0 the film is like a series of beginnings and middles that never take off 11 | 0.111 0,0,0,1,0,0,0,0,0 too much of this well acted but dangerously slow thriller feels like a preamble to a bigger , more complicated story , one that never materializes 12 | 0.167 0.5,0,0,0,0,1,0,0,0 all ends well , sort of , but the frenzied comic moments never click 13 | 0.167 0.5,0,0,0,0,0,0,0,1 boring we did n't 14 | 0.278 0,1,0,0.5,0,1,0,0,0 a benign but forgettable sci fi diversion 15 | 0.889 1,1,1,1,1,1,0.5,1,0.5 a triumph of art direction over narrative , but what art direction ! 16 | 0.611 1,0.5,1,1,0,0,0.5,0.5,1 not everything works , but the average is higher than in mary and most other recent comedies 17 | 0.000 0,0,0,0,0,0,0,0,0,0 a lousy movie that 's not merely unwatchable , but also unlistenable 18 | 1.000 1,1,1,1,1,1,1,1,1 this ecologically minded , wildlife friendly film teaches good ethics while entertaining with its unconventionally wacky but loving family 19 | 0.000 0,0,0,0,0,0,0,0,0 truth to tell , if you 've seen more than half a dozen horror films , there 's nothing here you have n't seen before 20 | 0.944 1,1,1,0.5,1,1,1,1,1 there are slow and repetitive parts , but it has just enough spice to keep it interesting 21 | 0.389 0.5,0,0,0.5,0.5,0.5,0.5,0.5,0.5 too bad , but thanks to some lovely comedic moments and several fine performances , it 's not a total loss 22 | 0.889 0.5,1,1,1,1,1,0.5,1,1 windtalkers blows this way and that , but there 's no mistaking the filmmaker in the tall grass , true to himself 23 | 0.500 0.5,0,1,0.5,0.5,0.5,0.5,1,0 it 's all very cute , though not terribly funny if you 're more than six years old 24 | 0.000 0,0,0,0,0,0,0,0,0 the pivotal narrative point is so ripe the film ca n't help but go soft and stinky 25 | 0.389 0.5,1,0.5,0,0,0,0,1,0.5 this pep talk for faith , hope and charity does little to offend , but if saccharine earnestness were a crime , the film 's producers would be in the clink for life 26 | 0.944 1,1,1,1,1,1,0.5,1,1 interacting eyeball to eyeball and toe to toe , hopkins and norton are a winning combination but fiennes steals ` red dragon ' right from under their noses 27 | 0.889 1,0.5,1,1,0.5,1,1,1,1 narc may not get an ` a ' for originality , but it wears its b movie heritage like a badge of honor 28 | 0.000 0,0,0,0,0,0,0,0,0 the problem is n't that the movie hits so close to home so much as that it hits close to home while engaging in such silliness as that snake down the throat business and the inevitable shot of schwarzenegger outrunning a fireball 29 | 0.389 0.5,0,0.5,0.5,0.5,0.5,0.5,0.5,0 lrb director rrb byler may yet have a great movie in him , but charlotte sometimes is only half of one 30 | 0.000 0,0,0,0,0,0,0,0,0 you could nap for an hour and not miss a thing 31 | 0.111 0,0,0,0,0,0,0,0,1 this goofy gangster yarn never really elevates itself from being yet another earnestly generic crime busting comic vehicle a well intentioned remake that shows some spunk and promise but fails to register as anything distinctive or daring 32 | 0.167 0.5,0,0,0.5,0,0,0,0,0.5 there are a few laughs and clever sight gags scattered about , but not enough to make this anything more than another big budget bust 33 | 0.889 1,1,1,1,1,0.5,1,0.5,1 not for everyone , but for those with whom it will connect , it 's a nice departure from standard moviegoing fare 34 | 0.056 0,0,0,0,0,0,0,0.5,0 scene by scene , things happen , but you 'd be hard pressed to say what or why 35 | 0.944 1,1,1,1,1,1,0.5,1,1 lrb drumline rrb is entertaining for what it does , and admirable for what it does n't do 36 | 0.611 1,0.5,0,1,0,1,0,1,1 perhaps no picture ever made has more literally showed that the road to hell is paved with good intentions 37 | 0.000 0,0,0,0,0,0,0,0,0 the story drifts so inexorably into cliches about tortured lrb and torturing rrb artists and consuming but impossible love that you ca n't help but become more disappointed as each overwrought new sequence plods on 38 | 0.000 0,0,0,0,0,0,0,0,0 it smacks of purely commercial motivation , with no great love for the original 39 | 0.222 0,0.5,0.5,0,0,0.5,0,0,0.5 there 's plenty of style in guillermo del toro 's sequel to the 1998 hit but why do we need 117 minutes to tell a tale that simply ca n't sustain more than 90 minutes 40 | 0.222 1,0,0,0,0,0,0,1,0 k 19 may not hold a lot of water as a submarine epic , but it holds even less when it turns into an elegiacally soggy saving private ryanovich 41 | 0.000 0,0,0,0,0,0,0,0,0 the story 's so preposterous that i did n't believe it for a second , despite the best efforts of everyone involved 42 | 0.500 0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5 never mind whether you buy the stuff about barris being a cia hit man 43 | 0.000 0,0,0,0,0,0,0,0,0 the movie makes absolutely no sense 44 | 0.056 0,0,0,0,0,0,0,0.5,0 any film featuring young children threatened by a terrorist bomb can no longer pass as mere entertainment 45 | 0.222 0,1,0,1,0,0,0,0,0 watching trouble every day , at least if you do n't know what 's coming , is like biting into what looks like a juicy , delicious plum on a hot summer day and coming away with your mouth full of rotten pulp and living worms 46 | 0.722 1,1,1,1,1,0,0.5,1,0 not a bad journey at all 47 | 0.000 0,0,0,0,0,0,0,0,0 even the imaginative gore ca n't hide the musty scent of todd farmer 's screenplay , which is a simple retread of the 1979 alien , with a plucky heroine battling a monster loose in a spaceship 48 | 0.000 0,0,0,0,0,0,0,0,0 shot perhaps ` artistically ' with handheld cameras and apparently no movie lights by joaquin baca asay , the low budget production swings annoyingly between vertigo and opacity 49 | 0.667 1,0.5,1,1,0.5,0.5,0.5,0.5,0.5 it almost plays like solaris , but with guns and jokes 50 | 1.000 1,1,1,1,1,1,1,1,1 bubba ho tep is a wonderful film with a bravura lead performance by bruce campbell that does n't deserve to leave the building until everyone is aware of it 51 | 0.000 0,0,0,0,0,0,0,0,0 just a big mess of a movie , full of images and events , but no tension or surprise 52 | 0.333 0,0,0.5,0.5,1,0,0,0.5,0.5 do n't let your festive spirit go this far 53 | 0.000 0,0,0,0,0,0,0,0,0 it 's push the limits teen comedy , the type written by people who ca n't come up with legitimate funny , and it 's used so extensively that good bits are hopelessly overshadowed 54 | 0.167 0,0,0,0,0,0.5,0,1,0 one of those movies where you walk out of the theater not feeling cheated exactly , but feeling pandered to , which , in the end , might be all the more infuriating 55 | 0.556 0.5,0.5,0.5,0.5,0.5,0,1,1,0.5 fans of the animated wildlife adventure show will be in warthog heaven others need not necessarily apply 56 | 0.833 1,1,1,1,1,0.5,1,0,1 a great comedy filmmaker knows great comedy need n't always make us laugh 57 | 0.889 1,1,0.5,1,1,1,1,0.5,1 time changer may not be the most memorable cinema session but its profound self evaluation message about our fragile existence and the absence of spiritual guidance should at least invade an abundance of mindsets 58 | 1.000 1,1,1,1,1,1,1,1,1 lrb but it 's rrb worth recommending because of two marvelous performances by michael caine and brendan fraser 59 | 0.889 1,1,1,1,1,1,1,1,0 workmanlike , maybe , but still a film with all the elements that made the other three great , scary times at the movies 60 | 0.889 1,1,1,1,0.5,1,1,1,0.5 as a witness to several greek american weddings but , happily , a victim of none i can testify to the comparative accuracy of ms vardalos ' memories and insights 61 | 0.889 1,1,1,1,1,1,0,1,1 children may not understand everything that happens i 'm not sure even miyazaki himself does but they will almost certainly be fascinated , and undoubtedly delighted 62 | 0.000 0,0,0,0,0,0,0,0,0 dreary , highly annoying ` some body ' will appeal to no one 63 | 1.000 1,1,1,1,1,1,1,1,1,1 a splendid entertainment , young in spirit but accomplished in all aspects with the fullness of spirit and sense of ease that comes only with experience 64 | 0.722 0.5,0.5,0.5,1,1,1,0.5,0.5,1 is n't it great \? 65 | 0.111 0,0,0,0,0,0,1,0,0 at first , the sight of a blind man directing a film is hilarious , but as the film goes on , the joke wears thin 66 | 0.000 0,0,0,0,0,0,0,0,0 this series should have died long ago , but they keep bringing it back another day as punishment for paying money to see the last james bond movie 67 | 0.889 0.5,1,1,0.5,1,1,1,1,1 dark and disturbing , but also surprisingly funny 68 | 0.056 0.5,0,0,0,0,0,0,0,0 do we really need a 77 minute film to tell us exactly why a romantic relationship between a 15 year old boy and a 40 year old woman does n't work \? 69 | 0.111 0.5,0,0,0,0,0,0.5,0,0 there are touching moments in etoiles , but for the most part this is a dull , dour documentary on what ought to be a joyful or at least fascinating subject 70 | 0.000 0,0,0,0,0,0,0,0,0 mark me down as a non believer in werewolf films that are not serious and rely on stupidity as a substitute for humor 71 | 0.056 0,0,0,0,0,0,0.5,0,0 this is n't just the cliffsnotes version of nicholas nickleby , it 's the cliffsnotes with pages missing 72 | 0.889 1,1,1,0,1,1,1,1,1 call me a wimp , but i cried , not once , but three times in this animated sweet film 73 | 0.556 1,0,1,0.5,1,1,0.5,0,0 not so much funny as aggressively sitcom cute , it 's full of throwaway one liners , not quite jokes , and a determined tv amiability that allen personifies 74 | 0.222 0,1,0,0,0,0,0.5,0.5,0 all that lrb powerpuff girls rrb charm is present in the movie , but it 's spread too thin 75 | 1.000 1,1,1,1,1,1,1,1,1 de oliveira creates an emotionally rich , poetically plump and visually fulsome , but never showy , film whose bittersweet themes are reinforced and brilliantly personified by michel piccoli 76 | 0.000 0,0,0,0,0,0,0,0,0 if shayamalan wanted to tell a story about a man who loses his faith , why did n't he just do it , instead of using bad sci fi as window dressing \? 77 | 0.222 0,0,0.5,0,0,0.5,0,0.5,0.5 wasabi is slight fare indeed , with the entire project having the feel of something tossed off quickly lrb like one of hubert 's punches rrb , but it should go down smoothly enough with popcorn 78 | 0.722 0.5,0.5,0,1,1,0.5,1,1,1 while not as aggressively impressive as its american counterpart , `` in the bedroom , '' moretti 's film makes its own , quieter observations 79 | 1.000 1,1,1,1,1,1,1,1,1 day is not a great bond movie , but it is a good bond movie , which still makes it much better than your typical bond knock offs 80 | 0.056 0,0,0,0,0,0,0,0,0.5 not every animated film from disney will become a classic , but forgive me if i 've come to expect more from this studio than some 79 minute after school `` cartoon '' 81 | 0.167 0,0,0,0,0.5,0.5,0.5,0,0 the film has a few cute ideas and several modest chuckles but it is n't exactly kiddie friendly alas , santa is more ho hum than ho ho ho and the snowman lrb who never gets to play that flute rrb has all the charm of a meltdown 82 | 0.056 0,0,0,0,0,0,0,0.5,0 john leguizamo may be a dramatic actor just not in this movie 83 | 1.000 1,1,1,1,1,1,1,1,1 the film is all a little lit crit 101 , but it 's extremely well played and often very funny 84 | 1.000 1,1,1,1,1,1,1,1,1 visits spy movie territory like a novel you ca n't put down , examines a footnote to history seldom brought to light on the screen , and keeps you guessing from first frame to last 85 | 0.056 0,0,0,0,0,0,0.5,0,0 like mike does n't win any points for originality 86 | 0.333 1,0.5,0,0,0,0,1,0,0.5 some of seagal 's action pictures are guilty pleasures , but this one is so formulaic that it seems to be on auto pilot 87 | 1.000 1,1,1,1,1,1,1,1,1 it is ridiculous , of course but it is also refreshing , disarming , and just outright enjoyable despite its ridiculousness 88 | 0.278 0.5,0,0,0,0,1,0,0,1 cho 's fans are sure to be entertained it 's only fair in the interest of full disclosure to say that on the basis of this film alone i 'm not one of them 89 | 0.278 0,0,0.5,1,0,0.5,0,0.5,0 frenetic but not really funny 90 | 0.444 0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0 but i was n't 91 | 0.889 0,1,1,1,1,1,1,1,1 a real movie , about real people , that gives us a rare glimpse into a culture most of us do n't know 92 | 0.056 0,0.5,0,0,0,0,0,0,0 never quite transcends jokester status and the punchline does n't live up to barry 's dead eyed , perfectly chilled delivery 93 | 0.611 1,1,1,1,0,0,0.5,1,0 a somewhat crudely constructed but gripping , questing look at a person so racked with self loathing , he becomes an enemy to his own race 94 | 1.000 1,1,1,1,1,1,1,1,1 you have to pay attention to follow all the stories , but they 're each interesting 95 | 0.944 1,0.5,1,1,1,1,1,1,1 though it is by no means his best work , laissez passer is a distinguished and distinctive effort by a bona fide master , a fascinating film replete with rewards to be had by all willing to make the effort to reap them 96 | 0.556 1,0,0.5,0.5,0.5,1,0.5,0.5,0.5 intriguing and beautiful film , but those of you who read the book are likely to be disappointed 97 | 1.000 1,1,1,1,1,1,1,1,1 divine secrets of the ya ya sisterhood may not be exactly divine , but it 's definitely defiantly ya ya , what with all of those terrific songs and spirited performances 98 | 0.778 1,0.5,1,0,1,1,1,0.5,1 the film 's real appeal wo n't be to clooney fans or adventure buffs , but to moviegoers who enjoy thinking about compelling questions with no easy answers 99 | 0.611 0,0.5,1,0,0.5,1,1,1,0.5 a sensual performance from abbass buoys the flimsy story , but her inner journey is largely unexplored and we 're left wondering about this exotic looking woman whose emotional depths are only hinted at 100 | 0.167 0.5,0,0.5,0,0,0,0.5,0,0 you might not buy the ideas 101 | 0.056 0,0,0,0,0,0,0,0.5,0 all the well meaningness in the world ca n't erase the fact that the believer feels like a 12 step program for the jewish nazi 102 | 0.000 0,0,0,0,0,0,0,0,0 proves that a movie about goodness is not the same thing as a good movie 103 | 0.150 0,0,0,1,0,0,0,0.5,0,0 myers never knows when to let a gag die thus , we 're subjected to one mind numbingly lengthy riff on poo and pee jokes after another 104 | 0.056 0,0,0,0,0,0,0.5,0,0 a long slog for anyone but the most committed pokemon fan 105 | 1.000 1,1,1,1,1,1,1,1,1 pray 's film works well and will appeal even to those who are n't too familiar with turntablism 106 | 0.400 0,0,0.5,1,0,0.5,1,0.5,0,0.5 fairly successful at faking some pretty cool stunts but a complete failure at trying to create some pretty cool characters 107 | 0.000 0,0,0,0,0,0,0,0,0 these spiders can outrun a motorcycle and wrap a person in a sticky cocoon in seconds , but they fall short of being interesting or entertaining 108 | 1.000 1,1,1,1,1,1,1,1,1 it 's a good film not a classic , but odd , entertaining and authentic 109 | 0.950 1,1,1,0.5,1,1,1,1,1,1 this version 's no classic like its predecessor , but its pleasures are still plentiful 110 | 0.111 0,0,0.5,0,0,0,0,0,0.5 it 's getting harder and harder to ignore the fact that hollywood is n't laughing with us , folks 111 | 0.833 1,1,1,0.5,1,0.5,1,1,0.5 somewhat blurred , but kinnear 's performance is razor sharp 112 | 0.056 0,0,0,0,0,0,0,0.5,0 the film 's center will not hold 113 | 0.889 1,1,0,1,1,1,1,1,1 this is n't my favorite in the series , still i enjoyed it enough to recommend 114 | 0.000 0,0,0,0,0,0,0,0,0 not only does the movie fail to make us part of its reality , it fails the most basic relevancy test as well 115 | 0.056 0,0.5,0,0,0,0,0,0,0 sets up a nice concept for its fiftysomething leading ladies , but fails loudly in execution 116 | 0.833 1,1,1,1,0.5,1,0,1,1 awkward but sincere and , ultimately , it wins you over 117 | 0.100 0,0,0,1,0,0,0,0,0,0 dull , if not devoid of wit , this shaggy dog longs to frisk through the back alleys of history , but scarcely manages more than a modest , snoozy charm 118 | 0.000 0,0,0,0,0,0,0,0,0 no number of fantastic sets , extras , costumes and spectacular locales can disguise the emptiness at the center of the story 119 | 0.056 0,0,0,0,0,0,0.5,0,0 unfortunately , as a writer , mr montias is n't nearly as good to his crew as he is as a director or actor 120 | 0.200 0,0,0,1,0,0,1,0,0,0 sadly , hewitt 's forte is leaning forward while wearing low cut gowns , not making snappy comebacks 121 | 0.278 0.5,0.5,0.5,0.5,0,0,0.5,0,0 audiences will find no mention of political prisoners or persecutions that might paint the castro regime in less than saintly tones 122 | 0.000 0,0,0,0,0,0,0,0,0 theology aside , why put someone who ultimately does n't learn at the center of a kids ' story \? 123 | 0.389 0.5,0.5,0.5,0.5,0.5,0.5,0,0,0.5 roman coppola may never become the filmmaker his dad was , but heck few filmmakers will 124 | 1.000 1,1,1,1,1,1,1,1,1 its scenes and sensibility are all more than familiar , but it exudes a kind of nostalgic spy movie charm and , at the same time , is so fresh and free of the usual thriller nonsense that it all seems to be happening for the first time 125 | 0.111 0,0,0,0,0,0,0,0.5,0.5 the film is really not so much bad as bland 126 | 0.167 0,0,0,0.5,0,0,1,0,0 oedekerk wrote patch adams , for which he should not be forgiven 127 | 0.500 0,0,0.5,0,0.5,1,1,1,0.5 as if to prove a female director can make a movie with no soft edges , kathryn bigelow offers no sugar coating or interludes of lightness 128 | 1.000 1,1,1,1,1,1,1,1,1 despite what anyone believes about the goal of its makers , the show represents a spectacular piece of theater , and there 's no denying the talent of the creative forces behind it 129 | 0.000 0,0,0,0,0,0,0,0,0 the character is too forced and overwritten to be funny or believable much of the time , and clayburgh does n't always improve the over the top mix 130 | 0.000 0,0,0,0,0,0,0,0,0 with a story inspired by the tumultuous surroundings of los angeles , where feelings of marginalization loom for every dreamer with a burst bubble , the dogwalker has a few characters and ideas , but it never manages to put them on the same path 131 | 1.000 1,1,1,1,1,1,1,1,1 if you liked such movies as notting hill , four weddings and a funeral , bridget jones ' diary or high fidelity , then you wo n't want to miss about a boy 132 | 0.056 0,0,0.5,0,0,0,0,0,0 if we do n't demand a standard of quality for the art that we choose , we deserve the trash that we get 133 | 0.333 0.5,0,0,0.5,0.5,0,1,0.5,0 as a revenge thriller , the movie is serviceable , but it does n't really deliver the delicious guilty pleasure of the better film versions 134 | 1.000 1,1,1,1,1,1,1,1,1 while this film is not in the least surprising , it is still ultimately very satisfying 135 | 0.000 0,0,0,0,0,0,0,0,0 never engaging , utterly predictable and completely void of anything remotely interesting or suspenseful 136 | 1.000 1,1,1,1,1,1,1,1,1 a poignant and powerful narrative that reveals that reading writing and arithmetic are not the only subjects to learn in life 137 | 1.000 1,1,1,1,1,1,1,1,1 it 's a humble effort , but spiced with wry humor and genuine pathos , especially between morgan and redgrave 138 | 0.111 0.5,0,0,0,0,0.5,0,0,0 new best friend should n't have gone straight to video it should have gone straight to a mystery science theater 3000 video 139 | 0.000 0,0,0,0,0,0,0,0,0 there are weird resonances between actor and role here , and they 're not exactly flattering 140 | 0.500 0,0.5,1,0.5,1,0.5,0.5,0,0.5 i do n't think i 've been as entranced and appalled by an asian film since shinya tsukamoto 's iron man 141 | 0.000 0,0,0,0,0,0,0,0,0 it 's never a good sign when a film 's star spends the entirety of the film in a coma 142 | 0.056 0,0,0.5,0,0,0,0,0,0 i did n't laugh at the ongoing efforts of cube , and his skinny buddy mike epps , to make like laurel and hardy 'n the hood 143 | 0.000 0,0,0,0,0,0,0,0,0,0 no , it 's not nearly as good as any of its influences 144 | 0.278 0,0,0,0.5,0.5,0,0.5,0.5,0.5 but what saves lives on the freeway does not necessarily make for persuasive viewing 145 | 0.722 0.5,1,0.5,1,0.5,0.5,1,0.5,1 an impossible romance , but we root for the patronized iranian lad 146 | 0.167 0,0.5,0,0,0,0.5,0,0,0.5 ray liotta and jason patric do some of their best work in their underwritten roles , but do n't be fooled nobody deserves any prizes here 147 | 0.111 0,0,0,0,0.5,0,0,0,0.5 the period swinging london in the time of the mods and the rockers gets the once over once again in gangster no 1 , but falls apart long before the end 148 | 0.000 0,0,0,0,0,0,0,0,0 with the candy like taste of it fading faster than 25 cent bubble gum , i realized this is a throwaway movie that wo n't stand the test of time 149 | 0.000 0,0,0,0,0,0,0,0,0 the problem with concept films is that if the concept is a poor one , there 's no saving the movie 150 | 0.389 0,0,0,0,0.5,0.5,1,1,0.5 fine acting but there is no sense of connecting the dots , just dots 151 | 0.000 0,0,0,0,0,0,0,0,0 a movie that tries to fuse the two ` woods ' but winds up a bolly holly masala mess 152 | 0.611 1,1,0,1,0,0.5,0.5,1,0.5 there 's not much more to this adaptation of the nick hornby novel than charm effortless , pleasurable , featherweight charm 153 | 0.222 0.5,0.5,0,0,0,0.5,0,0,0.5 still , i 'm not quite sure what the point is 154 | 0.889 1,1,1,0,1,1,1,1,1 emerges as something rare , an issue movie that 's so honest and keenly observed that it does n't feel like one 155 | 0.778 1,1,1,0,0.5,0.5,1,1,1 we get some truly unique character studies and a cross section of americana that hollywood could n't possibly fictionalize and be believed 156 | 0.611 1,0.5,0.5,0.5,1,0.5,0.5,0.5,0.5 you might not want to hang out with samantha , but you 'll probably see a bit of yourself in her unfinished story 157 | 1.000 1,1,1,1,1,1,1,1,1 it might be tempting to regard mr andrew and his collaborators as oddballs , but mr earnhart 's quizzical , charming movie allows us to see them , finally , as artists 158 | 0.889 1,1,1,1,1,1,0.5,1,0.5 cho 's fearless in picking apart human foibles , not afraid to lay her life bare in front of an audience 159 | 0.111 0,0,0,0.5,0,0,0.5,0,0 too bad the former murphy brown does n't pop reese back 160 | 0.556 1,0,0.5,1,0.5,1,0.5,0,0.5 with a story as bizarre and mysterious as this , you do n't want to be worrying about whether the ineffectual broomfield is going to have the courage to knock on that door 161 | 0.056 0,0,0,0.5,0,0,0,0,0 for all its highfalutin title and corkscrew narrative , the movie turns out to be not much more than a shaggy human tale 162 | 0.056 0,0,0,0,0,0,0,0,0.5 meandering , sub aquatic mess it 's so bad it 's good , but only if you slide in on a freebie 163 | 0.111 0,0,0.5,0,0,0,0,0,0.5 no more 164 | 0.167 0,0,0.5,0.5,0,0.5,0,0,0 starts off with a bang , but then fizzles like a wet stick of dynamite at the very end 165 | 0.278 1,0,0,0.5,0,0.5,0.5,0,0 absorbing and disturbing perhaps more disturbing than originally intended but a little clarity would have gone a long way 166 | 0.278 1,0,0,0.5,0.5,0,0.5,0,0 has a plot full of twists upon knots and a nonstop parade of mock tarantino scuzbag types that starts out clever but veers into overkill 167 | 0.056 0,0,0,0,0,0.5,0,0,0 it 's often faintly amusing , but the problems of the characters never become important to us , and the story never takes hold 168 | 0.167 0.5,0,0,0.5,0,0,0,0.5,0 i regret to report that these ops are just not extreme enough 169 | 1.000 1,1,1,1,1,1,1,1,1 the wwii drama is well plotted , visually striking and filled with enjoyably complex characters who are never what they first appear 170 | 0.889 1,1,1,0.5,1,1,1,0.5,1 sits uneasily as a horror picture but finds surprising depth in its look at the binds of a small family 171 | 0.611 1,1,1,0.5,1,0.5,0,0.5,0 kaufman creates an eerie sense of not only being there at the time of these events but the very night matthew was killed 172 | 0.167 0,1,0,0,0,0,0.5,0,0 marisa tomei is good , but just a kiss is just a mess 173 | 0.944 1,1,1,1,1,1,1,1,0.5 all but the most persnickety preteens should enjoy this nonthreatening but thrilling adventure 174 | 1.000 1,1,1,1,1,1,1,1,1 it 's almost impossible not to be moved by the movie 's depiction of sacrifice and its stirring epilogue in post soviet russia 175 | 0.722 1,1,1,0.5,1,1,0,0,1 it takes this never ending confusion and hatred , puts a human face on it , evokes shame among all who are party to it and even promotes understanding 176 | 0.111 0,0,0.5,0,0,0,0.5,0,0 the issue of faith is not explored very deeply 177 | 1.000 1,1,1,1,1,1,1,1,1 if this movie were a book , it would be a page turner , you ca n't wait to see what happens next 178 | 0.333 1,0,0,1,1,0,0,0,0 proof that a thriller can be sleekly shot , expertly cast , paced with crisp professionalism and still be a letdown if its twists and turns hold no more surprise than yesterday 's weather report 179 | 1.000 1,1,1,1,1,1,1,1,1 a sensitive and expertly acted crowd pleaser that is n't above a little broad comedy and a few unabashedly sentimental tears 180 | 0.667 1,0.5,1,1,0,1,0.5,0.5,0.5 lrb davis rrb has a bright , chipper style that keeps things moving , while never quite managing to connect her wish fulfilling characters to the human race 181 | 0.000 0,0,0,0,0,0,0,0,0 the filmmakers juggle and juxtapose three story lines but fail to come up with one cogent point , unless it 's that life stinks , especially for sensitive married women who really love other women 182 | 0.167 0,0,0,1,0,0,0,0.5,0 for all its alleged youthful fire , xxx is no less subservient to bond 's tired formula of guns , girls and gadgets while brandishing a new action hero 183 | 0.167 0,0,0,0.5,0.5,0,0,0.5,0 the movie feels like it 's going to be great , and it carries on feeling that way for a long time , but takeoff just never happens 184 | 0.000 0,0,0,0,0,0,0,0,0 a long winded and stagy session of romantic contrivances that never really gels like the shrewd feminist fairy tale it could have been 185 | 0.500 0,1,0,0.5,0.5,1,0.5,1,0 it 's not so much enjoyable to watch as it is enlightening to listen to new sides of a previous reality , and to visit with some of the people who were able to make an impact in the theater world 186 | 0.000 0,0,0,0,0,0,0,0,0 a frantic search for laughs , with a hit to miss ratio that does n't exactly favour the audience 187 | 0.056 0,0,0,0,0,0,0.5,0,0 suggests puns about ingredients and soup and somebody being off their noodle , but let 's just say the ingredients do n't quite add up to a meal 188 | 1.000 1,1,1,1,1,1,1,1,1 though the controversial korean filmmaker 's latest effort is not for all tastes , it offers gorgeous imagery , effective performances , and an increasingly unsettling sense of foreboding 189 | 0.000 0,0,0,0,0,0,0,0,0 we never really feel involved with the story , as all of its ideas remain just that abstract ideas 190 | 0.111 0.5,0.5,0,0,0,0,0,0,0 given that both movies expect us to root for convicted violent felons over those assigned to protect us from same , we need every bit of sympathy the cons can muster this time , there is n't much 191 | 0.000 0,0,0,0,0,0,0,0,0 looks awfully like one long tourist spot for a mississippi that may never have existed outside of a scriptwriter 's imagination 192 | 0.944 1,1,1,1,1,1,0.5,1,1 though the film 's scenario is certainly not earthshaking , this depiction of fluctuating female sexuality has two winning lead performances and charm to spare 193 | 0.056 0,0,0,0,0.5,0,0,0,0 much of what is meant to be ` inspirational ' and ` uplifting ' is simply distasteful to audiences not already sharing lrb the movie 's rrb mindset 194 | 0.000 0,0,0,0,0,0,0,0,0 but that 's just the problem with it the director has n't added enough of his own ingredients 195 | 0.778 1,1,1,0.5,0.5,0,1,1,1 it uses an old time formula , it 's not terribly original and it 's rather messy but you just have to love the big , dumb , happy movie my big fat greek wedding 196 | 0.111 0,0,0,0.5,0.5,0,0,0,0 nair stuffs the film with dancing , henna , ornamentation , and group song , but her narrative clich s and telegraphed episodes smell of old soap opera 197 | 0.889 1,1,1,1,1,1,0,1,1 tadpole is a sophisticated , funny and good natured treat , slight but a pleasure 198 | 0.250 1,0,0,1,0,0,0,0,0,0.5 this self infatuated goofball is far from the only thing wrong with the clumsy comedy stealing harvard , but he 's the most obvious one 199 | 0.000 0,0,0,0,0,0,0,0,0 a great ending does n't make up for a weak movie , and crazy as hell does n't even have a great ending 200 | 0.944 0.5,1,1,1,1,1,1,1,1 a classy item by a legend who may have nothing left to prove but still has the chops and drive to show how its done 201 | 0.556 1,1,1,0.5,0.5,0,0,0.5,0.5 even legends like alfred hitchcock and john huston occasionally directed trifles so it 's no surprise to see a world class filmmaker like zhang yimou behind the camera for a yarn that 's ultimately rather inconsequential 202 | 1.000 1,1,1,1,1,1,1,1,1 this is carion 's debut feature but his script and direction hums with a confidence that many spend entire careers trying to reach 203 | 0.556 0.5,0.5,1,0,0.5,1,0,0.5,1 smith 's approach is never to tease , except gently and in that way that makes us consider our own eccentricities and how they are expressed through our homes 204 | 0.889 1,1,1,1,1,1,1,0,1 it represents better than average movie making that does n't demand a dumb , distracted audience 205 | 0.000 0,0,0,0,0,0,0,0,0 the sad thing about knockaround guys is its lame aspiration for grasping the coolness vibes when in fact the film is n't as flippant or slick as it thinks it is 206 | 0.000 0,0,0,0,0,0,0,0,0 the actors do n't inhabit their roles they 're trapped by them , forced to change behavior in bizarre unjustified fashion and spout dialog that consists mostly of platitudes 207 | 0.900 1,1,1,1,0.5,0.5,1,1,1,1 an uneven but intriguing drama that is part homage and part remake of the italian masterpiece 208 | 0.000 0,0,0,0,0,0,0,0,0 it would n't be my preferred way of spending 100 minutes or 7 00 209 | 0.778 1,0.5,1,1,0,1,0.5,1,1 a tough go , but leigh 's depth and rigor , and his skill at inspiring accomplished portrayals that are all the more impressive for their lack of showiness , offsets to a notable degree the film 's often mined and despairing milieu 210 | 0.222 1,0,0,0,0,0,1,0,0 the two leads are almost good enough to camouflage the dopey plot , but so much naturalistic small talk , delivered in almost muffled exchanges , eventually has a lulling effect 211 | 1.000 1,1,1,1,1,1,1,1,1 lee jeong hyang tells it so lovingly and films it so beautifully that i could n't help being captivated by it 212 | 0.333 0,1,0,0,1,0.5,0,0.5,0 begins as a promising meditation on one of america 's most durable obsessions but winds up as a slender cinematic stunt 213 | 0.389 0.5,0,0.5,0.5,0.5,0.5,0,0.5,0.5 i do n't have an i am sam clue 214 | 0.000 0,0,0,0,0,0,0,0,0 these people would n't know subtle characterization if it put on a giant furry monster costume and then gave them a lapdance 215 | 0.944 1,1,1,1,1,0.5,1,1,1 while not all transitions to adulthood are so fraught , there 's much truth and no small amount of poetry in girls ca n't swim 216 | 0.944 1,1,0.5,1,1,1,1,1,1 by the end of no such thing the audience , like beatrice , has a watchful affection for the monster 217 | 0.833 1,1,1,0,0.5,1,1,1,1 the film 's greatest asset is how much it 's not just another connect the dots , spy on the run picture 218 | 0.000 0,0,0,0,0,0,0,0,0 does n't amount to much of anything 219 | 0.000 0,0,0,0,0,0,0,0,0 not sweet enough to liven up its predictable story and will leave even fans of hip hop sorely disappointed 220 | 0.111 0,0,0,0,0,0,1,0,0 birot 's directorial debut lrb she co wrote the script with christophe honor rrb is n't so much bad as it is bland 221 | 0.111 0,0,0,0,0,0,0,1,0 not ` terrible filmmaking ' bad , but more like , ' i once had a nightmare like this , and it 's now coming true ' bad 222 | 0.167 0,0,0.5,0,0.5,0,0,0,0.5 topkapi this is not 223 | 0.111 0,0,0,0.5,0,0.5,0,0,0 i doubt anyone will remember the picture by the time christmas really rolls around , but maybe it 'll be on video by then 224 | 0.000 0,0,0,0,0,0,0,0,0 plays as hollow catharsis , with lots of tears but very little in the way of insights 225 | 0.056 0,0,0,0,0,0,0.5,0,0 but the characters tend to be cliches whose lives are never fully explored 226 | 0.500 0.5,0.5,1,0.5,0.5,0.5,0.5,0,0.5 the fight scenes are fun , but it grows tedious 227 | 1.000 1,1,1,1,1,1,1,1,1 waydowntown is by no means a perfect film , but its boasts a huge charm factor and smacks of originality 228 | 1.000 1,1,1,1,1,1,1,1,1 despite the long running time , the pace never feels slack there 's no scene that screams `` bathroom break ! '' 229 | 0.944 1,1,1,1,1,0.5,1,1,1 there is n't a weak or careless performance amongst them 230 | 0.667 0.5,1,0.5,0.5,1,0.5,1,0.5,0.5 on the surface , it 's a lovers on the run crime flick , but it has a lot in common with piesiewicz 's and kieslowski 's earlier work , films like the double life of veronique 231 | 0.000 0,0,0,0,0,0,0,0,0 do n't expect any surprises in this checklist of teamwork cliches 232 | 0.000 0,0,0,0,0,0,0,0,0 it 's so underwritten that you ca n't figure out just where the other characters , including ana 's father and grandfather , come down on the issue of ana 's future 233 | 1.000 1,1,1,1,1,1,1,1,1,1 benefits from a strong performance from zhao , but it 's dong jie 's face you remember at the end 234 | 0.111 1,0,0,0,0,0,0,0,0 there 's no denying the elaborateness of the artist 's conceptions , nor his ability to depict them with outrageous elan , but really the whole series is so much pretentious nonsense , lavishly praised by those who equate obscurity with profundity 235 | 0.000 0,0,0,0,0,0,0,0,0 creepy but ultimately unsatisfying thriller 236 | 0.000 0,0,0,0,0,0,0,0,0 dawdles and drags when it should pop it does n't even have the virtue of enough mindless violence to break up the tedium of all its generational bonding 237 | 1.000 1,1,1,1,1,1,1,1,1 the story may not be new , but australian director john polson , making his american feature debut , jazzes it up adroitly 238 | 1.000 1,1,1,1,1,1,1,1,1 tim allen is great in his role but never hogs the scenes from his fellow cast , as there are plenty of laughs and good lines for everyone in this comedy 239 | 0.111 0,0,0,0,0.5,0,0,0,0.5 the overall feel of the film is pretty cheesy , but there 's still a real sense that the star trek tradition has been honored as best it can , given the embarrassing script and weak direction 240 | 0.111 0,0,0.5,0,0,0,0,0,0.5 though everything might be literate and smart , it never took off and always seemed static 241 | 0.611 1,0.5,0.5,1,0.5,0.5,1,0.5,0 that zhang would make such a strainingly cute film with a blind orphan at its center , no less indicates where his ambitions have wandered 242 | 0.222 0,0,0,0,0,1,0,0.5,0.5 nearly surreal , dabbling in french , this is no simple movie , and you 'll be taking a risk if you choose to see it 243 | 0.667 1,0,1,1,1,0,0,1,1 if no one singles out any of these performances as award worthy , it 's only because we would expect nothing less from this bunch 244 | 0.444 1,0.5,0,0,1,0.5,0.5,0.5,0 it is not a mass market entertainment but an uncompromising attempt by one artist to think about another 245 | 0.000 0,0,0,0,0,0,0,0,0 too loud , too long and too frantic by half , die another day suggests that the bond franchise has run into a creative wall that 007 can not fly over , tunnel under or barrel through 246 | 0.111 0,0,0,0,0,0.5,0,0,0.5 accuracy and realism are terrific , but if your film becomes boring , and your dialogue is n't smart , then you need to use more poetic license 247 | 0.056 0.5,0,0,0,0,0,0,0,0 the streets , shot by cinematographer michael ballhaus , may be as authentic as they are mean , but it is nearly impossible to care about what happens on them 248 | 0.722 0.5,1,1,1,1,0,1,1,0 who knows what exactly godard is on about in this film , but his words and images do n't have to add up to mesmerize you 249 | 0.167 0,0,0,0.5,0,0,1,0,0 a generation x artifact , capturing a brief era of insanity in the sports arena that surely can not last 250 | 0.944 0.5,1,1,1,1,1,1,1,1 it never fails to engage us 251 | 0.000 0,0,0,0,0,0,0,0,0 the weight of water uses water as a metaphor for subconscious desire , but this leaky script barely stays afloat 252 | 0.833 1,1,0.5,1,1,0.5,0.5,1,1 it 's hard not to be seduced by lrb witherspoon 's rrb charisma , even in this run of the mill vehicle , because this girl knows how to drive it to the max 253 | 0.111 0,0,0,0,0,0,1,0,0 a great idea becomes a not great movie 254 | 0.111 0,0,0,0.5,0,0,0,0,0.5 i just did n't care as much for the story 255 | 0.167 1,0,0.5,0,0,0,0,0,0 there is no entry portal in the rules of attraction , and i spent most of the movie feeling depressed by the shallow , selfish , greedy characters 256 | 0.056 0,0,0,0,0,0,0,0.5,0 will only satisfy those who ca n't tell the difference between the good , the bad and the ugly 257 | 0.167 0,0,0,0,0,0,0.5,1,0 audiences can be expected to suspend their disbelief only so far and that does not include the 5 o'clock shadow on the tall wooden kid as he skips off to school 258 | 0.167 0,0,0.5,0,0,0,0,1,0 flounders due to the general sense that no two people working on the production had exactly the same thing in mind 259 | 0.000 0,0,0,0,0,0,0,0,0 considering the harsh locations and demanding stunts , this must have been a difficult shoot , but the movie proves rough going for the audience as well 260 | 1.000 1,1,1,1,1,1,1,1,1 the people in dogtown and z boys are so funny , aggressive and alive , you have to watch them because you ca n't wait to see what they do next 261 | 0.278 0.5,0,0.5,0,0,0,0.5,0,1 so many documentaries like this presuppose religious bigotry or zealous nuttiness of its antagonists , but family fundamentals displays a rare gift for unflinching impartiality 262 | 0.722 1,1,1,1,0.5,0.5,0.5,0.5,0.5 a carefully structured scream of consciousness that is tortured and unsettling but unquestionably alive 263 | 0.150 0,0,0,0.5,0,0,0,0,1,0 the film meant well in its horse tale about freedom , but was n't able to reach the heart because it was too overbearing 264 | 0.000 0,0,0,0,0,0,0,0,0,0 there is not a character in the movie with a shred of plausibility , not an event that is believable , not a confrontation that is not staged , not a moment that is not false 265 | 0.222 0.5,1,0,0.5,0,0,0,0,0 it 's hard not to feel you 've just watched a feature length video game with some really heavy back story 266 | 0.111 0,0,0.5,0,0,0,0,0,0.5 ihops do n't pile on this much syrup 267 | 0.833 1,0,1,1,1,0.5,1,1,1 there are a few stabs at absurdist comedy but mostly the humor is of the sweet , gentle and occasionally cloying kind that has become an iranian specialty 268 | 0.167 0,0,0.5,0.5,0,0,0.5,0,0 it will come as no surprise that the movie is n't scary 269 | 0.333 0.5,0,0.5,0.5,0.5,0,0,1,0 it delivers some chills and sustained unease , but flounders in its quest for deeper meaning 270 | 0.222 0,0,0.5,0,0.5,0.5,0,0.5,0 a simple , sometimes maddeningly slow film that has just enough charm and good acting to make it interesting , but is ultimately pulled under by the pacing and lack of creativity within 271 | 0.056 0,0,0,0.5,0,0,0,0,0 not even the hanson brothers can save it 272 | 0.000 0,0,0,0,0,0,0,0,0 it 's a film that hinges on its casting , and glover really does n't fit the part 273 | 0.333 0,0,0,1,0,0.5,0.5,0.5,0.5 stars matthew perry and elizabeth hurley illicit more than a chuckle , and more jokes land than crash , but ultimately serving sara does n't distinguish itself from the herd 274 | 0.000 0,0,0,0,0,0,0,0,0 every bit as bogus as most disney live action family movies are no real plot , no real conflict , no real point 275 | 0.722 1,0,1,0,1,0.5,1,1,1 do n't plan on the perfect ending , but sweet home alabama hits the mark with critics who escaped from a small town life 276 | 1.000 1,1,1,1,1,1,1,1,1 an intimate , good humored ethnic comedy like numerous others but cuts deeper than expected 277 | 0.833 1,0.5,1,1,0.5,0.5,1,1,1 still pretentious and filled with subtext , but entertaining enough at ` face value ' to recommend to anyone looking for something different 278 | 0.056 0,0,0,0,0.5,0,0,0,0 involving at times , but lapses quite casually into the absurd 279 | 0.950 1,1,1,1,1,1,0.5,1,1,1 it could change america , not only because it is full of necessary discussion points , but because it is so accessible that it makes complex politics understandable to viewers looking for nothing but energetic entertainment 280 | 0.056 0,0,0,0.5,0,0,0,0,0 none of this violates the letter of behan 's book , but missing is its spirit , its ribald , full throated humor 281 | 0.000 0,0,0,0,0,0,0,0,0 never again swings between false sentiment and unfunny madcap comedy and , along the way , expects the audience to invest in the central relationship as some kind of marriage of true minds 282 | 0.000 0,0,0,0,0,0,0,0,0 just because it really happened to you , honey , does n't mean that it 's interesting to anyone else 283 | 0.111 0,0.5,0,0,0,0,0,0.5,0 i watched the brainless insanity of no such thing with mounting disbelief 284 | 0.056 0,0,0,0.5,0,0,0,0,0 a very stylish but ultimately extremely silly tale a slick piece of nonsense but nothing more 285 | 0.444 1,0.5,1,0.5,0,0,0,0,1 never lrb sinks rrb into exploitation 286 | 0.444 0,0,0.5,0.5,0.5,1,0,1,0.5 propelled not by characters but by caricatures 287 | 0.611 0.5,0.5,1,0.5,0,1,1,0.5,0.5 it 's a decent glimpse into a time period , and an outcast , that is no longer accessible , but it does n't necessarily shed more light on its subject than the popular predecessor 288 | 0.667 0,1,0.5,1,1,1,0,1,0.5 the pleasures of super troopers may be fleeting , but they 'll register strongly with anybody who still retains a soft spot for precollegiate humor 289 | 0.000 0,0,0,0,0,0,0,0,0 falters when it takes itself too seriously and when it depends too heavily on its otherwise talented cast to clown in situations that are n't funny 290 | 0.889 1,1,1,1,1,1,1,0,1 another great ` what you do n't see ' is much more terrifying than what you do see thriller , coupled with some arresting effects , incandescent tones and stupendous performances 291 | 1.000 1,1,1,1,1,1,1,1,1 theirs is a simple and heart warming story , full of mirth that should charm all but the most cynical 292 | 0.944 1,0.5,1,1,1,1,1,1,1 is n't quite the equal of woo 's best earlier work , but it 's easily his finest american film comes close to recapturing the brilliance of his hong kong films 293 | 0.556 0,0,1,1,1,0.5,1,0.5,0 lrb a rrb hollywood sheen bedevils the film from the very beginning lrb but rrb lohman 's moist , deeply emotional eyes shine through this bogus veneer 294 | 0.611 0.5,0.5,0.5,1,0.5,0.5,0.5,1,0.5 in adobo , ethnicity is not just the spice , but at the heart of more universal concerns 295 | 0.333 0.5,0,0,0.5,0,0,0,1,1 the story is naturally poignant , but first time screenwriter paul pender overloads it with sugary bits of business 296 | 0.889 1,1,1,1,1,1,1,0,1 katz uses archival footage , horrifying documents of lynchings , still photographs and charming old reel to reel recordings of meeropol entertaining his children to create his song history , but most powerful of all is the song itself 297 | 0.278 0,0.5,0.5,0,0.5,0.5,0,0,0.5 flotsam in the sea of moviemaking , not big enough for us to worry about it causing significant harm and not smelly enough to bother despising 298 | 0.556 0,0,0,1,1,1,0.5,1,0.5 happily for mr chin though unhappily for his subjects the invisible hand of the marketplace wrote a script that no human screenwriter could have hoped to match 299 | 0.722 0.5,1,1,1,1,0,1,0.5,0.5 it 's predictable , but it jumps through the expected hoops with style and even some depth 300 | 0.000 0,0,0,0,0,0,0,0,0 no movement , no yuks , not much of anything 301 | 0.000 0,0,0,0,0,0,0,0,0 if you collected all the moments of coherent dialogue , they still would n't add up to the time required to boil a four minute egg 302 | 0.111 0.5,0,0,0,0,0,0.5,0,0 schindler 's list it ai n't 303 | 1.000 1,1,1,1,1,1,1,1,1 it 's endearing to hear madame d refer to her husband as ` jackie ' and he does make for excellent company , not least as a self conscious performer 304 | 0.944 1,1,1,1,1,1,0.5,1,1 as weber and weissman demonstrate with such insight and celebratory verve , the cockettes were n't as much about gender , sexual preference or political agitprop as they were simply a triumph of the indomitable human will to rebel , connect and create 305 | 0.444 0,0,0,1,1,0,1,0,1 maybe it 's the star power of the cast or the redundant messages , but something aboul `` full frontal '' seems , well , contrived 306 | 0.833 1,1,0.5,1,1,1,0.5,1,0.5 those outside show business will enjoy a close look at people they do n't really want to know 307 | 0.944 1,1,1,1,1,0.5,1,1,1 this may not have the dramatic gut wrenching impact of other holocaust films , but it 's a compelling story , mainly because of the way it 's told by the people who were there 308 | 0.100 0,0,0,0,0,0,1,0,0,0 splashes its drama all over the screen , subjecting its audience and characters to action that feels not only manufactured , but also so false you can see the filmmakers ' puppet strings 309 | 1.000 1,1,1,1,1,1,1,1,1 even if you ca n't pronounce `` gyro '' correctly , you 'll appreciate much of vardalos ' humor , which transcends ethnic boundaries 310 | 1.000 1,1,1,1,1,1,1,1,1 it 's a movie and an album you wo n't want to miss 311 | 0.950 1,1,1,1,1,0.5,1,1,1,1 the principals in this cast are all fine , but bishop and stevenson are standouts 312 | 0.000 0,0,0,0,0,0,0,0,0 although trying to balance self referential humor and a normal ol' slasher plot seemed like a decent endeavor , the result does n't fully satisfy either the die hard jason fans or those who can take a good joke 313 | 0.000 0,0,0,0,0,0,0,0,0 if you 're not the target demographic this movie is one long chick flick slog 314 | 0.278 0,0.5,0,0,0,0.5,0.5,0,1 director brian levant , who never strays far from his sitcom roots , skates blithely from one implausible situation to another , pausing only to tie up loose ends with more bows than you 'll find on a french poodle 315 | 1.000 1,1,1,1,1,1,1,1,1 novak manages to capture a cruelly hilarious vein of black comedy in the situation with his cast of non actors and a gritty , no budget approach 316 | 0.222 0,0,0,1,0,0.5,0,0,0.5 birot is a competent enough filmmaker , but her story has nothing fresh or very exciting about it 317 | 0.000 0,0,0,0,0,0,0,0,0 beyond a handful of mildly amusing lines there just is n't much to laugh at 318 | 0.056 0,0,0,0,0.5,0,0,0,0 if you 're not into the pokemon franchise , this fourth animated movie in four years wo n't convert you or even keep your eyes open 319 | 0.000 0,0,0,0,0,0,0,0,0 no reason for anyone to invest their hard earned bucks into a movie which obviously did n't invest much into itself either 320 | 1.000 1,1,1,1,1,1,1,1,1 the film is often filled with a sense of pure wonderment and excitement not often seen in today 's cinema du sarcasm 321 | 0.833 1,1,1,1,1,1,0.5,0,1 there are times when a rumor of angels plays like an extended episode of touched by an angel a little too much dancing , a few too many weeping scenes but i liked its heart and its spirit 322 | 0.889 1,1,1,1,0,1,1,1,1 jason x has cheesy effects and a hoary plot , but its macabre , self deprecating sense of humor makes up for a lot 323 | 0.278 0,1,0,0,0,0,0.5,0.5,0.5 earnest but earthbound a slow , soggy , soporific , visually dank crime melodrama character study that would be more at home on the small screen but for its stellar cast 324 | 1.000 1,1,1,1,1,1,1,1,1 run , do n't walk , to see this barbed and bracing comedy on the big screen 325 | 1.000 1,1,1,1,1,1,1,1,1 finally , a genre movie that delivers in a couple of genres , no less 326 | 0.611 0.5,0.5,0.5,1,0.5,0.5,0.5,1,0.5 the film is faithful to what one presumes are the book 's twin premises that we become who we are on the backs of our parents , but we have no idea who they were at our age and that time is a fleeting and precious commodity no matter how old you are 327 | 0.278 0,0,0.5,0,0.5,0.5,0.5,0.5,0 a depressing confirmation of everything those of us who do n't object to the description `` unelected '' have suspected all along george w bush is an incurious , uncharismatic , overgrown frat boy with a mean streak a mile wide 328 | 0.167 0,0,0,0,0,0,0.5,0,1 the cold and dreary weather is a perfect metaphor for the movie itself , which contains few laughs and not much drama 329 | 0.167 0.5,0,0,0,0.5,0,0.5,0,0 director nalin pan does n't do much to weigh any arguments one way or the other 330 | 0.778 0.5,0.5,0,1,1,1,1,1,1 one of the best examples of how to treat a subject , you 're not fully aware is being examined , much like a photo of yourself you did n't know was being taken 331 | 0.167 0,0,0,0,0,0,0.5,0,1 not a movie but a live action agitprop cartoon so shameless and coarse , it 's almost funny 332 | 0.500 0.5,0,0.5,0.5,0.5,1,0.5,0.5,0.5 it wo n't be long before you 'll spy i spy at a video store near you 333 | 0.056 0,0,0,0,0,0,0,0.5,0 ordinary melodrama that is heavy on religious symbols but wafer thin on dramatic substance 334 | 1.000 1,1,1,1,1,1,1,1,1 zhang yimou delivers warm , genuine characters who lie not through dishonesty , but because they genuinely believe it 's the only way to bring happiness to their loved ones 335 | 0.056 0,0,0.5,0,0,0,0,0,0 the subject of swinging still seems ripe for a documentary just not this one 336 | 0.222 0,0,1,0,0,0.5,0.5,0,0 writer director john mckay ignites some charming chemistry between kate and jed but , when he veers into sodden melodrama , punctuated by violins , it 's disastrous and kate 's jealous female friends become downright despicable 337 | 0.111 0,0,0,0,0,1,0,0,0 spousal abuse is a major problem in contemporary society , but the film reduces this domestic tragedy to florid melodrama 338 | 1.000 1,1,1,1,1,1,1,1,1 daughter from danang is a film that should be seen by all , especially those who are n't aware of , or have forgotten about the unmentioned victims of war 339 | 0.778 1,0.5,1,0.5,1,0.5,1,1,0.5 tim story 's not there yet but ` barbershop ' shows he 's on his way 340 | 0.950 1,1,1,1,1,1,1,0.5,1,1 rain is a small treasure , enveloping the viewer in a literal and spiritual torpor that is anything but cathartic 341 | 0.000 0,0,0,0,0,0,0,0,0 but here 's the real damn it is n't funny , either 342 | 0.000 0,0,0,0,0,0,0,0,0 the premise for this kegger comedy probably sounded brilliant four six packs and a pitcher of margaritas in , but the film must have been written in the thrall of a vicious hangover 343 | 0.100 0,0,0,0,0,0,1,0,0,0 this is n't a `` friday '' worth waiting for 344 | 0.167 0,0.5,0,0,0.5,0,0,0,0.5 well shot but badly written tale set in a future ravaged by dragons 345 | 0.111 0,1,0,0,0,0,0,0,0 scarlet diva has a voyeuristic tug , but all in all it 's a lot less sensational than it wants to be 346 | 0.889 1,1,1,1,1,1,0,1,1 not a cozy or ingratiating work , but it 's challenging , sometimes clever , and always interesting , and those are reasons enough to see it 347 | 0.389 0,0.5,0.5,0,0.5,0.5,1,0.5,0 a mixed bag of a comedy that ca n't really be described as out of this world 348 | 0.000 0,0,0,0,0,0,0,0,0 the actors are forced to grapple with hazy motivations that never come into focus 349 | 0.056 0,0,0,0.5,0,0,0,0,0 herzog is obviously looking for a moral to his fable , but the notion that a strong , unified showing among germany and eastern european jews might have changed 20th century history is undermined by ahola 's inadequate performance 350 | 0.778 0,1,0.5,0.5,1,1,1,1,1 it sounds sick and twisted , but the miracle of shainberg 's film is that it truly is romance 351 | 0.944 1,1,1,1,1,1,1,0.5,1 if your senses have n't been dulled by slasher films and gorefests , if you 're a connoisseur of psychological horror , this is your ticket 352 | 0.389 0,0.5,0.5,0,0.5,0.5,1,0.5,0 there 's an audience for it , but it could have been funnier and more innocent 353 | 0.889 1,0,1,1,1,1,1,1,1 the reason this picture works better than its predecessors is that myers is no longer simply spoofing the mini mod madness of '60s spy movies 354 | 0.333 0,0.5,0,0.5,1,0.5,0,0,0.5 it does n't do the original any particular dishonor , but neither does it exude any charm or personality 355 | 0.000 0,0,0,0,0,0,0,0,0 i did n't believe for a moment in these villains or their plot 356 | 0.889 1,1,0,1,1,1,1,1,1 it 's a hoot and a half , and a great way for the american people to see what a candidate is like when he 's not giving the same 15 cent stump speech 357 | 0.000 0,0,0,0,0,0,0,0,0,0 this is a great subject for a movie , but hollywood has squandered the opportunity , using it as a prop for warmed over melodrama and the kind of choreographed mayhem that director john woo has built his career on 358 | 0.000 0,0,0,0,0,0,0,0,0 there 's not enough to sustain the comedy 359 | 0.000 0,0,0,0,0,0,0,0,0 this overproduced and generally disappointing effort is n't likely to rouse the rush hour crowd 360 | 1.000 1,1,1,1,1,1,1,1,1 the film starts out as competent but unremarkable and gradually grows into something of considerable power 361 | 1.000 1,1,1,1,1,1,1,1,1 often gruelling and heartbreaking to witness , but seldahl and wollter 's sterling performances raise this far above the level of the usual maudlin disease movie 362 | 0.000 0,0,0,0,0,0,0,0,0 wait for video and then do n't rent it 363 | 0.056 0,0,0.5,0,0,0,0,0,0 taken individually or collectively , the stories never add up to as much as they promise 364 | 0.000 0,0,0,0,0,0,0,0,0 the thriller side of this movie is falling flat , as the stalker does n't do much stalking , and no cop or lawyer grasps the concept of actually investigating the case 365 | 0.667 0.5,1,0,0.5,0,1,1,1,1 parker holds true to wilde 's own vision of a pure comedy with absolutely no meaning , and no desire to be anything but a polished , sophisticated entertainment that is in love with its own cleverness 366 | 0.333 0,0.5,0,0,1,1,0,0,0.5 as adapted by kevin molony from simon leys ' novel `` the death of napoleon '' and directed by alan taylor , napoleon 's journey is interesting but his parisian rebirth is stillborn 367 | 0.500 1,0,1,1,0,0,0,1,0.5 sound the trumpets for the first time since desperately seeking susan , madonna does n't suck as an actress 368 | 0.000 0,0,0,0,0,0,0,0,0 it is a comedy that 's not very funny and an action movie that is not very thrilling lrb and an uneasy alliance , at that rrb 369 | 0.000 0,0,0,0,0,0,0,0,0 a one trick pony whose few t a bits still ca n't save itself from being unoriginal , unfunny and unrecommendable 370 | 0.722 1,1,1,1,1,0.5,1,0,0 if it tried to do anything more , it would fail and perhaps explode , but at this level of manic whimsy , it is just about right 371 | 0.000 0,0,0,0,0,0,0,0,0 fear dot com is so rambling and disconnected it never builds any suspense 372 | 0.389 0,0,0,1,1,0,0.5,1,0 an intermittently pleasing but mostly routine effort 373 | 0.111 0,0,0,0.5,0,0,0.5,0,0 lrb it 's rrb a prison soccer movie starring charismatic tough guy vinnie jones , but it had too much spitting for me to enjoy 374 | 0.056 0,0,0,0,0,0,0,0,0.5 undercover brother does n't go far enough 375 | 0.111 0,0,0,0,1,0,0,0,0 as written by michael berg and michael j wilson from a story by wilson , this relentless , all wise guys all the time approach tries way too hard and gets tiring in no time at all 376 | 0.833 1,1,0,1,0.5,1,1,1,1 my goodness , queen latifah has a lot to offer and she seemed to have no problem flaunting her natural gifts 377 | 0.333 0.5,0,0,0,0,0.5,0.5,0.5,1 the only thing in pauline and paulette that you have n't seen before is a scene featuring a football field sized oriental rug crafted out of millions of vibrant flowers 378 | 0.056 0,0,0,0,0.5,0,0,0,0 do n't waste your money 379 | 0.833 1,0.5,0.5,1,1,1,1,1,0.5 son of the bride may be a good half hour too long but comes replete with a flattering sense of mystery and quietness 380 | 1.000 1,1,1,1,1,1,1,1,1 breathes surprising new life into the familiar by amalgamating genres and adding true human complexity to its not so stock characters ' 381 | 0.278 0,0,1,0,0,0.5,0,0.5,0.5 de niro and mcdormand give solid performances , but their screen time is sabotaged by the story 's inability to create interest 382 | 0.000 0,0,0,0,0,0,0,0,0 it does n't help that the director and cinematographer stephen kazmierski shoot on grungy video , giving the whole thing a dirty , tasteless feel 383 | 0.111 0.5,0,0,0,0.5,0,0,0,0 he has not learnt that storytelling is what the movies are about 384 | 0.167 0,0,1,0,0,0,0,0.5,0 blessed with immense physical prowess he may well be , but ahola is simply not an actor 385 | 0.944 1,1,1,1,1,0.5,1,1,1 reign of fire may be little more than another platter of reheated aliens , but it 's still pretty tasty 386 | 0.500 0,0.5,0.5,1,0,1,1,0.5,0 home alone goes hollywood , a funny premise until the kids start pulling off stunts not even steven spielberg would know how to do 387 | 0.111 1,0,0,0,0,0,0,0,0 this extremely unfunny film clocks in at 80 minutes , but feels twice as long 388 | 0.778 1,0,1,1,1,0,1,1,1 painful to watch , but viewers willing to take a chance will be rewarded with two of the year 's most accomplished and riveting film performances 389 | 1.000 1,1,1,1,1,1,1,1,1 thrilling , provocative and darkly funny , this timely sci fi mystery works on so many different levels that it not only invites , it demands repeated viewings 390 | 0.000 0,0,0,0,0,0,0,0,0 unless you are in dire need of a diesel fix , there is no real reason to see it 391 | 0.222 0,1,0,1,0,0,0,0,0 it 's the kind of movie that ends up festooning u s art house screens for no reason other than the fact that it 's in french lrb well , mostly rrb with english subtitles and is magically ` significant ' because of that 392 | 0.944 1,1,1,1,1,0.5,1,1,1 both hokey and super cool , and definitely not in a hurry , so sit back , relax and have a few laughs while the little ones get a fuzzy treat ' 393 | 0.944 1,1,1,1,1,1,0.5,1,1 city by the sea is the cinematic equivalent of defensive driving it 's careful , conscientious and makes no major mistakes 394 | 0.000 0,0,0,0,0,0,0,0,0 the reason we keep seeing the same movie with roughly the same people every year is because so many of us keep going and then , out of embarrassment or stupidity , not warning anyone 395 | 1.000 1,1,1,1,1,1,1,1,1 the film delivers not just the full assault of reno 's immense wit and insight , but a time travel back to what it felt like during those unforgettably uncertain days 396 | 0.167 0,0,0,1,0,0,0,0.5,0 obstacles are too easily overcome and there is n't much in the way of character development in the script 397 | 0.778 1,0,1,1,1,0.5,1,1,0.5 a miniscule little bleep on the film radar , but one that many more people should check out 398 | 0.333 0,0.5,0.5,0,0.5,0.5,0.5,0,0.5 one hour photo is an intriguing snapshot of one man and his delusions it 's just too bad it does n't have more flashes of insight 399 | 0.667 1,1,1,1,1,0.5,0,0.5,0 a broadly played , lowbrow comedy in which the cast delivers mildly amusing performances and no farm animals were injured by any of the gags 400 | 0.056 0,0,0,0.5,0,0,0,0,0 no , it 's the repetition of said behavior , and so children of the century is more mindless love than mad , more grating and boring than anything else 401 | 0.000 0,0,0,0,0,0,0,0,0 the cartoon that is n't really good enough to be on afternoon tv is now a movie that is n't really good enough to be in theaters 402 | 1.000 1,1,1,1,1,1,1,1,1 the best thing the film does is to show us not only what that mind looks like , but how the creative process itself operates 403 | 0.778 0.5,1,0,1,1,1,1,0.5,1 stephen earnhart 's homespun documentary mule skinner blues has nothing but love for its posse of trailer park denizens 404 | 0.111 0,0,0,1,0,0,0,0,0 if you 're not a prepubescent girl , you 'll be laughing at britney spears ' movie starring debut whenever it does n't have you impatiently squinting at your watch 405 | 0.889 0,1,1,1,1,1,1,1,1 it 's rare to find a film that dazzles the eye , challenges the brain , and satisfies our lust for fast paced action , but minority report delivers all that and a whole lot more 406 | 0.278 0,0.5,0.5,0,1,0,0.5,0,0 lanie 's professional success means she must be a failure at life , because she 's driven by ambition and does n't know how to have fun 407 | 1.000 1,1,1,1,1,1,1,1,1 it 's one of the saddest films i have ever seen that still manages to be uplifting but not overly sentimental 408 | 0.000 0,0,0,0,0,0,0,0,0 maybe it 's asking too much , but if a movie is truly going to inspire me , i want a little more than this 409 | 1.000 1,1,1,1,1,1,1,1,1 there 's no denying the physically spectacular qualities of the film or the emotional integrity of the performances 410 | 0.111 0,0,0.5,0,0,0,0,0,0.5 the plot is very clever , but boyd weighs it down with too many characters and events , all intertwined and far too complicated to keep track of 411 | 0.111 0,0,0,0,0,0.5,0,0.5,0 do not , under any circumstances , consider taking a child younger than middle school age to this wallow in crude humor 412 | 0.000 0,0,0,0,0,0,0,0,0 extreme oops oops , ops , no matter how you spell it , it 's still a mistake to go see it 413 | 1.000 1,1,1,1,1,1,1,1,1 a romantic comedy , yes , but one with characters who think and talk about their goals , and are working on hard decisions 414 | 0.611 0.5,1,1,0.5,0.5,0,0.5,0.5,1 flat , but with a revelatory performance by michelle williams 415 | 0.500 1,1,0.5,0.5,0,0,0.5,0.5,0.5 this is n't a narrative film i do n't know if it 's possible to make a narrative film about september 11th , though i 'm sure some will try but it 's as close as anyone has dared to come 416 | 0.056 0,0,0.5,0,0,0,0,0,0 it 's not horrible , just horribly mediocre 417 | 1.000 1,1,1,1,1,1,1,1,1 we can see the wheels turning , and we might resent it sometimes , but this is still a nice little picture , made by bright and friendly souls with a lot of good cheer 418 | 1.000 1,1,1,1,1,1,1,1,1 it 's traditional moviemaking all the way , but it 's done with a lot of careful period attention as well as some very welcome wit 419 | 0.111 0,0,0,0,0,0,1,0,0 for me , this opera is n't a favorite , so it 's a long time before the fat lady sings 420 | 0.778 1,1,0,1,0,1,1,1,1 grant gets to display his cadness to perfection , but also to show acting range that may surprise some who thought light hearted comedy was his forte 421 | 0.222 1,0,0,0,0,0,1,0,0 i wish i could say `` thank god it 's friday '' , but the truth of the matter is i was glad when it was over 422 | 0.556 0,1,0,0,1,0.5,1,0.5,1 the creaking , rusty ship makes a fine backdrop , but the ghosts ' haunting is routine 423 | 0.111 0,0,0.5,0,0.5,0,0,0,0 i 'm not suggesting that you actually see it , unless you 're the kind of person who has seen every wim wenders film of the '70s 424 | 0.056 0,0.5,0,0,0,0,0,0,0 it may be an easy swipe to take , but this barbershop just does n't make the cut 425 | 0.111 0,0,0,0,0.5,0,0,0.5,0 acting , particularly by tambor , almost makes `` never again '' worthwhile , but lrb writer director rrb schaeffer should follow his titular advice 426 | 0.000 0,0,0,0,0,0,0,0,0,0 unfortunately , heartbreak hospital wants to convey the same kind of haughtiness in its own sketchy material but this territory has already been explored previously with better aplomb and sardonic wit 427 | 0.000 0,0,0,0,0,0,0,0,0 lrb t rrb hose same extremes prevent us from taking its message seriously , and the stepford wives mentality does n't work in a modern context 428 | 0.333 0.5,0,1,0,0,0,0.5,0.5,0.5 if you pitch your expectations at an all time low , you could do worse than this oddly cheerful but not particularly funny body switching farce 429 | 0.389 0.5,0.5,0,0.5,0.5,0.5,0,0.5,0.5 for benigni it was n't shakespeare whom he wanted to define his career with but pinocchio 430 | 0.889 1,1,1,1,1,1,0,1,1 may be spoofing an easy target those old ' 50 's giant creature features but it acknowledges and celebrates their cheesiness as the reason why people get a kick out of watching them today 431 | 0.333 1,0.5,0,0,0,0.5,1,0,0 with danilo donati 's witty designs and dante spinotti 's luscious cinematography , this might have made a decent children 's movie if only benigni had n't insisted on casting himself in the title role 432 | 0.000 0,0,0,0,0,0,0,0,0 aspires for the piquant but only really achieves a sort of ridiculous sourness 433 | 0.111 0,0,0,1,0,0,0,0,0 formula 51 is so trite that even yu 's high energy action stylings ca n't break through the stupor 434 | 0.222 1,0,0,0,0,0,1,0,0 it feels like a community theater production of a great broadway play even at its best , it will never hold a candle to the original 435 | 0.889 1,1,1,1,0,1,1,1,1 there are as many misses as hits , but ultimately , it finds humor in the foibles of human behavior , and it 's a welcome return to the roots of a genre that should depend on surprises 436 | 1.000 1,1,1,1,1,1,1,1,1 far from perfect , but its heart is in the right place innocent and well meaning 437 | 0.778 1,1,1,1,1,0,1,0,1 a recent favourite at sundance , this white trash satire will inspire the affection of even those unlucky people who never owned a cassette of def leppard 's pyromania 438 | 0.056 0,0.5,0,0,0,0,0,0,0 there is not an ounce of honesty in the entire production 439 | 0.056 0,0,0,0,0,0,0.5,0,0 the story is familiar from its many predecessors like them , it eventually culminates in the not exactly stunning insight that crime does n't pay 440 | 0.000 0,0,0,0,0,0,0,0,0 has virtually no script at all 441 | 0.778 1,0,1,1,1,1,1,0.5,0.5 smith 's point is simple and obvious people 's homes are extensions of themselves , and particularly eccentric people have particularly eccentric living spaces but his subjects are charmers 442 | 1.000 1,1,1,1,1,1,1,1,1 it 's an old story , but a lively script , sharp acting and partially animated interludes make just a kiss seem minty fresh 443 | 0.889 1,1,0,1,1,1,1,1,1 i complain all the time about seeing the same ideas repeated in films over and over again , but the bourne identity proves that a fresh take is always possible 444 | 0.000 0,0,0,0,0,0,0,0,0 madonna still ca n't act a lick 445 | 0.000 0,0,0,0,0,0,0,0,0 bad company leaves a bad taste , not only because of its bad luck timing , but also the staleness of its script 446 | 0.000 0,0,0,0,0,0,0,0,0 opens at a funeral , ends on the protagonist 's death bed and does n't get much livelier in the three hours in between 447 | 0.556 0.5,0.5,0.5,0.5,0,0,1,1,1 it 's not exactly a gourmet meal but the fare is fair , even coming from the drive thru 448 | -------------------------------------------------------------------------------- /code/data/sst2-sentence/sst_crowd_discourse.txt: -------------------------------------------------------------------------------- 1 | 0.111 0.5,0,0,0,0,0,0,0.5,0 human nature talks the talk , but it fails to walk the silly walk that distinguishes the merely quirky from the surreal 2 | 1.000 1,1,1,1,1,1,1,1,1 having never been a huge fan of dickens ' 800 page novel , it surprised me how much pleasure i had watching mcgrath 's version 3 | 0.056 0,0,0,0.5,0,0,0,0,0 the irwins emerge unscathed , but the fictional footage is unconvincing and criminally badly acted 4 | 1.000 1,1,1,1,1,1,1,1,1 the powers team has fashioned a comedy with more laughs than many , no question 5 | 0.944 1,1,1,1,1,1,0.5,1,1 it 's amazingly perceptive in its subtle , supportive but unsentimental look at the marks family 6 | 1.000 1,1,1,1,1,1,1,1,1 disney 's live action division has a history of releasing cinematic flotsam , but this is one occasion when they have unearthed a rare gem 7 | 0.389 0.5,0.5,0.5,0.5,0.5,0,0.5,0.5,0 it 's the kind of movie you ca n't quite recommend because it is all windup and not much of a pitch , yet you ca n't bring yourself to dislike it 8 | 0.167 0.5,0,0,0,0.5,0,0.5,0,0 she lists ingredients , but never mixes and stirs 9 | 0.889 1,1,0.5,1,1,1,1,0.5,1 i do n't know precisely what to make of steven soderbergh 's full frontal , though that did n't stop me from enjoying much of it 10 | 0.000 0,0,0,0,0,0,0,0,0 the film is like a series of beginnings and middles that never take off 11 | 0.111 0,0,0,1,0,0,0,0,0 too much of this well acted but dangerously slow thriller feels like a preamble to a bigger , more complicated story , one that never materializes 12 | 0.167 0.5,0,0,0,0,1,0,0,0 all ends well , sort of , but the frenzied comic moments never click 13 | 0.167 0.5,0,0,0,0,0,0,0,1 boring we did n't 14 | 0.278 0,1,0,0.5,0,1,0,0,0 a benign but forgettable sci fi diversion 15 | 0.889 1,1,1,1,1,1,0.5,1,0.5 a triumph of art direction over narrative , but what art direction ! 16 | 0.611 1,0.5,1,1,0,0,0.5,0.5,1 not everything works , but the average is higher than in mary and most other recent comedies 17 | 0.000 0,0,0,0,0,0,0,0,0,0 a lousy movie that 's not merely unwatchable , but also unlistenable 18 | 1.000 1,1,1,1,1,1,1,1,1 this ecologically minded , wildlife friendly film teaches good ethics while entertaining with its unconventionally wacky but loving family 19 | 0.000 0,0,0,0,0,0,0,0,0 truth to tell , if you 've seen more than half a dozen horror films , there 's nothing here you have n't seen before 20 | 0.944 1,1,1,0.5,1,1,1,1,1 there are slow and repetitive parts , but it has just enough spice to keep it interesting 21 | 0.389 0.5,0,0,0.5,0.5,0.5,0.5,0.5,0.5 too bad , but thanks to some lovely comedic moments and several fine performances , it 's not a total loss 22 | 0.889 0.5,1,1,1,1,1,0.5,1,1 windtalkers blows this way and that , but there 's no mistaking the filmmaker in the tall grass , true to himself 23 | 0.500 0.5,0,1,0.5,0.5,0.5,0.5,1,0 it 's all very cute , though not terribly funny if you 're more than six years old 24 | 0.000 0,0,0,0,0,0,0,0,0 the pivotal narrative point is so ripe the film ca n't help but go soft and stinky 25 | 0.389 0.5,1,0.5,0,0,0,0,1,0.5 this pep talk for faith , hope and charity does little to offend , but if saccharine earnestness were a crime , the film 's producers would be in the clink for life 26 | 0.944 1,1,1,1,1,1,0.5,1,1 interacting eyeball to eyeball and toe to toe , hopkins and norton are a winning combination but fiennes steals ` red dragon ' right from under their noses 27 | 0.889 1,0.5,1,1,0.5,1,1,1,1 narc may not get an ` a ' for originality , but it wears its b movie heritage like a badge of honor 28 | 0.000 0,0,0,0,0,0,0,0,0 the problem is n't that the movie hits so close to home so much as that it hits close to home while engaging in such silliness as that snake down the throat business and the inevitable shot of schwarzenegger outrunning a fireball 29 | 0.389 0.5,0,0.5,0.5,0.5,0.5,0.5,0.5,0 lrb director rrb byler may yet have a great movie in him , but charlotte sometimes is only half of one 30 | 0.000 0,0,0,0,0,0,0,0,0 you could nap for an hour and not miss a thing 31 | 0.111 0,0,0,0,0,0,0,0,1 this goofy gangster yarn never really elevates itself from being yet another earnestly generic crime busting comic vehicle a well intentioned remake that shows some spunk and promise but fails to register as anything distinctive or daring 32 | 0.167 0.5,0,0,0.5,0,0,0,0,0.5 there are a few laughs and clever sight gags scattered about , but not enough to make this anything more than another big budget bust 33 | 0.889 1,1,1,1,1,0.5,1,0.5,1 not for everyone , but for those with whom it will connect , it 's a nice departure from standard moviegoing fare 34 | 0.056 0,0,0,0,0,0,0,0.5,0 scene by scene , things happen , but you 'd be hard pressed to say what or why 35 | 0.944 1,1,1,1,1,1,0.5,1,1 lrb drumline rrb is entertaining for what it does , and admirable for what it does n't do 36 | 0.611 1,0.5,0,1,0,1,0,1,1 perhaps no picture ever made has more literally showed that the road to hell is paved with good intentions 37 | 0.000 0,0,0,0,0,0,0,0,0 the story drifts so inexorably into cliches about tortured lrb and torturing rrb artists and consuming but impossible love that you ca n't help but become more disappointed as each overwrought new sequence plods on 38 | 0.000 0,0,0,0,0,0,0,0,0 it smacks of purely commercial motivation , with no great love for the original 39 | 0.222 0,0.5,0.5,0,0,0.5,0,0,0.5 there 's plenty of style in guillermo del toro 's sequel to the 1998 hit but why do we need 117 minutes to tell a tale that simply ca n't sustain more than 90 minutes 40 | 0.222 1,0,0,0,0,0,0,1,0 k 19 may not hold a lot of water as a submarine epic , but it holds even less when it turns into an elegiacally soggy saving private ryanovich 41 | 0.000 0,0,0,0,0,0,0,0,0 the story 's so preposterous that i did n't believe it for a second , despite the best efforts of everyone involved 42 | 0.500 0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5 never mind whether you buy the stuff about barris being a cia hit man 43 | 0.000 0,0,0,0,0,0,0,0,0 the movie makes absolutely no sense 44 | 0.056 0,0,0,0,0,0,0,0.5,0 any film featuring young children threatened by a terrorist bomb can no longer pass as mere entertainment 45 | 0.222 0,1,0,1,0,0,0,0,0 watching trouble every day , at least if you do n't know what 's coming , is like biting into what looks like a juicy , delicious plum on a hot summer day and coming away with your mouth full of rotten pulp and living worms 46 | 0.722 1,1,1,1,1,0,0.5,1,0 not a bad journey at all 47 | 0.000 0,0,0,0,0,0,0,0,0 even the imaginative gore ca n't hide the musty scent of todd farmer 's screenplay , which is a simple retread of the 1979 alien , with a plucky heroine battling a monster loose in a spaceship 48 | 0.000 0,0,0,0,0,0,0,0,0 shot perhaps ` artistically ' with handheld cameras and apparently no movie lights by joaquin baca asay , the low budget production swings annoyingly between vertigo and opacity 49 | 0.667 1,0.5,1,1,0.5,0.5,0.5,0.5,0.5 it almost plays like solaris , but with guns and jokes 50 | 1.000 1,1,1,1,1,1,1,1,1 bubba ho tep is a wonderful film with a bravura lead performance by bruce campbell that does n't deserve to leave the building until everyone is aware of it 51 | 0.000 0,0,0,0,0,0,0,0,0 just a big mess of a movie , full of images and events , but no tension or surprise 52 | 0.333 0,0,0.5,0.5,1,0,0,0.5,0.5 do n't let your festive spirit go this far 53 | 0.000 0,0,0,0,0,0,0,0,0 it 's push the limits teen comedy , the type written by people who ca n't come up with legitimate funny , and it 's used so extensively that good bits are hopelessly overshadowed 54 | 0.167 0,0,0,0,0,0.5,0,1,0 one of those movies where you walk out of the theater not feeling cheated exactly , but feeling pandered to , which , in the end , might be all the more infuriating 55 | 0.556 0.5,0.5,0.5,0.5,0.5,0,1,1,0.5 fans of the animated wildlife adventure show will be in warthog heaven others need not necessarily apply 56 | 0.833 1,1,1,1,1,0.5,1,0,1 a great comedy filmmaker knows great comedy need n't always make us laugh 57 | 0.889 1,1,0.5,1,1,1,1,0.5,1 time changer may not be the most memorable cinema session but its profound self evaluation message about our fragile existence and the absence of spiritual guidance should at least invade an abundance of mindsets 58 | 1.000 1,1,1,1,1,1,1,1,1 lrb but it 's rrb worth recommending because of two marvelous performances by michael caine and brendan fraser 59 | 0.889 1,1,1,1,1,1,1,1,0 workmanlike , maybe , but still a film with all the elements that made the other three great , scary times at the movies 60 | 0.889 1,1,1,1,0.5,1,1,1,0.5 as a witness to several greek american weddings but , happily , a victim of none i can testify to the comparative accuracy of ms vardalos ' memories and insights 61 | 0.889 1,1,1,1,1,1,0,1,1 children may not understand everything that happens i 'm not sure even miyazaki himself does but they will almost certainly be fascinated , and undoubtedly delighted 62 | 0.000 0,0,0,0,0,0,0,0,0 dreary , highly annoying ` some body ' will appeal to no one 63 | 1.000 1,1,1,1,1,1,1,1,1,1 a splendid entertainment , young in spirit but accomplished in all aspects with the fullness of spirit and sense of ease that comes only with experience 64 | 0.722 0.5,0.5,0.5,1,1,1,0.5,0.5,1 is n't it great \? 65 | 0.111 0,0,0,0,0,0,1,0,0 at first , the sight of a blind man directing a film is hilarious , but as the film goes on , the joke wears thin 66 | 0.000 0,0,0,0,0,0,0,0,0 this series should have died long ago , but they keep bringing it back another day as punishment for paying money to see the last james bond movie 67 | 0.889 0.5,1,1,0.5,1,1,1,1,1 dark and disturbing , but also surprisingly funny 68 | 0.056 0.5,0,0,0,0,0,0,0,0 do we really need a 77 minute film to tell us exactly why a romantic relationship between a 15 year old boy and a 40 year old woman does n't work \? 69 | 0.111 0.5,0,0,0,0,0,0.5,0,0 there are touching moments in etoiles , but for the most part this is a dull , dour documentary on what ought to be a joyful or at least fascinating subject 70 | 0.000 0,0,0,0,0,0,0,0,0 mark me down as a non believer in werewolf films that are not serious and rely on stupidity as a substitute for humor 71 | 0.056 0,0,0,0,0,0,0.5,0,0 this is n't just the cliffsnotes version of nicholas nickleby , it 's the cliffsnotes with pages missing 72 | 0.889 1,1,1,0,1,1,1,1,1 call me a wimp , but i cried , not once , but three times in this animated sweet film 73 | 0.556 1,0,1,0.5,1,1,0.5,0,0 not so much funny as aggressively sitcom cute , it 's full of throwaway one liners , not quite jokes , and a determined tv amiability that allen personifies 74 | 0.222 0,1,0,0,0,0,0.5,0.5,0 all that lrb powerpuff girls rrb charm is present in the movie , but it 's spread too thin 75 | 1.000 1,1,1,1,1,1,1,1,1 de oliveira creates an emotionally rich , poetically plump and visually fulsome , but never showy , film whose bittersweet themes are reinforced and brilliantly personified by michel piccoli 76 | 0.000 0,0,0,0,0,0,0,0,0 if shayamalan wanted to tell a story about a man who loses his faith , why did n't he just do it , instead of using bad sci fi as window dressing \? 77 | 0.222 0,0,0.5,0,0,0.5,0,0.5,0.5 wasabi is slight fare indeed , with the entire project having the feel of something tossed off quickly lrb like one of hubert 's punches rrb , but it should go down smoothly enough with popcorn 78 | 0.722 0.5,0.5,0,1,1,0.5,1,1,1 while not as aggressively impressive as its american counterpart , `` in the bedroom , '' moretti 's film makes its own , quieter observations 79 | 1.000 1,1,1,1,1,1,1,1,1 day is not a great bond movie , but it is a good bond movie , which still makes it much better than your typical bond knock offs 80 | 0.056 0,0,0,0,0,0,0,0,0.5 not every animated film from disney will become a classic , but forgive me if i 've come to expect more from this studio than some 79 minute after school `` cartoon '' 81 | 0.167 0,0,0,0,0.5,0.5,0.5,0,0 the film has a few cute ideas and several modest chuckles but it is n't exactly kiddie friendly alas , santa is more ho hum than ho ho ho and the snowman lrb who never gets to play that flute rrb has all the charm of a meltdown 82 | 0.056 0,0,0,0,0,0,0,0.5,0 john leguizamo may be a dramatic actor just not in this movie 83 | 1.000 1,1,1,1,1,1,1,1,1 the film is all a little lit crit 101 , but it 's extremely well played and often very funny 84 | 1.000 1,1,1,1,1,1,1,1,1 visits spy movie territory like a novel you ca n't put down , examines a footnote to history seldom brought to light on the screen , and keeps you guessing from first frame to last 85 | 0.056 0,0,0,0,0,0,0.5,0,0 like mike does n't win any points for originality 86 | 0.333 1,0.5,0,0,0,0,1,0,0.5 some of seagal 's action pictures are guilty pleasures , but this one is so formulaic that it seems to be on auto pilot 87 | 1.000 1,1,1,1,1,1,1,1,1 it is ridiculous , of course but it is also refreshing , disarming , and just outright enjoyable despite its ridiculousness 88 | 0.278 0.5,0,0,0,0,1,0,0,1 cho 's fans are sure to be entertained it 's only fair in the interest of full disclosure to say that on the basis of this film alone i 'm not one of them 89 | 0.278 0,0,0.5,1,0,0.5,0,0.5,0 frenetic but not really funny 90 | 0.444 0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0 but i was n't 91 | 0.889 0,1,1,1,1,1,1,1,1 a real movie , about real people , that gives us a rare glimpse into a culture most of us do n't know 92 | 0.056 0,0.5,0,0,0,0,0,0,0 never quite transcends jokester status and the punchline does n't live up to barry 's dead eyed , perfectly chilled delivery 93 | 0.611 1,1,1,1,0,0,0.5,1,0 a somewhat crudely constructed but gripping , questing look at a person so racked with self loathing , he becomes an enemy to his own race 94 | 1.000 1,1,1,1,1,1,1,1,1 you have to pay attention to follow all the stories , but they 're each interesting 95 | 0.944 1,0.5,1,1,1,1,1,1,1 though it is by no means his best work , laissez passer is a distinguished and distinctive effort by a bona fide master , a fascinating film replete with rewards to be had by all willing to make the effort to reap them 96 | 0.556 1,0,0.5,0.5,0.5,1,0.5,0.5,0.5 intriguing and beautiful film , but those of you who read the book are likely to be disappointed 97 | 1.000 1,1,1,1,1,1,1,1,1 divine secrets of the ya ya sisterhood may not be exactly divine , but it 's definitely defiantly ya ya , what with all of those terrific songs and spirited performances 98 | 0.778 1,0.5,1,0,1,1,1,0.5,1 the film 's real appeal wo n't be to clooney fans or adventure buffs , but to moviegoers who enjoy thinking about compelling questions with no easy answers 99 | 0.611 0,0.5,1,0,0.5,1,1,1,0.5 a sensual performance from abbass buoys the flimsy story , but her inner journey is largely unexplored and we 're left wondering about this exotic looking woman whose emotional depths are only hinted at 100 | 0.167 0.5,0,0.5,0,0,0,0.5,0,0 you might not buy the ideas 101 | 0.056 0,0,0,0,0,0,0,0.5,0 all the well meaningness in the world ca n't erase the fact that the believer feels like a 12 step program for the jewish nazi 102 | 0.000 0,0,0,0,0,0,0,0,0 proves that a movie about goodness is not the same thing as a good movie 103 | 0.150 0,0,0,1,0,0,0,0.5,0,0 myers never knows when to let a gag die thus , we 're subjected to one mind numbingly lengthy riff on poo and pee jokes after another 104 | 0.056 0,0,0,0,0,0,0.5,0,0 a long slog for anyone but the most committed pokemon fan 105 | 1.000 1,1,1,1,1,1,1,1,1 pray 's film works well and will appeal even to those who are n't too familiar with turntablism 106 | 0.400 0,0,0.5,1,0,0.5,1,0.5,0,0.5 fairly successful at faking some pretty cool stunts but a complete failure at trying to create some pretty cool characters 107 | 0.000 0,0,0,0,0,0,0,0,0 these spiders can outrun a motorcycle and wrap a person in a sticky cocoon in seconds , but they fall short of being interesting or entertaining 108 | 1.000 1,1,1,1,1,1,1,1,1 it 's a good film not a classic , but odd , entertaining and authentic 109 | 0.950 1,1,1,0.5,1,1,1,1,1,1 this version 's no classic like its predecessor , but its pleasures are still plentiful 110 | 0.111 0,0,0.5,0,0,0,0,0,0.5 it 's getting harder and harder to ignore the fact that hollywood is n't laughing with us , folks 111 | 0.833 1,1,1,0.5,1,0.5,1,1,0.5 somewhat blurred , but kinnear 's performance is razor sharp 112 | 0.056 0,0,0,0,0,0,0,0.5,0 the film 's center will not hold 113 | 0.889 1,1,0,1,1,1,1,1,1 this is n't my favorite in the series , still i enjoyed it enough to recommend 114 | 0.000 0,0,0,0,0,0,0,0,0 not only does the movie fail to make us part of its reality , it fails the most basic relevancy test as well 115 | 0.056 0,0.5,0,0,0,0,0,0,0 sets up a nice concept for its fiftysomething leading ladies , but fails loudly in execution 116 | 0.833 1,1,1,1,0.5,1,0,1,1 awkward but sincere and , ultimately , it wins you over 117 | 0.100 0,0,0,1,0,0,0,0,0,0 dull , if not devoid of wit , this shaggy dog longs to frisk through the back alleys of history , but scarcely manages more than a modest , snoozy charm 118 | 0.000 0,0,0,0,0,0,0,0,0 no number of fantastic sets , extras , costumes and spectacular locales can disguise the emptiness at the center of the story 119 | 0.056 0,0,0,0,0,0,0.5,0,0 unfortunately , as a writer , mr montias is n't nearly as good to his crew as he is as a director or actor 120 | 0.200 0,0,0,1,0,0,1,0,0,0 sadly , hewitt 's forte is leaning forward while wearing low cut gowns , not making snappy comebacks 121 | 0.278 0.5,0.5,0.5,0.5,0,0,0.5,0,0 audiences will find no mention of political prisoners or persecutions that might paint the castro regime in less than saintly tones 122 | 0.000 0,0,0,0,0,0,0,0,0 theology aside , why put someone who ultimately does n't learn at the center of a kids ' story \? 123 | 0.389 0.5,0.5,0.5,0.5,0.5,0.5,0,0,0.5 roman coppola may never become the filmmaker his dad was , but heck few filmmakers will 124 | 1.000 1,1,1,1,1,1,1,1,1 its scenes and sensibility are all more than familiar , but it exudes a kind of nostalgic spy movie charm and , at the same time , is so fresh and free of the usual thriller nonsense that it all seems to be happening for the first time 125 | 0.111 0,0,0,0,0,0,0,0.5,0.5 the film is really not so much bad as bland 126 | 0.167 0,0,0,0.5,0,0,1,0,0 oedekerk wrote patch adams , for which he should not be forgiven 127 | 0.500 0,0,0.5,0,0.5,1,1,1,0.5 as if to prove a female director can make a movie with no soft edges , kathryn bigelow offers no sugar coating or interludes of lightness 128 | 1.000 1,1,1,1,1,1,1,1,1 despite what anyone believes about the goal of its makers , the show represents a spectacular piece of theater , and there 's no denying the talent of the creative forces behind it 129 | 0.000 0,0,0,0,0,0,0,0,0 the character is too forced and overwritten to be funny or believable much of the time , and clayburgh does n't always improve the over the top mix 130 | 0.000 0,0,0,0,0,0,0,0,0 with a story inspired by the tumultuous surroundings of los angeles , where feelings of marginalization loom for every dreamer with a burst bubble , the dogwalker has a few characters and ideas , but it never manages to put them on the same path 131 | 1.000 1,1,1,1,1,1,1,1,1 if you liked such movies as notting hill , four weddings and a funeral , bridget jones ' diary or high fidelity , then you wo n't want to miss about a boy 132 | 0.056 0,0,0.5,0,0,0,0,0,0 if we do n't demand a standard of quality for the art that we choose , we deserve the trash that we get 133 | 0.333 0.5,0,0,0.5,0.5,0,1,0.5,0 as a revenge thriller , the movie is serviceable , but it does n't really deliver the delicious guilty pleasure of the better film versions 134 | 1.000 1,1,1,1,1,1,1,1,1 while this film is not in the least surprising , it is still ultimately very satisfying 135 | 0.000 0,0,0,0,0,0,0,0,0 never engaging , utterly predictable and completely void of anything remotely interesting or suspenseful 136 | 1.000 1,1,1,1,1,1,1,1,1 a poignant and powerful narrative that reveals that reading writing and arithmetic are not the only subjects to learn in life 137 | 1.000 1,1,1,1,1,1,1,1,1 it 's a humble effort , but spiced with wry humor and genuine pathos , especially between morgan and redgrave 138 | 0.111 0.5,0,0,0,0,0.5,0,0,0 new best friend should n't have gone straight to video it should have gone straight to a mystery science theater 3000 video 139 | 0.000 0,0,0,0,0,0,0,0,0 there are weird resonances between actor and role here , and they 're not exactly flattering 140 | 0.500 0,0.5,1,0.5,1,0.5,0.5,0,0.5 i do n't think i 've been as entranced and appalled by an asian film since shinya tsukamoto 's iron man 141 | 0.000 0,0,0,0,0,0,0,0,0 it 's never a good sign when a film 's star spends the entirety of the film in a coma 142 | 0.056 0,0,0.5,0,0,0,0,0,0 i did n't laugh at the ongoing efforts of cube , and his skinny buddy mike epps , to make like laurel and hardy 'n the hood 143 | 0.000 0,0,0,0,0,0,0,0,0,0 no , it 's not nearly as good as any of its influences 144 | 0.278 0,0,0,0.5,0.5,0,0.5,0.5,0.5 but what saves lives on the freeway does not necessarily make for persuasive viewing 145 | 0.722 0.5,1,0.5,1,0.5,0.5,1,0.5,1 an impossible romance , but we root for the patronized iranian lad 146 | 0.167 0,0.5,0,0,0,0.5,0,0,0.5 ray liotta and jason patric do some of their best work in their underwritten roles , but do n't be fooled nobody deserves any prizes here 147 | 0.111 0,0,0,0,0.5,0,0,0,0.5 the period swinging london in the time of the mods and the rockers gets the once over once again in gangster no 1 , but falls apart long before the end 148 | 0.000 0,0,0,0,0,0,0,0,0 with the candy like taste of it fading faster than 25 cent bubble gum , i realized this is a throwaway movie that wo n't stand the test of time 149 | 0.000 0,0,0,0,0,0,0,0,0 the problem with concept films is that if the concept is a poor one , there 's no saving the movie 150 | 0.389 0,0,0,0,0.5,0.5,1,1,0.5 fine acting but there is no sense of connecting the dots , just dots 151 | 0.000 0,0,0,0,0,0,0,0,0 a movie that tries to fuse the two ` woods ' but winds up a bolly holly masala mess 152 | 0.611 1,1,0,1,0,0.5,0.5,1,0.5 there 's not much more to this adaptation of the nick hornby novel than charm effortless , pleasurable , featherweight charm 153 | 0.222 0.5,0.5,0,0,0,0.5,0,0,0.5 still , i 'm not quite sure what the point is 154 | 0.889 1,1,1,0,1,1,1,1,1 emerges as something rare , an issue movie that 's so honest and keenly observed that it does n't feel like one 155 | 0.778 1,1,1,0,0.5,0.5,1,1,1 we get some truly unique character studies and a cross section of americana that hollywood could n't possibly fictionalize and be believed 156 | 0.611 1,0.5,0.5,0.5,1,0.5,0.5,0.5,0.5 you might not want to hang out with samantha , but you 'll probably see a bit of yourself in her unfinished story 157 | 1.000 1,1,1,1,1,1,1,1,1 it might be tempting to regard mr andrew and his collaborators as oddballs , but mr earnhart 's quizzical , charming movie allows us to see them , finally , as artists 158 | 0.889 1,1,1,1,1,1,0.5,1,0.5 cho 's fearless in picking apart human foibles , not afraid to lay her life bare in front of an audience 159 | 0.111 0,0,0,0.5,0,0,0.5,0,0 too bad the former murphy brown does n't pop reese back 160 | 0.556 1,0,0.5,1,0.5,1,0.5,0,0.5 with a story as bizarre and mysterious as this , you do n't want to be worrying about whether the ineffectual broomfield is going to have the courage to knock on that door 161 | 0.056 0,0,0,0.5,0,0,0,0,0 for all its highfalutin title and corkscrew narrative , the movie turns out to be not much more than a shaggy human tale 162 | 0.056 0,0,0,0,0,0,0,0,0.5 meandering , sub aquatic mess it 's so bad it 's good , but only if you slide in on a freebie 163 | 0.111 0,0,0.5,0,0,0,0,0,0.5 no more 164 | 0.167 0,0,0.5,0.5,0,0.5,0,0,0 starts off with a bang , but then fizzles like a wet stick of dynamite at the very end 165 | 0.278 1,0,0,0.5,0,0.5,0.5,0,0 absorbing and disturbing perhaps more disturbing than originally intended but a little clarity would have gone a long way 166 | 0.278 1,0,0,0.5,0.5,0,0.5,0,0 has a plot full of twists upon knots and a nonstop parade of mock tarantino scuzbag types that starts out clever but veers into overkill 167 | 0.056 0,0,0,0,0,0.5,0,0,0 it 's often faintly amusing , but the problems of the characters never become important to us , and the story never takes hold 168 | 0.167 0.5,0,0,0.5,0,0,0,0.5,0 i regret to report that these ops are just not extreme enough 169 | 1.000 1,1,1,1,1,1,1,1,1 the wwii drama is well plotted , visually striking and filled with enjoyably complex characters who are never what they first appear 170 | 0.889 1,1,1,0.5,1,1,1,0.5,1 sits uneasily as a horror picture but finds surprising depth in its look at the binds of a small family 171 | 0.611 1,1,1,0.5,1,0.5,0,0.5,0 kaufman creates an eerie sense of not only being there at the time of these events but the very night matthew was killed 172 | 0.167 0,1,0,0,0,0,0.5,0,0 marisa tomei is good , but just a kiss is just a mess 173 | 0.944 1,1,1,1,1,1,1,1,0.5 all but the most persnickety preteens should enjoy this nonthreatening but thrilling adventure 174 | 1.000 1,1,1,1,1,1,1,1,1 it 's almost impossible not to be moved by the movie 's depiction of sacrifice and its stirring epilogue in post soviet russia 175 | 0.722 1,1,1,0.5,1,1,0,0,1 it takes this never ending confusion and hatred , puts a human face on it , evokes shame among all who are party to it and even promotes understanding 176 | 0.111 0,0,0.5,0,0,0,0.5,0,0 the issue of faith is not explored very deeply 177 | 1.000 1,1,1,1,1,1,1,1,1 if this movie were a book , it would be a page turner , you ca n't wait to see what happens next 178 | 0.333 1,0,0,1,1,0,0,0,0 proof that a thriller can be sleekly shot , expertly cast , paced with crisp professionalism and still be a letdown if its twists and turns hold no more surprise than yesterday 's weather report 179 | 1.000 1,1,1,1,1,1,1,1,1 a sensitive and expertly acted crowd pleaser that is n't above a little broad comedy and a few unabashedly sentimental tears 180 | 0.667 1,0.5,1,1,0,1,0.5,0.5,0.5 lrb davis rrb has a bright , chipper style that keeps things moving , while never quite managing to connect her wish fulfilling characters to the human race 181 | 0.000 0,0,0,0,0,0,0,0,0 the filmmakers juggle and juxtapose three story lines but fail to come up with one cogent point , unless it 's that life stinks , especially for sensitive married women who really love other women 182 | 0.167 0,0,0,1,0,0,0,0.5,0 for all its alleged youthful fire , xxx is no less subservient to bond 's tired formula of guns , girls and gadgets while brandishing a new action hero 183 | 0.167 0,0,0,0.5,0.5,0,0,0.5,0 the movie feels like it 's going to be great , and it carries on feeling that way for a long time , but takeoff just never happens 184 | 0.000 0,0,0,0,0,0,0,0,0 a long winded and stagy session of romantic contrivances that never really gels like the shrewd feminist fairy tale it could have been 185 | 0.500 0,1,0,0.5,0.5,1,0.5,1,0 it 's not so much enjoyable to watch as it is enlightening to listen to new sides of a previous reality , and to visit with some of the people who were able to make an impact in the theater world 186 | 0.000 0,0,0,0,0,0,0,0,0 a frantic search for laughs , with a hit to miss ratio that does n't exactly favour the audience 187 | 0.056 0,0,0,0,0,0,0.5,0,0 suggests puns about ingredients and soup and somebody being off their noodle , but let 's just say the ingredients do n't quite add up to a meal 188 | 1.000 1,1,1,1,1,1,1,1,1 though the controversial korean filmmaker 's latest effort is not for all tastes , it offers gorgeous imagery , effective performances , and an increasingly unsettling sense of foreboding 189 | 0.000 0,0,0,0,0,0,0,0,0 we never really feel involved with the story , as all of its ideas remain just that abstract ideas 190 | 0.111 0.5,0.5,0,0,0,0,0,0,0 given that both movies expect us to root for convicted violent felons over those assigned to protect us from same , we need every bit of sympathy the cons can muster this time , there is n't much 191 | 0.000 0,0,0,0,0,0,0,0,0 looks awfully like one long tourist spot for a mississippi that may never have existed outside of a scriptwriter 's imagination 192 | 0.944 1,1,1,1,1,1,0.5,1,1 though the film 's scenario is certainly not earthshaking , this depiction of fluctuating female sexuality has two winning lead performances and charm to spare 193 | 0.056 0,0,0,0,0.5,0,0,0,0 much of what is meant to be ` inspirational ' and ` uplifting ' is simply distasteful to audiences not already sharing lrb the movie 's rrb mindset 194 | 0.000 0,0,0,0,0,0,0,0,0 but that 's just the problem with it the director has n't added enough of his own ingredients 195 | 0.778 1,1,1,0.5,0.5,0,1,1,1 it uses an old time formula , it 's not terribly original and it 's rather messy but you just have to love the big , dumb , happy movie my big fat greek wedding 196 | 0.111 0,0,0,0.5,0.5,0,0,0,0 nair stuffs the film with dancing , henna , ornamentation , and group song , but her narrative clich s and telegraphed episodes smell of old soap opera 197 | 0.889 1,1,1,1,1,1,0,1,1 tadpole is a sophisticated , funny and good natured treat , slight but a pleasure 198 | 0.250 1,0,0,1,0,0,0,0,0,0.5 this self infatuated goofball is far from the only thing wrong with the clumsy comedy stealing harvard , but he 's the most obvious one 199 | 0.000 0,0,0,0,0,0,0,0,0 a great ending does n't make up for a weak movie , and crazy as hell does n't even have a great ending 200 | 0.944 0.5,1,1,1,1,1,1,1,1 a classy item by a legend who may have nothing left to prove but still has the chops and drive to show how its done 201 | 0.556 1,1,1,0.5,0.5,0,0,0.5,0.5 even legends like alfred hitchcock and john huston occasionally directed trifles so it 's no surprise to see a world class filmmaker like zhang yimou behind the camera for a yarn that 's ultimately rather inconsequential 202 | 1.000 1,1,1,1,1,1,1,1,1 this is carion 's debut feature but his script and direction hums with a confidence that many spend entire careers trying to reach 203 | 0.556 0.5,0.5,1,0,0.5,1,0,0.5,1 smith 's approach is never to tease , except gently and in that way that makes us consider our own eccentricities and how they are expressed through our homes 204 | 0.889 1,1,1,1,1,1,1,0,1 it represents better than average movie making that does n't demand a dumb , distracted audience 205 | 0.000 0,0,0,0,0,0,0,0,0 the sad thing about knockaround guys is its lame aspiration for grasping the coolness vibes when in fact the film is n't as flippant or slick as it thinks it is 206 | 0.000 0,0,0,0,0,0,0,0,0 the actors do n't inhabit their roles they 're trapped by them , forced to change behavior in bizarre unjustified fashion and spout dialog that consists mostly of platitudes 207 | 0.900 1,1,1,1,0.5,0.5,1,1,1,1 an uneven but intriguing drama that is part homage and part remake of the italian masterpiece 208 | 0.000 0,0,0,0,0,0,0,0,0 it would n't be my preferred way of spending 100 minutes or 7 00 209 | 0.778 1,0.5,1,1,0,1,0.5,1,1 a tough go , but leigh 's depth and rigor , and his skill at inspiring accomplished portrayals that are all the more impressive for their lack of showiness , offsets to a notable degree the film 's often mined and despairing milieu 210 | 0.222 1,0,0,0,0,0,1,0,0 the two leads are almost good enough to camouflage the dopey plot , but so much naturalistic small talk , delivered in almost muffled exchanges , eventually has a lulling effect 211 | 1.000 1,1,1,1,1,1,1,1,1 lee jeong hyang tells it so lovingly and films it so beautifully that i could n't help being captivated by it 212 | 0.333 0,1,0,0,1,0.5,0,0.5,0 begins as a promising meditation on one of america 's most durable obsessions but winds up as a slender cinematic stunt 213 | 0.389 0.5,0,0.5,0.5,0.5,0.5,0,0.5,0.5 i do n't have an i am sam clue 214 | 0.000 0,0,0,0,0,0,0,0,0 these people would n't know subtle characterization if it put on a giant furry monster costume and then gave them a lapdance 215 | 0.944 1,1,1,1,1,0.5,1,1,1 while not all transitions to adulthood are so fraught , there 's much truth and no small amount of poetry in girls ca n't swim 216 | 0.944 1,1,0.5,1,1,1,1,1,1 by the end of no such thing the audience , like beatrice , has a watchful affection for the monster 217 | 0.833 1,1,1,0,0.5,1,1,1,1 the film 's greatest asset is how much it 's not just another connect the dots , spy on the run picture 218 | 0.000 0,0,0,0,0,0,0,0,0 does n't amount to much of anything 219 | 0.000 0,0,0,0,0,0,0,0,0 not sweet enough to liven up its predictable story and will leave even fans of hip hop sorely disappointed 220 | 0.111 0,0,0,0,0,0,1,0,0 birot 's directorial debut lrb she co wrote the script with christophe honor rrb is n't so much bad as it is bland 221 | 0.111 0,0,0,0,0,0,0,1,0 not ` terrible filmmaking ' bad , but more like , ' i once had a nightmare like this , and it 's now coming true ' bad 222 | 0.167 0,0,0.5,0,0.5,0,0,0,0.5 topkapi this is not 223 | 0.111 0,0,0,0.5,0,0.5,0,0,0 i doubt anyone will remember the picture by the time christmas really rolls around , but maybe it 'll be on video by then 224 | 0.000 0,0,0,0,0,0,0,0,0 plays as hollow catharsis , with lots of tears but very little in the way of insights 225 | 0.056 0,0,0,0,0,0,0.5,0,0 but the characters tend to be cliches whose lives are never fully explored 226 | 0.500 0.5,0.5,1,0.5,0.5,0.5,0.5,0,0.5 the fight scenes are fun , but it grows tedious 227 | 1.000 1,1,1,1,1,1,1,1,1 waydowntown is by no means a perfect film , but its boasts a huge charm factor and smacks of originality 228 | 1.000 1,1,1,1,1,1,1,1,1 despite the long running time , the pace never feels slack there 's no scene that screams `` bathroom break ! '' 229 | 0.944 1,1,1,1,1,0.5,1,1,1 there is n't a weak or careless performance amongst them 230 | 0.667 0.5,1,0.5,0.5,1,0.5,1,0.5,0.5 on the surface , it 's a lovers on the run crime flick , but it has a lot in common with piesiewicz 's and kieslowski 's earlier work , films like the double life of veronique 231 | 0.000 0,0,0,0,0,0,0,0,0 do n't expect any surprises in this checklist of teamwork cliches 232 | 0.000 0,0,0,0,0,0,0,0,0 it 's so underwritten that you ca n't figure out just where the other characters , including ana 's father and grandfather , come down on the issue of ana 's future 233 | 1.000 1,1,1,1,1,1,1,1,1,1 benefits from a strong performance from zhao , but it 's dong jie 's face you remember at the end 234 | 0.111 1,0,0,0,0,0,0,0,0 there 's no denying the elaborateness of the artist 's conceptions , nor his ability to depict them with outrageous elan , but really the whole series is so much pretentious nonsense , lavishly praised by those who equate obscurity with profundity 235 | 0.000 0,0,0,0,0,0,0,0,0 creepy but ultimately unsatisfying thriller 236 | 0.000 0,0,0,0,0,0,0,0,0 dawdles and drags when it should pop it does n't even have the virtue of enough mindless violence to break up the tedium of all its generational bonding 237 | 1.000 1,1,1,1,1,1,1,1,1 the story may not be new , but australian director john polson , making his american feature debut , jazzes it up adroitly 238 | 1.000 1,1,1,1,1,1,1,1,1 tim allen is great in his role but never hogs the scenes from his fellow cast , as there are plenty of laughs and good lines for everyone in this comedy 239 | 0.111 0,0,0,0,0.5,0,0,0,0.5 the overall feel of the film is pretty cheesy , but there 's still a real sense that the star trek tradition has been honored as best it can , given the embarrassing script and weak direction 240 | 0.111 0,0,0.5,0,0,0,0,0,0.5 though everything might be literate and smart , it never took off and always seemed static 241 | 0.611 1,0.5,0.5,1,0.5,0.5,1,0.5,0 that zhang would make such a strainingly cute film with a blind orphan at its center , no less indicates where his ambitions have wandered 242 | 0.222 0,0,0,0,0,1,0,0.5,0.5 nearly surreal , dabbling in french , this is no simple movie , and you 'll be taking a risk if you choose to see it 243 | 0.667 1,0,1,1,1,0,0,1,1 if no one singles out any of these performances as award worthy , it 's only because we would expect nothing less from this bunch 244 | 0.444 1,0.5,0,0,1,0.5,0.5,0.5,0 it is not a mass market entertainment but an uncompromising attempt by one artist to think about another 245 | 0.000 0,0,0,0,0,0,0,0,0 too loud , too long and too frantic by half , die another day suggests that the bond franchise has run into a creative wall that 007 can not fly over , tunnel under or barrel through 246 | 0.111 0,0,0,0,0,0.5,0,0,0.5 accuracy and realism are terrific , but if your film becomes boring , and your dialogue is n't smart , then you need to use more poetic license 247 | 0.056 0.5,0,0,0,0,0,0,0,0 the streets , shot by cinematographer michael ballhaus , may be as authentic as they are mean , but it is nearly impossible to care about what happens on them 248 | 0.722 0.5,1,1,1,1,0,1,1,0 who knows what exactly godard is on about in this film , but his words and images do n't have to add up to mesmerize you 249 | 0.167 0,0,0,0.5,0,0,1,0,0 a generation x artifact , capturing a brief era of insanity in the sports arena that surely can not last 250 | 0.944 0.5,1,1,1,1,1,1,1,1 it never fails to engage us 251 | 0.000 0,0,0,0,0,0,0,0,0 the weight of water uses water as a metaphor for subconscious desire , but this leaky script barely stays afloat 252 | 0.833 1,1,0.5,1,1,0.5,0.5,1,1 it 's hard not to be seduced by lrb witherspoon 's rrb charisma , even in this run of the mill vehicle , because this girl knows how to drive it to the max 253 | 0.111 0,0,0,0,0,0,1,0,0 a great idea becomes a not great movie 254 | 0.111 0,0,0,0.5,0,0,0,0,0.5 i just did n't care as much for the story 255 | 0.167 1,0,0.5,0,0,0,0,0,0 there is no entry portal in the rules of attraction , and i spent most of the movie feeling depressed by the shallow , selfish , greedy characters 256 | 0.056 0,0,0,0,0,0,0,0.5,0 will only satisfy those who ca n't tell the difference between the good , the bad and the ugly 257 | 0.167 0,0,0,0,0,0,0.5,1,0 audiences can be expected to suspend their disbelief only so far and that does not include the 5 o'clock shadow on the tall wooden kid as he skips off to school 258 | 0.167 0,0,0.5,0,0,0,0,1,0 flounders due to the general sense that no two people working on the production had exactly the same thing in mind 259 | 0.000 0,0,0,0,0,0,0,0,0 considering the harsh locations and demanding stunts , this must have been a difficult shoot , but the movie proves rough going for the audience as well 260 | 1.000 1,1,1,1,1,1,1,1,1 the people in dogtown and z boys are so funny , aggressive and alive , you have to watch them because you ca n't wait to see what they do next 261 | 0.278 0.5,0,0.5,0,0,0,0.5,0,1 so many documentaries like this presuppose religious bigotry or zealous nuttiness of its antagonists , but family fundamentals displays a rare gift for unflinching impartiality 262 | 0.722 1,1,1,1,0.5,0.5,0.5,0.5,0.5 a carefully structured scream of consciousness that is tortured and unsettling but unquestionably alive 263 | 0.150 0,0,0,0.5,0,0,0,0,1,0 the film meant well in its horse tale about freedom , but was n't able to reach the heart because it was too overbearing 264 | 0.000 0,0,0,0,0,0,0,0,0,0 there is not a character in the movie with a shred of plausibility , not an event that is believable , not a confrontation that is not staged , not a moment that is not false 265 | 0.222 0.5,1,0,0.5,0,0,0,0,0 it 's hard not to feel you 've just watched a feature length video game with some really heavy back story 266 | 0.111 0,0,0.5,0,0,0,0,0,0.5 ihops do n't pile on this much syrup 267 | 0.833 1,0,1,1,1,0.5,1,1,1 there are a few stabs at absurdist comedy but mostly the humor is of the sweet , gentle and occasionally cloying kind that has become an iranian specialty 268 | 0.167 0,0,0.5,0.5,0,0,0.5,0,0 it will come as no surprise that the movie is n't scary 269 | 0.333 0.5,0,0.5,0.5,0.5,0,0,1,0 it delivers some chills and sustained unease , but flounders in its quest for deeper meaning 270 | 0.222 0,0,0.5,0,0.5,0.5,0,0.5,0 a simple , sometimes maddeningly slow film that has just enough charm and good acting to make it interesting , but is ultimately pulled under by the pacing and lack of creativity within 271 | 0.056 0,0,0,0.5,0,0,0,0,0 not even the hanson brothers can save it 272 | 0.000 0,0,0,0,0,0,0,0,0 it 's a film that hinges on its casting , and glover really does n't fit the part 273 | 0.333 0,0,0,1,0,0.5,0.5,0.5,0.5 stars matthew perry and elizabeth hurley illicit more than a chuckle , and more jokes land than crash , but ultimately serving sara does n't distinguish itself from the herd 274 | 0.000 0,0,0,0,0,0,0,0,0 every bit as bogus as most disney live action family movies are no real plot , no real conflict , no real point 275 | 0.722 1,0,1,0,1,0.5,1,1,1 do n't plan on the perfect ending , but sweet home alabama hits the mark with critics who escaped from a small town life 276 | 1.000 1,1,1,1,1,1,1,1,1 an intimate , good humored ethnic comedy like numerous others but cuts deeper than expected 277 | 0.833 1,0.5,1,1,0.5,0.5,1,1,1 still pretentious and filled with subtext , but entertaining enough at ` face value ' to recommend to anyone looking for something different 278 | 0.056 0,0,0,0,0.5,0,0,0,0 involving at times , but lapses quite casually into the absurd 279 | 0.950 1,1,1,1,1,1,0.5,1,1,1 it could change america , not only because it is full of necessary discussion points , but because it is so accessible that it makes complex politics understandable to viewers looking for nothing but energetic entertainment 280 | 0.056 0,0,0,0.5,0,0,0,0,0 none of this violates the letter of behan 's book , but missing is its spirit , its ribald , full throated humor 281 | 0.000 0,0,0,0,0,0,0,0,0 never again swings between false sentiment and unfunny madcap comedy and , along the way , expects the audience to invest in the central relationship as some kind of marriage of true minds 282 | 0.000 0,0,0,0,0,0,0,0,0 just because it really happened to you , honey , does n't mean that it 's interesting to anyone else 283 | 0.111 0,0.5,0,0,0,0,0,0.5,0 i watched the brainless insanity of no such thing with mounting disbelief 284 | 0.056 0,0,0,0.5,0,0,0,0,0 a very stylish but ultimately extremely silly tale a slick piece of nonsense but nothing more 285 | 0.444 1,0.5,1,0.5,0,0,0,0,1 never lrb sinks rrb into exploitation 286 | 0.444 0,0,0.5,0.5,0.5,1,0,1,0.5 propelled not by characters but by caricatures 287 | 0.611 0.5,0.5,1,0.5,0,1,1,0.5,0.5 it 's a decent glimpse into a time period , and an outcast , that is no longer accessible , but it does n't necessarily shed more light on its subject than the popular predecessor 288 | 0.667 0,1,0.5,1,1,1,0,1,0.5 the pleasures of super troopers may be fleeting , but they 'll register strongly with anybody who still retains a soft spot for precollegiate humor 289 | 0.000 0,0,0,0,0,0,0,0,0 falters when it takes itself too seriously and when it depends too heavily on its otherwise talented cast to clown in situations that are n't funny 290 | 0.889 1,1,1,1,1,1,1,0,1 another great ` what you do n't see ' is much more terrifying than what you do see thriller , coupled with some arresting effects , incandescent tones and stupendous performances 291 | 1.000 1,1,1,1,1,1,1,1,1 theirs is a simple and heart warming story , full of mirth that should charm all but the most cynical 292 | 0.944 1,0.5,1,1,1,1,1,1,1 is n't quite the equal of woo 's best earlier work , but it 's easily his finest american film comes close to recapturing the brilliance of his hong kong films 293 | 0.556 0,0,1,1,1,0.5,1,0.5,0 lrb a rrb hollywood sheen bedevils the film from the very beginning lrb but rrb lohman 's moist , deeply emotional eyes shine through this bogus veneer 294 | 0.611 0.5,0.5,0.5,1,0.5,0.5,0.5,1,0.5 in adobo , ethnicity is not just the spice , but at the heart of more universal concerns 295 | 0.333 0.5,0,0,0.5,0,0,0,1,1 the story is naturally poignant , but first time screenwriter paul pender overloads it with sugary bits of business 296 | 0.889 1,1,1,1,1,1,1,0,1 katz uses archival footage , horrifying documents of lynchings , still photographs and charming old reel to reel recordings of meeropol entertaining his children to create his song history , but most powerful of all is the song itself 297 | 0.278 0,0.5,0.5,0,0.5,0.5,0,0,0.5 flotsam in the sea of moviemaking , not big enough for us to worry about it causing significant harm and not smelly enough to bother despising 298 | 0.556 0,0,0,1,1,1,0.5,1,0.5 happily for mr chin though unhappily for his subjects the invisible hand of the marketplace wrote a script that no human screenwriter could have hoped to match 299 | 0.722 0.5,1,1,1,1,0,1,0.5,0.5 it 's predictable , but it jumps through the expected hoops with style and even some depth 300 | 0.000 0,0,0,0,0,0,0,0,0 no movement , no yuks , not much of anything 301 | 0.000 0,0,0,0,0,0,0,0,0 if you collected all the moments of coherent dialogue , they still would n't add up to the time required to boil a four minute egg 302 | 0.111 0.5,0,0,0,0,0,0.5,0,0 schindler 's list it ai n't 303 | 1.000 1,1,1,1,1,1,1,1,1 it 's endearing to hear madame d refer to her husband as ` jackie ' and he does make for excellent company , not least as a self conscious performer 304 | 0.944 1,1,1,1,1,1,0.5,1,1 as weber and weissman demonstrate with such insight and celebratory verve , the cockettes were n't as much about gender , sexual preference or political agitprop as they were simply a triumph of the indomitable human will to rebel , connect and create 305 | 0.444 0,0,0,1,1,0,1,0,1 maybe it 's the star power of the cast or the redundant messages , but something aboul `` full frontal '' seems , well , contrived 306 | 0.833 1,1,0.5,1,1,1,0.5,1,0.5 those outside show business will enjoy a close look at people they do n't really want to know 307 | 0.944 1,1,1,1,1,0.5,1,1,1 this may not have the dramatic gut wrenching impact of other holocaust films , but it 's a compelling story , mainly because of the way it 's told by the people who were there 308 | 0.100 0,0,0,0,0,0,1,0,0,0 splashes its drama all over the screen , subjecting its audience and characters to action that feels not only manufactured , but also so false you can see the filmmakers ' puppet strings 309 | 1.000 1,1,1,1,1,1,1,1,1 even if you ca n't pronounce `` gyro '' correctly , you 'll appreciate much of vardalos ' humor , which transcends ethnic boundaries 310 | 1.000 1,1,1,1,1,1,1,1,1 it 's a movie and an album you wo n't want to miss 311 | 0.950 1,1,1,1,1,0.5,1,1,1,1 the principals in this cast are all fine , but bishop and stevenson are standouts 312 | 0.000 0,0,0,0,0,0,0,0,0 although trying to balance self referential humor and a normal ol' slasher plot seemed like a decent endeavor , the result does n't fully satisfy either the die hard jason fans or those who can take a good joke 313 | 0.000 0,0,0,0,0,0,0,0,0 if you 're not the target demographic this movie is one long chick flick slog 314 | 0.278 0,0.5,0,0,0,0.5,0.5,0,1 director brian levant , who never strays far from his sitcom roots , skates blithely from one implausible situation to another , pausing only to tie up loose ends with more bows than you 'll find on a french poodle 315 | 1.000 1,1,1,1,1,1,1,1,1 novak manages to capture a cruelly hilarious vein of black comedy in the situation with his cast of non actors and a gritty , no budget approach 316 | 0.222 0,0,0,1,0,0.5,0,0,0.5 birot is a competent enough filmmaker , but her story has nothing fresh or very exciting about it 317 | 0.000 0,0,0,0,0,0,0,0,0 beyond a handful of mildly amusing lines there just is n't much to laugh at 318 | 0.056 0,0,0,0,0.5,0,0,0,0 if you 're not into the pokemon franchise , this fourth animated movie in four years wo n't convert you or even keep your eyes open 319 | 0.000 0,0,0,0,0,0,0,0,0 no reason for anyone to invest their hard earned bucks into a movie which obviously did n't invest much into itself either 320 | 1.000 1,1,1,1,1,1,1,1,1 the film is often filled with a sense of pure wonderment and excitement not often seen in today 's cinema du sarcasm 321 | 0.833 1,1,1,1,1,1,0.5,0,1 there are times when a rumor of angels plays like an extended episode of touched by an angel a little too much dancing , a few too many weeping scenes but i liked its heart and its spirit 322 | 0.889 1,1,1,1,0,1,1,1,1 jason x has cheesy effects and a hoary plot , but its macabre , self deprecating sense of humor makes up for a lot 323 | 0.278 0,1,0,0,0,0,0.5,0.5,0.5 earnest but earthbound a slow , soggy , soporific , visually dank crime melodrama character study that would be more at home on the small screen but for its stellar cast 324 | 1.000 1,1,1,1,1,1,1,1,1 run , do n't walk , to see this barbed and bracing comedy on the big screen 325 | 1.000 1,1,1,1,1,1,1,1,1 finally , a genre movie that delivers in a couple of genres , no less 326 | 0.611 0.5,0.5,0.5,1,0.5,0.5,0.5,1,0.5 the film is faithful to what one presumes are the book 's twin premises that we become who we are on the backs of our parents , but we have no idea who they were at our age and that time is a fleeting and precious commodity no matter how old you are 327 | 0.278 0,0,0.5,0,0.5,0.5,0.5,0.5,0 a depressing confirmation of everything those of us who do n't object to the description `` unelected '' have suspected all along george w bush is an incurious , uncharismatic , overgrown frat boy with a mean streak a mile wide 328 | 0.167 0,0,0,0,0,0,0.5,0,1 the cold and dreary weather is a perfect metaphor for the movie itself , which contains few laughs and not much drama 329 | 0.167 0.5,0,0,0,0.5,0,0.5,0,0 director nalin pan does n't do much to weigh any arguments one way or the other 330 | 0.778 0.5,0.5,0,1,1,1,1,1,1 one of the best examples of how to treat a subject , you 're not fully aware is being examined , much like a photo of yourself you did n't know was being taken 331 | 0.167 0,0,0,0,0,0,0.5,0,1 not a movie but a live action agitprop cartoon so shameless and coarse , it 's almost funny 332 | 0.500 0.5,0,0.5,0.5,0.5,1,0.5,0.5,0.5 it wo n't be long before you 'll spy i spy at a video store near you 333 | 0.056 0,0,0,0,0,0,0,0.5,0 ordinary melodrama that is heavy on religious symbols but wafer thin on dramatic substance 334 | 1.000 1,1,1,1,1,1,1,1,1 zhang yimou delivers warm , genuine characters who lie not through dishonesty , but because they genuinely believe it 's the only way to bring happiness to their loved ones 335 | 0.056 0,0,0.5,0,0,0,0,0,0 the subject of swinging still seems ripe for a documentary just not this one 336 | 0.222 0,0,1,0,0,0.5,0.5,0,0 writer director john mckay ignites some charming chemistry between kate and jed but , when he veers into sodden melodrama , punctuated by violins , it 's disastrous and kate 's jealous female friends become downright despicable 337 | 0.111 0,0,0,0,0,1,0,0,0 spousal abuse is a major problem in contemporary society , but the film reduces this domestic tragedy to florid melodrama 338 | 1.000 1,1,1,1,1,1,1,1,1 daughter from danang is a film that should be seen by all , especially those who are n't aware of , or have forgotten about the unmentioned victims of war 339 | 0.778 1,0.5,1,0.5,1,0.5,1,1,0.5 tim story 's not there yet but ` barbershop ' shows he 's on his way 340 | 0.950 1,1,1,1,1,1,1,0.5,1,1 rain is a small treasure , enveloping the viewer in a literal and spiritual torpor that is anything but cathartic 341 | 0.000 0,0,0,0,0,0,0,0,0 but here 's the real damn it is n't funny , either 342 | 0.000 0,0,0,0,0,0,0,0,0 the premise for this kegger comedy probably sounded brilliant four six packs and a pitcher of margaritas in , but the film must have been written in the thrall of a vicious hangover 343 | 0.100 0,0,0,0,0,0,1,0,0,0 this is n't a `` friday '' worth waiting for 344 | 0.167 0,0.5,0,0,0.5,0,0,0,0.5 well shot but badly written tale set in a future ravaged by dragons 345 | 0.111 0,1,0,0,0,0,0,0,0 scarlet diva has a voyeuristic tug , but all in all it 's a lot less sensational than it wants to be 346 | 0.889 1,1,1,1,1,1,0,1,1 not a cozy or ingratiating work , but it 's challenging , sometimes clever , and always interesting , and those are reasons enough to see it 347 | 0.389 0,0.5,0.5,0,0.5,0.5,1,0.5,0 a mixed bag of a comedy that ca n't really be described as out of this world 348 | 0.000 0,0,0,0,0,0,0,0,0 the actors are forced to grapple with hazy motivations that never come into focus 349 | 0.056 0,0,0,0.5,0,0,0,0,0 herzog is obviously looking for a moral to his fable , but the notion that a strong , unified showing among germany and eastern european jews might have changed 20th century history is undermined by ahola 's inadequate performance 350 | 0.778 0,1,0.5,0.5,1,1,1,1,1 it sounds sick and twisted , but the miracle of shainberg 's film is that it truly is romance 351 | 0.944 1,1,1,1,1,1,1,0.5,1 if your senses have n't been dulled by slasher films and gorefests , if you 're a connoisseur of psychological horror , this is your ticket 352 | 0.389 0,0.5,0.5,0,0.5,0.5,1,0.5,0 there 's an audience for it , but it could have been funnier and more innocent 353 | 0.889 1,0,1,1,1,1,1,1,1 the reason this picture works better than its predecessors is that myers is no longer simply spoofing the mini mod madness of '60s spy movies 354 | 0.333 0,0.5,0,0.5,1,0.5,0,0,0.5 it does n't do the original any particular dishonor , but neither does it exude any charm or personality 355 | 0.000 0,0,0,0,0,0,0,0,0 i did n't believe for a moment in these villains or their plot 356 | 0.889 1,1,0,1,1,1,1,1,1 it 's a hoot and a half , and a great way for the american people to see what a candidate is like when he 's not giving the same 15 cent stump speech 357 | 0.000 0,0,0,0,0,0,0,0,0,0 this is a great subject for a movie , but hollywood has squandered the opportunity , using it as a prop for warmed over melodrama and the kind of choreographed mayhem that director john woo has built his career on 358 | 0.000 0,0,0,0,0,0,0,0,0 there 's not enough to sustain the comedy 359 | 0.000 0,0,0,0,0,0,0,0,0 this overproduced and generally disappointing effort is n't likely to rouse the rush hour crowd 360 | 1.000 1,1,1,1,1,1,1,1,1 the film starts out as competent but unremarkable and gradually grows into something of considerable power 361 | 1.000 1,1,1,1,1,1,1,1,1 often gruelling and heartbreaking to witness , but seldahl and wollter 's sterling performances raise this far above the level of the usual maudlin disease movie 362 | 0.000 0,0,0,0,0,0,0,0,0 wait for video and then do n't rent it 363 | 0.056 0,0,0.5,0,0,0,0,0,0 taken individually or collectively , the stories never add up to as much as they promise 364 | 0.000 0,0,0,0,0,0,0,0,0 the thriller side of this movie is falling flat , as the stalker does n't do much stalking , and no cop or lawyer grasps the concept of actually investigating the case 365 | 0.667 0.5,1,0,0.5,0,1,1,1,1 parker holds true to wilde 's own vision of a pure comedy with absolutely no meaning , and no desire to be anything but a polished , sophisticated entertainment that is in love with its own cleverness 366 | 0.333 0,0.5,0,0,1,1,0,0,0.5 as adapted by kevin molony from simon leys ' novel `` the death of napoleon '' and directed by alan taylor , napoleon 's journey is interesting but his parisian rebirth is stillborn 367 | 0.500 1,0,1,1,0,0,0,1,0.5 sound the trumpets for the first time since desperately seeking susan , madonna does n't suck as an actress 368 | 0.000 0,0,0,0,0,0,0,0,0 it is a comedy that 's not very funny and an action movie that is not very thrilling lrb and an uneasy alliance , at that rrb 369 | 0.000 0,0,0,0,0,0,0,0,0 a one trick pony whose few t a bits still ca n't save itself from being unoriginal , unfunny and unrecommendable 370 | 0.722 1,1,1,1,1,0.5,1,0,0 if it tried to do anything more , it would fail and perhaps explode , but at this level of manic whimsy , it is just about right 371 | 0.000 0,0,0,0,0,0,0,0,0 fear dot com is so rambling and disconnected it never builds any suspense 372 | 0.389 0,0,0,1,1,0,0.5,1,0 an intermittently pleasing but mostly routine effort 373 | 0.111 0,0,0,0.5,0,0,0.5,0,0 lrb it 's rrb a prison soccer movie starring charismatic tough guy vinnie jones , but it had too much spitting for me to enjoy 374 | 0.056 0,0,0,0,0,0,0,0,0.5 undercover brother does n't go far enough 375 | 0.111 0,0,0,0,1,0,0,0,0 as written by michael berg and michael j wilson from a story by wilson , this relentless , all wise guys all the time approach tries way too hard and gets tiring in no time at all 376 | 0.833 1,1,0,1,0.5,1,1,1,1 my goodness , queen latifah has a lot to offer and she seemed to have no problem flaunting her natural gifts 377 | 0.333 0.5,0,0,0,0,0.5,0.5,0.5,1 the only thing in pauline and paulette that you have n't seen before is a scene featuring a football field sized oriental rug crafted out of millions of vibrant flowers 378 | 0.056 0,0,0,0,0.5,0,0,0,0 do n't waste your money 379 | 0.833 1,0.5,0.5,1,1,1,1,1,0.5 son of the bride may be a good half hour too long but comes replete with a flattering sense of mystery and quietness 380 | 1.000 1,1,1,1,1,1,1,1,1 breathes surprising new life into the familiar by amalgamating genres and adding true human complexity to its not so stock characters ' 381 | 0.278 0,0,1,0,0,0.5,0,0.5,0.5 de niro and mcdormand give solid performances , but their screen time is sabotaged by the story 's inability to create interest 382 | 0.000 0,0,0,0,0,0,0,0,0 it does n't help that the director and cinematographer stephen kazmierski shoot on grungy video , giving the whole thing a dirty , tasteless feel 383 | 0.111 0.5,0,0,0,0.5,0,0,0,0 he has not learnt that storytelling is what the movies are about 384 | 0.167 0,0,1,0,0,0,0,0.5,0 blessed with immense physical prowess he may well be , but ahola is simply not an actor 385 | 0.944 1,1,1,1,1,0.5,1,1,1 reign of fire may be little more than another platter of reheated aliens , but it 's still pretty tasty 386 | 0.500 0,0.5,0.5,1,0,1,1,0.5,0 home alone goes hollywood , a funny premise until the kids start pulling off stunts not even steven spielberg would know how to do 387 | 0.111 1,0,0,0,0,0,0,0,0 this extremely unfunny film clocks in at 80 minutes , but feels twice as long 388 | 0.778 1,0,1,1,1,0,1,1,1 painful to watch , but viewers willing to take a chance will be rewarded with two of the year 's most accomplished and riveting film performances 389 | 1.000 1,1,1,1,1,1,1,1,1 thrilling , provocative and darkly funny , this timely sci fi mystery works on so many different levels that it not only invites , it demands repeated viewings 390 | 0.000 0,0,0,0,0,0,0,0,0 unless you are in dire need of a diesel fix , there is no real reason to see it 391 | 0.222 0,1,0,1,0,0,0,0,0 it 's the kind of movie that ends up festooning u s art house screens for no reason other than the fact that it 's in french lrb well , mostly rrb with english subtitles and is magically ` significant ' because of that 392 | 0.944 1,1,1,1,1,0.5,1,1,1 both hokey and super cool , and definitely not in a hurry , so sit back , relax and have a few laughs while the little ones get a fuzzy treat ' 393 | 0.944 1,1,1,1,1,1,0.5,1,1 city by the sea is the cinematic equivalent of defensive driving it 's careful , conscientious and makes no major mistakes 394 | 0.000 0,0,0,0,0,0,0,0,0 the reason we keep seeing the same movie with roughly the same people every year is because so many of us keep going and then , out of embarrassment or stupidity , not warning anyone 395 | 1.000 1,1,1,1,1,1,1,1,1 the film delivers not just the full assault of reno 's immense wit and insight , but a time travel back to what it felt like during those unforgettably uncertain days 396 | 0.167 0,0,0,1,0,0,0,0.5,0 obstacles are too easily overcome and there is n't much in the way of character development in the script 397 | 0.778 1,0,1,1,1,0.5,1,1,0.5 a miniscule little bleep on the film radar , but one that many more people should check out 398 | 0.333 0,0.5,0.5,0,0.5,0.5,0.5,0,0.5 one hour photo is an intriguing snapshot of one man and his delusions it 's just too bad it does n't have more flashes of insight 399 | 0.667 1,1,1,1,1,0.5,0,0.5,0 a broadly played , lowbrow comedy in which the cast delivers mildly amusing performances and no farm animals were injured by any of the gags 400 | 0.056 0,0,0,0.5,0,0,0,0,0 no , it 's the repetition of said behavior , and so children of the century is more mindless love than mad , more grating and boring than anything else 401 | 0.000 0,0,0,0,0,0,0,0,0 the cartoon that is n't really good enough to be on afternoon tv is now a movie that is n't really good enough to be in theaters 402 | 1.000 1,1,1,1,1,1,1,1,1 the best thing the film does is to show us not only what that mind looks like , but how the creative process itself operates 403 | 0.778 0.5,1,0,1,1,1,1,0.5,1 stephen earnhart 's homespun documentary mule skinner blues has nothing but love for its posse of trailer park denizens 404 | 0.111 0,0,0,1,0,0,0,0,0 if you 're not a prepubescent girl , you 'll be laughing at britney spears ' movie starring debut whenever it does n't have you impatiently squinting at your watch 405 | 0.889 0,1,1,1,1,1,1,1,1 it 's rare to find a film that dazzles the eye , challenges the brain , and satisfies our lust for fast paced action , but minority report delivers all that and a whole lot more 406 | 0.278 0,0.5,0.5,0,1,0,0.5,0,0 lanie 's professional success means she must be a failure at life , because she 's driven by ambition and does n't know how to have fun 407 | 1.000 1,1,1,1,1,1,1,1,1 it 's one of the saddest films i have ever seen that still manages to be uplifting but not overly sentimental 408 | 0.000 0,0,0,0,0,0,0,0,0 maybe it 's asking too much , but if a movie is truly going to inspire me , i want a little more than this 409 | 1.000 1,1,1,1,1,1,1,1,1 there 's no denying the physically spectacular qualities of the film or the emotional integrity of the performances 410 | 0.111 0,0,0.5,0,0,0,0,0,0.5 the plot is very clever , but boyd weighs it down with too many characters and events , all intertwined and far too complicated to keep track of 411 | 0.111 0,0,0,0,0,0.5,0,0.5,0 do not , under any circumstances , consider taking a child younger than middle school age to this wallow in crude humor 412 | 0.000 0,0,0,0,0,0,0,0,0 extreme oops oops , ops , no matter how you spell it , it 's still a mistake to go see it 413 | 1.000 1,1,1,1,1,1,1,1,1 a romantic comedy , yes , but one with characters who think and talk about their goals , and are working on hard decisions 414 | 0.611 0.5,1,1,0.5,0.5,0,0.5,0.5,1 flat , but with a revelatory performance by michelle williams 415 | 0.500 1,1,0.5,0.5,0,0,0.5,0.5,0.5 this is n't a narrative film i do n't know if it 's possible to make a narrative film about september 11th , though i 'm sure some will try but it 's as close as anyone has dared to come 416 | 0.056 0,0,0.5,0,0,0,0,0,0 it 's not horrible , just horribly mediocre 417 | 1.000 1,1,1,1,1,1,1,1,1 we can see the wheels turning , and we might resent it sometimes , but this is still a nice little picture , made by bright and friendly souls with a lot of good cheer 418 | 1.000 1,1,1,1,1,1,1,1,1 it 's traditional moviemaking all the way , but it 's done with a lot of careful period attention as well as some very welcome wit 419 | 0.111 0,0,0,0,0,0,1,0,0 for me , this opera is n't a favorite , so it 's a long time before the fat lady sings 420 | 0.778 1,1,0,1,0,1,1,1,1 grant gets to display his cadness to perfection , but also to show acting range that may surprise some who thought light hearted comedy was his forte 421 | 0.222 1,0,0,0,0,0,1,0,0 i wish i could say `` thank god it 's friday '' , but the truth of the matter is i was glad when it was over 422 | 0.556 0,1,0,0,1,0.5,1,0.5,1 the creaking , rusty ship makes a fine backdrop , but the ghosts ' haunting is routine 423 | 0.111 0,0,0.5,0,0.5,0,0,0,0 i 'm not suggesting that you actually see it , unless you 're the kind of person who has seen every wim wenders film of the '70s 424 | 0.056 0,0.5,0,0,0,0,0,0,0 it may be an easy swipe to take , but this barbershop just does n't make the cut 425 | 0.111 0,0,0,0,0.5,0,0,0.5,0 acting , particularly by tambor , almost makes `` never again '' worthwhile , but lrb writer director rrb schaeffer should follow his titular advice 426 | 0.000 0,0,0,0,0,0,0,0,0,0 unfortunately , heartbreak hospital wants to convey the same kind of haughtiness in its own sketchy material but this territory has already been explored previously with better aplomb and sardonic wit 427 | 0.000 0,0,0,0,0,0,0,0,0 lrb t rrb hose same extremes prevent us from taking its message seriously , and the stepford wives mentality does n't work in a modern context 428 | 0.333 0.5,0,1,0,0,0,0.5,0.5,0.5 if you pitch your expectations at an all time low , you could do worse than this oddly cheerful but not particularly funny body switching farce 429 | 0.389 0.5,0.5,0,0.5,0.5,0.5,0,0.5,0.5 for benigni it was n't shakespeare whom he wanted to define his career with but pinocchio 430 | 0.889 1,1,1,1,1,1,0,1,1 may be spoofing an easy target those old ' 50 's giant creature features but it acknowledges and celebrates their cheesiness as the reason why people get a kick out of watching them today 431 | 0.333 1,0.5,0,0,0,0.5,1,0,0 with danilo donati 's witty designs and dante spinotti 's luscious cinematography , this might have made a decent children 's movie if only benigni had n't insisted on casting himself in the title role 432 | 0.000 0,0,0,0,0,0,0,0,0 aspires for the piquant but only really achieves a sort of ridiculous sourness 433 | 0.111 0,0,0,1,0,0,0,0,0 formula 51 is so trite that even yu 's high energy action stylings ca n't break through the stupor 434 | 0.222 1,0,0,0,0,0,1,0,0 it feels like a community theater production of a great broadway play even at its best , it will never hold a candle to the original 435 | 0.889 1,1,1,1,0,1,1,1,1 there are as many misses as hits , but ultimately , it finds humor in the foibles of human behavior , and it 's a welcome return to the roots of a genre that should depend on surprises 436 | 1.000 1,1,1,1,1,1,1,1,1 far from perfect , but its heart is in the right place innocent and well meaning 437 | 0.778 1,1,1,1,1,0,1,0,1 a recent favourite at sundance , this white trash satire will inspire the affection of even those unlucky people who never owned a cassette of def leppard 's pyromania 438 | 0.056 0,0.5,0,0,0,0,0,0,0 there is not an ounce of honesty in the entire production 439 | 0.056 0,0,0,0,0,0,0.5,0,0 the story is familiar from its many predecessors like them , it eventually culminates in the not exactly stunning insight that crime does n't pay 440 | 0.000 0,0,0,0,0,0,0,0,0 has virtually no script at all 441 | 0.778 1,0,1,1,1,1,1,0.5,0.5 smith 's point is simple and obvious people 's homes are extensions of themselves , and particularly eccentric people have particularly eccentric living spaces but his subjects are charmers 442 | 1.000 1,1,1,1,1,1,1,1,1 it 's an old story , but a lively script , sharp acting and partially animated interludes make just a kiss seem minty fresh 443 | 0.889 1,1,0,1,1,1,1,1,1 i complain all the time about seeing the same ideas repeated in films over and over again , but the bourne identity proves that a fresh take is always possible 444 | 0.000 0,0,0,0,0,0,0,0,0 madonna still ca n't act a lick 445 | 0.000 0,0,0,0,0,0,0,0,0 bad company leaves a bad taste , not only because of its bad luck timing , but also the staleness of its script 446 | 0.000 0,0,0,0,0,0,0,0,0 opens at a funeral , ends on the protagonist 's death bed and does n't get much livelier in the three hours in between 447 | 0.556 0.5,0.5,0.5,0.5,0,0,1,1,1 it 's not exactly a gourmet meal but the fare is fair , even coming from the drive thru 448 | --------------------------------------------------------------------------------