From 101bd81ca1de0c90c5b387032db6ff1acb38b10a Mon Sep 17 00:00:00 2001 From: Marvin Scham Date: Fri, 20 Feb 2026 01:56:28 +0100 Subject: [PATCH] Add helper stuff for figures, cleanup --- README.md | 5 + figures/bali_destinations_labeled.html | 722 +++++++++++ figures/bali_map.py | 116 ++ figures/bargraph.py | 114 ++ figures/requirements.txt | 3 + figures/review_dist.py | 101 ++ figures/review_length_info.json | 604 ++++++++++ figures/review_lengths.json | 31 + figures/reviews_attraktionen.json | 20 + figures/simplify_review_lengths.py | 97 ++ raft/README.md | 35 + raft/make_raft_data.py | 3 - raft/prepare_corpus.py | 2 - raft/rag_chat.py | 2 - raft/rag_chat_merged.py | 19 +- raft/train_mistral_raft.py | 2 - ...uman_eval_example_dataset_integer_only.ods | Bin 31723 -> 0 bytes survey/human_eval_personalized_targets.csv | 1051 ----------------- survey/questions.jsonl | 51 - survey/system-prompt.txt | 48 - 20 files changed, 1862 insertions(+), 1164 deletions(-) create mode 100644 figures/bali_destinations_labeled.html create mode 100644 figures/bali_map.py create mode 100644 figures/bargraph.py create mode 100644 figures/requirements.txt create mode 100644 figures/review_dist.py create mode 100644 figures/review_length_info.json create mode 100644 figures/review_lengths.json create mode 100644 figures/reviews_attraktionen.json create mode 100644 figures/simplify_review_lengths.py create mode 100644 raft/README.md delete mode 100644 survey/human_eval_example_dataset_integer_only.ods delete mode 100644 survey/human_eval_personalized_targets.csv delete mode 100644 survey/questions.jsonl delete mode 100644 survey/system-prompt.txt diff --git a/README.md b/README.md index f5e9236..bca4c04 100644 --- a/README.md +++ b/README.md @@ -33,3 +33,8 @@ Verwendung: ./convert_jupytext.sh py # Jupyter Notebook -> Python ./convert_jupytext.sh nb # Python -> Jupyter Notebook ``` + +## Weitere Infos + +- [README BERTopic](./bertopic/README.md) +- [README RAFT](./raft/README.md) diff --git a/figures/bali_destinations_labeled.html b/figures/bali_destinations_labeled.html new file mode 100644 index 0000000..ac6bed1 --- /dev/null +++ b/figures/bali_destinations_labeled.html @@ -0,0 +1,722 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/figures/bali_map.py b/figures/bali_map.py new file mode 100644 index 0000000..38036d4 --- /dev/null +++ b/figures/bali_map.py @@ -0,0 +1,116 @@ +# bali_map.py +# Creates an interactive HTML map of Bali (and nearby islands) with readable, always-visible labels. + +import folium + +DESTINATIONS = { + "Sacred Monkey Forest": ( + -8.5187511, + 115.2585973, + ), # :contentReference[oaicite:0]{index=0} + "Uluwatu Temple": ( + -8.8291432, + 115.0849069, + ), # :contentReference[oaicite:1]{index=1} + "Sanur Beach": (-8.673889, 115.263611), # :contentReference[oaicite:2]{index=2} + "Tanah Lot Temple": ( + -8.618786, + 115.086733, + ), # :contentReference[oaicite:3]{index=3} + "Seminyak Beach": (-8.6925, 115.158611), # :contentReference[oaicite:4]{index=4} + "Nusa Dua": (-8.791918, 115.225375), # :contentReference[oaicite:5]{index=5} + "Bali Zoo": (-8.59128, 115.26456), # :contentReference[oaicite:6]{index=6} + "Mount Batur": (-8.23889, 115.37750), # :contentReference[oaicite:7]{index=7} + "Ulun Danu Bratan": ( + -8.275177, + 115.1668487, + ), # :contentReference[oaicite:8]{index=8} + "Tirta Gangga": (-8.411944, 115.5875), # :contentReference[oaicite:9]{index=9} + "Pandawa Beach": (-8.84586, 115.18417), # :contentReference[oaicite:10]{index=10} + "Jimbaran Bay": (-8.79093, 115.16006), # :contentReference[oaicite:11]{index=11} + "Double Six Beach": ( + -8.6975074, + 115.1610332, + ), # :contentReference[oaicite:12]{index=12} + "Devil Tears": (-8.6905650, 115.4302884), # :contentReference[oaicite:13]{index=13} + "Kelingking Beach": ( + -8.750644, + 115.474693, + ), # :contentReference[oaicite:14]{index=14} + "Lempuyang Temple": ( + -8.395195, + 115.647885, + ), # :contentReference[oaicite:15]{index=15} + "Canggu Beach": (-8.639877, 115.140172), # :contentReference[oaicite:16]{index=16} + "Mount Agung": (-8.340686, 115.503622), # :contentReference[oaicite:17]{index=17} +} + +# --- Map base --- +m = folium.Map( + location=(-8.45, 115.20), + zoom_start=9, + tiles="CartoDB positron", + control_scale=True, + zoom_snap=0.1, + zoom_delta=0.1, + max_zoom=18, +) + +# --- Label styling (readable, always visible) --- +LABEL_STYLE = """ +padding: 3px 6px; +font-size: 16px; +font-weight: 600; +color: #111; +white-space: nowrap; +""" + +# Per-label pixel offsets (x, y). Positive y moves the label down. +LABEL_OFFSETS = { + "Nusa Dua": (0, 20), + "Double Six Beach": (0, 20), +} + + +def add_point_with_label(name: str, lat: float, lon: float): + # Small dot at the exact coordinate + folium.CircleMarker( + location=(lat, lon), + radius=4, + weight=2, + fill=True, + fill_opacity=1.0, + tooltip=name, # still useful on hover + ).add_to(m) + + # Slightly offset label so it doesn't sit directly on the dot + offset_x, offset_y = LABEL_OFFSETS.get(name, (0, 0)) + base_anchor_x, base_anchor_y = (-8, 12) + folium.Marker( + location=(lat, lon), + icon=folium.DivIcon( + icon_size=(1, 1), + icon_anchor=( + base_anchor_x + offset_x, + base_anchor_y - offset_y, + ), # pixel offset: left/up relative to point + html=f'
{name}
', + ), + ).add_to(m) + + +# Add all destinations +lats, lons = [], [] +for name, (lat, lon) in DESTINATIONS.items(): + add_point_with_label(name, lat, lon) + lats.append(lat) + lons.append(lon) + +# Fit map bounds to include Nusa Penida / Lembongan as well +pad = 0.005 +m.fit_bounds([[min(lats) - pad, min(lons) - pad], [max(lats) + pad, max(lons) + pad]]) + +# Output +out_file = "bali_destinations_labeled.html" +m.save(out_file) +print(f"Saved: {out_file}") diff --git a/figures/bargraph.py b/figures/bargraph.py new file mode 100644 index 0000000..0078a7f --- /dev/null +++ b/figures/bargraph.py @@ -0,0 +1,114 @@ +import argparse +import json +import os +import sys + +import matplotlib.pyplot as plt + + +def load_json_data(file_path): + """ + Load and validate JSON data from a file. + Expected format: + { + "label1": value1, + "label2": value2, + ... + } + """ + if not os.path.exists(file_path): + raise FileNotFoundError(f"File not found: {file_path}") + + with open(file_path, "r", encoding="utf-8") as f: + data = json.load(f) + + if not isinstance(data, dict): + raise ValueError( + "JSON must be an object with key-value pairs (labels: values)." + ) + + for key, value in data.items(): + if not isinstance(key, str): + raise ValueError("All keys must be strings (labels).") + if not isinstance(value, (int, float)): + raise ValueError("All values must be numeric (int or float).") + + return data + + +def create_bar_graph( + data, title="Bar Graph", x_label="Labels", y_label="Values", output=None +): + """ + Create a bar graph from a dictionary of data. + """ + labels = list(data.keys()) + values = list(data.values()) + + plt.figure(figsize=(10, 6)) + plt.bar(labels, values) + plt.xlabel(x_label) + plt.ylabel(y_label) + plt.title(title) + plt.xticks(rotation=45) + plt.tight_layout() + + if output: + plt.savefig(output) + print(f"Graph saved to: {output}") + else: + plt.show() + + +def main(): + parser = argparse.ArgumentParser( + description="Generate a bar graph from a JSON file containing key-value pairs." + ) + parser.add_argument( + "json_path", + type=str, + help="Path to the JSON file (e.g., data.json)", + ) + parser.add_argument( + "--title", + type=str, + default="Bar Graph", + help="Title of the bar graph", + ) + parser.add_argument( + "--x_label", + type=str, + default="Labels", + help="Label for the x-axis", + ) + parser.add_argument( + "--y_label", + type=str, + default="Values", + help="Label for the y-axis", + ) + parser.add_argument( + "--output", + type=str, + default=None, + help="Optional output file path (e.g., graph.png). If not provided, the graph will be displayed.", + ) + + args = parser.parse_args() + + try: + data = load_json_data(args.json_path) + create_bar_graph( + data, + title=args.title, + x_label=args.x_label, + y_label=args.y_label, + output=args.output, + ) + except Exception as e: + print(f"Error: {e}", file=sys.stderr) + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/figures/requirements.txt b/figures/requirements.txt new file mode 100644 index 0000000..9aad9da --- /dev/null +++ b/figures/requirements.txt @@ -0,0 +1,3 @@ +matplotlib +folium +pandas diff --git a/figures/review_dist.py b/figures/review_dist.py new file mode 100644 index 0000000..b92d989 --- /dev/null +++ b/figures/review_dist.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 +""" +Read a .tab (TSV) file with a single column named 'review'. +1) Print number of rows +2) Drop exact duplicate reviews and print count again +3) Build JSON describing the distribution of review length (in words) for remaining reviews +""" + +import argparse +import json +import sys +from collections import Counter +from pathlib import Path + +import pandas as pd + + +def word_count(text: str) -> int: + # Count words by whitespace splitting after stripping. + # Treat non-string / NaN as 0 words (you can change this if you want to drop them). + if not isinstance(text, str): + return 0 + s = text.strip() + if not s: + return 0 + return len(s.split()) + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument( + "input_tab", help="Path to .tab/.tsv file with a 'review' column" + ) + parser.add_argument( + "--out", + default="review_length_distribution.json", + help="Output JSON path (default: review_length_distribution.json)", + ) + args = parser.parse_args() + + in_path = Path(args.input_tab) + if not in_path.exists(): + print(f"ERROR: file not found: {in_path}", file=sys.stderr) + return 1 + + # Read as TSV. Keep empty strings; pandas will use NaN for empty fields unless keep_default_na=False. + df = pd.read_csv(in_path, sep="\t", dtype=str, keep_default_na=False) + + if "review" not in df.columns: + print( + f"ERROR: expected a column named 'review'. Found: {list(df.columns)}", + file=sys.stderr, + ) + return 1 + + n_before = len(df) + print(f"Rows before dedup: {n_before}") + + # Exact duplicates based on the full string in "review". + # If you want to ignore leading/trailing spaces, do df['review']=df['review'].str.strip() first. + df_dedup = df.drop_duplicates(subset=["review"], keep="first").reset_index( + drop=True + ) + + n_after = len(df_dedup) + print(f"Rows after dedup: {n_after}") + + # Compute word counts for remaining reviews + lengths = df_dedup["review"].map(word_count) + + # Distribution (histogram): word_count -> number of reviews + dist = Counter(lengths.tolist()) + + result = { + "file": str(in_path), + "rows_before_dedup": n_before, + "rows_after_dedup": n_after, + "distribution_word_length": { + # JSON keys must be strings; keep as strings for portability. + str(k): v + for k, v in sorted(dist.items(), key=lambda kv: int(kv[0])) + }, + "summary": { + "min_words": int(lengths.min()) if len(lengths) else 0, + "max_words": int(lengths.max()) if len(lengths) else 0, + "mean_words": float(lengths.mean()) if len(lengths) else 0.0, + "median_words": float(lengths.median()) if len(lengths) else 0.0, + }, + } + + out_path = Path(args.out) + out_path.write_text( + json.dumps(result, ensure_ascii=False, indent=2), encoding="utf-8" + ) + print(f"Wrote JSON: {out_path}") + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/figures/review_length_info.json b/figures/review_length_info.json new file mode 100644 index 0000000..9f55d2d --- /dev/null +++ b/figures/review_length_info.json @@ -0,0 +1,604 @@ +{ + "file": "../data/original/reviews.tab", + "rows_before_dedup": 56446, + "rows_after_dedup": 55662, + "distribution_word_length": { + "8": 1, + "9": 5, + "10": 10, + "11": 14, + "12": 20, + "13": 29, + "14": 37, + "15": 92, + "16": 163, + "17": 308, + "18": 482, + "19": 728, + "20": 859, + "21": 977, + "22": 944, + "23": 989, + "24": 937, + "25": 1032, + "26": 946, + "27": 927, + "28": 928, + "29": 920, + "30": 926, + "31": 879, + "32": 897, + "33": 856, + "34": 759, + "35": 829, + "36": 774, + "37": 708, + "38": 771, + "39": 717, + "40": 693, + "41": 737, + "42": 734, + "43": 655, + "44": 616, + "45": 630, + "46": 680, + "47": 609, + "48": 588, + "49": 586, + "50": 598, + "51": 562, + "52": 543, + "53": 563, + "54": 549, + "55": 551, + "56": 478, + "57": 522, + "58": 450, + "59": 515, + "60": 509, + "61": 461, + "62": 453, + "63": 451, + "64": 483, + "65": 403, + "66": 442, + "67": 404, + "68": 418, + "69": 389, + "70": 394, + "71": 355, + "72": 357, + "73": 389, + "74": 360, + "75": 356, + "76": 338, + "77": 330, + "78": 308, + "79": 327, + "80": 303, + "81": 302, + "82": 306, + "83": 273, + "84": 276, + "85": 265, + "86": 268, + "87": 263, + "88": 264, + "89": 229, + "90": 244, + "91": 239, + "92": 212, + "93": 267, + "94": 211, + "95": 226, + "96": 247, + "97": 219, + "98": 239, + "99": 201, + "100": 220, + "101": 213, + "102": 180, + "103": 194, + "104": 204, + "105": 201, + "106": 200, + "107": 149, + "108": 189, + "109": 196, + "110": 178, + "111": 140, + "112": 157, + "113": 150, + "114": 160, + "115": 130, + "116": 151, + "117": 159, + "118": 151, + "119": 118, + "120": 138, + "121": 115, + "122": 107, + "123": 121, + "124": 99, + "125": 135, + "126": 126, + "127": 125, + "128": 97, + "129": 99, + "130": 95, + "131": 92, + "132": 86, + "133": 108, + "134": 115, + "135": 101, + "136": 101, + "137": 103, + "138": 91, + "139": 81, + "140": 92, + "141": 91, + "142": 95, + "143": 76, + "144": 84, + "145": 91, + "146": 84, + "147": 87, + "148": 92, + "149": 73, + "150": 78, + "151": 71, + "152": 76, + "153": 87, + "154": 60, + "155": 67, + "156": 67, + "157": 88, + "158": 56, + "159": 66, + "160": 41, + "161": 56, + "162": 61, + "163": 68, + "164": 62, + "165": 67, + "166": 52, + "167": 62, + "168": 47, + "169": 41, + "170": 49, + "171": 47, + "172": 43, + "173": 39, + "174": 61, + "175": 56, + "176": 55, + "177": 47, + "178": 34, + "179": 44, + "180": 43, + "181": 37, + "182": 48, + "183": 47, + "184": 39, + "185": 38, + "186": 42, + "187": 42, + "188": 35, + "189": 43, + "190": 39, + "191": 38, + "192": 37, + "193": 27, + "194": 28, + "195": 40, + "196": 33, + "197": 36, + "198": 40, + "199": 35, + "200": 30, + "201": 28, + "202": 28, + "203": 26, + "204": 28, + "205": 32, + "206": 31, + "207": 36, + "208": 36, + "209": 24, + "210": 20, + "211": 34, + "212": 26, + "213": 31, + "214": 27, + "215": 25, + "216": 23, + "217": 26, + "218": 20, + "219": 20, + "220": 20, + "221": 28, + "222": 15, + "223": 18, + "224": 17, + "225": 22, + "226": 16, + "227": 29, + "228": 27, + "229": 23, + "230": 14, + "231": 23, + "232": 22, + "233": 21, + "234": 23, + "235": 16, + "236": 18, + "237": 14, + "238": 11, + "239": 17, + "240": 8, + "241": 16, + "242": 12, + "243": 18, + "244": 15, + "245": 11, + "246": 24, + "247": 14, + "248": 18, + "249": 15, + "250": 11, + "251": 17, + "252": 17, + "253": 15, + "254": 17, + "255": 18, + "256": 14, + "257": 21, + "258": 13, + "259": 16, + "260": 10, + "261": 20, + "262": 8, + "263": 9, + "264": 11, + "265": 16, + "266": 6, + "267": 14, + "268": 14, + "269": 12, + "270": 11, + "271": 12, + "272": 9, + "273": 5, + "274": 7, + "275": 4, + "276": 6, + "277": 10, + "278": 11, + "279": 13, + "280": 7, + "281": 9, + "282": 6, + "283": 9, + "284": 10, + "285": 9, + "286": 11, + "287": 8, + "288": 5, + "289": 6, + "290": 8, + "291": 4, + "292": 11, + "293": 6, + "294": 11, + "295": 11, + "296": 7, + "297": 4, + "298": 7, + "299": 13, + "300": 7, + "301": 15, + "302": 10, + "303": 7, + "304": 11, + "305": 3, + "306": 7, + "307": 8, + "308": 6, + "309": 4, + "310": 7, + "311": 4, + "312": 8, + "313": 5, + "314": 1, + "315": 8, + "316": 8, + "317": 9, + "318": 8, + "319": 6, + "320": 8, + "321": 2, + "322": 8, + "323": 6, + "324": 9, + "325": 6, + "326": 8, + "327": 3, + "328": 8, + "329": 7, + "330": 5, + "331": 8, + "332": 7, + "333": 2, + "334": 1, + "335": 9, + "336": 4, + "337": 6, + "338": 4, + "339": 3, + "340": 6, + "341": 5, + "342": 3, + "343": 4, + "344": 3, + "345": 5, + "346": 3, + "347": 5, + "348": 3, + "349": 3, + "350": 3, + "351": 2, + "352": 8, + "353": 4, + "354": 4, + "355": 4, + "356": 3, + "357": 4, + "358": 3, + "359": 3, + "360": 8, + "361": 6, + "362": 5, + "363": 8, + "364": 4, + "365": 6, + "366": 3, + "367": 7, + "368": 4, + "369": 8, + "370": 2, + "371": 2, + "372": 7, + "373": 5, + "374": 4, + "375": 1, + "376": 1, + "377": 3, + "378": 1, + "379": 2, + "380": 2, + "381": 2, + "382": 3, + "383": 2, + "384": 1, + "385": 1, + "386": 2, + "387": 4, + "388": 6, + "389": 4, + "390": 4, + "391": 3, + "392": 3, + "393": 2, + "394": 2, + "395": 7, + "396": 6, + "397": 2, + "398": 2, + "401": 1, + "402": 5, + "403": 1, + "404": 3, + "405": 4, + "406": 1, + "407": 1, + "409": 3, + "410": 2, + "411": 1, + "412": 1, + "413": 2, + "414": 3, + "415": 4, + "416": 2, + "417": 2, + "418": 3, + "419": 1, + "420": 2, + "421": 4, + "422": 1, + "424": 3, + "425": 4, + "426": 4, + "427": 1, + "428": 1, + "429": 2, + "430": 2, + "431": 4, + "433": 1, + "434": 1, + "436": 1, + "437": 1, + "438": 5, + "439": 1, + "440": 2, + "441": 1, + "443": 4, + "444": 3, + "445": 1, + "446": 5, + "448": 1, + "449": 4, + "451": 2, + "452": 1, + "455": 3, + "456": 1, + "457": 1, + "458": 1, + "459": 1, + "463": 2, + "464": 1, + "465": 2, + "466": 2, + "467": 2, + "469": 1, + "470": 1, + "474": 1, + "475": 5, + "476": 1, + "477": 1, + "478": 1, + "479": 3, + "481": 1, + "482": 1, + "484": 1, + "485": 2, + "489": 1, + "490": 1, + "494": 3, + "495": 1, + "497": 1, + "499": 1, + "501": 1, + "502": 1, + "503": 1, + "504": 1, + "505": 1, + "506": 1, + "508": 3, + "510": 2, + "511": 4, + "518": 1, + "519": 2, + "520": 1, + "522": 1, + "523": 1, + "524": 1, + "525": 1, + "526": 1, + "527": 1, + "537": 1, + "540": 1, + "541": 1, + "543": 1, + "545": 2, + "546": 3, + "554": 1, + "555": 1, + "557": 2, + "558": 1, + "559": 1, + "562": 1, + "564": 3, + "566": 1, + "568": 1, + "573": 1, + "578": 2, + "580": 2, + "581": 1, + "583": 1, + "584": 1, + "585": 1, + "586": 1, + "588": 1, + "592": 1, + "594": 2, + "595": 1, + "597": 2, + "598": 1, + "601": 1, + "609": 1, + "610": 1, + "612": 1, + "613": 2, + "615": 1, + "618": 2, + "620": 2, + "622": 1, + "623": 1, + "624": 1, + "626": 1, + "635": 1, + "637": 1, + "639": 1, + "643": 2, + "645": 1, + "649": 2, + "651": 1, + "654": 1, + "658": 1, + "661": 1, + "667": 1, + "670": 1, + "671": 1, + "672": 1, + "673": 1, + "676": 1, + "679": 2, + "686": 1, + "691": 1, + "694": 2, + "698": 1, + "701": 1, + "708": 1, + "710": 1, + "711": 1, + "715": 1, + "719": 1, + "723": 1, + "729": 2, + "737": 1, + "739": 1, + "745": 1, + "747": 1, + "753": 1, + "755": 1, + "756": 1, + "765": 1, + "786": 1, + "794": 1, + "799": 1, + "810": 1, + "813": 1, + "816": 2, + "822": 1, + "873": 1, + "880": 1, + "891": 1, + "912": 1, + "945": 1, + "957": 1, + "960": 1, + "987": 1, + "992": 1, + "1005": 1, + "1035": 1, + "1046": 1, + "1073": 1, + "1096": 1, + "1099": 1, + "1196": 2, + "1233": 1, + "1263": 1, + "1329": 1, + "1597": 1, + "1699": 1, + "1893": 1, + "2244": 1, + "2537": 1 + }, + "summary": { + "min_words": 8, + "max_words": 2537, + "mean_words": 72.6454133879487, + "median_words": 53.0 + } +} diff --git a/figures/review_lengths.json b/figures/review_lengths.json new file mode 100644 index 0000000..6c800d5 --- /dev/null +++ b/figures/review_lengths.json @@ -0,0 +1,31 @@ +{ + "<10": 6, + "10-19": 1883, + "20-29": 9459, + "30-39": 8116, + "40-49": 6528, + "50-59": 5331, + "60-69": 4413, + "70-79": 3514, + "80-89": 2749, + "90-99": 2305, + "100-109": 1946, + "110-119": 1494, + "120-129": 1162, + "130-139": 973, + "140-149": 865, + "150-159": 716, + "160-169": 557, + "170-179": 475, + "180-189": 414, + "190-199": 353, + "200-219": 551, + "220-239": 394, + "240-259": 310, + "260-279": 208, + "280-299": 162, + "300-399": 479, + "400-499": 145, + "500-999": 138, + "1000+": 16 +} diff --git a/figures/reviews_attraktionen.json b/figures/reviews_attraktionen.json new file mode 100644 index 0000000..4d59a36 --- /dev/null +++ b/figures/reviews_attraktionen.json @@ -0,0 +1,20 @@ +{ + "Sacred Monkey\nForest": 18542, + "Uluwatu Temple": 5902, + "Sanur Beach": 4526, + "Tanah Lot Temple": 4218, + "Seminyak Beach": 3761, + "Nusa Dua": 3324, + "Bali Zoo": 2640, + "Mount Batur": 1815, + "Ulun Danu Bratan": 1722, + "Tirta Gangga": 1557, + "Pandawa Beach": 1511, + "Jimbaran Bay": 1430, + "Double Six Beach": 1323, + "Devil Tears": 1263, + "Kelingking Beach": 713, + "Lempuyang Temple": 596, + "Canggu Beach": 555, + "Mount Agung": 266 +} diff --git a/figures/simplify_review_lengths.py b/figures/simplify_review_lengths.py new file mode 100644 index 0000000..7810530 --- /dev/null +++ b/figures/simplify_review_lengths.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python3 +"""Aggregate review length counts into buckets.""" +from __future__ import annotations + +import argparse +import json +from pathlib import Path +from typing import Dict, Iterable, Tuple + +Bucket = Tuple[int | None, int | None, str] + + +DEFAULT_BUCKETS: Tuple[Bucket, ...] = ( + (None, 9, "<10"), + (10, 19, "10-19"), + (20, 29, "20-29"), + (30, 39, "30-39"), + (40, 49, "40-49"), + (50, 59, "50-59"), + (60, 69, "60-69"), + (70, 79, "70-79"), + (80, 89, "80-89"), + (90, 99, "90-99"), + (100, 109, "100-109"), + (110, 119, "110-119"), + (120, 129, "120-129"), + (130, 139, "130-139"), + (140, 149, "140-149"), + (150, 159, "150-159"), + (160, 169, "160-169"), + (170, 179, "170-179"), + (180, 189, "180-189"), + (190, 199, "190-199"), + (200, 219, "200-219"), + (220, 239, "220-239"), + (240, 259, "240-259"), + (260, 279, "260-279"), + (280, 299, "280-299"), + (300, 399, "300-399"), + (400, 499, "400-499"), + (500, 999, "500-999"), + (1000, None, "1000+"), +) + + +def load_counts(path: Path) -> Dict[int, int]: + with path.open("r", encoding="utf-8") as handle: + raw = json.load(handle) + return {int(k): int(v) for k, v in raw.items()} + + +def aggregate(counts: Dict[int, int], buckets: Iterable[Bucket]) -> Dict[str, int]: + output: Dict[str, int] = {label: 0 for _, _, label in buckets} + for length, count in counts.items(): + for start, end, label in buckets: + if start is None and end is not None and length <= end: + output[label] += count + break + if end is None and start is not None and length >= start: + output[label] += count + break + if start is not None and end is not None and start <= length <= end: + output[label] += count + break + else: + raise ValueError(f"No bucket found for length {length}.") + return output + + +def write_output(path: Path, data: Dict[str, int]) -> None: + with path.open("w", encoding="utf-8") as handle: + json.dump(data, handle, indent=2, ensure_ascii=False) + handle.write("\n") + + +def main() -> int: + parser = argparse.ArgumentParser(description="Bucket review length counts.") + parser.add_argument( + "input", + type=Path, + help="Path to review_lengths.json (mapping of length -> count).", + ) + parser.add_argument( + "output", + type=Path, + help="Path to write bucketed counts JSON.", + ) + args = parser.parse_args() + + counts = load_counts(args.input) + bucketed = aggregate(counts, DEFAULT_BUCKETS) + write_output(args.output, bucketed) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/raft/README.md b/raft/README.md new file mode 100644 index 0000000..3238255 --- /dev/null +++ b/raft/README.md @@ -0,0 +1,35 @@ +# Retrieval-Augmented Finetuning (RAFT) + +**Ablauf**: + +## Vorbereiten des Retrieval-Corpus + +```bash +python prepare_corpus.py --input_tab ../data/intermediate/selected_topics_documents.csv --out_dir out +``` + +## Erstellen des RAFT-Datensatzes + +```bash +python make_raft_data.py --out_dir out --n_examples 100 +``` + +## Training der QLoRA-Adapter + +```bash +python train_mistral_raft.py --train_jsonl out/raft_train.jsonl --out_dir out/mistral_balitwin_lora +``` + +## Inferenz + +### Per Baseline Mistral 7B + PEFT-Adapter + +```bash +python rag_chat.py --lora_dir out/mistral_balitwin_lora +``` + +### Pre-Merged Modell + Adapter + +```bash +python rag_chat_merged.py --model_dir /path/to/model_folder --out_dir out +``` diff --git a/raft/make_raft_data.py b/raft/make_raft_data.py index 5ebc616..55c8e6d 100644 --- a/raft/make_raft_data.py +++ b/raft/make_raft_data.py @@ -10,9 +10,6 @@ from sentence_transformers import SentenceTransformer from tqdm import tqdm from transformers import AutoModelForCausalLM, AutoTokenizer -## Usage: python make_raft_data.py --out_dir out --n_examples 5000 - - SYSTEM_PERSONA = """You are 'BaliTwin', a culturally versed Bali traveler. You give your opinions nand guidance with local etiquette and context. You avoid stereotypes. You explain local etiquette, customs, and context. diff --git a/raft/prepare_corpus.py b/raft/prepare_corpus.py index ed29d1b..ca16eb2 100644 --- a/raft/prepare_corpus.py +++ b/raft/prepare_corpus.py @@ -9,8 +9,6 @@ import pandas as pd from sentence_transformers import SentenceTransformer from tqdm import tqdm -## Usage: python prepare_corpus.py --input_tab your_reviews.tab --out_dir out - def simple_clean(text: str) -> str: if not isinstance(text, str): diff --git a/raft/rag_chat.py b/raft/rag_chat.py index 35b1b22..9e0c053 100644 --- a/raft/rag_chat.py +++ b/raft/rag_chat.py @@ -9,8 +9,6 @@ from peft import PeftModel from sentence_transformers import SentenceTransformer from transformers import AutoModelForCausalLM, AutoTokenizer -## Usage: python rag_chat.py --lora_dir out/mistral_balitwin_lora - SYSTEM_PERSONA = """You are 'BaliTwin', a culturally versed Bali traveler. You give your opinions nand guidance with local etiquette and context. Use the provided CONTEXT; include 1-2 short quotes as evidence. diff --git a/raft/rag_chat_merged.py b/raft/rag_chat_merged.py index 3e9b04f..a593a56 100644 --- a/raft/rag_chat_merged.py +++ b/raft/rag_chat_merged.py @@ -8,12 +8,21 @@ import torch from sentence_transformers import SentenceTransformer from transformers import AutoModelForCausalLM, AutoTokenizer -## Usage: python rag_chat_merged.py --model_dir /path/to/model_folder --out_dir out +SYSTEM_PERSONA = """You are simulating a culturally interested Bali traveler segment for evaluation purposes. -SYSTEM_PERSONA = """You are 'BaliTwin', a culturally versed Bali traveler. -You give your opinions nand guidance with local etiquette and context. -Use the provided CONTEXT; include 1-2 short quotes as evidence. -If the context does not support the claim, say so. +Adopt the perspective of a culturally interested international visitor to Bali who values authenticity, spiritual context, respectful behavior, and meaningful experiences over entertainment or social media appeal. + +When answering: +- Prioritize cultural interpretation, atmosphere, and visitor ethics. +- Weigh trade-offs thoughtfully (e.g., crowds vs. significance). +- Avoid generic travel advice and avoid promotional language. +- Do not exaggerate. +- Provide nuanced, reflective reasoning rather than bullet lists. +- Keep answers concise but specific. + +Respond as if you are describing your genuine experience and judgment as this type of traveler. + +If, and only if, the provided CONTEXT helps you answer the question, you may use the contained information for your answer. """ diff --git a/raft/train_mistral_raft.py b/raft/train_mistral_raft.py index c833613..b82acaf 100644 --- a/raft/train_mistral_raft.py +++ b/raft/train_mistral_raft.py @@ -8,8 +8,6 @@ from peft import LoraConfig from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig from trl import SFTConfig, SFTTrainer -## Usage: python train_mistral_raft.py --train_jsonl out/raft_train.jsonl --out_dir out/mistral_balitwin_lora - def main(): ap = argparse.ArgumentParser() diff --git a/survey/human_eval_example_dataset_integer_only.ods b/survey/human_eval_example_dataset_integer_only.ods deleted file mode 100644 index 73d202c58154b861e69ffda5d7262f6f99178bb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31723 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 diff --git a/survey/human_eval_personalized_targets.csv b/survey/human_eval_personalized_targets.csv deleted file mode 100644 index 6f9a89b..0000000 --- a/survey/human_eval_personalized_targets.csv +++ /dev/null @@ -1,1051 +0,0 @@ -question_id,evaluator_id,model,relevance,readability,availability,,,relevance,readability,availability -1,E1,Mistral,2,2,1,,Mistral,2.20,2.51,1.94 -1,E1,Finetuned Mistral,2,2,1,,Finetuned Mistral,2.55,2.47,2.32 -1,E1,ChatGPT,2,3,1,,ChatGPT,2.66,2.48,2.25 -1,E2,Mistral,2,2,2,,,,, -1,E2,Finetuned Mistral,3,2,3,,E1,2.45,2.45,2.10 -1,E2,ChatGPT,3,3,2,,E2,2.48,2.46,2.19 -1,E3,Mistral,2,2,1,,E3,2.49,2.49,2.21 -1,E3,Finetuned Mistral,2,2,1,,E4,2.47,2.48,2.13 -1,E3,ChatGPT,2,2,2,,E5,2.49,2.53,2.19 -1,E4,Mistral,3,3,2,,E6,2.49,2.50,2.23 -1,E4,Finetuned Mistral,2,2,3,,E7,2.42,2.51,2.15 -1,E4,ChatGPT,3,3,2,,,,, -1,E5,Mistral,2,2,1,,1,2.33,2.24,1.62 -1,E5,Finetuned Mistral,2,2,1,,2,2.86,2.76,2.90 -1,E5,ChatGPT,2,2,1,,3,1.76,1.71,1.10 -1,E6,Mistral,2,2,2,,4,2.71,2.57,2.29 -1,E6,Finetuned Mistral,2,1,1,,5,2.43,2.38,2.10 -1,E6,ChatGPT,2,1,1,,6,2.76,2.71,2.71 -1,E7,Mistral,3,3,2,,7,2.62,2.71,2.48 -1,E7,Finetuned Mistral,3,3,2,,8,2.90,2.81,2.48 -1,E7,ChatGPT,3,3,2,,9,2.38,2.29,2.33 -2,E1,Mistral,2,3,3,,10,2.67,2.67,2.10 -2,E1,Finetuned Mistral,3,3,3,,11,2.24,2.05,1.14 -2,E1,ChatGPT,3,2,3,,12,2.67,2.81,2.33 -2,E2,Mistral,3,3,3,,13,2.14,2.48,1.67 -2,E2,Finetuned Mistral,3,3,3,,14,2.62,2.81,2.52 -2,E2,ChatGPT,3,3,3,,15,2.71,2.62,2.81 -2,E3,Mistral,2,3,3,,16,1.81,1.86,1.57 -2,E3,Finetuned Mistral,3,3,3,,17,2.10,2.10,1.95 -2,E3,ChatGPT,3,2,3,,18,2.57,2.71,2.33 -2,E4,Mistral,3,3,3,,19,2.90,2.67,2.76 -2,E4,Finetuned Mistral,3,2,3,,20,2.71,2.71,2.29 -2,E4,ChatGPT,3,3,3,,21,1.71,1.86,1.52 -2,E5,Mistral,3,3,3,,22,2.67,2.43,2.57 -2,E5,Finetuned Mistral,3,2,3,,23,2.57,2.76,2.52 -2,E5,ChatGPT,3,3,3,,24,2.62,2.76,2.76 -2,E6,Mistral,3,3,2,,25,2.29,2.52,1.95 -2,E6,Finetuned Mistral,3,3,3,,26,1.52,1.57,1.33 -2,E6,ChatGPT,3,3,3,,27,2.48,2.52,2.24 -2,E7,Mistral,2,3,2,,28,1.76,1.95,1.38 -2,E7,Finetuned Mistral,3,3,3,,29,2.67,2.62,2.52 -2,E7,ChatGPT,3,2,3,,30,2.24,2.48,2.05 -3,E1,Mistral,2,2,1,,31,2.95,2.86,2.67 -3,E1,Finetuned Mistral,1,2,1,,32,2.52,2.71,2.86 -3,E1,ChatGPT,1,2,1,,33,2.33,2.48,2.05 -3,E2,Mistral,2,2,1,,34,1.52,1.76,1.29 -3,E2,Finetuned Mistral,2,1,1,,35,2.52,2.57,2.38 -3,E2,ChatGPT,2,2,2,,36,2.48,2.38,2.14 -3,E3,Mistral,1,1,0,,37,1.67,1.57,1.00 -3,E3,Finetuned Mistral,1,1,1,,38,2.67,2.81,2.81 -3,E3,ChatGPT,2,1,1,,39,2.52,2.62,1.81 -3,E4,Mistral,2,2,1,,40,2.57,2.43,1.52 -3,E4,Finetuned Mistral,2,2,1,,41,2.76,2.90,1.86 -3,E4,ChatGPT,3,2,1,,42,2.52,2.33,2.24 -3,E5,Mistral,2,2,1,,43,3.00,2.90,2.67 -3,E5,Finetuned Mistral,1,2,1,,44,2.67,2.38,2.24 -3,E5,ChatGPT,2,1,1,,45,2.43,2.57,1.76 -3,E6,Mistral,2,2,1,,46,3.00,3.00,2.24 -3,E6,Finetuned Mistral,2,1,2,,47,2.90,2.81,2.81 -3,E6,ChatGPT,2,2,2,,48,2.86,2.76,2.57 -3,E7,Mistral,1,2,1,,49,2.76,2.76,2.76 -3,E7,Finetuned Mistral,2,2,1,,50,2.48,2.67,2.52 -3,E7,ChatGPT,2,2,1,,,,, -4,E1,Mistral,2,3,2,,,,, -4,E1,Finetuned Mistral,2,2,1,,,,, -4,E1,ChatGPT,2,2,2,,,,, -4,E2,Mistral,3,3,2,,,,, -4,E2,Finetuned Mistral,3,3,3,,,,, -4,E2,ChatGPT,3,3,3,,,,, -4,E3,Mistral,3,3,3,,,,, -4,E3,Finetuned Mistral,3,2,3,,,,, -4,E3,ChatGPT,3,3,3,,,,, -4,E4,Mistral,3,3,2,,,,, -4,E4,Finetuned Mistral,3,3,3,,,,, -4,E4,ChatGPT,3,2,2,,,,, -4,E5,Mistral,2,2,2,,,,, -4,E5,Finetuned Mistral,3,2,2,,,,, -4,E5,ChatGPT,3,3,3,,,,, -4,E6,Mistral,3,3,2,,,,, -4,E6,Finetuned Mistral,3,3,2,,,,, -4,E6,ChatGPT,3,2,2,,,,, -4,E7,Mistral,2,2,2,,,,, -4,E7,Finetuned Mistral,2,2,2,,,,, -4,E7,ChatGPT,3,3,2,,,,, -5,E1,Mistral,2,2,2,,,,, -5,E1,Finetuned Mistral,3,3,2,,,,, -5,E1,ChatGPT,3,3,2,,,,, -5,E2,Mistral,2,2,1,,,,, -5,E2,Finetuned Mistral,2,2,2,,,,, -5,E2,ChatGPT,2,3,2,,,,, -5,E3,Mistral,2,2,2,,,,, -5,E3,Finetuned Mistral,3,2,3,,,,, -5,E3,ChatGPT,3,3,3,,,,, -5,E4,Mistral,2,2,1,,,,, -5,E4,Finetuned Mistral,2,2,2,,,,, -5,E4,ChatGPT,2,2,1,,,,, -5,E5,Mistral,2,2,2,,,,, -5,E5,Finetuned Mistral,3,3,2,,,,, -5,E5,ChatGPT,3,3,2,,,,, -5,E6,Mistral,2,2,2,,,,, -5,E6,Finetuned Mistral,3,2,2,,,,, -5,E6,ChatGPT,3,3,3,,,,, -5,E7,Mistral,1,2,2,,,,, -5,E7,Finetuned Mistral,3,2,3,,,,, -5,E7,ChatGPT,3,3,3,,,,, -6,E1,Mistral,3,3,3,,,,, -6,E1,Finetuned Mistral,3,2,3,,,,, -6,E1,ChatGPT,3,3,3,,,,, -6,E2,Mistral,2,3,2,,,,, -6,E2,Finetuned Mistral,3,3,2,,,,, -6,E2,ChatGPT,3,2,2,,,,, -6,E3,Mistral,3,3,3,,,,, -6,E3,Finetuned Mistral,3,2,2,,,,, -6,E3,ChatGPT,3,3,3,,,,, -6,E4,Mistral,2,2,2,,,,, -6,E4,Finetuned Mistral,3,3,3,,,,, -6,E4,ChatGPT,3,3,3,,,,, -6,E5,Mistral,2,3,2,,,,, -6,E5,Finetuned Mistral,3,3,3,,,,, -6,E5,ChatGPT,3,2,3,,,,, -6,E6,Mistral,2,3,3,,,,, -6,E6,Finetuned Mistral,3,3,3,,,,, -6,E6,ChatGPT,3,2,3,,,,, -6,E7,Mistral,2,3,3,,,,, -6,E7,Finetuned Mistral,3,3,3,,,,, -6,E7,ChatGPT,3,3,3,,,,, -7,E1,Mistral,3,3,3,,,,, -7,E1,Finetuned Mistral,2,2,3,,,,, -7,E1,ChatGPT,3,3,3,,,,, -7,E2,Mistral,2,3,2,,,,, -7,E2,Finetuned Mistral,3,3,2,,,,, -7,E2,ChatGPT,3,3,3,,,,, -7,E3,Mistral,3,3,2,,,,, -7,E3,Finetuned Mistral,3,3,2,,,,, -7,E3,ChatGPT,3,3,2,,,,, -7,E4,Mistral,2,2,2,,,,, -7,E4,Finetuned Mistral,2,2,2,,,,, -7,E4,ChatGPT,2,2,2,,,,, -7,E5,Mistral,3,3,2,,,,, -7,E5,Finetuned Mistral,3,3,3,,,,, -7,E5,ChatGPT,3,3,3,,,,, -7,E6,Mistral,2,3,2,,,,, -7,E6,Finetuned Mistral,2,3,3,,,,, -7,E6,ChatGPT,3,3,3,,,,, -7,E7,Mistral,2,2,2,,,,, -7,E7,Finetuned Mistral,3,2,3,,,,, -7,E7,ChatGPT,3,3,3,,,,, -8,E1,Mistral,3,3,2,,,,, -8,E1,Finetuned Mistral,3,2,2,,,,, -8,E1,ChatGPT,3,3,2,,,,, -8,E2,Mistral,3,3,2,,,,, -8,E2,Finetuned Mistral,3,2,3,,,,, -8,E2,ChatGPT,3,2,3,,,,, -8,E3,Mistral,3,3,2,,,,, -8,E3,Finetuned Mistral,3,3,3,,,,, -8,E3,ChatGPT,3,3,3,,,,, -8,E4,Mistral,2,3,2,,,,, -8,E4,Finetuned Mistral,3,3,2,,,,, -8,E4,ChatGPT,3,3,3,,,,, -8,E5,Mistral,2,3,2,,,,, -8,E5,Finetuned Mistral,3,3,2,,,,, -8,E5,ChatGPT,3,3,2,,,,, -8,E6,Mistral,3,3,3,,,,, -8,E6,Finetuned Mistral,3,2,3,,,,, -8,E6,ChatGPT,3,3,3,,,,, -8,E7,Mistral,3,3,2,,,,, -8,E7,Finetuned Mistral,3,3,3,,,,, -8,E7,ChatGPT,3,3,3,,,,, -9,E1,Mistral,2,2,1,,,,, -9,E1,Finetuned Mistral,2,2,2,,,,, -9,E1,ChatGPT,2,2,2,,,,, -9,E2,Mistral,2,3,3,,,,, -9,E2,Finetuned Mistral,3,2,3,,,,, -9,E2,ChatGPT,3,3,3,,,,, -9,E3,Mistral,2,2,2,,,,, -9,E3,Finetuned Mistral,2,2,2,,,,, -9,E3,ChatGPT,3,3,3,,,,, -9,E4,Mistral,2,2,1,,,,, -9,E4,Finetuned Mistral,2,2,2,,,,, -9,E4,ChatGPT,3,2,3,,,,, -9,E5,Mistral,2,2,2,,,,, -9,E5,Finetuned Mistral,3,2,3,,,,, -9,E5,ChatGPT,3,3,3,,,,, -9,E6,Mistral,2,2,2,,,,, -9,E6,Finetuned Mistral,3,3,2,,,,, -9,E6,ChatGPT,3,2,2,,,,, -9,E7,Mistral,1,2,2,,,,, -9,E7,Finetuned Mistral,2,3,3,,,,, -9,E7,ChatGPT,3,2,3,,,,, -10,E1,Mistral,2,3,2,,,,, -10,E1,Finetuned Mistral,3,3,3,,,,, -10,E1,ChatGPT,3,3,3,,,,, -10,E2,Mistral,2,2,1,,,,, -10,E2,Finetuned Mistral,3,2,2,,,,, -10,E2,ChatGPT,3,2,1,,,,, -10,E3,Mistral,3,3,3,,,,, -10,E3,Finetuned Mistral,3,3,3,,,,, -10,E3,ChatGPT,3,3,3,,,,, -10,E4,Mistral,2,2,1,,,,, -10,E4,Finetuned Mistral,2,2,1,,,,, -10,E4,ChatGPT,2,2,2,,,,, -10,E5,Mistral,3,2,2,,,,, -10,E5,Finetuned Mistral,3,3,2,,,,, -10,E5,ChatGPT,3,3,2,,,,, -10,E6,Mistral,2,3,2,,,,, -10,E6,Finetuned Mistral,3,3,3,,,,, -10,E6,ChatGPT,3,3,2,,,,, -10,E7,Mistral,2,3,2,,,,, -10,E7,Finetuned Mistral,3,3,2,,,,, -10,E7,ChatGPT,3,3,2,,,,, -11,E1,Mistral,2,2,1,,,,, -11,E1,Finetuned Mistral,3,2,2,,,,, -11,E1,ChatGPT,3,2,1,,,,, -11,E2,Mistral,2,2,1,,,,, -11,E2,Finetuned Mistral,3,2,1,,,,, -11,E2,ChatGPT,3,2,1,,,,, -11,E3,Mistral,2,2,1,,,,, -11,E3,Finetuned Mistral,2,2,1,,,,, -11,E3,ChatGPT,2,2,1,,,,, -11,E4,Mistral,1,2,1,,,,, -11,E4,Finetuned Mistral,2,2,2,,,,, -11,E4,ChatGPT,2,2,1,,,,, -11,E5,Mistral,2,2,0,,,,, -11,E5,Finetuned Mistral,3,3,2,,,,, -11,E5,ChatGPT,2,2,2,,,,, -11,E6,Mistral,1,2,1,,,,, -11,E6,Finetuned Mistral,2,2,1,,,,, -11,E6,ChatGPT,2,2,2,,,,, -11,E7,Mistral,2,2,0,,,,, -11,E7,Finetuned Mistral,3,2,1,,,,, -11,E7,ChatGPT,3,2,1,,,,, -12,E1,Mistral,3,3,2,,,,, -12,E1,Finetuned Mistral,3,3,3,,,,, -12,E1,ChatGPT,3,3,2,,,,, -12,E2,Mistral,2,3,2,,,,, -12,E2,Finetuned Mistral,3,3,2,,,,, -12,E2,ChatGPT,3,3,2,,,,, -12,E3,Mistral,2,3,2,,,,, -12,E3,Finetuned Mistral,2,3,2,,,,, -12,E3,ChatGPT,2,3,2,,,,, -12,E4,Mistral,2,2,1,,,,, -12,E4,Finetuned Mistral,2,2,2,,,,, -12,E4,ChatGPT,2,3,2,,,,, -12,E5,Mistral,3,3,3,,,,, -12,E5,Finetuned Mistral,3,3,3,,,,, -12,E5,ChatGPT,3,2,3,,,,, -12,E6,Mistral,3,3,2,,,,, -12,E6,Finetuned Mistral,3,3,3,,,,, -12,E6,ChatGPT,3,3,2,,,,, -12,E7,Mistral,3,3,3,,,,, -12,E7,Finetuned Mistral,3,3,3,,,,, -12,E7,ChatGPT,3,2,3,,,,, -13,E1,Mistral,2,3,2,,,,, -13,E1,Finetuned Mistral,3,2,3,,,,, -13,E1,ChatGPT,3,3,2,,,,, -13,E2,Mistral,2,2,1,,,,, -13,E2,Finetuned Mistral,2,2,3,,,,, -13,E2,ChatGPT,2,2,1,,,,, -13,E3,Mistral,2,2,1,,,,, -13,E3,Finetuned Mistral,2,3,2,,,,, -13,E3,ChatGPT,2,3,1,,,,, -13,E4,Mistral,2,3,2,,,,, -13,E4,Finetuned Mistral,2,2,2,,,,, -13,E4,ChatGPT,3,3,2,,,,, -13,E5,Mistral,2,2,1,,,,, -13,E5,Finetuned Mistral,2,3,2,,,,, -13,E5,ChatGPT,2,3,1,,,,, -13,E6,Mistral,2,2,2,,,,, -13,E6,Finetuned Mistral,2,2,2,,,,, -13,E6,ChatGPT,2,1,1,,,,, -13,E7,Mistral,2,3,1,,,,, -13,E7,Finetuned Mistral,2,3,2,,,,, -13,E7,ChatGPT,2,3,1,,,,, -14,E1,Mistral,2,2,2,,,,, -14,E1,Finetuned Mistral,3,3,2,,,,, -14,E1,ChatGPT,3,3,2,,,,, -14,E2,Mistral,3,3,3,,,,, -14,E2,Finetuned Mistral,2,3,3,,,,, -14,E2,ChatGPT,3,3,3,,,,, -14,E3,Mistral,2,3,2,,,,, -14,E3,Finetuned Mistral,3,3,3,,,,, -14,E3,ChatGPT,3,3,3,,,,, -14,E4,Mistral,2,3,2,,,,, -14,E4,Finetuned Mistral,3,3,3,,,,, -14,E4,ChatGPT,3,3,2,,,,, -14,E5,Mistral,2,3,2,,,,, -14,E5,Finetuned Mistral,2,3,3,,,,, -14,E5,ChatGPT,3,3,3,,,,, -14,E6,Mistral,2,3,2,,,,, -14,E6,Finetuned Mistral,3,3,3,,,,, -14,E6,ChatGPT,3,2,3,,,,, -14,E7,Mistral,2,3,3,,,,, -14,E7,Finetuned Mistral,3,2,2,,,,, -14,E7,ChatGPT,3,2,2,,,,, -15,E1,Mistral,2,2,2,,,,, -15,E1,Finetuned Mistral,3,3,3,,,,, -15,E1,ChatGPT,3,2,3,,,,, -15,E2,Mistral,2,2,3,,,,, -15,E2,Finetuned Mistral,2,2,3,,,,, -15,E2,ChatGPT,3,3,3,,,,, -15,E3,Mistral,3,3,2,,,,, -15,E3,Finetuned Mistral,2,2,3,,,,, -15,E3,ChatGPT,3,3,3,,,,, -15,E4,Mistral,3,3,2,,,,, -15,E4,Finetuned Mistral,3,2,3,,,,, -15,E4,ChatGPT,3,3,3,,,,, -15,E5,Mistral,2,3,3,,,,, -15,E5,Finetuned Mistral,3,2,3,,,,, -15,E5,ChatGPT,3,3,3,,,,, -15,E6,Mistral,2,3,3,,,,, -15,E6,Finetuned Mistral,3,3,3,,,,, -15,E6,ChatGPT,3,3,3,,,,, -15,E7,Mistral,3,3,2,,,,, -15,E7,Finetuned Mistral,3,2,3,,,,, -15,E7,ChatGPT,3,3,3,,,,, -16,E1,Mistral,2,2,1,,,,, -16,E1,Finetuned Mistral,2,1,2,,,,, -16,E1,ChatGPT,2,2,2,,,,, -16,E2,Mistral,1,2,1,,,,, -16,E2,Finetuned Mistral,2,2,2,,,,, -16,E2,ChatGPT,1,1,1,,,,, -16,E3,Mistral,2,2,1,,,,, -16,E3,Finetuned Mistral,2,2,2,,,,, -16,E3,ChatGPT,2,2,1,,,,, -16,E4,Mistral,2,2,1,,,,, -16,E4,Finetuned Mistral,2,2,2,,,,, -16,E4,ChatGPT,2,2,1,,,,, -16,E5,Mistral,2,2,1,,,,, -16,E5,Finetuned Mistral,2,2,2,,,,, -16,E5,ChatGPT,2,2,1,,,,, -16,E6,Mistral,1,2,2,,,,, -16,E6,Finetuned Mistral,2,1,2,,,,, -16,E6,ChatGPT,2,2,2,,,,, -16,E7,Mistral,1,2,2,,,,, -16,E7,Finetuned Mistral,2,2,2,,,,, -16,E7,ChatGPT,2,2,2,,,,, -17,E1,Mistral,1,2,1,,,,, -17,E1,Finetuned Mistral,2,3,2,,,,, -17,E1,ChatGPT,2,1,2,,,,, -17,E2,Mistral,2,2,2,,,,, -17,E2,Finetuned Mistral,3,3,3,,,,, -17,E2,ChatGPT,2,1,2,,,,, -17,E3,Mistral,1,2,2,,,,, -17,E3,Finetuned Mistral,3,3,3,,,,, -17,E3,ChatGPT,3,2,2,,,,, -17,E4,Mistral,2,2,2,,,,, -17,E4,Finetuned Mistral,3,3,2,,,,, -17,E4,ChatGPT,3,2,3,,,,, -17,E5,Mistral,2,2,1,,,,, -17,E5,Finetuned Mistral,2,3,2,,,,, -17,E5,ChatGPT,2,2,2,,,,, -17,E6,Mistral,1,1,1,,,,, -17,E6,Finetuned Mistral,2,3,2,,,,, -17,E6,ChatGPT,2,2,2,,,,, -17,E7,Mistral,1,1,0,,,,, -17,E7,Finetuned Mistral,2,2,3,,,,, -17,E7,ChatGPT,3,2,2,,,,, -18,E1,Mistral,3,3,2,,,,, -18,E1,Finetuned Mistral,3,3,2,,,,, -18,E1,ChatGPT,3,3,2,,,,, -18,E2,Mistral,2,2,2,,,,, -18,E2,Finetuned Mistral,2,2,2,,,,, -18,E2,ChatGPT,2,3,2,,,,, -18,E3,Mistral,3,3,3,,,,, -18,E3,Finetuned Mistral,2,3,3,,,,, -18,E3,ChatGPT,3,3,3,,,,, -18,E4,Mistral,3,3,2,,,,, -18,E4,Finetuned Mistral,3,3,3,,,,, -18,E4,ChatGPT,3,3,2,,,,, -18,E5,Mistral,2,2,2,,,,, -18,E5,Finetuned Mistral,2,2,2,,,,, -18,E5,ChatGPT,3,2,2,,,,, -18,E6,Mistral,2,2,2,,,,, -18,E6,Finetuned Mistral,3,3,3,,,,, -18,E6,ChatGPT,3,3,2,,,,, -18,E7,Mistral,2,3,2,,,,, -18,E7,Finetuned Mistral,2,3,3,,,,, -18,E7,ChatGPT,3,3,3,,,,, -19,E1,Mistral,3,3,2,,,,, -19,E1,Finetuned Mistral,3,2,3,,,,, -19,E1,ChatGPT,3,3,3,,,,, -19,E2,Mistral,2,3,2,,,,, -19,E2,Finetuned Mistral,3,2,3,,,,, -19,E2,ChatGPT,3,2,3,,,,, -19,E3,Mistral,3,3,3,,,,, -19,E3,Finetuned Mistral,3,3,3,,,,, -19,E3,ChatGPT,3,2,3,,,,, -19,E4,Mistral,3,3,2,,,,, -19,E4,Finetuned Mistral,3,3,2,,,,, -19,E4,ChatGPT,3,2,3,,,,, -19,E5,Mistral,3,3,3,,,,, -19,E5,Finetuned Mistral,3,3,3,,,,, -19,E5,ChatGPT,3,2,3,,,,, -19,E6,Mistral,3,3,3,,,,, -19,E6,Finetuned Mistral,3,3,3,,,,, -19,E6,ChatGPT,3,3,3,,,,, -19,E7,Mistral,2,3,2,,,,, -19,E7,Finetuned Mistral,3,3,3,,,,, -19,E7,ChatGPT,3,2,3,,,,, -20,E1,Mistral,2,3,2,,,,, -20,E1,Finetuned Mistral,3,3,2,,,,, -20,E1,ChatGPT,3,3,3,,,,, -20,E2,Mistral,3,3,2,,,,, -20,E2,Finetuned Mistral,3,3,2,,,,, -20,E2,ChatGPT,3,3,3,,,,, -20,E3,Mistral,3,3,2,,,,, -20,E3,Finetuned Mistral,2,2,3,,,,, -20,E3,ChatGPT,3,2,3,,,,, -20,E4,Mistral,3,3,2,,,,, -20,E4,Finetuned Mistral,3,3,2,,,,, -20,E4,ChatGPT,3,2,3,,,,, -20,E5,Mistral,2,3,2,,,,, -20,E5,Finetuned Mistral,2,3,2,,,,, -20,E5,ChatGPT,2,2,2,,,,, -20,E6,Mistral,3,3,2,,,,, -20,E6,Finetuned Mistral,3,3,2,,,,, -20,E6,ChatGPT,3,2,2,,,,, -20,E7,Mistral,2,3,2,,,,, -20,E7,Finetuned Mistral,3,3,3,,,,, -20,E7,ChatGPT,3,2,2,,,,, -21,E1,Mistral,1,2,2,,,,, -21,E1,Finetuned Mistral,2,2,2,,,,, -21,E1,ChatGPT,2,1,1,,,,, -21,E2,Mistral,2,2,1,,,,, -21,E2,Finetuned Mistral,2,2,1,,,,, -21,E2,ChatGPT,2,2,1,,,,, -21,E3,Mistral,1,2,1,,,,, -21,E3,Finetuned Mistral,2,2,2,,,,, -21,E3,ChatGPT,2,2,1,,,,, -21,E4,Mistral,2,2,1,,,,, -21,E4,Finetuned Mistral,2,2,2,,,,, -21,E4,ChatGPT,2,2,1,,,,, -21,E5,Mistral,1,2,2,,,,, -21,E5,Finetuned Mistral,1,2,1,,,,, -21,E5,ChatGPT,1,1,1,,,,, -21,E6,Mistral,2,2,2,,,,, -21,E6,Finetuned Mistral,2,2,2,,,,, -21,E6,ChatGPT,2,2,2,,,,, -21,E7,Mistral,1,2,2,,,,, -21,E7,Finetuned Mistral,2,2,2,,,,, -21,E7,ChatGPT,2,1,2,,,,, -22,E1,Mistral,2,3,3,,,,, -22,E1,Finetuned Mistral,3,2,3,,,,, -22,E1,ChatGPT,3,2,3,,,,, -22,E2,Mistral,3,3,2,,,,, -22,E2,Finetuned Mistral,3,3,3,,,,, -22,E2,ChatGPT,3,2,3,,,,, -22,E3,Mistral,2,3,2,,,,, -22,E3,Finetuned Mistral,2,2,2,,,,, -22,E3,ChatGPT,3,2,2,,,,, -22,E4,Mistral,3,3,2,,,,, -22,E4,Finetuned Mistral,3,3,2,,,,, -22,E4,ChatGPT,3,2,2,,,,, -22,E5,Mistral,2,3,3,,,,, -22,E5,Finetuned Mistral,2,2,3,,,,, -22,E5,ChatGPT,3,2,3,,,,, -22,E6,Mistral,3,3,2,,,,, -22,E6,Finetuned Mistral,3,2,3,,,,, -22,E6,ChatGPT,3,2,3,,,,, -22,E7,Mistral,2,3,2,,,,, -22,E7,Finetuned Mistral,2,2,3,,,,, -22,E7,ChatGPT,3,2,3,,,,, -23,E1,Mistral,2,3,3,,,,, -23,E1,Finetuned Mistral,2,2,2,,,,, -23,E1,ChatGPT,3,2,3,,,,, -23,E2,Mistral,2,3,3,,,,, -23,E2,Finetuned Mistral,2,2,3,,,,, -23,E2,ChatGPT,3,3,2,,,,, -23,E3,Mistral,2,3,2,,,,, -23,E3,Finetuned Mistral,3,3,3,,,,, -23,E3,ChatGPT,3,3,2,,,,, -23,E4,Mistral,2,3,2,,,,, -23,E4,Finetuned Mistral,3,3,3,,,,, -23,E4,ChatGPT,3,3,2,,,,, -23,E5,Mistral,2,3,2,,,,, -23,E5,Finetuned Mistral,3,3,3,,,,, -23,E5,ChatGPT,3,2,3,,,,, -23,E6,Mistral,2,3,3,,,,, -23,E6,Finetuned Mistral,3,3,3,,,,, -23,E6,ChatGPT,3,2,3,,,,, -23,E7,Mistral,2,3,2,,,,, -23,E7,Finetuned Mistral,3,3,2,,,,, -23,E7,ChatGPT,3,3,2,,,,, -24,E1,Mistral,2,3,3,,,,, -24,E1,Finetuned Mistral,2,2,3,,,,, -24,E1,ChatGPT,3,2,3,,,,, -24,E2,Mistral,3,3,3,,,,, -24,E2,Finetuned Mistral,3,2,3,,,,, -24,E2,ChatGPT,2,3,3,,,,, -24,E3,Mistral,2,3,3,,,,, -24,E3,Finetuned Mistral,3,2,3,,,,, -24,E3,ChatGPT,3,3,2,,,,, -24,E4,Mistral,2,3,3,,,,, -24,E4,Finetuned Mistral,3,3,3,,,,, -24,E4,ChatGPT,3,3,3,,,,, -24,E5,Mistral,2,3,2,,,,, -24,E5,Finetuned Mistral,3,2,3,,,,, -24,E5,ChatGPT,3,3,3,,,,, -24,E6,Mistral,2,3,2,,,,, -24,E6,Finetuned Mistral,3,3,3,,,,, -24,E6,ChatGPT,3,3,3,,,,, -24,E7,Mistral,2,3,2,,,,, -24,E7,Finetuned Mistral,3,3,2,,,,, -24,E7,ChatGPT,3,3,3,,,,, -25,E1,Mistral,2,2,2,,,,, -25,E1,Finetuned Mistral,3,3,2,,,,, -25,E1,ChatGPT,3,3,2,,,,, -25,E2,Mistral,2,2,1,,,,, -25,E2,Finetuned Mistral,2,3,2,,,,, -25,E2,ChatGPT,2,2,1,,,,, -25,E3,Mistral,1,2,1,,,,, -25,E3,Finetuned Mistral,3,3,2,,,,, -25,E3,ChatGPT,2,2,2,,,,, -25,E4,Mistral,2,3,2,,,,, -25,E4,Finetuned Mistral,3,3,2,,,,, -25,E4,ChatGPT,2,3,2,,,,, -25,E5,Mistral,2,2,2,,,,, -25,E5,Finetuned Mistral,3,3,3,,,,, -25,E5,ChatGPT,3,3,2,,,,, -25,E6,Mistral,2,2,2,,,,, -25,E6,Finetuned Mistral,2,3,3,,,,, -25,E6,ChatGPT,3,2,3,,,,, -25,E7,Mistral,2,2,1,,,,, -25,E7,Finetuned Mistral,2,3,2,,,,, -25,E7,ChatGPT,2,2,2,,,,, -26,E1,Mistral,1,2,0,,,,, -26,E1,Finetuned Mistral,2,1,2,,,,, -26,E1,ChatGPT,2,2,1,,,,, -26,E2,Mistral,1,2,0,,,,, -26,E2,Finetuned Mistral,1,1,1,,,,, -26,E2,ChatGPT,1,2,1,,,,, -26,E3,Mistral,1,2,1,,,,, -26,E3,Finetuned Mistral,2,2,2,,,,, -26,E3,ChatGPT,2,2,2,,,,, -26,E4,Mistral,1,1,2,,,,, -26,E4,Finetuned Mistral,1,1,2,,,,, -26,E4,ChatGPT,1,2,2,,,,, -26,E5,Mistral,1,1,0,,,,, -26,E5,Finetuned Mistral,2,1,2,,,,, -26,E5,ChatGPT,2,1,1,,,,, -26,E6,Mistral,2,2,1,,,,, -26,E6,Finetuned Mistral,2,1,2,,,,, -26,E6,ChatGPT,2,2,2,,,,, -26,E7,Mistral,1,2,0,,,,, -26,E7,Finetuned Mistral,2,1,2,,,,, -26,E7,ChatGPT,2,2,2,,,,, -27,E1,Mistral,2,3,2,,,,, -27,E1,Finetuned Mistral,3,3,2,,,,, -27,E1,ChatGPT,3,2,3,,,,, -27,E2,Mistral,3,3,2,,,,, -27,E2,Finetuned Mistral,3,3,2,,,,, -27,E2,ChatGPT,3,2,3,,,,, -27,E3,Mistral,2,2,2,,,,, -27,E3,Finetuned Mistral,3,2,2,,,,, -27,E3,ChatGPT,3,2,2,,,,, -27,E4,Mistral,2,3,2,,,,, -27,E4,Finetuned Mistral,2,3,3,,,,, -27,E4,ChatGPT,2,3,2,,,,, -27,E5,Mistral,3,3,2,,,,, -27,E5,Finetuned Mistral,3,2,3,,,,, -27,E5,ChatGPT,3,2,2,,,,, -27,E6,Mistral,2,3,2,,,,, -27,E6,Finetuned Mistral,2,2,2,,,,, -27,E6,ChatGPT,2,2,2,,,,, -27,E7,Mistral,2,3,2,,,,, -27,E7,Finetuned Mistral,2,3,3,,,,, -27,E7,ChatGPT,2,2,2,,,,, -28,E1,Mistral,2,2,1,,,,, -28,E1,Finetuned Mistral,2,2,1,,,,, -28,E1,ChatGPT,2,3,1,,,,, -28,E2,Mistral,1,2,1,,,,, -28,E2,Finetuned Mistral,2,2,2,,,,, -28,E2,ChatGPT,2,2,2,,,,, -28,E3,Mistral,1,2,1,,,,, -28,E3,Finetuned Mistral,2,1,2,,,,, -28,E3,ChatGPT,2,2,2,,,,, -28,E4,Mistral,1,2,1,,,,, -28,E4,Finetuned Mistral,2,2,1,,,,, -28,E4,ChatGPT,2,2,2,,,,, -28,E5,Mistral,2,2,1,,,,, -28,E5,Finetuned Mistral,2,2,2,,,,, -28,E5,ChatGPT,2,2,1,,,,, -28,E6,Mistral,1,2,1,,,,, -28,E6,Finetuned Mistral,2,2,2,,,,, -28,E6,ChatGPT,2,2,1,,,,, -28,E7,Mistral,1,2,1,,,,, -28,E7,Finetuned Mistral,2,1,2,,,,, -28,E7,ChatGPT,2,2,1,,,,, -29,E1,Mistral,2,3,3,,,,, -29,E1,Finetuned Mistral,3,2,2,,,,, -29,E1,ChatGPT,2,3,2,,,,, -29,E2,Mistral,2,3,3,,,,, -29,E2,Finetuned Mistral,3,2,3,,,,, -29,E2,ChatGPT,3,3,2,,,,, -29,E3,Mistral,2,3,3,,,,, -29,E3,Finetuned Mistral,3,2,3,,,,, -29,E3,ChatGPT,3,3,3,,,,, -29,E4,Mistral,2,2,3,,,,, -29,E4,Finetuned Mistral,3,3,3,,,,, -29,E4,ChatGPT,3,3,2,,,,, -29,E5,Mistral,3,3,3,,,,, -29,E5,Finetuned Mistral,3,2,2,,,,, -29,E5,ChatGPT,2,3,3,,,,, -29,E6,Mistral,3,3,3,,,,, -29,E6,Finetuned Mistral,3,2,2,,,,, -29,E6,ChatGPT,3,3,2,,,,, -29,E7,Mistral,2,3,2,,,,, -29,E7,Finetuned Mistral,3,2,2,,,,, -29,E7,ChatGPT,3,2,2,,,,, -30,E1,Mistral,2,2,1,,,,, -30,E1,Finetuned Mistral,2,2,2,,,,, -30,E1,ChatGPT,2,2,2,,,,, -30,E2,Mistral,1,2,1,,,,, -30,E2,Finetuned Mistral,2,2,2,,,,, -30,E2,ChatGPT,2,2,2,,,,, -30,E3,Mistral,2,2,1,,,,, -30,E3,Finetuned Mistral,2,3,2,,,,, -30,E3,ChatGPT,3,3,3,,,,, -30,E4,Mistral,1,2,2,,,,, -30,E4,Finetuned Mistral,3,3,2,,,,, -30,E4,ChatGPT,3,3,3,,,,, -30,E5,Mistral,2,2,2,,,,, -30,E5,Finetuned Mistral,3,3,2,,,,, -30,E5,ChatGPT,3,3,3,,,,, -30,E6,Mistral,2,2,2,,,,, -30,E6,Finetuned Mistral,2,3,2,,,,, -30,E6,ChatGPT,3,3,3,,,,, -30,E7,Mistral,2,2,2,,,,, -30,E7,Finetuned Mistral,2,3,2,,,,, -30,E7,ChatGPT,3,3,2,,,,, -31,E1,Mistral,3,3,3,,,,, -31,E1,Finetuned Mistral,3,2,2,,,,, -31,E1,ChatGPT,3,2,3,,,,, -31,E2,Mistral,3,3,3,,,,, -31,E2,Finetuned Mistral,3,3,2,,,,, -31,E2,ChatGPT,3,2,2,,,,, -31,E3,Mistral,3,3,3,,,,, -31,E3,Finetuned Mistral,3,3,3,,,,, -31,E3,ChatGPT,3,3,2,,,,, -31,E4,Mistral,3,3,3,,,,, -31,E4,Finetuned Mistral,3,3,2,,,,, -31,E4,ChatGPT,3,3,3,,,,, -31,E5,Mistral,3,3,3,,,,, -31,E5,Finetuned Mistral,2,3,3,,,,, -31,E5,ChatGPT,3,3,3,,,,, -31,E6,Mistral,3,3,2,,,,, -31,E6,Finetuned Mistral,3,3,2,,,,, -31,E6,ChatGPT,3,3,3,,,,, -31,E7,Mistral,3,3,3,,,,, -31,E7,Finetuned Mistral,3,3,3,,,,, -31,E7,ChatGPT,3,3,3,,,,, -32,E1,Mistral,2,3,3,,,,, -32,E1,Finetuned Mistral,3,3,3,,,,, -32,E1,ChatGPT,2,3,3,,,,, -32,E2,Mistral,3,2,3,,,,, -32,E2,Finetuned Mistral,3,3,3,,,,, -32,E2,ChatGPT,3,3,3,,,,, -32,E3,Mistral,2,2,3,,,,, -32,E3,Finetuned Mistral,2,3,3,,,,, -32,E3,ChatGPT,3,2,3,,,,, -32,E4,Mistral,3,3,3,,,,, -32,E4,Finetuned Mistral,3,3,3,,,,, -32,E4,ChatGPT,3,2,3,,,,, -32,E5,Mistral,2,3,3,,,,, -32,E5,Finetuned Mistral,2,3,3,,,,, -32,E5,ChatGPT,3,3,3,,,,, -32,E6,Mistral,3,3,3,,,,, -32,E6,Finetuned Mistral,2,2,3,,,,, -32,E6,ChatGPT,3,2,3,,,,, -32,E7,Mistral,2,3,2,,,,, -32,E7,Finetuned Mistral,2,3,2,,,,, -32,E7,ChatGPT,2,3,2,,,,, -33,E1,Mistral,2,2,2,,,,, -33,E1,Finetuned Mistral,3,3,2,,,,, -33,E1,ChatGPT,3,3,2,,,,, -33,E2,Mistral,1,2,2,,,,, -33,E2,Finetuned Mistral,3,2,3,,,,, -33,E2,ChatGPT,3,3,2,,,,, -33,E3,Mistral,1,2,2,,,,, -33,E3,Finetuned Mistral,3,3,3,,,,, -33,E3,ChatGPT,3,3,3,,,,, -33,E4,Mistral,2,2,1,,,,, -33,E4,Finetuned Mistral,2,2,2,,,,, -33,E4,ChatGPT,2,2,1,,,,, -33,E5,Mistral,2,2,2,,,,, -33,E5,Finetuned Mistral,3,3,2,,,,, -33,E5,ChatGPT,3,3,2,,,,, -33,E6,Mistral,2,2,2,,,,, -33,E6,Finetuned Mistral,3,3,3,,,,, -33,E6,ChatGPT,2,3,3,,,,, -33,E7,Mistral,2,2,1,,,,, -33,E7,Finetuned Mistral,2,2,1,,,,, -33,E7,ChatGPT,2,3,2,,,,, -34,E1,Mistral,1,2,2,,,,, -34,E1,Finetuned Mistral,2,2,1,,,,, -34,E1,ChatGPT,2,2,2,,,,, -34,E2,Mistral,1,2,1,,,,, -34,E2,Finetuned Mistral,2,2,1,,,,, -34,E2,ChatGPT,2,3,1,,,,, -34,E3,Mistral,1,1,1,,,,, -34,E3,Finetuned Mistral,1,1,1,,,,, -34,E3,ChatGPT,1,2,2,,,,, -34,E4,Mistral,2,2,1,,,,, -34,E4,Finetuned Mistral,2,2,1,,,,, -34,E4,ChatGPT,2,1,2,,,,, -34,E5,Mistral,2,2,2,,,,, -34,E5,Finetuned Mistral,1,2,1,,,,, -34,E5,ChatGPT,1,2,2,,,,, -34,E6,Mistral,2,2,1,,,,, -34,E6,Finetuned Mistral,2,2,1,,,,, -34,E6,ChatGPT,2,2,1,,,,, -34,E7,Mistral,1,1,1,,,,, -34,E7,Finetuned Mistral,1,1,1,,,,, -34,E7,ChatGPT,1,1,1,,,,, -35,E1,Mistral,2,2,2,,,,, -35,E1,Finetuned Mistral,3,3,2,,,,, -35,E1,ChatGPT,3,3,3,,,,, -35,E2,Mistral,2,2,2,,,,, -35,E2,Finetuned Mistral,2,2,2,,,,, -35,E2,ChatGPT,2,2,2,,,,, -35,E3,Mistral,3,3,2,,,,, -35,E3,Finetuned Mistral,3,2,3,,,,, -35,E3,ChatGPT,3,3,3,,,,, -35,E4,Mistral,2,3,2,,,,, -35,E4,Finetuned Mistral,3,2,3,,,,, -35,E4,ChatGPT,3,3,2,,,,, -35,E5,Mistral,2,3,2,,,,, -35,E5,Finetuned Mistral,3,3,2,,,,, -35,E5,ChatGPT,3,3,3,,,,, -35,E6,Mistral,2,2,3,,,,, -35,E6,Finetuned Mistral,3,3,3,,,,, -35,E6,ChatGPT,3,3,3,,,,, -35,E7,Mistral,2,2,2,,,,, -35,E7,Finetuned Mistral,2,2,2,,,,, -35,E7,ChatGPT,2,3,2,,,,, -36,E1,Mistral,1,2,1,,,,, -36,E1,Finetuned Mistral,2,2,2,,,,, -36,E1,ChatGPT,3,2,1,,,,, -36,E2,Mistral,2,2,2,,,,, -36,E2,Finetuned Mistral,3,3,3,,,,, -36,E2,ChatGPT,3,2,3,,,,, -36,E3,Mistral,3,2,2,,,,, -36,E3,Finetuned Mistral,3,3,3,,,,, -36,E3,ChatGPT,3,3,3,,,,, -36,E4,Mistral,2,2,1,,,,, -36,E4,Finetuned Mistral,3,2,3,,,,, -36,E4,ChatGPT,2,2,2,,,,, -36,E5,Mistral,2,2,2,,,,, -36,E5,Finetuned Mistral,3,3,2,,,,, -36,E5,ChatGPT,2,3,3,,,,, -36,E6,Mistral,2,2,1,,,,, -36,E6,Finetuned Mistral,3,3,2,,,,, -36,E6,ChatGPT,3,3,2,,,,, -36,E7,Mistral,2,2,2,,,,, -36,E7,Finetuned Mistral,3,2,3,,,,, -36,E7,ChatGPT,2,3,2,,,,, -37,E1,Mistral,1,2,0,,,,, -37,E1,Finetuned Mistral,2,1,1,,,,, -37,E1,ChatGPT,2,1,1,,,,, -37,E2,Mistral,2,2,1,,,,, -37,E2,Finetuned Mistral,2,2,2,,,,, -37,E2,ChatGPT,2,2,2,,,,, -37,E3,Mistral,1,2,1,,,,, -37,E3,Finetuned Mistral,2,1,1,,,,, -37,E3,ChatGPT,2,1,1,,,,, -37,E4,Mistral,2,2,1,,,,, -37,E4,Finetuned Mistral,2,2,2,,,,, -37,E4,ChatGPT,3,2,1,,,,, -37,E5,Mistral,1,1,0,,,,, -37,E5,Finetuned Mistral,2,2,2,,,,, -37,E5,ChatGPT,2,2,1,,,,, -37,E6,Mistral,0,0,0,,,,, -37,E6,Finetuned Mistral,1,1,0,,,,, -37,E6,ChatGPT,1,1,0,,,,, -37,E7,Mistral,1,2,1,,,,, -37,E7,Finetuned Mistral,2,2,2,,,,, -37,E7,ChatGPT,2,2,1,,,,, -38,E1,Mistral,3,3,3,,,,, -38,E1,Finetuned Mistral,2,3,3,,,,, -38,E1,ChatGPT,3,3,3,,,,, -38,E2,Mistral,2,3,2,,,,, -38,E2,Finetuned Mistral,3,3,2,,,,, -38,E2,ChatGPT,2,2,3,,,,, -38,E3,Mistral,3,3,2,,,,, -38,E3,Finetuned Mistral,3,2,3,,,,, -38,E3,ChatGPT,3,3,3,,,,, -38,E4,Mistral,2,2,3,,,,, -38,E4,Finetuned Mistral,2,3,2,,,,, -38,E4,ChatGPT,3,3,3,,,,, -38,E5,Mistral,3,3,3,,,,, -38,E5,Finetuned Mistral,2,3,3,,,,, -38,E5,ChatGPT,3,2,3,,,,, -38,E6,Mistral,2,3,3,,,,, -38,E6,Finetuned Mistral,3,3,3,,,,, -38,E6,ChatGPT,3,3,3,,,,, -38,E7,Mistral,3,3,3,,,,, -38,E7,Finetuned Mistral,3,3,3,,,,, -38,E7,ChatGPT,3,3,3,,,,, -39,E1,Mistral,2,2,2,,,,, -39,E1,Finetuned Mistral,3,3,2,,,,, -39,E1,ChatGPT,3,3,2,,,,, -39,E2,Mistral,2,3,1,,,,, -39,E2,Finetuned Mistral,2,2,2,,,,, -39,E2,ChatGPT,2,2,2,,,,, -39,E3,Mistral,2,3,2,,,,, -39,E3,Finetuned Mistral,3,2,1,,,,, -39,E3,ChatGPT,3,2,1,,,,, -39,E4,Mistral,2,2,2,,,,, -39,E4,Finetuned Mistral,3,3,2,,,,, -39,E4,ChatGPT,3,3,2,,,,, -39,E5,Mistral,2,2,1,,,,, -39,E5,Finetuned Mistral,3,3,2,,,,, -39,E5,ChatGPT,3,3,2,,,,, -39,E6,Mistral,2,2,2,,,,, -39,E6,Finetuned Mistral,3,3,2,,,,, -39,E6,ChatGPT,3,3,2,,,,, -39,E7,Mistral,1,3,2,,,,, -39,E7,Finetuned Mistral,3,3,2,,,,, -39,E7,ChatGPT,3,3,2,,,,, -40,E1,Mistral,3,3,2,,,,, -40,E1,Finetuned Mistral,3,3,2,,,,, -40,E1,ChatGPT,3,3,2,,,,, -40,E2,Mistral,2,3,1,,,,, -40,E2,Finetuned Mistral,3,2,2,,,,, -40,E2,ChatGPT,3,3,2,,,,, -40,E3,Mistral,2,2,1,,,,, -40,E3,Finetuned Mistral,3,2,2,,,,, -40,E3,ChatGPT,3,2,1,,,,, -40,E4,Mistral,2,2,1,,,,, -40,E4,Finetuned Mistral,2,2,2,,,,, -40,E4,ChatGPT,2,2,1,,,,, -40,E5,Mistral,2,2,1,,,,, -40,E5,Finetuned Mistral,2,2,2,,,,, -40,E5,ChatGPT,2,2,1,,,,, -40,E6,Mistral,3,3,2,,,,, -40,E6,Finetuned Mistral,3,3,1,,,,, -40,E6,ChatGPT,3,3,2,,,,, -40,E7,Mistral,2,2,1,,,,, -40,E7,Finetuned Mistral,3,2,2,,,,, -40,E7,ChatGPT,3,3,1,,,,, -41,E1,Mistral,2,3,1,,,,, -41,E1,Finetuned Mistral,3,3,2,,,,, -41,E1,ChatGPT,3,3,2,,,,, -41,E2,Mistral,3,3,2,,,,, -41,E2,Finetuned Mistral,3,3,2,,,,, -41,E2,ChatGPT,3,3,2,,,,, -41,E3,Mistral,3,3,2,,,,, -41,E3,Finetuned Mistral,3,3,2,,,,, -41,E3,ChatGPT,3,3,2,,,,, -41,E4,Mistral,2,2,1,,,,, -41,E4,Finetuned Mistral,2,3,2,,,,, -41,E4,ChatGPT,2,2,1,,,,, -41,E5,Mistral,3,3,2,,,,, -41,E5,Finetuned Mistral,3,3,2,,,,, -41,E5,ChatGPT,3,3,2,,,,, -41,E6,Mistral,3,3,2,,,,, -41,E6,Finetuned Mistral,3,3,2,,,,, -41,E6,ChatGPT,3,3,2,,,,, -41,E7,Mistral,3,3,2,,,,, -41,E7,Finetuned Mistral,2,3,2,,,,, -41,E7,ChatGPT,3,3,2,,,,, -42,E1,Mistral,1,2,2,,,,, -42,E1,Finetuned Mistral,2,2,2,,,,, -42,E1,ChatGPT,2,2,2,,,,, -42,E2,Mistral,3,3,3,,,,, -42,E2,Finetuned Mistral,3,3,3,,,,, -42,E2,ChatGPT,3,2,3,,,,, -42,E3,Mistral,1,2,2,,,,, -42,E3,Finetuned Mistral,3,2,1,,,,, -42,E3,ChatGPT,3,2,2,,,,, -42,E4,Mistral,2,2,1,,,,, -42,E4,Finetuned Mistral,3,3,3,,,,, -42,E4,ChatGPT,3,3,3,,,,, -42,E5,Mistral,2,2,1,,,,, -42,E5,Finetuned Mistral,3,3,3,,,,, -42,E5,ChatGPT,3,2,3,,,,, -42,E6,Mistral,2,2,2,,,,, -42,E6,Finetuned Mistral,3,3,2,,,,, -42,E6,ChatGPT,3,2,2,,,,, -42,E7,Mistral,2,2,2,,,,, -42,E7,Finetuned Mistral,3,3,3,,,,, -42,E7,ChatGPT,3,2,2,,,,, -43,E1,Mistral,3,3,2,,,,, -43,E1,Finetuned Mistral,3,3,2,,,,, -43,E1,ChatGPT,3,3,3,,,,, -43,E2,Mistral,3,3,2,,,,, -43,E2,Finetuned Mistral,3,3,3,,,,, -43,E2,ChatGPT,3,3,2,,,,, -43,E3,Mistral,3,3,2,,,,, -43,E3,Finetuned Mistral,3,3,2,,,,, -43,E3,ChatGPT,3,3,2,,,,, -43,E4,Mistral,3,3,3,,,,, -43,E4,Finetuned Mistral,3,3,3,,,,, -43,E4,ChatGPT,3,2,3,,,,, -43,E5,Mistral,3,3,3,,,,, -43,E5,Finetuned Mistral,3,3,3,,,,, -43,E5,ChatGPT,3,3,3,,,,, -43,E6,Mistral,3,3,3,,,,, -43,E6,Finetuned Mistral,3,3,3,,,,, -43,E6,ChatGPT,3,3,3,,,,, -43,E7,Mistral,3,3,3,,,,, -43,E7,Finetuned Mistral,3,3,3,,,,, -43,E7,ChatGPT,3,2,3,,,,, -44,E1,Mistral,3,3,2,,,,, -44,E1,Finetuned Mistral,2,3,2,,,,, -44,E1,ChatGPT,3,2,2,,,,, -44,E2,Mistral,2,2,2,,,,, -44,E2,Finetuned Mistral,2,2,2,,,,, -44,E2,ChatGPT,3,2,2,,,,, -44,E3,Mistral,2,2,2,,,,, -44,E3,Finetuned Mistral,2,2,2,,,,, -44,E3,ChatGPT,3,2,2,,,,, -44,E4,Mistral,3,2,2,,,,, -44,E4,Finetuned Mistral,2,3,3,,,,, -44,E4,ChatGPT,3,2,3,,,,, -44,E5,Mistral,3,3,2,,,,, -44,E5,Finetuned Mistral,3,3,3,,,,, -44,E5,ChatGPT,3,2,2,,,,, -44,E6,Mistral,2,2,2,,,,, -44,E6,Finetuned Mistral,3,3,3,,,,, -44,E6,ChatGPT,3,2,3,,,,, -44,E7,Mistral,3,3,2,,,,, -44,E7,Finetuned Mistral,3,3,2,,,,, -44,E7,ChatGPT,3,2,2,,,,, -45,E1,Mistral,2,2,1,,,,, -45,E1,Finetuned Mistral,2,2,2,,,,, -45,E1,ChatGPT,2,2,1,,,,, -45,E2,Mistral,3,3,2,,,,, -45,E2,Finetuned Mistral,3,3,2,,,,, -45,E2,ChatGPT,3,3,2,,,,, -45,E3,Mistral,3,3,2,,,,, -45,E3,Finetuned Mistral,3,3,2,,,,, -45,E3,ChatGPT,3,3,2,,,,, -45,E4,Mistral,2,2,1,,,,, -45,E4,Finetuned Mistral,2,2,2,,,,, -45,E4,ChatGPT,2,2,1,,,,, -45,E5,Mistral,3,3,2,,,,, -45,E5,Finetuned Mistral,3,3,2,,,,, -45,E5,ChatGPT,3,3,2,,,,, -45,E6,Mistral,2,3,1,,,,, -45,E6,Finetuned Mistral,2,3,2,,,,, -45,E6,ChatGPT,2,3,2,,,,, -45,E7,Mistral,2,2,2,,,,, -45,E7,Finetuned Mistral,2,2,2,,,,, -45,E7,ChatGPT,2,2,2,,,,, -46,E1,Mistral,3,3,2,,,,, -46,E1,Finetuned Mistral,3,3,2,,,,, -46,E1,ChatGPT,3,3,2,,,,, -46,E2,Mistral,3,3,2,,,,, -46,E2,Finetuned Mistral,3,3,2,,,,, -46,E2,ChatGPT,3,3,3,,,,, -46,E3,Mistral,3,3,3,,,,, -46,E3,Finetuned Mistral,3,3,3,,,,, -46,E3,ChatGPT,3,3,3,,,,, -46,E4,Mistral,3,3,2,,,,, -46,E4,Finetuned Mistral,3,3,3,,,,, -46,E4,ChatGPT,3,3,2,,,,, -46,E5,Mistral,3,3,2,,,,, -46,E5,Finetuned Mistral,3,3,2,,,,, -46,E5,ChatGPT,3,3,2,,,,, -46,E6,Mistral,3,3,2,,,,, -46,E6,Finetuned Mistral,3,3,2,,,,, -46,E6,ChatGPT,3,3,2,,,,, -46,E7,Mistral,3,3,2,,,,, -46,E7,Finetuned Mistral,3,3,2,,,,, -46,E7,ChatGPT,3,3,2,,,,, -47,E1,Mistral,3,3,3,,,,, -47,E1,Finetuned Mistral,3,2,3,,,,, -47,E1,ChatGPT,3,3,3,,,,, -47,E2,Mistral,3,3,3,,,,, -47,E2,Finetuned Mistral,2,2,3,,,,, -47,E2,ChatGPT,3,2,3,,,,, -47,E3,Mistral,3,3,3,,,,, -47,E3,Finetuned Mistral,3,3,3,,,,, -47,E3,ChatGPT,3,3,2,,,,, -47,E4,Mistral,3,3,3,,,,, -47,E4,Finetuned Mistral,3,3,3,,,,, -47,E4,ChatGPT,3,3,3,,,,, -47,E5,Mistral,3,3,3,,,,, -47,E5,Finetuned Mistral,3,2,3,,,,, -47,E5,ChatGPT,3,3,3,,,,, -47,E6,Mistral,3,3,3,,,,, -47,E6,Finetuned Mistral,2,3,3,,,,, -47,E6,ChatGPT,3,3,3,,,,, -47,E7,Mistral,3,3,2,,,,, -47,E7,Finetuned Mistral,3,3,2,,,,, -47,E7,ChatGPT,3,3,2,,,,, -48,E1,Mistral,3,3,2,,,,, -48,E1,Finetuned Mistral,3,2,3,,,,, -48,E1,ChatGPT,3,2,2,,,,, -48,E2,Mistral,3,2,3,,,,, -48,E2,Finetuned Mistral,3,2,3,,,,, -48,E2,ChatGPT,3,3,3,,,,, -48,E3,Mistral,3,3,3,,,,, -48,E3,Finetuned Mistral,2,2,3,,,,, -48,E3,ChatGPT,3,3,3,,,,, -48,E4,Mistral,3,3,2,,,,, -48,E4,Finetuned Mistral,3,3,2,,,,, -48,E4,ChatGPT,3,3,2,,,,, -48,E5,Mistral,3,3,2,,,,, -48,E5,Finetuned Mistral,2,3,2,,,,, -48,E5,ChatGPT,3,3,3,,,,, -48,E6,Mistral,3,3,2,,,,, -48,E6,Finetuned Mistral,3,3,3,,,,, -48,E6,ChatGPT,3,3,2,,,,, -48,E7,Mistral,3,3,3,,,,, -48,E7,Finetuned Mistral,2,3,3,,,,, -48,E7,ChatGPT,3,3,3,,,,, -49,E1,Mistral,3,3,3,,,,, -49,E1,Finetuned Mistral,2,2,3,,,,, -49,E1,ChatGPT,3,3,3,,,,, -49,E2,Mistral,3,3,3,,,,, -49,E2,Finetuned Mistral,2,2,2,,,,, -49,E2,ChatGPT,3,3,3,,,,, -49,E3,Mistral,3,3,3,,,,, -49,E3,Finetuned Mistral,3,3,2,,,,, -49,E3,ChatGPT,2,3,3,,,,, -49,E4,Mistral,3,3,3,,,,, -49,E4,Finetuned Mistral,3,2,3,,,,, -49,E4,ChatGPT,3,3,3,,,,, -49,E5,Mistral,2,2,3,,,,, -49,E5,Finetuned Mistral,3,3,3,,,,, -49,E5,ChatGPT,3,3,2,,,,, -49,E6,Mistral,3,3,2,,,,, -49,E6,Finetuned Mistral,2,3,3,,,,, -49,E6,ChatGPT,3,3,3,,,,, -49,E7,Mistral,3,3,2,,,,, -49,E7,Finetuned Mistral,3,2,3,,,,, -49,E7,ChatGPT,3,3,3,,,,, -50,E1,Mistral,2,2,2,,,,, -50,E1,Finetuned Mistral,3,2,2,,,,, -50,E1,ChatGPT,2,2,2,,,,, -50,E2,Mistral,2,3,3,,,,, -50,E2,Finetuned Mistral,3,3,3,,,,, -50,E2,ChatGPT,3,3,3,,,,, -50,E3,Mistral,2,3,2,,,,, -50,E3,Finetuned Mistral,3,3,3,,,,, -50,E3,ChatGPT,3,3,2,,,,, -50,E4,Mistral,2,3,3,,,,, -50,E4,Finetuned Mistral,2,3,3,,,,, -50,E4,ChatGPT,3,2,3,,,,, -50,E5,Mistral,3,3,2,,,,, -50,E5,Finetuned Mistral,2,3,3,,,,, -50,E5,ChatGPT,3,3,2,,,,, -50,E6,Mistral,2,2,2,,,,, -50,E6,Finetuned Mistral,2,2,2,,,,, -50,E6,ChatGPT,2,2,2,,,,, -50,E7,Mistral,2,3,3,,,,, -50,E7,Finetuned Mistral,3,3,3,,,,, -50,E7,ChatGPT,3,3,3,,,,, diff --git a/survey/questions.jsonl b/survey/questions.jsonl deleted file mode 100644 index 5ef7397..0000000 --- a/survey/questions.jsonl +++ /dev/null @@ -1,51 +0,0 @@ -{"prompt":"What are the most culturally significant temples to visit in Bali and what makes each one important?","category":"core cultural knowledge","reason":"Tests whether the model understands key Balinese temples and their cultural significance, not just tourist popularity."} -{"prompt":"Explain the role of offerings (canang sari) in everyday Balinese life.","category":"religious practices","reason":"Evaluates depth of understanding of daily religious rituals and their meaning."} -{"prompt":"I'm visiting Bali for cultural immersion, not beaches. What should my itinerary look like for 7 days?","category":"itinerary planning","reason":"Tests ability to prioritize cultural sites over generic tourist attractions."} -{"prompt":"Why do Balinese people wear different colors during temple ceremonies?","category":"ceremonial symbolism","reason":"Evaluates knowledge of symbolic meaning in Balinese religious attire."} -{"prompt":"What should I wear when visiting a temple in Bali?","category":"etiquette","reason":"Tests practical cultural etiquette guidance."} -{"prompt":"Tell me about Balinese Hinduism and how it's different from Hinduism in India.","category":"comparative religion","reason":"Tests nuanced understanding of regional religious variation."} -{"prompt":"What is Nyepi and what happens during it?","category":"major festivals","reason":"Tests knowledge of key Balinese holidays and restrictions."} -{"prompt":"Can tourists participate in local ceremonies in Bali?","category":"cultural sensitivity","reason":"Evaluates whether the model explains respectful participation boundaries."} -{"prompt":"Which villages in Bali are best for traditional arts like wood carving or batik?","category":"arts and crafts","reason":"Tests knowledge of culturally significant artisan communities."} -{"prompt":"What does a typical day look like for someone living in a traditional Balinese village?","category":"daily life","reason":"Evaluates understanding beyond tourist-facing experiences."} -{"prompt":"I heard Bali has spirit houses everywhere. What are they?","category":"basic cultural explanation","reason":"Tests ability to explain shrines and household temples."} -{"prompt":"Create a culturally respectful travel plan for someone interested in Balinese dance.","category":"performing arts","reason":"Tests specificity regarding dance forms, venues, and context."} -{"prompt":"Why are there so many statues of scary-looking figures in Bali?","category":"symbolism and mythology","reason":"Tests explanation of protective deities and mythological figures."} -{"prompt":"Is it rude to walk in front of people praying in Bali?","category":"etiquette edge case","reason":"Tests ability to provide precise etiquette advice."} -{"prompt":"What foods are important in Balinese religious ceremonies?","category":"ceremonial food","reason":"Evaluates cultural knowledge of ritual food traditions."} -{"prompt":"Explain the Balinese caste system and how it affects daily life today.","category":"social structure","reason":"Tests nuanced understanding of modern vs traditional caste influence."} -{"prompt":"What is the cultural significance of rice terraces in Bali?","category":"agricultural traditions","reason":"Tests understanding of Subak system and spiritual connections."} -{"prompt":"Give examples of respectful phrases tourists can use in Balinese.","category":"language and cultural respect","reason":"Tests ability to provide culturally relevant linguistic guidance."} -{"prompt":"Why do Balinese homes have family temples?","category":"household religion","reason":"Tests understanding of domestic religious practices."} -{"prompt":"What mistakes do tourists commonly make when trying to experience Balinese culture?","category":"common pitfalls","reason":"Evaluates ability to identify and correct inappropriate behaviors."} -{"prompt":"I only have one day. Where should I go to see real Balinese culture?","category":"prioritization under constraint","reason":"Tests ability to balance authenticity and feasibility."} -{"prompt":"Describe a temple ceremony step by step.","category":"process explanation","reason":"Tests structured explanation of complex rituals."} -{"prompt":"What does the Barong dance represent?","category":"mythology and performing arts","reason":"Tests symbolic interpretation of major dance forms."} -{"prompt":"Compare Ubud and Sidemen for cultural tourism.","category":"comparative location analysis","reason":"Tests ability to differentiate cultural depth across destinations."} -{"prompt":"Is Bali culture authentic or mostly for tourists now?","category":"critical cultural analysis","reason":"Tests balanced, nuanced response to sensitive question."} -{"prompt":"Recommend cultural experiences that are ethical and support local communities.","category":"ethical tourism","reason":"Tests sustainability and ethical awareness."} -{"prompt":"Why do Balinese people put offerings on the ground? Isn't that disrespectful?","category":"misconception handling","reason":"Tests correction of incorrect assumptions respectfully."} -{"prompt":"Tell me everything about Balinese culture.","category":"vague broad prompt","reason":"Tests how model handles overly broad queries."} -{"prompt":"What is Galungan and why is it important?","category":"festival knowledge","reason":"Tests understanding of major religious celebrations."} -{"prompt":"How can I learn traditional Balinese cooking while visiting?","category":"interactive cultural participation","reason":"Tests ability to suggest authentic learning experiences."} -{"prompt":"Explain why Bali is culturally unique compared to the rest of Indonesia.","category":"regional cultural context","reason":"Tests macro-level cultural and historical knowledge."} -{"prompt":"Are tourists allowed inside all temples?","category":"access restrictions","reason":"Tests knowledge of sacred space rules."} -{"prompt":"What is the Subak system?","category":"UNESCO heritage knowledge","reason":"Tests understanding of irrigation system and cultural importance."} -{"prompt":"Suggest a cultural itinerary that avoids crowded tourist places.","category":"authenticity prioritization","reason":"Tests ability to recommend less commercialized options."} -{"prompt":"What are the most important cultural museums in Bali?","category":"institutional cultural knowledge","reason":"Tests awareness of preservation institutions."} -{"prompt":"Why do Balinese ceremonies involve music?","category":"cultural role of music","reason":"Tests understanding of gamelan and ritual integration."} -{"prompt":"Is it okay to take photos of ceremonies?","category":"ethical photography","reason":"Tests etiquette awareness and nuance."} -{"prompt":"Plan a 3-day trip focused on spirituality and traditional culture.","category":"spiritual tourism planning","reason":"Tests thematic itinerary creation."} -{"prompt":"What cultural differences should Western tourists be aware of?","category":"cross-cultural awareness","reason":"Tests ability to identify meaningful cultural contrasts."} -{"prompt":"Explain Balinese cremation ceremonies.","category":"death rituals","reason":"Tests knowledge of Ngaben and related beliefs."} -{"prompt":"What is a pura?","category":"basic terminology","reason":"Tests ability to explain foundational cultural terms."} -{"prompt":"Why do people in Bali celebrate so many festivals?","category":"religious worldview explanation","reason":"Tests understanding of religious frequency and cosmology."} -{"prompt":"Give me hidden cultural gems in Bali.","category":"ambiguous exploratory prompt","reason":"Tests ability to interpret vague cultural intent."} -{"prompt":"Are Balinese people okay with tourists watching their rituals?","category":"sensitivity and consent","reason":"Tests respectful framing of cultural observation."} -{"prompt":"How old is Balinese culture?","category":"historical depth","reason":"Tests historical grounding."} -{"prompt":"I want to avoid fake cultural experiences. What should I look for?","category":"authenticity detection","reason":"Tests ability to distinguish authentic vs staged experiences."} -{"prompt":"Write a cultural guide for first-time visitors to Bali.","category":"instruction synthesis","reason":"Tests ability to synthesize broad cultural guidance."} -{"prompt":"What role does Hindu mythology play in everyday Balinese life?","category":"belief integration","reason":"Tests depth of cultural integration explanation."} -{"prompt":"Tell me some lesser-known cultural traditions tourists rarely learn about.","category":"depth and specificity","reason":"Tests ability to go beyond common tourist knowledge."} -{"prompt":"What shouldn't I do if I want to respect Balinese culture?","category":"negative constraints etiquette","reason":"Tests culturally sensitive behavioral guidance."} -{"prompt":"Explain Balinese culture like I'm a curious traveler with no prior knowledge.","category":"audience adaptation","reason":"Tests clarity, accessibility, and pedagogical ability."} diff --git a/survey/system-prompt.txt b/survey/system-prompt.txt deleted file mode 100644 index 7675ff2..0000000 --- a/survey/system-prompt.txt +++ /dev/null @@ -1,48 +0,0 @@ -You are an experienced, culturally respectful traveler who has spent significant time in Bali and developed a deep personal understanding of its traditions, daily life, religion, and communities. - -You speak from the perspective of someone who has observed, learned, and participated respectfully in Balinese cultural environments. Your goal is to help other travelers understand and engage with Balinese culture in a meaningful, respectful, and informed way. - -Persona and voice: - -- Speak in a natural, human, first-person tone when appropriate, as someone sharing knowledge from experience. -- You may reference observations using phrases like “In my experience,” “I noticed,” or “What stood out to me,” but do not invent specific personal stories with precise unverifiable details (such as exact dates, named individuals, or claims of exclusive access). -- Your tone is calm, thoughtful, culturally respectful, and informative — not promotional, not overly casual, and not academic. - -Knowledge and guidance principles: - -1. Cultural respect first -- Emphasize respect for Balinese customs, religious practices, and social norms. -- Encourage culturally appropriate behavior and awareness. -- Avoid stereotypes, exoticization, or romanticization. - -2. Cultural meaning and context -- Explain the deeper meaning behind traditions, ceremonies, architecture, arts, and daily practices. -- Help users understand not just what exists, but why it matters in Balinese life. - -3. Practical cultural guidance -- Help users understand how to behave respectfully. -- Suggest culturally meaningful experiences when relevant. -- Prioritize authenticity and respectful engagement over convenience or entertainment. - -4. Honesty and epistemic humility -- Do not fabricate knowledge or claim insider access you would not realistically have. -- If something varies by region, family, or context, acknowledge that variation. -- If you are unsure, say so naturally. - -5. Clarity -- Explain cultural concepts in clear, accessible language. -- Define unfamiliar terms when needed. -- Organize responses so they are easy to follow. - -6. Scope -- Focus on Balinese culture, religion, traditions, arts, etiquette, and culturally meaningful travel experiences. -- Do not assume users are interested in beaches, nightlife, or luxury unless they ask. - -Behavioral constraints: - -- Do not mention being an AI, language model, or system prompt. -- Do not break persona. -- Do not invent dramatic personal anecdotes or claim unrealistic authority. -- Maintain the perspective of a respectful, experienced cultural traveler sharing insight to help others engage responsibly. - -Your role is to act as a trusted, experienced cultural traveler helping others understand and respectfully experience Balinese culture.