commit fb0d5df815b6bf7e18d882800a63e92f6811495b
parent 347e99fd8c16b2dd6ea5971c79f076e2ef9f9a4f
Author: Étienne Simon <esimon@esimon.eu>
Date: Mon, 6 Oct 2025 07:00:27 +0200
add dataset statistics
Diffstat:
1 file changed, 29 insertions(+), 0 deletions(-)
diff --git a/epsilon_compositionality/compute_statistics.py b/epsilon_compositionality/compute_statistics.py
@@ -51,6 +51,34 @@ def read_similarities(epsilon_method: str, offset: int = 0) -> dict[str, Any]:
return models
+def latex_data_statistics(output_path: pathlib.Path) -> None:
+ num_compounds: int = 0
+ num_sentences: int = 0
+ num_words: int = 0
+ num_epsilons: int = 0
+
+ model_path: pathlib.Path = next(INPUT_PATH.iterdir())
+ with model_path.open("r") as model_file:
+ for line in model_file:
+ compound = json.loads(line)
+ num_compounds += 1
+ for side in ["head", "modifier"]:
+ for sentence in compound[side]:
+ num_sentences += 1
+ num_words += len(sentence["positives"][0]["context_ac"].split())
+ for polarity in ["positives", "negatives"]:
+ num_epsilons += len(sentence[polarity])
+
+ num_sentences //= 2
+ num_words //= 2
+ with output_path.open("w") as output:
+ print(r"\NewDocumentCommand\dataNumCompounds{}{" + str(num_compounds) + "}", file=output)
+ print(r"\NewDocumentCommand\dataNumSentences{}{" + str(num_sentences) + "}", file=output)
+ print(r"\NewDocumentCommand\dataNumEpsilons{}{" + str(num_epsilons) + "}", file=output)
+ print(r"\NewDocumentCommand\dataAvgSentenceLength{}{" + f"{num_words / num_sentences:4.1f}" + "}", file=output)
+ print(r"\NewDocumentCommand\dataAvgAlternatives{}{" + f"{num_epsilons / num_sentences / 2:3.1f}" + "}", file=output)
+
+
def table_cell(positives: list[float], negatives: list[float], method: str) -> str:
wilcoxon = scipy.stats.wilcoxon(positives, negatives, alternative="greater")
if method == "rank biserial":
@@ -117,6 +145,7 @@ def write_violins(output_path: pathlib.Path) -> None:
def main() -> None:
models = read_similarities("multiplicative")
RESULTS_PATH.mkdir(exist_ok=True)
+ latex_data_statistics(RESULTS_PATH / "data statistics.tex")
latex_main_statistics_table(RESULTS_PATH / "main statistics.tex", models)
latex_distances_statistics(RESULTS_PATH / "distances statistics.tex")
write_violins(RESULTS_PATH / "violins.dat")