Ejemplo n.º 1
0
    def scores(self, data_dir, fquery, freply, fqvocab, frvocab, init=False):
        if not init:
            self.init_model()

        queries = data_helpers.load_file(data_dir, fquery)
        replies = data_helpers.load_file(data_dir, freply)
        data_size = len(queries)

        qvocab = data_helpers.load_vocab(data_dir, fqvocab)
        rvocab = data_helpers.load_vocab(data_dir, frvocab)

        scores=[]
        with self.session.as_default():
            for query, reply in zip(queries, replies):
                ql, qids = data_helpers.transform_to_id(qvocab, query,
                        self.qmax_length)
                rl, rids = data_helpers.transform_to_id(rvocab, reply,
                        self.rmax_length)
                feed_dict = self.make_input_feed([qids], [ql], [rids], [rl], training=False)
                score = self.session.run(self.pos_score, feed_dict)
                scores.append(score[0])
            """ Debug
            for i, s in enumerate(scores):
                print(i,s)
            """
        return scores
    def get_scores(self, query_file, reply_file, query_vocab_file, reply_vocab_file, init=False):
        if not init:
            self.init_model()

        queries = data_helpers.load_file(query_file)
        replies = data_helpers.load_file(reply_file)

        query_vocab = data_helpers.load_vocab(query_vocab_file)
        reply_vocab = data_helpers.load_vocab(reply_vocab_file)

        scores = []
        logger.info('looping over query-reply pairs')
        with self.session.as_default():
            for query, reply in zip(queries, replies):
                q_len, q_ids = data_helpers.transform_to_id(query_vocab, query, self.query_max_length)
                r_len, r_ids = data_helpers.transform_to_id(reply_vocab, reply, self.reply_max_length)
                feed_dict = self.make_input_feed([q_ids], [q_len], [r_ids], [r_len], training=False)
                # When training=False there is no neg_score, so as pos_score.
                score = self.session.run(self.score, feed_dict)
                score = float(score[0])
                scores.append(score)
        return scores