예제 #1
0
 def test_get_symmetric_metric_tensor(self):
     metric = krippendorffs_alpha.metrics.NominalMetric()
     expected_matrix = numpy.array([[0, 1, 1, 1, 1], [1, 0, 1, 1, 1],
                                    [1, 1, 0, 1, 1], [1, 1, 1, 0, 1],
                                    [1, 1, 1, 1, 0]])
     result_matrix = metric.get_metric_tensor([0, 1, 2, 3, 4])
     testing_utils.assert_equal_tensors(expected_matrix, result_matrix)
예제 #2
0
 def test_get_asymmetric_metric_tensor(self):
     metric = krippendorffs_alpha.metrics.IntervalMetric()
     expected_matrix = numpy.array([[0, 1, 4, 9, 16], [0, 0, 1, 4, 9],
                                    [0, 0, 0, 1, 4], [0, 0, 0, 0, 1],
                                    [0, 0, 0, 0, 0]])
     result_matrix = metric.get_metric_tensor([0, 1, 2, 3, 4],
                                              symmetric=False)
     testing_utils.assert_equal_tensors(expected_matrix, result_matrix)
예제 #3
0
 def test_get_symmetric_metric_tensor(self):
     metric = krippendorffs_alpha.metrics.RatioMetric()
     expected_matrix = numpy.array([[0, 1, 1, 1, 1],
                                    [1, 0, 1 / 9, 1 / 4, 9 / 25],
                                    [1, 1 / 9, 0, 1 / 25, 4 / 36],
                                    [1, 1 / 4, 1 / 25, 0, 1 / 49],
                                    [1, 9 / 25, 4 / 36, 1 / 49, 0]])
     result_matrix = metric.get_metric_tensor([0, 1, 2, 3, 4])
     testing_utils.assert_equal_tensors(expected_matrix, result_matrix)
예제 #4
0
    def test_data_from_example_omit_unpairable(self):
        expected_value_by_unit_matrix = numpy.array([
            [3, 0, 0, 0, 0, 1, 0, 3, 0, 0, 2],
            [0, 3, 0, 0, 4, 1, 0, 1, 4, 0, 0],
            [0, 1, 4, 4, 0, 1, 0, 0, 0, 0, 0],
            [0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0],
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0],
        ])

        actual_value_by_unit_matrix = krippendorffs_alpha._calculation._make_value_by_unit_matrix_from_data_matrix(
            DATA_MATRIX, omit_unpairable=True
        )
        testing_utils.assert_equal_tensors(expected_value_by_unit_matrix, actual_value_by_unit_matrix)
예제 #5
0
    def test_e_interval(self):
        with open(os.path.join("tests", "example_E_data.tsv"), "r") as f:
            input_table = csv.reader(f, delimiter="\t")
            prepared_data = krippendorffs_alpha.data_converters.from_list_of_lists(
                input_table=input_table,
                header=True,
                row_legend=True,
                upper_level="observer",
                value_constructor=lambda s: int(s.strip()) if s.strip() != "NULL" else None
            )

        testing_utils.assert_equal_tensors(DATA_MATRIX, prepared_data.answers_tensor)
        actual_alpha = krippendorffs_alpha._calculation.calc_alpha(prepared_data, "interval")
        assert actual_alpha == pytest.approx(0.849, abs=0.001)
    def test_values_interval_ram(self):
        metric = "interval"
        strategy = "ram-hungry"
        with open(os.path.join("tests", "example_E_data.tsv"), "r") as f:
            input_table = [row for row in csv.reader(f, delimiter="\t")]
        input_table = input_table[1:]
        input_table = [[
            int(val) if val.strip() != "NULL" else None for val in row[1:]
        ] for row in input_table]

        users_count = len(input_table)
        expected_outed_alphas = []
        for user_index in range(users_count):
            jackknife_table = input_table[:user_index] + input_table[
                user_index + 1:]
            prepared_jackknife_table = krippendorffs_alpha.data_converters.from_list_of_lists(
                jackknife_table,
                header=False,
                row_legend=False,
                upper_level="observer",
                value_constructor=None,
                possible_values=[1, 2, 3, 4, 5])
            outer_alpha = krippendorffs_alpha._calculation.calc_alpha(
                prepared_jackknife_table, metric=metric)
            expected_outed_alphas.append(outer_alpha)

        prepared_input_table = krippendorffs_alpha.data_converters.from_list_of_lists(
            input_table,
            header=False,
            row_legend=False,
            upper_level="observer",
            value_constructor=None,
            possible_values=[1, 2, 3, 4, 5])
        actual_outer_alphas = krippendorffs_alpha._bootstrap.observerwise_jackknife(
            prepared_data=prepared_input_table,
            metric=metric,
            strategy=strategy)

        expected_outed_alphas = numpy.array(expected_outed_alphas)
        assert len(expected_outed_alphas) == len(actual_outer_alphas), (
            len(expected_outed_alphas), len(actual_outer_alphas),
            actual_outer_alphas)
        testing_utils.assert_equal_tensors(expected_outed_alphas,
                                           actual_outer_alphas)
    def test_wikipedia_ratio(self):
        metric = "ratio"
        with open(os.path.join("tests", "example_wikipedia.csv"), "r") as f:
            input_table = [row for row in csv.reader(f, delimiter=",")]
        input_table = input_table[1:]
        input_table = [[
            int(val) if val.strip() != "*" else None for val in row[1:]
        ] for row in input_table]
        input_table = numpy.transpose(input_table).tolist()
        assert isinstance(input_table, list)

        expected_alphas = []
        for unit_index in range(len(input_table)):
            jackknife_table = input_table[:unit_index] + input_table[
                unit_index + 1:]
            prepared_jackknife_table = krippendorffs_alpha.data_converters.from_list_of_lists(
                jackknife_table,
                header=False,
                row_legend=False,
                upper_level="unit",
                value_constructor=None,
                possible_values=[1, 2, 3, 4, 5])
            outer_alpha = krippendorffs_alpha._calculation.calc_alpha(
                prepared_jackknife_table, metric=metric)
            expected_alphas.append(outer_alpha)

        prepared_input_table = krippendorffs_alpha.data_converters.from_list_of_lists(
            input_table,
            header=False,
            row_legend=False,
            upper_level="unit",
            value_constructor=None,
            possible_values=[1, 2, 3, 4, 5])
        actual_outer_alphas = krippendorffs_alpha._bootstrap.unitwise_jackknife(
            prepared_data=prepared_input_table, metric=metric)
        expected_alphas = numpy.array(expected_alphas)
        testing_utils.assert_equal_tensors(expected_alphas,
                                           actual_outer_alphas)