예제 #1
0
    def test_drop(self):
        pc = PatternCreator()

        pc.add("ET1", "hello")
        pc.add("ET1", "there")
        pc.add("ET2", "world")
        pc.add("ET4", "dog")

        assert pc.to_df().index.to_list() == [0, 1, 2, 3]

        pc.drop([1, 2])

        assert pc.to_df().index.to_list() == [0, 1]
예제 #2
0
    def test_to_df(self):
        pc = PatternCreator()

        pc.add("ET1", "hello")
        pc.add("ET1", "there")

        df_1 = pc.to_df()
        df_2 = pc.to_df()

        df_2.loc[0, "label"] = "REPLACED_LABEL"

        df_3 = pc.to_df()

        assert not df_1.equals(df_2)
        assert df_1.equals(df_3)
예제 #3
0
    def test_overall(self, tmpdir):
        tmpdir_p = pathlib.Path(str(tmpdir)) / "patterns.json"

        pc = PatternCreator()

        assert len(pc.to_df()) == 0

        pc.add("NEW_ENTITY_TYPE", "cake")

        assert len(pc.to_df()) == 1
        assert set(pc.to_df().columns) == {
            "label",
            "attribute_0",
            "value_0",
            "value_type_0",
            "op_0",
        }

        pc.add("COOL_ENTITY_TYPE", {"LEMMA": "pancake", "OP": "*"})

        assert len(pc.to_df()) == 2

        pc.add("SOME_ENTITY_TYPE", [{"TEXT": "good"}, {"TEXT": "pizza"}])

        assert len(pc.to_df()) == 3
        assert set(pc.to_df().columns) == {
            "label",
            "attribute_0",
            "value_0",
            "value_type_0",
            "op_0",
            "attribute_1",
            "value_1",
            "value_type_1",
            "op_1",
        }

        pc.to_jsonl(tmpdir_p)
        pc_loaded = PatternCreator.from_jsonl(tmpdir_p)
        pc_manual = PatternCreator(storage=pc.to_df())

        assert pc == pc_loaded == pc_manual