예제 #1
0
    def set(self, article, context, candidate):
        """
        set feature attribute to:
        - greedy score (dim: 1) between candidate response & last k user turns without stop words
        - average embedding score (dim: 1) between candidate response & last k user turns without stop words
        - extrema embedding score (dim: 1) between candidate response & last k user turns without stop words
        """
        if candidate is None or context is None:
            self.feat = None
        else:
            candidate = candidate.lower()
            start = min(len(context), 2 * self.k + 1)
            user_turns = np.array(context)[range(-start, 0, 2)]
            user_turns = ' '.join(user_turns).lower()
            user_turns = ' '.join(
                filter(lambda word: word not in stop,
                       word_tokenize(user_turns)))
            logger.debug("last %d user turns: %s" % (self.k, user_turns))

            res1 = greedy_score(candidate, user_turns)
            res2 = greedy_score(user_turns, candidate)
            self.feat = np.zeros(3)
            self.feat[0] = (res1 + res2) / 2.0
            self.feat[1] = float(average_score(candidate, user_turns))
            self.feat[2] = float(extrema_score(candidate, user_turns))
예제 #2
0
    def set(self, article, context, candidate):
        """
        set feature attribute to:
        - greedy score (dim: 1) between candidate response & article
        - average embedding score (dim: 1) between candidate response & article
        - extrema embedding score (dim: 1) between candidate response & article
        """
        if candidate is None or article is None:
            self.feat = None
        else:
            candidate = candidate.lower()
            article = article.lower()

            res1 = greedy_score(candidate, article)
            res2 = greedy_score(article, candidate)
            self.feat = np.zeros(3)
            self.feat[0] = (res1 + res2) / 2.0
            self.feat[1] = float(average_score(candidate, article))
            self.feat[2] = float(extrema_score(candidate, article))
예제 #3
0
    def set(self, article, context, candidate):
        """
        set feature attribute to:
        - greedy score (dim: 1) between candidate response & last user turn
        - average embedding score (dim: 1) between candidate response & last user turn
        - extrema embedding score (dim: 1) between candidate response & last user turn
        """
        if candidate is None or context is None:
            self.feat = None
        else:
            candidate = candidate.lower()
            last_turn = context[-1].lower()

            res1 = greedy_score(candidate, last_turn)
            res2 = greedy_score(last_turn, candidate)
            self.feat = np.zeros(3)
            self.feat[0] = (res1 + res2) / 2.0
            self.feat[1] = float(average_score(candidate, last_turn))
            self.feat[2] = float(extrema_score(candidate, last_turn))
예제 #4
0
    def set(self, article, context, candidate):
        """
        set feature attribute to:
        - greedy score (dim: 1) between candidate response & last k turns
        - average embedding score (dim: 1) between candidate response & last k turns
        - extrema embedding score (dim: 1) between candidate response & last k turns
        """
        if candidate is None or context is None:
            self.feat = None
        else:
            candidate = candidate.lower()
            last_turns = ' '.join(context[-self.k:]).lower()
            logger.debug("last %d turns: %s" % (self.k, last_turns))

            res1 = greedy_score(candidate, last_turns)
            res2 = greedy_score(last_turns, candidate)
            self.feat = np.zeros(3)
            self.feat[0] = (res1 + res2) / 2.0
            self.feat[1] = float(average_score(candidate, last_turns))
            self.feat[2] = float(extrema_score(candidate, last_turns))
예제 #5
0
    def set(self, article, context, candidate):
        """
        set feature attribute to:
        - greedy score (dim: 1) between candidate response & article without stop words
        - average embedding score (dim: 1) between candidate response & article without stop words
        - extrema embedding score (dim: 1) between candidate response & article without stop words
        """
        if candidate is None or article is None:
            self.feat = None
        else:
            candidate = candidate.lower()
            article = article.lower()
            article = ' '.join(
                filter(lambda word: word not in stop, word_tokenize(article)))

            res1 = greedy_score(candidate, article)
            res2 = greedy_score(article, candidate)
            self.feat = np.zeros(3)
            self.feat[0] = (res1 + res2) / 2.0
            self.feat[1] = float(average_score(candidate, article))
            self.feat[2] = float(extrema_score(candidate, article))