aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sec_certs/data/reference_annotations
diff options
context:
space:
mode:
authorAdam Janovsky2023-10-20 10:03:05 +0200
committerAdam Janovsky2023-10-20 10:03:05 +0200
commit4ae9bec3f7ce7c8a4666d16dc23601a4ef000aba (patch)
tree39bf1dec58c897b0859361595c21a3257ae530c8 /src/sec_certs/data/reference_annotations
parent597f25e13f9b56508aaf67aef4d518285ca6e676 (diff)
downloadsec-certs-4ae9bec3f7ce7c8a4666d16dc23601a4ef000aba.tar.gz
sec-certs-4ae9bec3f7ce7c8a4666d16dc23601a4ef000aba.tar.zst
sec-certs-4ae9bec3f7ce7c8a4666d16dc23601a4ef000aba.zip
add inter-annotator agreement
Diffstat (limited to 'src/sec_certs/data/reference_annotations')
-rw-r--r--src/sec_certs/data/reference_annotations/readme.md39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/sec_certs/data/reference_annotations/readme.md b/src/sec_certs/data/reference_annotations/readme.md
index 8ed7eecd..b0d978e6 100644
--- a/src/sec_certs/data/reference_annotations/readme.md
+++ b/src/sec_certs/data/reference_annotations/readme.md
@@ -48,3 +48,42 @@ These can be further merged into the following super-categories:
4. Train a sentence transformer with the same soft-voting layer on top of that.
5. Finetune hyperparameters.
6. Evaluate on test set.
+
+
+## Inter-annotator agreement
+
+The inter-annotator agreement is measured both with Cohen's Kappa and with percentage. The results are as follows:
+
+| Cohen's Kappa | Percentage |
+|---------------|------------|
+| 0.71 | 0.82 |
+
+The code used to measure the agreement is:
+
+```python
+import pandas as pd
+from pathlib import Path
+from sklearn.metrics import cohen_kappa_score
+
+def load_all_dataframes(base_folder: Path) -> pd.DataFrame:
+ splits = ["train", "valid", "test"]
+
+ df_train, df_valid, df_test = pd.DataFrame(), pd.DataFrame(), pd.DataFrame()
+ for split in splits:
+ df = pd.read_csv(base_folder / f"{split}.csv")
+ if split == "train":
+ df_train = df
+ elif split == "valid":
+ df_valid = df
+ else:
+ df_test = df
+
+ return pd.concat([df_train, df_valid, df_test])
+
+adam_df = load_all_dataframes(Path("./src/sec_certs/data/reference_annotations/adam"))
+jano_df = load_all_dataframes(Path("./src/sec_certs/data/reference_annotations/jano"))
+agreement_series = adam_df.label == jano_df.label
+
+print(f"Cohen's Kappa: {cohen_kappa_score(adam_df.label, jano_df.label)}")
+print(f"Percentage agreement: {agreement_series.loc[agreement_series == True].count() / agreement_series.count()}")
+```