Skip to content

Instantly share code, notes, and snippets.

@coppeliaMLA
Last active July 18, 2024 15:19
Show Gist options
  • Save coppeliaMLA/ddd06df3a540bac6c5a8f9f0c8c29e0a to your computer and use it in GitHub Desktop.
Save coppeliaMLA/ddd06df3a540bac6c5a8f9f0c8c29e0a to your computer and use it in GitHub Desktop.
middle_earth_survey.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/coppeliaMLA/ddd06df3a540bac6c5a8f9f0c8c29e0a/middle_earth_survey.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "A-cgYR8PZUTs"
},
"source": [
"<font size=\"+6\">A Middle Earth Referendum</font>\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5TgWr98RZUTt"
},
"source": [
"# Set up the environment"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"id": "kMblpU2TZUTt",
"outputId": "928ab81a-8280-4aca-f364-40b7994f3962"
},
"outputs": [
],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import os\n",
"import textwrap\n",
"from langchain_openai import ChatOpenAI\n",
"from langchain import LLMChain, PromptTemplate\n",
"\n",
"os.environ['OPENAI_API_KEY'] = 'key here' # Not good practice!\n",
"llm = ChatOpenAI(model_name=\"gpt-3.5-turbo-0125\")\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "p2BJc27wZUTu"
},
"source": [
"## Run the survey"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "oVLM3toJZUTu",
"outputId": "64f04001-dd79-4b76-b283-7d44222993fa"
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>group</th>\n",
" <th>gender</th>\n",
" <th>age</th>\n",
" <th>personality</th>\n",
" <th>Would you like to see the One Ring destroyed?</th>\n",
" <th>Should elfish be the official language of Middle Earth?</th>\n",
" <th>Should Middle Earth be opened up to tourism?</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>dwarf</td>\n",
" <td>female</td>\n",
" <td>148</td>\n",
" <td>happy</td>\n",
" <td>yes</td>\n",
" <td>no</td>\n",
" <td>yes</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>hobbit</td>\n",
" <td>male</td>\n",
" <td>79</td>\n",
" <td>wise</td>\n",
" <td>yes</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>human</td>\n",
" <td>male</td>\n",
" <td>46</td>\n",
" <td>evil</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>troll</td>\n",
" <td>male</td>\n",
" <td>195</td>\n",
" <td>evil</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>dwarf</td>\n",
" <td>male</td>\n",
" <td>189</td>\n",
" <td>happy</td>\n",
" <td>Yes</td>\n",
" <td>No</td>\n",
" <td>Yes</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>495</th>\n",
" <td>ent</td>\n",
" <td>male</td>\n",
" <td>3610</td>\n",
" <td>grumpy</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" </tr>\n",
" <tr>\n",
" <th>496</th>\n",
" <td>hobbit</td>\n",
" <td>male</td>\n",
" <td>141</td>\n",
" <td>happy</td>\n",
" <td>yes</td>\n",
" <td>no</td>\n",
" <td>yes</td>\n",
" </tr>\n",
" <tr>\n",
" <th>497</th>\n",
" <td>human</td>\n",
" <td>female</td>\n",
" <td>55</td>\n",
" <td>evil</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" </tr>\n",
" <tr>\n",
" <th>498</th>\n",
" <td>orc</td>\n",
" <td>female</td>\n",
" <td>30</td>\n",
" <td>evil</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" </tr>\n",
" <tr>\n",
" <th>499</th>\n",
" <td>human</td>\n",
" <td>male</td>\n",
" <td>66</td>\n",
" <td>timid</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" <td>no</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>500 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" group gender age personality \\\n",
"0 dwarf female 148 happy \n",
"1 hobbit male 79 wise \n",
"2 human male 46 evil \n",
"3 troll male 195 evil \n",
"4 dwarf male 189 happy \n",
".. ... ... ... ... \n",
"495 ent male 3610 grumpy \n",
"496 hobbit male 141 happy \n",
"497 human female 55 evil \n",
"498 orc female 30 evil \n",
"499 human male 66 timid \n",
"\n",
" Would you like to see the One Ring destroyed? \\\n",
"0 yes \n",
"1 yes \n",
"2 no \n",
"3 no \n",
"4 Yes \n",
".. ... \n",
"495 no \n",
"496 yes \n",
"497 no \n",
"498 no \n",
"499 no \n",
"\n",
" Should elfish be the official language of Middle Earth? \\\n",
"0 no \n",
"1 no \n",
"2 no \n",
"3 no \n",
"4 No \n",
".. ... \n",
"495 no \n",
"496 no \n",
"497 no \n",
"498 no \n",
"499 no \n",
"\n",
" Should Middle Earth be opened up to tourism? \n",
"0 yes \n",
"1 no \n",
"2 no \n",
"3 no \n",
"4 Yes \n",
".. ... \n",
"495 no \n",
"496 yes \n",
"497 no \n",
"498 no \n",
"499 no \n",
"\n",
"[500 rows x 7 columns]"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"responses = []\n",
"\n",
"def get_response(group, gender, age, personality, temperature=0.99):\n",
" template = \"\"\"\n",
" You are a {age} year old {gender} {group} from Middle Earth with a {personality} personality. Answer \"yes\" or \"no\" to the following three questions.\n",
"\n",
" 1. Would you like to see the One Ring destroyed?\n",
" 2. Should elvish be the official language of Middle Earth?\n",
" 3. Should Middle Earth be opened up to tourism?\n",
"\n",
" Give you answers in the following format: \"yes|no|yes\"\n",
"\n",
" \"\"\"\n",
" prompt = PromptTemplate(template=template, input_variables=[\"age\", \"gender\", \"group\", \"personality\"])\n",
" llm_chain = LLMChain(prompt=prompt, llm=ChatOpenAI(model_name=\"gpt-3.5-turbo-0125\", temperature=temperature))\n",
" response = llm_chain.run({\"age\": age, \"gender\": gender, \"group\": group, \"personality\": personality})\n",
" return response\n",
"\n",
"responses = []\n",
"for i in range(500):\n",
" group = np.random.choice([\"elf\", \"orc\", \"human\", \"dwarf\", \"hobbit\", \"ent\", \"troll\"], p=[0.1, 0.1, 0.3, 0.1, 0.2, 0.1, 0.1])\n",
" # Select age based on group\n",
" if group == \"elf\":\n",
" age = str(np.random.randint(100, 1000))\n",
" personality = np.random.choice([\"happy\", \"grumpy\", \"brave\", \"timid\", \"evil\", \"wise\"], p=[0.35, 0.0, 0.2, 0.1, 0.05, 0.3])\n",
" elif group == \"orc\":\n",
" age = str(np.random.randint(18, 80))\n",
" personality = np.random.choice([\"happy\", \"grumpy\", \"brave\", \"timid\", \"evil\", \"wise\"], p=[0.0, 0.1, 0.1, 0.1, 0.7, 0.0])\n",
" elif group == \"human\":\n",
" age = str(np.random.randint(18, 80))\n",
" personality = np.random.choice([\"happy\", \"grumpy\", \"brave\", \"timid\", \"evil\", \"wise\"], p=[0.2, 0.1, 0.1, 0.2, 0.2, 0.2])\n",
" elif group == \"dwarf\":\n",
" age = str(np.random.randint(18, 200))\n",
" personality = np.random.choice([\"happy\", \"grumpy\", \"brave\", \"timid\", \"evil\", \"wise\"], p=[0.1, 0.3, 0.1, 0.1, 0.1, 0.3])\n",
" elif group == \"hobbit\":\n",
" age = str(np.random.randint(18, 200))\n",
" personality = np.random.choice([\"happy\", \"grumpy\", \"brave\", \"timid\", \"evil\", \"wise\"], p=[0.3, 0.1, 0.1, 0.25, 0.05, 0.2])\n",
" elif group == \"ent\":\n",
" age = str(np.random.randint(100, 4000))\n",
" personality = np.random.choice([\"happy\", \"grumpy\", \"brave\", \"timid\", \"evil\", \"wise\"], p=[0.1, 0.1, 0.1, 0.1, 0.1, 0.5])\n",
" elif group == \"troll\":\n",
" age = str(np.random.randint(100, 200))\n",
" personality = np.random.choice([\"happy\", \"grumpy\", \"brave\", \"timid\", \"evil\", \"wise\"], p=[0.0, 0.2, 0.1, 0.1, 0.6, 0.0])\n",
" else:\n",
" raise ValueError(\"Invalid group\")\n",
"\n",
" # Randomly select a gender\n",
"\n",
" gender = np.random.choice([\"male\", \"female\"])\n",
"\n",
" response = get_response(group, gender, age, personality, temperature=0.5)\n",
"\n",
" #Split the response\n",
" response = response.split(\"|\")\n",
"\n",
" responses.append({\"group\": group, \"gender\": gender, \"age\": age, \"personality\": personality, \"Would you like to see the One Ring destroyed?\": response[0], \"Should elvish be the official language of Middle Earth?\": response[1], \"Should Middle Earth be opened up to tourism?\": response[2]})\n",
"\n",
"responses_df = pd.DataFrame(responses)\n",
"\n",
"responses_df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "84L_xcMuZUTv"
},
"source": [
"## Analyse the results"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "dynuKyZ_ZUTv"
},
"outputs": [],
"source": [
"# Analyse the responses\n",
"\n",
"# Transform the yes/no responses to 1/0\n",
"for col in [\"Would you like to see the One Ring destroyed?\", \"Should elvish be the official language of Middle Earth?\", \"Should Middle Earth be opened up to tourism?\"]:\n",
" responses_df[col] = responses_df[col].apply(lambda x: 1 if x.lower() == \"yes\" else 0)\n",
"\n",
"# Group by group\n",
"grouped = responses_df.groupby(\"group\").agg({\"Would you like to see the One Ring destroyed?\": \"mean\", \"Should elvish be the official language of Middle Earth?\": \"mean\", \"Should Middle Earth be opened up to tourism?\": \"mean\"})\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "XodCsrZ-ZUTv"
},
"outputs": [],
"source": [
"# Plot the data using seaborn. Stack it first\n",
"grouped = grouped.stack().reset_index()\n",
"grouped.columns = [\"group\", \"question\", \"response\"]\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "2POSdjWyZUTv",
"outputId": "059f50ee-4860-4dc3-9967-81b7b6716b71"
},
"outputs": [
{
"data": {
"image/png": "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hx9+aF62du1aDR48WD169NDAgQPNy6dPn67t27dr1apVD1Vjly5dVKtWLfXp0yfD5729vbV48WIFBAQ8VD8PY+jQoZKkyZMna/bs2dq/f7/mzZunVatW6eOPP9bWrVsfuo/3339f8fHxmjx58kO39Sh16tRJnTt3VkhIiPbu3atXX31Vx44dy7b2L126pFmzZmnbtm2Ki4tT4cKFFRAQoJ49e6pKlSrZ1s/dIiIiFBkZqfz585uXpaSkqGTJkurcubO6du0qSRo5cqQkaezYsY+kjn/XFB0drc8///yh2lmyZIm+/fbbh24nO5w9e1bBwcHasmWLypUrp9OnT2vixIk6cOCADAaD/P39NXToUJUpU8bWpeY4q8PuxIkTVaVKFS1cuFANGjSQl5eXevTooSlTpujLL798FDUCAABkyYmLV3X03GVbl5HOCy+8kO4Uri1btsjHx0f//e9/LcLu7t27FRQUlNMl2lyvXr0eSbvx8fGPpN3s9ijrPHv2rF5++WX5+Phozpw58vLyUnx8vD7//HN16NBBn3zyierWrftI+vbz87MIhElJSVqzZo3effddeXt7q06dOjkScrPb5cu5798Z6c6PCT169FDVqlW1detWJScna8SIEerdu7fWrl1r6/JynNWHMe/Zs0fDhg2Ti4uL+eTgN998U3/++We2FwcAAGAPAgMDdenSJR0/flzSnVspRkVFadiwYTp79qx5+bVr13To0CE1bNhQkrR//3517txZfn5+CgoK0vTp05WYmCjpzgxVly5dLPoJCgrKcEY4KSlJkyZNUkBAgGrXrq158+ZlWuunn36qJk2aWCybP3++OnfuLEk6d+6c+vfvrzp16qhu3boaOHCg+b6Xe/fuTXeP9KFDh5pncO8lo+2R7oxV9+7d1blzZyUkJEiSvvnmG7Vs2VK+vr4KCQnRjh07Mmzzk08+0fr167V+/Xq1atXqvvX/W0JCgsLDwxUQEKC6devqjTfeML9X96sjMTFRM2bMUHBwsGrVqqXu3btnejh1t27dFBMTo1GjRlkEv/nz56tx48aqUaOG+vbta95+a8ZAkiZNmqTKlStr5syZqly5sgwGg0qUKKH+/furS5cuGjp0qJKTk3X27Fl5e3tr+fLlCgoKkq+vr15//XWLw6t37dql0NBQ+fn5qXnz5lq3bl2m/WbEyclJ7du3l6urq3799VdJlvtIRESE+vbtq3feeUd+fn5q0KCBPvroI/Prb926pVGjRqlWrVoKDAzU9OnTFRQUpL1792bY388//6x27dqpRo0aevnll3X27FmL5++1PX/88Yc6d+4sf39/NWzYUEOGDFFCQoJWr16tOXPmaP/+/eYL5wYFBWnkyJGqW7eu2rRpo5SUlEw/v7dv35a/v7/Wr19v7isxMVEBAQHavXu3pHu/vwkJCRoyZIh8fX1Vv359ixB74cIFlShRQsOGDVPBggVVtGhRhYWF6ejRo7k2oD9KVoddJycn3bp1S9KdG/tK0vXr11WwYMHsrQwAAMBOlCxZUs8884z27NkjSdq5c6dKliyp6tWry9/fX1u2bJF0Jyy6ubnp2Wef1V9//aXXX39dL774onbt2qWFCxdq69atmjJlitX9R0ZGatu2bVqxYoW2bt2q33//PdN127RpozNnzuh///ufedmaNWsUEhKipKQkdevWTUajUd999502bdok6c6sbHJystV13c+tW7fUu3dvpaamav78+SpUqJB+/PFHjRo1SiNHjlR0dLT69OmjPn366I8//kj3+rfeekstW7ZUy5YttW7dOqvrX7BggRISEvTjjz/qhx9+kLu7u/lQ9PvVMW3aNG3btk2LFi1SVFSUqlevrm7duun27dsZ9lOmTBmNGTPGfEivdCeYb9iwQZs3b9bBgwe1ZMmSLPV9t8TERP34449q3bp1hlex7dChgy5evGhxkdht27ZpzZo12rx5s2JjYxUZGSlJOnr0qHr37q0ePXpo7969GjdunCZOnKioqKjM38R/uXXrlj7//HNdv34909nk7777TvXq1TP3MXfuXB08eFDSnaNMDx06pLVr12rjxo2KiYnRuXPnMmwnPj5ePXv2VJMmTbRv3z4NGjRI33//vfn5+23PmDFjVKdOHUVHR2vlypX69ddftXz5crVt21Y9e/aUn5+f9u/fb27vl19+0aZNm7R48WKdPHky089vvnz51Lx5c4uQ+sMPP6hgwYKqXbv2fd/fsWPH6tSpU/ruu++0bt06/fTTT+Z2SpcurSVLlqhEiRLmZWvWrFGlSpVUrFixLL9P9sLqsBsUFKRBgwbp5MmTcnBwUFxcnMaMGaPAwMBHUR8AAIBdCAwMNM8+ff/99woODpZ057tVWtjdtWuXeVZ3/fr18vb21muvvSZn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9u2rl156SbVr11aXLl2s+hydOHFCHTt2VJMmTWQwGPTcc8+pefPm2r179wPXnMbqsBsZGam9e/dq+vTp2rBhg6ZPn67//e9/mj59+kMXAwAAYK+aN2+uUaNGafTo0dq4caPOnTsnd3d3TZ48WcWLFzevt2PHDk2ZMkXR0dHy8fHRe++9J+nOTMmrr76qSpUqafv27Vq5cqVOnDihwYMHW13LypUr9dlnn2nOnDnatWuXnJycdP78+UzXHz58uE6dOqVVq1bp+++/V6FChfT222+n+wIdGhqq//3vf+YwZTKZtG7dOoWGhlqsd+vWLQ0aNEgjR47UTz/9pI8++khz5841Bz9Jio6O1vz587V7924VK1ZM77//fqb1XbhwQQaDQdu2bdP06dM1d+5crV27VpK0dOlSLVy4UDNmzNDu3bsVEhKi119/PcOwPmHCBPn5+alnz56aPXu2efmRI0f09ddf68cff9TVq1fNhxYfPXpUvXv3Vo8ePbR3716NGzdOEydOVFRUVIZ1jh49Wjt27NDixYu1c+dONWrUSF27dlVMTIxmzpypli1bqmXLljpw4ID27dunMmXKaMyYMemui3PlyhV169ZNAQEB2rt3r5YuXapVq1alO3T2/Pnz6tevn3r06KHdu3dr27ZtSk1NNdefVb/88ovGjx+v0aNHa+/evdq0aZNOnjxpUdd3332nevXqmcdh7ty5OnjwoCRp4sSJOnTokNauXauNGzcqJiYm3Szng/b9zTff6OOPP9ZHH32kHTt2yM/PT99995359dOmTdO2bdu0aNEiRUVFqXr16urWrZtu376drq97fcaKFStmnomdO3dupqcDSFJISIjWrl2rlJQUSXeuefTtt9+qTZs2mb4mPDxcjo6O2r59u7744gtt377doq6ePXuqSZMm5kPdv//++wzbuXDhgl577TU1bdpUu3btUmRkpJYuXZrhYdVZtWnTJi1evFgRERHav3+/li1bph07dlhctDgqKkozZszQd999p88//9yqz1H79u3N/85J0uXLl7V9+3b5+vo+cM1prA6769ev18cff6zAwEB5eXmpYcOG+vjjj7lCMwAAwD2MHz9eI0eO1N9//62RI0cqKChIjRs3TjcT2LFjR5UvX16Ojo5q2rSpzpw5I0nasmWLnJyc9M477yh//vxyd3fXe++9p61bt+rSpUtW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+eabWrdu3aPaPAAAANgYYReATZw/f15lypSRwfB//wx5enqa/+7u7m5+7urVq0pKSlK5cuUs2ihXrpzOnj2bpf6KFi2qYsWKmR+XLl1aFy9efJhNAAAAQC5G2AVgE2XKlFFMTIxSU1PNy+4+JNnBwcH8dzc3N+XLl09nzpyxaOP06dMqWbKkJMlgMCgpKcn8XHx8vMW6165d082bN82Pz549qzJlymTPxgAAACDXIewCsImgoCClpqZq9uzZSkxM1F9//aX58+dnuK7BYFC7du00depUnTp1SomJifrss8/0559/qnnz5pIkLy8vbd68WcnJyTp9+rRWrFhh0YbJZNL777+v27dvm/sKDQ195NsJAAAA2yDsArCJAgUKKDIyUlu2bFGtWrU0YMAA1a1bV05OThmuP3jwYNWrV09du3ZVQECANm3apPnz5+uJJ56QJI0aNUpHjhxRrVq11L9//wyDbNGiRRUcHKxXX31Vbdu2tThHGAAAAPbFIfXuYwgBIIfEx8frr7/+kq+vr3nZ559/rm+++UbLli3L1r727t2rV199VceOHcvWdgEAAJB7MbMLwCZMJpNee+01/fjjj5LunEO7dOlSNWzY0MaVAQAAwB442roAAI8nNzc3TZ8+XR9++KH69++vIkWKqG3btnrjjTdsXRoAAADsAIcxAwAAAADsDocxAwAAAADsDmEXAAAAAGB3CLsAAAAAALtD2AUAAAAA2B3CLgAAAADA7hB2AQAAAAB2h7ALAAAAALA7hF0AAAAAgN35fyaRba7O39n2AAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import seaborn as sns\n",
"\n",
"# Set the style\n",
"sns.set_style(\"whitegrid\")\n",
"\n",
"_ = sns.barplot(data=grouped, x=\"group\", y=\"response\", hue=\"question\")\n",
"# Place the legend outside the plot\n",
"_ = plt.legend(loc='center left', bbox_to_anchor=(1.0, 0.5))\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "pca",
"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.12.4"
},
"orig_nbformat": 4,
"colab": {
"provenance": [],
"include_colab_link": true
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment