def test_BinarySingleStateFeaturizer(): f = BinarySingleStateFeaturizer() f.input_state_map = {"a": 0, "b": 3, "c": 2, "d": 1} # "a" "d" "c" "b" f.num_features = len(f.input_state_map) encoded = f.encode({"a": 1.0, "b": 1.0, "c": 0.0, "e": 1.0}) assert is_numpy(encoded) assert list(encoded) == [1, 0, 0, 1] encoded = f.encode({"a": 1.0, "b": 0.1, "c": 0.2, "e": 1.0}) assert is_numpy(encoded) assert list(encoded) == [1.0, 0.0, 0.2, 0.1]
def test_binary_featurizer_handles_on_non_existing_features(): f = BinarySingleStateFeaturizer() f.input_state_map = {"a": 0, "b": 3, "c": 2, "d": 1} f.num_features = len(f.input_state_map) encoded = f.encode({"a": 1.0, "b": 1.0, "c": 0.0, "e": 1.0}) assert (encoded == np.array([1, 0, 0, 1])).all()
def test_binary_featurizer_handles_probabilistic_intents(): f = BinarySingleStateFeaturizer() f.input_state_map = {"intent_a": 0, "b": 3, "intent_c": 2, "d": 1} f.num_features = len(f.input_state_map) encoded = f.encode({"intent_a": 0.5, "b": 0.2, "intent_c": 1.0}) assert (encoded == np.array([0.5, 0, 1.0, 0.2])).all()
def test_binary_featurizer_uses_correct_dtype_float(): f = BinarySingleStateFeaturizer() f.input_state_map = {"a": 0, "b": 3, "c": 2, "d": 1} f.num_features = len(f.input_state_map) encoded = f.encode({"a": 1.0, "b": 0.2, "c": 0.0}) assert encoded.dtype == np.float64