Spaces:
Runtime error
Runtime error
| import json | |
| from pathlib import Path | |
| def create_notebook(filename: str, cells_content: list): | |
| cells = [] | |
| for content, cell_type in cells_content: | |
| cells.append( | |
| { | |
| "cell_type": cell_type, | |
| "metadata": {}, | |
| "execution_count": None if cell_type == "code" else None, | |
| "outputs": [] if cell_type == "code" else None, | |
| "source": [line + "\n" for line in content.split("\n")], | |
| } | |
| ) | |
| # Clean up outputs/execution_count for markdown | |
| if cell_type == "markdown": | |
| del cells[-1]["execution_count"] | |
| del cells[-1]["outputs"] | |
| notebook = { | |
| "cells": cells, | |
| "metadata": { | |
| "kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, | |
| "language_info": { | |
| "codemirror_mode": {"name": "ipython", "version": 3}, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython3", | |
| "version": "3.11.0", | |
| }, | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 4, | |
| } | |
| Path("notebooks").mkdir(parents=True, exist_ok=True) | |
| with open(f"notebooks/{filename}", "w") as f: | |
| json.dump(notebook, f, indent=2) | |
| def main(): | |
| colab_cells = [ | |
| ( | |
| "# Google Colab Training Notebook\n\n" | |
| "This notebook is intended to be run on Google Colab with a T4 GPU. " | |
| "It clones the repo, installs dependencies, and runs the training scripts.", | |
| "markdown", | |
| ), | |
| ( | |
| "!git clone https://github.com/Aryanmishra-dev/Multilingual-Absa.git\n" | |
| "%cd Multilingual-Absa\n!pip install .", | |
| "code", | |
| ), | |
| ( | |
| "# Mount Google Drive to save models and MLflow logs persistently\n" | |
| "from google.colab import drive\ndrive.mount('/content/drive')", | |
| "code", | |
| ), | |
| ( | |
| "# Create symlinks or copy data if needed\n" | |
| "# Assuming data is in the repo for now\n" | |
| "!mkdir -p /content/drive/MyDrive/ABSA_models", | |
| "code", | |
| ), | |
| ("# Prepare dataset\n!PYTHONPATH=src python -m absa.data.hf_dataset", "code"), | |
| ( | |
| "# Run Aspect Extraction Training\n!PYTHONPATH=src python -m absa.models.train_aspect_extraction", | |
| "code", | |
| ), | |
| ( | |
| "# Run Sentiment Classification Training\n!PYTHONPATH=src python -m absa.models.train_sentiment", | |
| "code", | |
| ), | |
| ("# Run Baseline as well\n!PYTHONPATH=src python -m absa.models.baseline", "code"), | |
| ( | |
| "# Cross-lingual Evaluation\n!PYTHONPATH=src python -m absa.evaluation.cross_lingual_eval", | |
| "code", | |
| ), | |
| ( | |
| "# Copy models back to Drive\n" | |
| "!cp -r models/* /content/drive/MyDrive/ABSA_models/\n" | |
| "!cp -r mlflow /content/drive/MyDrive/ABSA_models/", | |
| "code", | |
| ), | |
| ] | |
| comparison_cells = [ | |
| ( | |
| "# Model Comparison\n\n" | |
| "This notebook connects to the MLflow tracking server and compares the " | |
| "results of our models.", | |
| "markdown", | |
| ), | |
| ( | |
| "import mlflow\nimport pandas as pd\nimport matplotlib.pyplot as plt\n" | |
| "import seaborn as sns\nimport json\n\n" | |
| "mlflow.set_tracking_uri('sqlite:///mlflow/mlflow.db')", | |
| "code", | |
| ), | |
| ( | |
| "# Load all runs\n" | |
| "experiment = mlflow.get_experiment_by_name('multilingual-absa')\n" | |
| "df = mlflow.search_runs(experiment_ids=[experiment.experiment_id])\n" | |
| "display(df.head())", | |
| "code", | |
| ), | |
| ( | |
| "# Bar chart: macro-F1 comparison\n" | |
| "metrics = df[['tags.mlflow.runName', 'metrics.eval_macro_f1', " | |
| "'metrics.test_f1', 'metrics.test_macro_f1', " | |
| "'metrics.hindi_zero_shot_macro_f1']].fillna(0)\n" | |
| "metrics['Best F1'] = metrics[['metrics.eval_macro_f1', " | |
| "'metrics.test_f1', 'metrics.test_macro_f1']].max(axis=1)\n\n" | |
| "plt.figure(figsize=(10, 6))\n" | |
| "sns.barplot(data=metrics, x='tags.mlflow.runName', y='Best F1')\n" | |
| "plt.title('Model Comparison by Macro-F1 / Span-F1')\n" | |
| "plt.xticks(rotation=45)\nplt.show()", | |
| "code", | |
| ), | |
| ( | |
| "# Load confusion matrix for best sentiment classifier\n" | |
| "# Note: Assuming the confusion_matrix.json artifact was downloaded " | |
| "or parsed.\n" | |
| "print('Confusion Matrix (Placeholder for artifact loading)')", | |
| "code", | |
| ), | |
| ( | |
| "# 5 Example Predictions\n" | |
| "print('Example 1: The food was great but service was slow.')\n" | |
| "print('Example 2: El sistema operativo es muy estable.')\n" | |
| "print('... (Load pipeline and infer here)')", | |
| "code", | |
| ), | |
| ] | |
| create_notebook("02_train_colab.ipynb", colab_cells) | |
| create_notebook("03_model_comparison.ipynb", comparison_cells) | |
| if __name__ == "__main__": | |
| main() | |