diff --git a/RQs/RQ0/RQ0_1_results_normalization.ipynb b/RQs/RQ0/RQ0_1_results_normalization.ipynb
index 297b306..e163568 100644
--- a/RQs/RQ0/RQ0_1_results_normalization.ipynb
+++ b/RQs/RQ0/RQ0_1_results_normalization.ipynb
@@ -164,7 +164,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "bnl",
"language": "python",
"name": "python3"
},
diff --git a/RQs/RQ0/RQ0_2_app_level_aggregation.ipynb b/RQs/RQ0/RQ0_2_app_level_aggregation.ipynb
index c001442..262ac31 100644
--- a/RQs/RQ0/RQ0_2_app_level_aggregation.ipynb
+++ b/RQs/RQ0/RQ0_2_app_level_aggregation.ipynb
@@ -207,7 +207,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "bnl",
"language": "python",
"name": "python3"
},
diff --git a/RQs/RQ0/RQ0_3_corpus_level_aggreation.ipynb b/RQs/RQ0/RQ0_3_corpus_level_aggreation.ipynb
index 3b4a89c..b65a489 100644
--- a/RQs/RQ0/RQ0_3_corpus_level_aggreation.ipynb
+++ b/RQs/RQ0/RQ0_3_corpus_level_aggreation.ipynb
@@ -168,7 +168,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "bnl",
"language": "python",
"name": "python3"
},
diff --git a/RQs/RQ1/RQ1_t4.ipynb b/RQs/RQ1/RQ1_t4.ipynb
index 0ba270f..3260391 100644
--- a/RQs/RQ1/RQ1_t4.ipynb
+++ b/RQs/RQ1/RQ1_t4.ipynb
@@ -318,7 +318,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "bnl",
"language": "python",
"name": "python3"
},
diff --git a/RQs/RQ2/RQ2_search_space_reduction_gpt4o.tex b/RQs/RQ2/RQ2_search_space_reduction_gpt4o.tex
deleted file mode 100644
index c76754d..0000000
--- a/RQs/RQ2/RQ2_search_space_reduction_gpt4o.tex
+++ /dev/null
@@ -1,31 +0,0 @@
-\begin{table}[th]
-\centering
-\caption{Search space reduction during row-level PII extraction.}
-\label{tab:search_space_reduction}
-\small
-\begin{tabular}{|l|l|p{1.3cm}|p{1.7cm}|p{1.0cm}|}
-\hline
-\textbf{ID} & \textbf{Apps} & \textbf{Candidate Cols (Total)} & \textbf{Cols Scanned (Extraction)} & \textbf{Reduc. (\%)} \\
-\hline
-A1 & WhatsApp & 1637 & 7 & 99.57\% \\
-\hline
-A2 & Snapchat & 848 & 107 & 87.38\% \\
-\hline
-A3 & Telegram & 1197 & 0 & 100.00\% \\
-\hline
-A4 & Google Maps & 80 & 2 & 97.50\% \\
-\hline
-A5 & Samsung Internet & 185 & 0 & 100.00\% \\
-\hline
-I1 & WhatsApp & 328 & 0 & 100.00\% \\
-\hline
-I2 & Contacts & 13 & 0 & 100.00\% \\
-\hline
-I3 & Apple Messages & 186 & 0 & 100.00\% \\
-\hline
-I4 & Safari & 74 & 0 & 100.00\% \\
-\hline
-I5 & Calendar & 541 & 0 & 100.00\% \\
-\hline
-\end{tabular}
-\end{table}
\ No newline at end of file
diff --git a/RQs/RQ3/RQ3_t7_corpus_level_Recall_Perc.ipynb b/RQs/RQ2/RQ2_t6_corpus_level_Recall_Perc.ipynb
similarity index 94%
rename from RQs/RQ3/RQ3_t7_corpus_level_Recall_Perc.ipynb
rename to RQs/RQ2/RQ2_t6_corpus_level_Recall_Perc.ipynb
index c6044d1..73ff385 100644
--- a/RQs/RQ3/RQ3_t7_corpus_level_Recall_Perc.ipynb
+++ b/RQs/RQ2/RQ2_t6_corpus_level_Recall_Perc.ipynb
@@ -21,11 +21,11 @@
"\\hline\n",
"Phone Number & 1051 & 1184 & 734 & 69.8\\% & 62.0\\% \\\\\n",
"\\hline\n",
- "User Name & 3446 & 1234 & 1232 & 35.8\\% & 99.8\\% \\\\\n",
+ "User Name & 2269 & 1234 & 1232 & 54.3\\% & 99.8\\% \\\\\n",
"\\hline\n",
- "Person Name & 1134 & 2157 & 1087 & 95.9\\% & 50.4\\% \\\\\n",
+ "Person Name & 1640 & 2157 & 1262 & 77.0\\% & 58.5\\% \\\\\n",
"\\hline\n",
- "Postal Address & 21 & 2 & 2 & 9.5\\% & 100.0\\% \\\\\n",
+ "Postal Address & 11 & 2 & 2 & 18.2\\% & 100.0\\% \\\\\n",
"\\hline\n"
]
}
@@ -106,7 +106,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "bnl",
"language": "python",
"name": "python3"
},
diff --git a/RQs/RQ3/RQ3_t8.ipynb b/RQs/RQ2/RQ2_t7.ipynb
similarity index 91%
rename from RQs/RQ3/RQ3_t8.ipynb
rename to RQs/RQ2/RQ2_t7.ipynb
index ffa5fb2..8e1862c 100644
--- a/RQs/RQ3/RQ3_t8.ipynb
+++ b/RQs/RQ2/RQ2_t7.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"id": "1affac71",
"metadata": {},
"outputs": [
@@ -14,11 +14,11 @@
"\n",
"PII Type | GT DBs | System DBs | Overlap | Coverage\n",
"---------------+--------+------------+---------+---------\n",
- "Email Address | 0 | 6 | 0 | 0.0% \n",
- "Phone Number | 0 | 6 | 0 | 0.0% \n",
- "User Name | 0 | 10 | 0 | 0.0% \n",
- "Person Name | 0 | 7 | 0 | 0.0% \n",
- "Postal Address | 0 | 1 | 0 | 0.0% \n",
+ "Email Address | 6 | 7 | 6 | 100.0% \n",
+ "Phone Number | 9 | 7 | 6 | 66.7% \n",
+ "User Name | 6 | 4 | 4 | 66.7% \n",
+ "Person Name | 12 | 11 | 9 | 75.0% \n",
+ "Postal Address | 2 | 1 | 1 | 50.0% \n",
"\n",
"LATEX TABULAR\n",
"\n",
@@ -26,15 +26,15 @@
"\\hline\n",
"\\textbf{PII Type} &\\textbf{DBs with PII (GT)} &\\textbf{DBs with discoveries (System)} &\\textbf{Overlap} &\\textbf{Coverage} \\\\\n",
"\\hline\n",
- "Email Address & 0 & 6 & 0 & 0.0\\% \\\\\n",
+ "Email Address & 6 & 7 & 6 & 100.0\\% \\\\\n",
"\\hline\n",
- "Phone Number & 0 & 6 & 0 & 0.0\\% \\\\\n",
+ "Phone Number & 9 & 7 & 6 & 66.7\\% \\\\\n",
"\\hline\n",
- "User Name & 0 & 10 & 0 & 0.0\\% \\\\\n",
+ "User Name & 6 & 4 & 4 & 66.7\\% \\\\\n",
"\\hline\n",
- "Person Name & 0 & 7 & 0 & 0.0\\% \\\\\n",
+ "Person Name & 12 & 11 & 9 & 75.0\\% \\\\\n",
"\\hline\n",
- "Postal Address & 0 & 1 & 0 & 0.0\\% \\\\\n",
+ "Postal Address & 2 & 1 & 1 & 50.0\\% \\\\\n",
"\\hline\n",
"\\end{tabular}\n"
]
@@ -196,7 +196,7 @@
"def main() -> None:\n",
" # Define these inside main so importing this module has no side effects.\n",
" SYSTEM_DIR = Path(r\"..\\normalized_PII_results\\GPT-5.1\\db_level\")\n",
- " GT_DIR = Path(r\"..\\normalized_PII_results\\GPT-5.1\\app_level\")\n",
+ " GT_DIR = Path(r\"..\\normalized_PII_results\\ground_truth\\db_level\")\n",
" \n",
" gt_sets = collect_db_sets(GT_DIR, [k for k, _ in PII_TYPES])\n",
" sys_sets = collect_db_sets(SYSTEM_DIR, [k for k, _ in PII_TYPES])\n",
@@ -216,7 +216,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "bnl",
"language": "python",
"name": "python3"
},
diff --git a/RQs/RQ3/RQ3_t9.ipynb b/RQs/RQ2/RQ2_t8.ipynb
similarity index 82%
rename from RQs/RQ3/RQ3_t9.ipynb
rename to RQs/RQ2/RQ2_t8.ipynb
index 1405386..930a2d9 100644
--- a/RQs/RQ3/RQ3_t9.ipynb
+++ b/RQs/RQ2/RQ2_t8.ipynb
@@ -29,10 +29,17 @@
"source": [
"import sys\n",
"import os\n",
- "# Add the parent directory (RQs) to the path to find the config file\n",
- "if '..' not in sys.path:\n",
- " sys.path.insert(1, os.path.abspath('..'))\n",
- "import config"
+ "from pathlib import Path\n",
+ "\n",
+ "# Resolve paths relative to this notebook so execution is independent of kernel cwd.\n",
+ "NOTEBOOK_DIR = Path.cwd()\n",
+ "if not (NOTEBOOK_DIR / 'RQ2_t8.ipynb').exists():\n",
+ " NOTEBOOK_DIR = Path(r'i:/project2026/llmagent/RQs/RQ2')\n",
+ "RQS_DIR = NOTEBOOK_DIR.parent\n",
+ "\n",
+ "if str(RQS_DIR) not in sys.path:\n",
+ " sys.path.insert(1, str(RQS_DIR))\n",
+ "import config\n"
]
},
{
@@ -44,8 +51,10 @@
"def parse_filename(filepath):\n",
" \"\"\"Parses a filename to extract the app ID and database name.\"\"\"\n",
" base_name = os.path.basename(filepath)\n",
- " # Format: PII_{APP_ID}_{DB_NAME}_{TIMESTAMP}.jsonl\n",
- " match = re.match(r'PII_([A-Z0-9]+)_(.*)_\\d{8}T\\d{6}Z\\.jsonl', base_name)\n",
+ " # Support both formats:\n",
+ " # 1) PII_{APP_ID}_{DB_NAME}_{TIMESTAMP}.jsonl\n",
+ " # 2) PII_{APP_ID}_{DB_NAME}.jsonl\n",
+ " match = re.match(r'PII_([A-Z0-9]+)_(.*?)(?:_\\d{8}T\\d{6}Z)?\\.jsonl$', base_name)\n",
" if match:\n",
" app_id = match.group(1)\n",
" db_name = match.group(2)\n",
@@ -69,8 +78,8 @@
" data[app_id][db_name][pii_type] = True\n",
" return data\n",
"\n",
- "gt_data = load_data(os.path.join('..', config.GROUND_TRUTH_DIR))\n",
- "system_data = load_data(os.path.join('..', config.GPT4O_RESULTS_DIR))"
+ "gt_data = load_data(str(RQS_DIR / config.GROUND_TRUTH_DIR))\n",
+ "system_data = load_data(str(RQS_DIR / config.GPT4O_RESULTS_DIR))\n"
]
},
{
@@ -178,8 +187,8 @@
"
A1 | \n",
" WhatsApp | \n",
" - | \n",
- " 2/2 | \n",
- " 1/1 | \n",
+ " 1/2 | \n",
+ " 1/2 | \n",
" 2/2 | \n",
" - | \n",
" 2/2 | \n",
@@ -189,8 +198,8 @@
" Snapchat | \n",
" 1/1 | \n",
" 2/2 | \n",
- " 1/1 | \n",
" 2/2 | \n",
+ " 1/2 | \n",
" - | \n",
" 2/2 | \n",
" \n",
@@ -208,9 +217,9 @@
" A4 | \n",
" Google Maps | \n",
" 1/1 | \n",
- " - | \n",
" 1/1 | \n",
- " - | \n",
+ " 1/1 | \n",
+ " 1/1 | \n",
" - | \n",
" 1/1 | \n",
" \n",
@@ -219,20 +228,20 @@
" Samsung Internet | \n",
" 1/1 | \n",
" - | \n",
- " 1/1 | \n",
- " - | \n",
" - | \n",
" 1/1 | \n",
+ " - | \n",
+ " 2/2 | \n",
" \n",
" \n",
" | I1 | \n",
" WhatsApp (iOS) | \n",
" - | \n",
- " - | \n",
- " - | \n",
- " 1/1 | \n",
- " 1/1 | \n",
+ " 1/2 | \n",
+ " 0/1 | \n",
+ " 2/2 | \n",
" 1/1 | \n",
+ " 2/2 | \n",
"
\n",
" \n",
" | I2 | \n",
@@ -241,7 +250,7 @@
" 1/1 | \n",
" - | \n",
" 1/1 | \n",
- " - | \n",
+ " 0/1 | \n",
" 1/1 | \n",
"
\n",
" \n",
@@ -249,8 +258,8 @@
" | Apple Messages | \n",
" 1/1 | \n",
" 0/1 | \n",
- " 0/1 | \n",
- " 1/1 | \n",
+ " - | \n",
+ " - | \n",
" - | \n",
" 1/1 | \n",
"
\n",
@@ -259,10 +268,10 @@
" Safari | \n",
" - | \n",
" - | \n",
- " 1/1 | \n",
" - | \n",
+ " 0/2 | \n",
" - | \n",
- " 1/1 | \n",
+ " 0/2 | \n",
" \n",
" \n",
" | I5 | \n",
@@ -270,7 +279,7 @@
" 1/1 | \n",
" - | \n",
" - | \n",
- " - | \n",
+ " 1/1 | \n",
" - | \n",
" 1/1 | \n",
"
\n",
@@ -281,16 +290,16 @@
"text/plain": [
" Application Email Phone User Name Person Name Postal Address All PII\n",
"ID \n",
- "A1 WhatsApp - 2/2 1/1 2/2 - 2/2\n",
- "A2 Snapchat 1/1 2/2 1/1 2/2 - 2/2\n",
+ "A1 WhatsApp - 1/2 1/2 2/2 - 2/2\n",
+ "A2 Snapchat 1/1 2/2 2/2 1/2 - 2/2\n",
"A3 Telegram - - - - - -\n",
- "A4 Google Maps 1/1 - 1/1 - - 1/1\n",
- "A5 Samsung Internet 1/1 - 1/1 - - 1/1\n",
- "I1 WhatsApp (iOS) - - - 1/1 1/1 1/1\n",
- "I2 Contacts 1/1 1/1 - 1/1 - 1/1\n",
- "I3 Apple Messages 1/1 0/1 0/1 1/1 - 1/1\n",
- "I4 Safari - - 1/1 - - 1/1\n",
- "I5 Calendar 1/1 - - - - 1/1"
+ "A4 Google Maps 1/1 1/1 1/1 1/1 - 1/1\n",
+ "A5 Samsung Internet 1/1 - - 1/1 - 2/2\n",
+ "I1 WhatsApp (iOS) - 1/2 0/1 2/2 1/1 2/2\n",
+ "I2 Contacts 1/1 1/1 - 1/1 0/1 1/1\n",
+ "I3 Apple Messages 1/1 0/1 - - - 1/1\n",
+ "I4 Safari - - - 0/2 - 0/2\n",
+ "I5 Calendar 1/1 - - 1/1 - 1/1"
]
},
"execution_count": 5,
@@ -328,16 +337,16 @@
" & Application & Email & Phone & User Name & Person Name & Postal Address & All PII \\\\\n",
"ID & & & & & & & \\\\\n",
"\\midrule\n",
- "A1 & WhatsApp & - & 2/2 & 1/1 & 2/2 & - & 2/2 \\\\\n",
- "A2 & Snapchat & 1/1 & 2/2 & 1/1 & 2/2 & - & 2/2 \\\\\n",
+ "A1 & WhatsApp & - & 1/2 & 1/2 & 2/2 & - & 2/2 \\\\\n",
+ "A2 & Snapchat & 1/1 & 2/2 & 2/2 & 1/2 & - & 2/2 \\\\\n",
"A3 & Telegram & - & - & - & - & - & - \\\\\n",
- "A4 & Google Maps & 1/1 & - & 1/1 & - & - & 1/1 \\\\\n",
- "A5 & Samsung Internet & 1/1 & - & 1/1 & - & - & 1/1 \\\\\n",
- "I1 & WhatsApp (iOS) & - & - & - & 1/1 & 1/1 & 1/1 \\\\\n",
- "I2 & Contacts & 1/1 & 1/1 & - & 1/1 & - & 1/1 \\\\\n",
- "I3 & Apple Messages & 1/1 & 0/1 & 0/1 & 1/1 & - & 1/1 \\\\\n",
- "I4 & Safari & - & - & 1/1 & - & - & 1/1 \\\\\n",
- "I5 & Calendar & 1/1 & - & - & - & - & 1/1 \\\\\n",
+ "A4 & Google Maps & 1/1 & 1/1 & 1/1 & 1/1 & - & 1/1 \\\\\n",
+ "A5 & Samsung Internet & 1/1 & - & - & 1/1 & - & 2/2 \\\\\n",
+ "I1 & WhatsApp (iOS) & - & 1/2 & 0/1 & 2/2 & 1/1 & 2/2 \\\\\n",
+ "I2 & Contacts & 1/1 & 1/1 & - & 1/1 & 0/1 & 1/1 \\\\\n",
+ "I3 & Apple Messages & 1/1 & 0/1 & - & - & - & 1/1 \\\\\n",
+ "I4 & Safari & - & - & - & 0/2 & - & 0/2 \\\\\n",
+ "I5 & Calendar & 1/1 & - & - & 1/1 & - & 1/1 \\\\\n",
"\\bottomrule\n",
"\\end{tabular}\n",
"\\end{table}\n",
@@ -354,7 +363,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "bnl",
"language": "python",
"name": "python3"
},
diff --git a/RQs/RQ3/RQ3_t10.ipynb b/RQs/RQ2/RQ2_t9.ipynb
similarity index 82%
rename from RQs/RQ3/RQ3_t10.ipynb
rename to RQs/RQ2/RQ2_t9.ipynb
index 03c82e6..2eb7f61 100644
--- a/RQs/RQ3/RQ3_t10.ipynb
+++ b/RQs/RQ2/RQ2_t9.ipynb
@@ -187,21 +187,21 @@
" A1 | \n",
" WhatsApp | \n",
" - | \n",
- " 0.96 | \n",
- " 0.50 | \n",
- " 0.68 | \n",
+ " 0.91 | \n",
+ " 0.00 | \n",
+ " 0.45 | \n",
" - | \n",
- " 0.79 | \n",
+ " 0.21 | \n",
" \n",
" \n",
" | A2 | \n",
" Snapchat | \n",
" 1.00 | \n",
" 1.00 | \n",
+ " 0.74 | \n",
" 0.33 | \n",
- " 1.00 | \n",
" - | \n",
- " 0.79 | \n",
+ " 0.64 | \n",
"
\n",
" \n",
" | A3 | \n",
@@ -217,9 +217,9 @@
" A4 | \n",
" Google Maps | \n",
" 1.00 | \n",
- " - | \n",
" 1.00 | \n",
- " - | \n",
+ " 1.00 | \n",
+ " 1.00 | \n",
" - | \n",
" 1.00 | \n",
"
\n",
@@ -228,50 +228,50 @@
" Samsung Internet | \n",
" 1.00 | \n",
" - | \n",
+ " - | \n",
" 0.00 | \n",
" - | \n",
- " - | \n",
- " 0.20 | \n",
+ " 0.50 | \n",
" \n",
" \n",
" | I1 | \n",
" WhatsApp (iOS) | \n",
" - | \n",
- " - | \n",
- " - | \n",
- " 1.00 | \n",
- " 1.00 | \n",
- " 1.00 | \n",
+ " 0.00 | \n",
+ " 0.00 | \n",
+ " 0.98 | \n",
+ " 0.50 | \n",
+ " 0.51 | \n",
"
\n",
" \n",
" | I2 | \n",
" Contacts | \n",
" 1.00 | \n",
- " 0.47 | \n",
+ " 0.71 | \n",
" - | \n",
- " 0.86 | \n",
- " - | \n",
- " 0.65 | \n",
+ " 0.00 | \n",
+ " 0.00 | \n",
+ " 0.36 | \n",
"
\n",
" \n",
" | I3 | \n",
" Apple Messages | \n",
" 1.00 | \n",
" 0.00 | \n",
- " 0.00 | \n",
- " 1.00 | \n",
" - | \n",
- " 0.33 | \n",
+ " - | \n",
+ " - | \n",
+ " 0.19 | \n",
"
\n",
" \n",
" | I4 | \n",
" Safari | \n",
" - | \n",
" - | \n",
- " 0.02 | \n",
" - | \n",
+ " 0.00 | \n",
" - | \n",
- " 0.02 | \n",
+ " 0.00 | \n",
"
\n",
" \n",
" | I5 | \n",
@@ -279,9 +279,9 @@
" 1.00 | \n",
" - | \n",
" - | \n",
+ " 0.20 | \n",
" - | \n",
- " - | \n",
- " 1.00 | \n",
+ " 0.33 | \n",
"
\n",
" \n",
"\n",
@@ -290,16 +290,16 @@
"text/plain": [
" Application Email Phone User Name Person Name Postal Address All PII\n",
"ID \n",
- "A1 WhatsApp - 0.96 0.50 0.68 - 0.79\n",
- "A2 Snapchat 1.00 1.00 0.33 1.00 - 0.79\n",
+ "A1 WhatsApp - 0.91 0.00 0.45 - 0.21\n",
+ "A2 Snapchat 1.00 1.00 0.74 0.33 - 0.64\n",
"A3 Telegram - - - - - -\n",
- "A4 Google Maps 1.00 - 1.00 - - 1.00\n",
- "A5 Samsung Internet 1.00 - 0.00 - - 0.20\n",
- "I1 WhatsApp (iOS) - - - 1.00 1.00 1.00\n",
- "I2 Contacts 1.00 0.47 - 0.86 - 0.65\n",
- "I3 Apple Messages 1.00 0.00 0.00 1.00 - 0.33\n",
- "I4 Safari - - 0.02 - - 0.02\n",
- "I5 Calendar 1.00 - - - - 1.00"
+ "A4 Google Maps 1.00 1.00 1.00 1.00 - 1.00\n",
+ "A5 Samsung Internet 1.00 - - 0.00 - 0.50\n",
+ "I1 WhatsApp (iOS) - 0.00 0.00 0.98 0.50 0.51\n",
+ "I2 Contacts 1.00 0.71 - 0.00 0.00 0.36\n",
+ "I3 Apple Messages 1.00 0.00 - - - 0.19\n",
+ "I4 Safari - - - 0.00 - 0.00\n",
+ "I5 Calendar 1.00 - - 0.20 - 0.33"
]
},
"execution_count": 5,
@@ -342,16 +342,16 @@
" & Application & Email & Phone & User Name & Person Name & Postal Address & All PII \\\\\n",
"ID & & & & & & & \\\\\n",
"\\midrule\n",
- "A1 & WhatsApp & - & 0.96 & 0.50 & 0.68 & - & 0.79 \\\\\n",
- "A2 & Snapchat & 1.00 & 1.00 & 0.33 & 1.00 & - & 0.79 \\\\\n",
+ "A1 & WhatsApp & - & 0.91 & 0.00 & 0.45 & - & 0.21 \\\\\n",
+ "A2 & Snapchat & 1.00 & 1.00 & 0.74 & 0.33 & - & 0.64 \\\\\n",
"A3 & Telegram & - & - & - & - & - & - \\\\\n",
- "A4 & Google Maps & 1.00 & - & 1.00 & - & - & 1.00 \\\\\n",
- "A5 & Samsung Internet & 1.00 & - & 0.00 & - & - & 0.20 \\\\\n",
- "I1 & WhatsApp (iOS) & - & - & - & 1.00 & 1.00 & 1.00 \\\\\n",
- "I2 & Contacts & 1.00 & 0.47 & - & 0.86 & - & 0.65 \\\\\n",
- "I3 & Apple Messages & 1.00 & 0.00 & 0.00 & 1.00 & - & 0.33 \\\\\n",
- "I4 & Safari & - & - & 0.02 & - & - & 0.02 \\\\\n",
- "I5 & Calendar & 1.00 & - & - & - & - & 1.00 \\\\\n",
+ "A4 & Google Maps & 1.00 & 1.00 & 1.00 & 1.00 & - & 1.00 \\\\\n",
+ "A5 & Samsung Internet & 1.00 & - & - & 0.00 & - & 0.50 \\\\\n",
+ "I1 & WhatsApp (iOS) & - & 0.00 & 0.00 & 0.98 & 0.50 & 0.51 \\\\\n",
+ "I2 & Contacts & 1.00 & 0.71 & - & 0.00 & 0.00 & 0.36 \\\\\n",
+ "I3 & Apple Messages & 1.00 & 0.00 & - & - & - & 0.19 \\\\\n",
+ "I4 & Safari & - & - & - & 0.00 & - & 0.00 \\\\\n",
+ "I5 & Calendar & 1.00 & - & - & 0.20 & - & 0.33 \\\\\n",
"\\bottomrule\n",
"\\end{tabular}\n",
"\\end{table}\n",
@@ -362,13 +362,23 @@
"source": [
"# Optional: Save to LaTeX\n",
"latex_output = df.to_latex(index=True, caption='Per-application distinct recall.', label='tab:app_level_recall', na_rep='-')\n",
- "print(latex_output)"
+ "\n",
+ "# Add \\hline after each LaTeX row line.\n",
+ "latex_lines = []\n",
+ "for line in latex_output.splitlines():\n",
+ " stripped = line.strip()\n",
+ " if stripped.endswith(chr(92) * 2):\n",
+ " line = f\"{line} \\\\hline\"\n",
+ " latex_lines.append(line)\n",
+ "\n",
+ "latex_output = '\\n'.join(latex_lines)\n",
+ "print(latex_output)\n"
]
}
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "bnl",
"language": "python",
"name": "python3"
},
@@ -387,4 +397,4 @@
},
"nbformat": 4,
"nbformat_minor": 4
-}
+}
\ No newline at end of file
diff --git a/RQs/RQ2/RQ2_search_space_reduction.tex b/RQs/RQ3/RQ3_search_space_reduction.tex
similarity index 100%
rename from RQs/RQ2/RQ2_search_space_reduction.tex
rename to RQs/RQ3/RQ3_search_space_reduction.tex
diff --git a/RQs/RQ2/RQ2_t6_0_total_columns.ipynb b/RQs/RQ3/RQ3_t10_0_total_columns.ipynb
similarity index 98%
rename from RQs/RQ2/RQ2_t6_0_total_columns.ipynb
rename to RQs/RQ3/RQ3_t10_0_total_columns.ipynb
index 0c733f4..db27db4 100644
--- a/RQs/RQ2/RQ2_t6_0_total_columns.ipynb
+++ b/RQs/RQ3/RQ3_t10_0_total_columns.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 2,
"id": "2c488f9e",
"metadata": {},
"outputs": [
@@ -10,7 +10,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "Wrote: I:\\project2026\\llmagent\\RQs\\RQ2\\app_total_columns.csv\n"
+ "Wrote: I:\\project2026\\llmagent\\RQs\\RQ3\\app_total_columns.csv\n"
]
}
],
@@ -174,7 +174,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "bnl",
"language": "python",
"name": "python3"
},
diff --git a/RQs/RQ2/RQ2_t6_search_reduction.ipynb b/RQs/RQ3/RQ3_t10_search_reduction.ipynb
similarity index 99%
rename from RQs/RQ2/RQ2_t6_search_reduction.ipynb
rename to RQs/RQ3/RQ3_t10_search_reduction.ipynb
index 8630ea3..d89fa76 100644
--- a/RQs/RQ2/RQ2_t6_search_reduction.ipynb
+++ b/RQs/RQ3/RQ3_t10_search_reduction.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"id": "a30eef73",
"metadata": {},
"outputs": [
@@ -37,7 +37,7 @@
" I4: records=5, total_cols=72, scanned_unique_cols=0, reduction=100.00%\n",
" I5: records=5, total_cols=539, scanned_unique_cols=35, reduction=93.51%\n",
"\n",
- "Wrote LaTeX: I:\\project2026\\llmagent\\RQs\\RQ2\\RQ2_search_space_reduction.tex\n"
+ "Wrote LaTeX: I:\\project2026\\llmagent\\RQs\\RQ3\\RQ2_search_space_reduction.tex\n"
]
}
],
@@ -54,7 +54,7 @@
"# -----------------------------\n",
"CSV_PATH = Path(r\"app_total_columns.csv\")\n",
"JSONL_PATH = Path(r\"..\\normalized_PII_results\\GPT-5.1\\app_level\\app_level.jsonl\")\n",
- "OUT_TEX = Path(\"RQ2_search_space_reduction.tex\")\n",
+ "OUT_TEX = Path(\"RQ3_search_space_reduction.tex\")\n",
"\n",
"# Locked app order + labels (table ID and display name)\n",
"APP_NAME_PLAIN = OrderedDict([\n",
@@ -401,7 +401,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3",
+ "display_name": "bnl",
"language": "python",
"name": "python3"
},
diff --git a/RQs/RQ2/app_total_columns.csv b/RQs/RQ3/app_total_columns.csv
similarity index 92%
rename from RQs/RQ2/app_total_columns.csv
rename to RQs/RQ3/app_total_columns.csv
index 39cb464..7923250 100644
--- a/RQs/RQ2/app_total_columns.csv
+++ b/RQs/RQ3/app_total_columns.csv
@@ -8,4 +8,4 @@ I1,WhatsApp,328
I2,Contacts,219
I3,Apple Messages,181
I4,Safari,72
-I5,Calendar,539
+I5,Calendar,539
\ No newline at end of file
diff --git a/RQs/__pycache__/config.cpython-310.pyc b/RQs/__pycache__/config.cpython-310.pyc
index a4605c1..55e136b 100644
Binary files a/RQs/__pycache__/config.cpython-310.pyc and b/RQs/__pycache__/config.cpython-310.pyc differ
diff --git a/RQs/__pycache__/config.cpython-312.pyc b/RQs/__pycache__/config.cpython-312.pyc
new file mode 100644
index 0000000..4624a6d
Binary files /dev/null and b/RQs/__pycache__/config.cpython-312.pyc differ
diff --git a/RQs/usenixsecurity2026.pdf b/RQs/usenixsecurity2026.pdf
new file mode 100644
index 0000000..7b079d6
Binary files /dev/null and b/RQs/usenixsecurity2026.pdf differ