Beispiel #1
0
    def __init__(self, values, unknown=None):
        super(Labels, self).__init__()
        check.check_set(values)
        self.unknown = unknown
        self._empty = None
        self._encoding = {}
        self._decoding = {}
        labels_prefix = []

        if unknown is not None:
            self._encoding[unknown] = 0
            self._decoding[0] = self.unknown
            labels_prefix = [unknown]

        i = len(self._encoding)
        labels = sorted([label for label in values])

        for value in labels:
            if unknown is None or value != unknown:
                self._encoding[check.check_not_none(value)] = i
                self._decoding[i] = value
                i += 1

        assert len(self._encoding) == len(self._decoding), "%d != %d" % (len(self._encoding), len(self._decoding))
        # Include unknown in the correct position if it's being represented in the labels.
        self._labels = labels_prefix + labels
        self._encoding_copy = {k: v for k, v in self._encoding.items()}
Beispiel #2
0
 def encode(self, value, handle_unknown=False):
     try:
         return self._encoding[check.check_not_none(value)]
     except KeyError as e:
         if handle_unknown:
             return self._encoding[self.unknown]
         else:
             raise e
Beispiel #3
0
 def encode(self, value, handle_oov=False):
     try:
         return self._encoding[check.check_not_none(value)]
     except KeyError as e:
         if handle_oov:
             return self._encoding[self.oov_mapper(value)]
         else:
             raise e
Beispiel #4
0
    def __init__(self,
                 values,
                 special_values=None,
                 oov_mapper=lambda word: None):
        super(Labels, self).__init__()
        check.check_set(values)
        check.check_set(special_values, noneable=True)
        self.oov_mapper = check.check_function(oov_mapper)
        self._empty = None
        self._encoding = {}
        self._decoding = {}
        labels_prefix = []
        i = 0

        if special_values is not None:
            for special in sorted(special_values):
                self._encoding[check.check_not_none(special)] = i
                self._decoding[i] = special
                labels_prefix += [special]
                i += 1

        labels = sorted([label for label in values])

        for value in labels:
            if value in self._encoding:
                raise ValueError(
                    "values and special_values must be disjoint - found both to contain '%s'."
                    % value)

            self._encoding[check.check_not_none(value)] = i
            self._decoding[i] = value
            i += 1

        assert len(self._encoding) == len(self._decoding), "%d != %d" % (len(
            self._encoding), len(self._decoding))
        # Include special values in the front of the labels.
        self._labels = labels_prefix + labels
        self._encoding_copy = {k: v for k, v in self._encoding.items()}
Beispiel #5
0
    def __init__(self, values, unknown=None):
        check.check_instance(values, set)
        self.unknown = unknown
        self._empty = None
        self._encoding = {}
        self._decoding = {}

        if unknown is not None:
            self._encoding[unknown] = 0
            self._decoding[0] = self.unknown

        i = len(self._encoding)

        for value in values:
            self._encoding[check.check_not_none(value)] = i
            self._decoding[i] = value
            i += 1
Beispiel #6
0
 def decode(self, value):
     return self._decoding[check.check_not_none(value)]
Beispiel #7
0
 def __init__(self, word):
     self.word = check.check_not_empty(check.check_not_none(word))
     self.literal = canonicalize_word(word)