Repo for A Tune In workshop by amy, Aggeliki and Cristina for the Any One Day The Future Died conference.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

341 lines
23 KiB

{
"cells": [
{
"cell_type": "markdown",
"id": "d4e131d0",
"metadata": {},
"source": [
"# * .* A tune in **. . * \n",
"\n",
"A workshop by [Varia](http://varia.zone/en/).\n",
"\n",
"We are now on a Jupyter Notebook. The code you are running is downloaded on one of our computers, and you are accessing it from a local server. To run the code, select the code cells in order and press \"Run\" in the toolbar above.\n",
"\n",
"\n",
"## Pincelate\n",
"\n",
"[Pincelate](https://pypi.org/project/pincelate/) is a machine learning model for spelling English words and sounding them out developed by artist [Allison Parrish](https://www.decontextualize.com/). It relies on particular versions of the Google-funded pre-trained machine learning models in [Tensorflow](https://www.tensorflow.org/) and the deep-learning API [Keras](https://keras.io/). If you are interested to see more ways to work with Pincelate, Parrish created a series of tutorials: [https://github.com/aparrish/nonsense-verse-pycon-2020](https://github.com/aparrish/nonsense-verse-pycon-2020).\n",
"\n",
"\n",
"### Installing Pincelate"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "ranking-bottom",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: tensorflow==1.15.5 in ./pocket/lib/python3.6/site-packages (1.15.5)\n",
"Requirement already satisfied: protobuf>=3.6.1 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (3.19.6)\n",
"Requirement already satisfied: opt-einsum>=2.3.2 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (3.3.0)\n",
"Requirement already satisfied: keras-applications>=1.0.8 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (1.0.8)\n",
"Requirement already satisfied: tensorboard<1.16.0,>=1.15.0 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (1.15.0)\n",
"Requirement already satisfied: tensorflow-estimator==1.15.1 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (1.15.1)\n",
"Requirement already satisfied: termcolor>=1.1.0 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (1.1.0)\n",
"Requirement already satisfied: astor>=0.6.0 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (0.8.1)\n",
"Requirement already satisfied: h5py<=2.10.0 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (2.10.0)\n",
"Requirement already satisfied: wrapt>=1.11.1 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (1.14.1)\n",
"Requirement already satisfied: gast==0.2.2 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (0.2.2)\n",
"Requirement already satisfied: six>=1.10.0 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (1.16.0)\n",
"Requirement already satisfied: numpy<1.19.0,>=1.16.0 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (1.18.5)\n",
"Requirement already satisfied: grpcio>=1.8.6 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (1.48.2)\n",
"Requirement already satisfied: google-pasta>=0.1.6 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (0.2.0)\n",
"Requirement already satisfied: keras-preprocessing>=1.0.5 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (1.1.2)\n",
"Requirement already satisfied: wheel>=0.26 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (0.37.1)\n",
"Requirement already satisfied: absl-py>=0.7.0 in ./pocket/lib/python3.6/site-packages (from tensorflow==1.15.5) (1.3.0)\n",
"Requirement already satisfied: setuptools>=41.0.0 in ./pocket/lib/python3.6/site-packages (from tensorboard<1.16.0,>=1.15.0->tensorflow==1.15.5) (59.6.0)\n",
"Requirement already satisfied: werkzeug>=0.11.15 in ./pocket/lib/python3.6/site-packages (from tensorboard<1.16.0,>=1.15.0->tensorflow==1.15.5) (2.0.3)\n",
"Requirement already satisfied: markdown>=2.6.8 in ./pocket/lib/python3.6/site-packages (from tensorboard<1.16.0,>=1.15.0->tensorflow==1.15.5) (3.3.7)\n",
"Requirement already satisfied: importlib-metadata>=4.4 in ./pocket/lib/python3.6/site-packages (from markdown>=2.6.8->tensorboard<1.16.0,>=1.15.0->tensorflow==1.15.5) (4.8.3)\n",
"Requirement already satisfied: dataclasses in ./pocket/lib/python3.6/site-packages (from werkzeug>=0.11.15->tensorboard<1.16.0,>=1.15.0->tensorflow==1.15.5) (0.8)\n",
"Requirement already satisfied: typing-extensions>=3.6.4 in ./pocket/lib/python3.6/site-packages (from importlib-metadata>=4.4->markdown>=2.6.8->tensorboard<1.16.0,>=1.15.0->tensorflow==1.15.5) (4.1.1)\n",
"Requirement already satisfied: zipp>=0.5 in ./pocket/lib/python3.6/site-packages (from importlib-metadata>=4.4->markdown>=2.6.8->tensorboard<1.16.0,>=1.15.0->tensorflow==1.15.5) (3.6.0)\n",
"Requirement already satisfied: keras==2.2.5 in ./pocket/lib/python3.6/site-packages (2.2.5)\n",
"Requirement already satisfied: scipy>=0.14 in ./pocket/lib/python3.6/site-packages (from keras==2.2.5) (1.5.4)\n",
"Requirement already satisfied: keras-preprocessing>=1.1.0 in ./pocket/lib/python3.6/site-packages (from keras==2.2.5) (1.1.2)\n",
"Requirement already satisfied: six>=1.9.0 in ./pocket/lib/python3.6/site-packages (from keras==2.2.5) (1.16.0)\n",
"Requirement already satisfied: pyyaml in ./pocket/lib/python3.6/site-packages (from keras==2.2.5) (6.0)\n",
"Requirement already satisfied: numpy>=1.9.1 in ./pocket/lib/python3.6/site-packages (from keras==2.2.5) (1.18.5)\n",
"Requirement already satisfied: h5py in ./pocket/lib/python3.6/site-packages (from keras==2.2.5) (2.10.0)\n",
"Requirement already satisfied: keras-applications>=1.0.8 in ./pocket/lib/python3.6/site-packages (from keras==2.2.5) (1.0.8)\n",
"Requirement already satisfied: pincelate in ./pocket/lib/python3.6/site-packages (0.0.1)\n",
"Requirement already satisfied: scikit-learn>=0.20.0 in ./pocket/lib/python3.6/site-packages (from pincelate) (0.24.2)\n",
"Requirement already satisfied: Keras>=2.2.0 in ./pocket/lib/python3.6/site-packages (from pincelate) (2.2.5)\n",
"Requirement already satisfied: pronouncing>=0.2.0 in ./pocket/lib/python3.6/site-packages (from pincelate) (0.2.0)\n",
"Requirement already satisfied: six>=1.9.0 in ./pocket/lib/python3.6/site-packages (from Keras>=2.2.0->pincelate) (1.16.0)\n",
"Requirement already satisfied: h5py in ./pocket/lib/python3.6/site-packages (from Keras>=2.2.0->pincelate) (2.10.0)\n",
"Requirement already satisfied: keras-preprocessing>=1.1.0 in ./pocket/lib/python3.6/site-packages (from Keras>=2.2.0->pincelate) (1.1.2)\n",
"Requirement already satisfied: keras-applications>=1.0.8 in ./pocket/lib/python3.6/site-packages (from Keras>=2.2.0->pincelate) (1.0.8)\n",
"Requirement already satisfied: pyyaml in ./pocket/lib/python3.6/site-packages (from Keras>=2.2.0->pincelate) (6.0)\n",
"Requirement already satisfied: scipy>=0.14 in ./pocket/lib/python3.6/site-packages (from Keras>=2.2.0->pincelate) (1.5.4)\n",
"Requirement already satisfied: numpy>=1.9.1 in ./pocket/lib/python3.6/site-packages (from Keras>=2.2.0->pincelate) (1.18.5)\n",
"Requirement already satisfied: cmudict>=0.4.0 in ./pocket/lib/python3.6/site-packages (from pronouncing>=0.2.0->pincelate) (1.0.2)\n",
"Requirement already satisfied: joblib>=0.11 in ./pocket/lib/python3.6/site-packages (from scikit-learn>=0.20.0->pincelate) (1.1.1)\n",
"Requirement already satisfied: threadpoolctl>=2.0.0 in ./pocket/lib/python3.6/site-packages (from scikit-learn>=0.20.0->pincelate) (3.1.0)\n"
]
}
],
"source": [
"import ipywidgets as widgets\n",
"from IPython.display import display,HTML\n",
"from ipywidgets import interact,interactive_output,Layout,HBox,VBox\n",
"import sys\n",
"!{sys.executable} -m pip install tensorflow==1.15.5\n",
"!{sys.executable} -m pip install keras==2.2.5\n",
"!{sys.executable} -m pip install pincelate\n",
"from pincelate import Pincelate\n",
"pin = Pincelate()"
]
},
{
"cell_type": "markdown",
"id": "9f1e2cc7",
"metadata": {},
"source": [
"### Respelling\n",
"\n",
"This is how Parrish describes the *manipulate* function of Pincelate: \"Pincelate actually consists of two models: one that knows how to sound out words based on how they're spelled, and another that knows how to spell words from sounds.\"\n",
"\n",
"With this function, words are passing through the two models, taking words, sounding them out from their spelling and then bringing them back into writing via phonemes. As a way to situate ourselves into the conference, we propose to take the conference titles as material to reshape, contort, or respell. \n",
"\n",
"By respelling, we are not only writing out words again, but also remaking the spells that words cast. \n",
"You can make the temperature higher to \"melt\" the words.\n",
"\n",
"\n",
"**CONFERENCE TITLES**\n",
"\n",
"Please keep Crashing (Workshop Documentation)\n",
"\n",
"The Future has died (Conference Opening)\n",
"\n",
"Race Against the Time Machine (tbc, Workshop)\n",
"\n",
"Decolonizing Digital Archives (Conversation) \n",
"\n",
"AI – Between Apocalypse, Lethargy, and Wonder (Panel)\n",
"\n",
"DeColoniality of AI (Panel)\n",
"\n",
"Decolonial Weavings, Vernacular Algorithms\n",
"\n",
"Ecologies of Dreaming Beyond AI\n",
"\n",
"Technopoetics of Sound. Listening Session for Any | One Day\n",
"\n",
"Entangled Media Philosophies of Technology\n",
"\n",
"Predicting Backwards: Generating Histories\n",
"\n",
"Sedimented Temporalities of Geodigital Landscapes"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "muslim-labor",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"what is your word? Archives\n",
"temperature value? 2\n"
]
},
{
"ename": "TypeError",
"evalue": "ufunc 'true_divide' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-4-811e22a18341>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mwor\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'what is your word? '\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mtemp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'temperature value? '\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mpin\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmanipulate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlower\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mtemperature\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtemp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m~/Documents/Any_One_day_future/A_tune_in/pocket/lib/python3.6/site-packages/pincelate/__init__.py\u001b[0m in \u001b[0;36mmanipulate\u001b[0;34m(self, s, letters, features, temperature)\u001b[0m\n\u001b[1;32m 444\u001b[0m )\n\u001b[1;32m 445\u001b[0m orth_seq = [self.phon2orth.to_target_vocab(item, 1)[0][0]\n\u001b[0;32m--> 446\u001b[0;31m for item in orth_decoding]\n\u001b[0m\u001b[1;32m 447\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 448\u001b[0m \u001b[0;31m# trim start/end tokens\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/Documents/Any_One_day_future/A_tune_in/pocket/lib/python3.6/site-packages/pincelate/__init__.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 443\u001b[0m x ** np.exp(orth_exps), temperature)\n\u001b[1;32m 444\u001b[0m )\n\u001b[0;32m--> 445\u001b[0;31m orth_seq = [self.phon2orth.to_target_vocab(item, 1)[0][0]\n\u001b[0m\u001b[1;32m 446\u001b[0m for item in orth_decoding]\n\u001b[1;32m 447\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/Documents/Any_One_day_future/A_tune_in/pocket/lib/python3.6/site-packages/pincelate/seq2seq.py\u001b[0m in \u001b[0;36mdecode_sequence\u001b[0;34m(self, state_value, target_seq, transform, maxlen)\u001b[0m\n\u001b[1;32m 234\u001b[0m \"\"\"\n\u001b[1;32m 235\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 236\u001b[0;31m \u001b[0;32myield\u001b[0m \u001b[0mtransform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtarget_seq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 237\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmaxlen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 238\u001b[0m output, h = self.infer_decoder_model.predict(\n",
"\u001b[0;32m~/Documents/Any_One_day_future/A_tune_in/pocket/lib/python3.6/site-packages/pincelate/__init__.py\u001b[0m in \u001b[0;36m<lambda>\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 441\u001b[0m \u001b[0;31m# orthography inference manipulation\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 442\u001b[0m transform=lambda x: softmax_temperature(\n\u001b[0;32m--> 443\u001b[0;31m x ** np.exp(orth_exps), temperature)\n\u001b[0m\u001b[1;32m 444\u001b[0m )\n\u001b[1;32m 445\u001b[0m orth_seq = [self.phon2orth.to_target_vocab(item, 1)[0][0]\n",
"\u001b[0;32m~/Documents/Any_One_day_future/A_tune_in/pocket/lib/python3.6/site-packages/pincelate/seq2seq.py\u001b[0m in \u001b[0;36msoftmax_temperature\u001b[0;34m(t, temp)\u001b[0m\n\u001b[1;32m 301\u001b[0m \u001b[0mzeros\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 302\u001b[0m \u001b[0mdist\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mt\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfloat64\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m0.0001\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 303\u001b[0;31m \u001b[0mpred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdist\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mtemp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 304\u001b[0m \u001b[0mexp_pred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpred\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 305\u001b[0m \u001b[0mpred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mexp_pred\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexp_pred\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mTypeError\u001b[0m: ufunc 'true_divide' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''"
]
}
],
"source": [
"wor = input('what is your word? ')\n",
"temp = input('temperature value? ')\n",
"\n",
"pin.manipulate(wor.lower(),temperature = int(temp))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b648b5ae",
"metadata": {},
"outputs": [],
"source": [
"@interact(s=\"any one future died\",temp=(0.05,2.5,0.05))\n",
"def tempadjust(s,temp):\n",
" return ' '.join([pin.manipulate(w.lower(),temperature=temp) for w in s.split()])"
]
},
{
"cell_type": "markdown",
"id": "573dbac9",
"metadata": {},
"source": [
"## Difference of dictionaries\n",
"\n",
"> It is often forgotten that dictionaries are artificial repositories, put together well after the languages they define. The roots of language are irrational and of a magical nature.” Jorge Luis Borges, El otro, el mismo. (Buenos Aires: Emecé, 2005), 5.\n",
"\n",
"Starting from the many worlds and layers that words carry with them, with this exercise, we propose to start the conference by sharing meanings, associations and (mis)understandings we have around them with each other.\n",
"\n",
"The code below is borrowed from a [temporary configuration](http://varia.zone/en/wordmord-dear-language.html) of [WordMord](https://wordmord-ur.la/), which came together around a *para-dictionary* that used to bend a text in different directions. \n",
"\n",
"The code is not using machine learning models, in face it is a very basic script that proposes to start with three kinds of meaning making processes:\n",
"\n",
"* paranyms - words having nearly the same meaning a feeling about a word that is beyond, below, behind formalised definitions. Closely resembling the term but not the same.\n",
"\n",
"* parameanings - could be our understanding of terms that run parallel to the formal definition It could be a 'paranormal' understanding - one outside our known comprehensions.\n",
"\n",
"* paradoxes - in this conference, paradoxes are \"as a condition of existence that has the potential to shake the common sense of AI\". What are paradoxes that surround specific terms?\n",
"\n",
"Before running the code, please edit the collective dictionary here [https://pad.vvvvvvaria.org/any_one_day_this_dictionary_has_died](https://pad.vvvvvvaria.org/any_one_day_this_dictionary_has_died). Then, choose a sentence/expression/title to respell and run the following cell."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "2e25f0db",
"metadata": {},
"outputs": [],
"source": [
"import random\n",
"import time\n",
"import json\n",
"import wget\n",
"import os"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "189c5b06",
"metadata": {},
"outputs": [],
"source": [
"url = \"https://pad.vvvvvvaria.org/any_one_day_this_dictionary_has_died/export/txt\"\n",
"\n",
"path= \"/home/angeliki/Documents/Any_One_day_future/A_tune_in\"\n",
"\n",
"filename = path + '/' + os.path.basename(url) # get the full path of the file\n",
"if os.path.exists(filename):\n",
" os.remove(filename) # if exist, remove it directly\n",
"wget.download(url, out=filename) # download it to the specific path.\n",
"\n",
" \n",
"with open(filename, 'r') as f:\n",
" dictionary = json.loads(f.read().replace(\"'\", '\"'))\n",
" \n",
"def makeparanyms():\n",
"\tnew_sentence = sentence\n",
"\tfor word in dictionary:\n",
"\t\tif word in new_sentence:\n",
"\t\t\tnew_sentence = new_sentence.replace(word, random.choice(dictionary[word]['paranyms']))\n",
"\tprint(new_sentence)\n",
"\n",
"def makeparameanings():\n",
"\tnew_sentence = sentence\n",
"\tfor word in dictionary:\n",
"\t\tif word in new_sentence:\n",
"\t\t\tnew_sentence = new_sentence.replace(word, random.choice(dictionary[word]['parameanings']))\n",
"\tprint(new_sentence)\n",
"\n",
"def makeparadoxes():\n",
"\tnew_sentence = sentence\n",
"\tfor word in dictionary:\n",
"\t\tif word in new_sentence:\n",
"\t\t\tnew_sentence = new_sentence.replace(word, random.choice(dictionary[word]['paradoxes']))\n",
"\tprint(new_sentence)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b1dde66a",
"metadata": {},
"outputs": [],
"source": [
"\n",
"sentence = input('what are your words? ')\n",
"\n",
"type = input('choose replacing method between \"paranyms\",\"parameanings\",\"paradoxes\",\"all\": ')\n",
"\n",
"if type == 'paranyms':\n",
"\tmakeparanyms()\n",
"elif type == 'parameanings':\n",
"\tmakeparameanings()\n",
"elif type == 'paradoxes':\n",
"\tmakeparadoxes()\n",
"elif type =='all':\n",
"\tmakeparanyms()\n",
"\ttime.sleep(1)\n",
"\tmakeparameanings()\n",
"\ttime.sleep(1)\n",
"\tmakeparadoxes()\n",
"else:\n",
" print(\"Wrong input. Please run the code again\")"
]
},
{
"cell_type": "markdown",
"id": "28782db3",
"metadata": {},
"source": [
"## Chant with, for, against, around, about AI\n",
"\n",
"By chanting, we refer to a repeated rhythmic phrase, one sung loudly and in unison with a group.\n",
"Chants are used in spiritual practices, protests, football matches, demonstrations, battles. They are words travelling surfacing through our bodies out into the world.\n",
"In this final part, we will make our own chant with, for, against, around, about AI that we can keep repeating throughout the conference.\n",
"\n",
"In groups of 4, and using the Para-generator, take a few minutes to make a chant to share with everyone else. A tune out."
]
},
{
"cell_type": "markdown",
"id": "f597b743",
"metadata": {},
"source": [
"You can use this pad [https://pad.vvvvvvaria.org/any_one_day_this_chant_will_live](https://pad.vvvvvvaria.org/any_one_day_this_chant_will_live) to draft your chants."
]
}
],
"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.6.9"
}
},
"nbformat": 4,
"nbformat_minor": 5
}