diff --git a/gutenberg-download.ipynb b/gutenberg-download.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..e28a6d64b3725a613499162dc637f4acd1865710
--- /dev/null
+++ b/gutenberg-download.ipynb
@@ -0,0 +1,765 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "0315e71a",
+   "metadata": {},
+   "source": [
+    "## Query Gutenberg project data\n",
+    "\n",
+    "Source: https://github.com/raduangelescu/gutenbergpy/tree/master\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "441964c9",
+   "metadata": {},
+   "source": [
+    "### Gutenberg Project SQLite Database\n",
+    "\n",
+    "<img src=\"sqlitecheme.png\" width=\"600\" >\n",
+    "\n",
+    "Source: https://github.com/raduangelescu/gutenbergpy/tree/master"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "ec28ca0b",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Defaulting to user installation because normal site-packages is not writeable\n",
+      "Collecting gutenbergpy\n",
+      "  Using cached gutenbergpy-0.3.5-py3-none-any.whl.metadata (7.7 kB)\n",
+      "Collecting future>=0.15.2 (from gutenbergpy)\n",
+      "  Using cached future-1.0.0-py3-none-any.whl.metadata (4.0 kB)\n",
+      "Collecting httpsproxy-urllib2 (from gutenbergpy)\n",
+      "  Using cached httpsproxy_urllib2-1.0.tar.gz (28 kB)\n",
+      "  Preparing metadata (setup.py) ... \u001b[?25ldone\n",
+      "\u001b[?25hCollecting lxml>=3.2.0 (from gutenbergpy)\n",
+      "  Downloading lxml-5.3.2-cp311-cp311-manylinux_2_28_x86_64.whl.metadata (3.6 kB)\n",
+      "Collecting pymongo (from gutenbergpy)\n",
+      "  Downloading pymongo-4.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (22 kB)\n",
+      "Requirement already satisfied: setuptools>=18.5 in /public/conda/Miniconda/envs/pytorch-2.6/lib/python3.11/site-packages (from gutenbergpy) (75.8.0)\n",
+      "Collecting chardet (from gutenbergpy)\n",
+      "  Using cached chardet-5.2.0-py3-none-any.whl.metadata (3.4 kB)\n",
+      "Collecting dnspython<3.0.0,>=1.16.0 (from pymongo->gutenbergpy)\n",
+      "  Using cached dnspython-2.7.0-py3-none-any.whl.metadata (5.8 kB)\n",
+      "Using cached gutenbergpy-0.3.5-py3-none-any.whl (22 kB)\n",
+      "Using cached future-1.0.0-py3-none-any.whl (491 kB)\n",
+      "Downloading lxml-5.3.2-cp311-cp311-manylinux_2_28_x86_64.whl (5.0 MB)\n",
+      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.0/5.0 MB\u001b[0m \u001b[31m32.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+      "\u001b[?25hUsing cached chardet-5.2.0-py3-none-any.whl (199 kB)\n",
+      "Downloading pymongo-4.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB)\n",
+      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.4/1.4 MB\u001b[0m \u001b[31m21.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+      "\u001b[?25hUsing cached dnspython-2.7.0-py3-none-any.whl (313 kB)\n",
+      "Building wheels for collected packages: httpsproxy-urllib2\n",
+      "  Building wheel for httpsproxy-urllib2 (setup.py) ... \u001b[?25ldone\n",
+      "\u001b[?25h  Created wheel for httpsproxy-urllib2: filename=httpsproxy_urllib2-1.0-py3-none-any.whl size=29293 sha256=ed7613c42cf109e546e11858b712eeb37d85f66a559d839be070aeb7abef9554\n",
+      "  Stored in directory: /home/tatiana.bladier/.cache/pip/wheels/e6/5c/6b/790df3d7037e3d9aaf7a48d563626941f2f60198d2f1eef8d2\n",
+      "Successfully built httpsproxy-urllib2\n",
+      "Installing collected packages: httpsproxy-urllib2, lxml, future, dnspython, chardet, pymongo, gutenbergpy\n",
+      "Successfully installed chardet-5.2.0 dnspython-2.7.0 future-1.0.0 gutenbergpy-0.3.5 httpsproxy-urllib2-1.0 lxml-5.3.2 pymongo-4.12.0\n"
+     ]
+    }
+   ],
+   "source": [
+    "#! pip3 install gutenbergpy"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "e16128ee",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import gutenbergpy.textget"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "9ea15819",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def usage_example(tid):\n",
+    "    # This gets a book by its gutenberg id number\n",
+    "    raw_book = gutenbergpy.textget.get_text_by_id(tid) # with headers\n",
+    "    clean_book = gutenbergpy.textget.strip_headers(raw_book) # without headers\n",
+    "    return clean_book, raw_book"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "id": "c01a6cb4",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Example phrase from the raw book: The Project Gutenberg eBook of La Dame aux camélias, by Alexandre Dumas, fils\n",
+      "\n",
+      "This eBook is for the use of anyone anywhere in the United States and\n",
+      "most other parts of the world at no cost and with almost no restrictions\n",
+      "whatsoever. You may copy it, give it away or re-use it under the terms\n",
+      "of the Project Gutenberg License included with this eBook or online at\n",
+      "www.gutenberg.org. If you are not located in the United States, you\n",
+      "will have to check the laws of the country where you are located before\n",
+      "using this eBook.\n",
+      "\n",
+      "Title: La Dame aux camélias\n",
+      "\n",
+      "Author: Alexandre Dumas, fils\n",
+      "\n",
+      "Release Date: December, 2000 [eBook #2419]\n",
+      "[Most recently updated: April 29, 2022]\n",
+      "\n",
+      "Language: French\n",
+      "\n",
+      "Character set encoding: UTF-8\n",
+      "\n",
+      "Produced by: Walter Debeuf\n",
+      "\n",
+      "*** START OF THE PROJECT GUTENBERG EBOOK LA DAME AUX CAMÉLIAS ***\n",
+      "\n",
+      "\n",
+      "\n",
+      "\n",
+      "LA DAME AUX CAMÉLIAS\n",
+      "\n",
+      "par Alexandre Dumas, fils\n",
+      "\n",
+      "\n",
+      "\n",
+      "\n",
+      "Chapitre I\n",
+      "\n",
+      "\n",
+      "Mon avis est qu'on ne peut créer des personnages que lorsque l'on a\n",
+      "beaucoup étudié les hommes, comme on ne peut parler une langue qu'à la\n",
+      "condition de l'avoir sérieusement apprise.\n",
+      "\n",
+      "N'ayant pas encore l'âge où l'on invente, je me contente de raconter.\n",
+      "\n",
+      "J'engage donc le lecteur à être convaincu de la réalité de cette\n",
+      "histoire, dont tous les personnages, à l'exception de l'héroïne, vivent\n",
+      "encore.\n",
+      "\n",
+      "D'ailleurs, il y a à Paris des témoins de la plupart des faits que je\n",
+      "recueille ici, et qui pourraient les confirmer, si mon témoignage ne\n",
+      "suffisait pas. Par une circonstance particulière, seul je pouvais les\n",
+      "écrire, car seul j'ai été le confident des derniers détails sans\n",
+      "lesquels il eût été impossible de faire un récit intéressant et complet.\n",
+      "\n",
+      "Or, voici comment ces détails sont parvenus à ma connaissance.--Le 12 du\n",
+      "mois de mars 1847, je lus, dans la rue Laffitte, une grande affiche\n",
+      "jaune annonçant une vente de meubles et de riches objets de curiosité.\n",
+      "Cette vente avait lieu après décès. L'affiche ne nommait pas la personne\n",
+      "morte, mais la vente devait se faire rue d'Antin, nº 9, le 16, de midi à\n",
+      "cinq heures.\n",
+      "\n",
+      "L'affiche portait en outre que l'on pourrait, le 13 et le 14, visiter\n",
+      "l'appartement et les meubles.\n",
+      "\n",
+      "J'ai toujours été amateur de curiosités. Je me promis de ne pas manquer\n",
+      "cette occasion, sinon d'en acheter, du moins d'en voir.\n",
+      "\n",
+      "Le lendemain, je me rendis rue d'Antin, nº 9.\n",
+      "\n",
+      "Il était de bonne heure, et cependant il y avait déjà dans l'appartement\n",
+      "des visiteurs et même des visiteuses, qui, quoique vêtues de velours,\n",
+      "couvertes de cachemires et attendues à la porte par leurs élégants\n",
+      "coupés, regardaient avec étonnement, avec admiration même, le luxe qui\n",
+      "s'étalait sous leurs yeux.\n",
+      "\n",
+      "Plus tard, je compris cette admiration et cet étonnement, car, m'étant\n",
+      "mis aussi à examiner, je reconnus aisément que j'étais dans\n",
+      "l'appartement d'une femme entretenue. Or, s'il y a une chose que les\n",
+      "femmes du monde désirent voir, et il y avait là des femmes du monde,\n",
+      "c'est l'intérieur de ces femmes, dont les équipages éclaboussent chaque\n",
+      "jour le leur, qui ont, comme elles et à côté d'elles, leur loge à\n",
+      "l'Opéra et aux Italiens, et qui étalent, à Paris, l'insolente opulence\n",
+      "de leur beauté, de leurs bijoux et de leurs scandales.\n",
+      "\n",
+      "Celle chez qui je me trouvais était morte: les femmes les plus\n",
+      "vertueuses pouvaient donc pénétrer jusque dans sa chambre. La mort avait\n",
+      "purifié l'air de ce cloaque splendide, et d'ailleurs elles avaient pour\n",
+      "excuse, s'il en était besoin, qu'elles venaient à une vente sans savoir\n",
+      "chez qui elles venaient. Elles avaient lu des affiches, elles voulaient\n",
+      "visiter ce que ces affiches promettaient et faire leur choix à l'avance;\n",
+      "rien de plus simple; ce qui ne les empêchait pas de chercher, au milieu\n",
+      "de toutes ces merveilles, les traces de cette vie de courtisane dont on\n",
+      "leur avait fait, sans doute, de si étranges récits.\n",
+      "\n",
+      "Malheureusement les mystères étaient morts avec la déesse, et, malgré\n",
+      "toute leur bonne volonté, ces dames ne surprirent que ce qui était à\n",
+      "vendre depuis le décès, et rien de ce qui se vendait du vivant de la\n",
+      "locataire.\n",
+      "\n",
+      "Du reste, il y avait de quoi faire des emplettes. Le mobilier était\n",
+      "superbe. Meubles de bois de rose et de Boule, vases de Sèvres et de\n",
+      "Chine, statuettes de Saxe, satin, velours et dentelle, rien n'y\n",
+      "manquait.\n",
+      "\n",
+      "Je me promenai dans l'appartement et je suivis les nobles curieuses qui\n",
+      "m'y avaient précédé. Elles entrèrent dans une chambre tendue d'étoffe\n",
+      "perse, et j'allais y entrer aussi, quand elles en sortirent presque\n",
+      "aussitôt en souriant et comme si elles eussent eu honte de cette\n",
+      "nouvelle curiosité. Je n'en désirai que plus vivement pénétrer dans\n",
+      "cette chambre. C'était le cabinet de toilette, revêtu de ses plus\n",
+      "minutieux détails, dans lesquels paraissait s'être développée au plus\n",
+      "haut point la prodigalité de la morte.\n",
+      "\n",
+      "Sur une grande table, adossée au mur, table de trois pieds de large sur\n",
+      "six de long, brillaient tous les trésors d'Aucoc et d'Odiot. C'était là\n",
+      "une magnifique collection, et pas un de ces mille objets, si nécessaires\n",
+      "à la toilette d'une femme comme celle chez qui nous étions, n'était en\n",
+      "autre métal qu'or ou argent. Cependant cette collection n'avait pu se\n",
+      "faire que peu à peu, et ce n'était pas le même amour qui l'avait\n",
+      "complétée.\n",
+      "\n",
+      "Moi qui ne m'effarouchais pas à la vue du cabinet de toilette d'une\n",
+      "femme entretenue, je m'amusais à en examiner les détails, quels qu'ils\n",
+      "fussent, et je m'aperçus que tous ces ustensiles magnifiquement ciselés\n",
+      "portaient des initiales variées et des couronnes différentes.\n",
+      "\n",
+      "Je regardais toutes ces choses dont chacune me représentait une\n",
+      "prostitution de la pauvre fille, et je me disais que Dieu avait été\n",
+      "clément pour elle, puisqu'il n'avait pas permis qu'elle en arrivât au\n",
+      "châtiment ordinaire, et qu'il l'avait laissée mourir dans son luxe et sa\n",
+      "beauté, avant la vieillesse, cette première mort des courtisanes.\n",
+      "\n",
+      "En effet, quoi de plus triste à voir que la vieillesse du vice, surtout\n",
+      "chez la femme? Elle ne renferme aucune dignité et n'inspire aucun\n",
+      "intérêt. Ce repentir éternel, non pas de la mauvaise route suivie, mais\n",
+      "des calculs mal faits et de l'argent mal employé, est une des plus\n",
+      "attristantes choses que l'on puisse entendre. J'ai connu une ancienne\n",
+      "femme galante à qui il ne restait plus de son passé qu'une fille presque\n",
+      "aussi belle que, au dire de ses contemporains, avait été sa mère. Cette\n",
+      "pauvre enfant à qui sa mère n'avait jamais dit: tu es ma fille, que pour\n",
+      "lui ordonner de nourrir sa vieillesse comme elle-même avait nourri son\n",
+      "enfance, cette pauvre créature se nommait Louise, et, obéissant à sa\n",
+      "mère, elle se livrait sans volonté, sans passion, sans plaisir, comme\n",
+      "elle eût fait un métier\n"
+     ]
+    }
+   ],
+   "source": [
+    "cleaned_book, raw_book = usage_example(2419)\n",
+    "\n",
+    "# Raw Book\n",
+    "raw_book = \" \".join(str(raw_book, 'utf-8').split(\" \")[0:1000])\n",
+    "\n",
+    "print(f'Example phrase from the raw book: {raw_book}')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "id": "1d6385f5",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Example phrase from the cleaned book: \n",
+      "\n",
+      "\n",
+      "\n",
+      "LA DAME AUX CAMÉLIAS\n",
+      "\n",
+      "par Alexandre Dumas, fils\n",
+      "\n",
+      "\n",
+      "\n",
+      "\n",
+      "Chapitre I\n",
+      "\n",
+      "\n",
+      "Mon avis est qu'on ne peut créer des personnages que lorsque l'on a\n",
+      "beaucoup étudié les hommes, comme on ne peut parler une langue qu'à la\n",
+      "condition de l'avoir sérieusement apprise.\n",
+      "\n",
+      "N'ayant pas encore l'âge où l'on invente, je me contente de raconter.\n",
+      "\n",
+      "J'engage donc le lecteur à être convaincu de la réalité de cette\n",
+      "histoire, dont tous les personnages, à l'exception de l'héroïne, vivent\n",
+      "encore.\n",
+      "\n",
+      "D'ailleurs, il y a à Paris des témoins de la plupart des faits que je\n",
+      "recueille ici, et qui pourraient les confirmer, si mon témoignage ne\n",
+      "suffisait pas. Par une circonstance particulière, seul je pouvais les\n",
+      "écrire, car seul j'ai été le confident des derniers détails sans\n",
+      "lesquels il eût été impossible de faire un récit intéressant et complet.\n",
+      "\n",
+      "Or, voici comment ces détails sont parvenus à ma connaissance.--Le 12 du\n",
+      "mois de mars 1847, je lus, dans la rue Laffitte, une grande affiche\n",
+      "jaune annonçant une vente de meubles et de riches objets de curiosité.\n",
+      "Cette vente avait lieu après décès. L'affiche ne nommait pas la personne\n",
+      "morte, mais la vente devait se faire rue d'Antin, nº 9, le 16, de midi à\n",
+      "cinq heures.\n",
+      "\n",
+      "L'affiche portait en outre que l'on pourrait, le 13 et le 14, visiter\n",
+      "l'appartement et les meubles.\n",
+      "\n",
+      "J'ai toujours été amateur de curiosités. Je me promis de ne pas manquer\n",
+      "cette occasion, sinon d'en acheter, du moins d'en voir.\n",
+      "\n",
+      "Le lendemain, je me rendis rue d'Antin, nº 9.\n",
+      "\n",
+      "Il était de bonne heure, et cependant il y avait déjà dans l'appartement\n",
+      "des visiteurs et même des visiteuses, qui, quoique vêtues de velours,\n",
+      "couvertes de cachemires et attendues à la porte par leurs élégants\n",
+      "coupés, regardaient avec étonnement, avec admiration même, le luxe qui\n",
+      "s'étalait sous leurs yeux.\n",
+      "\n",
+      "Plus tard, je compris cette admiration et cet étonnement, car, m'étant\n",
+      "mis aussi à examiner, je reconnus aisément que j'étais dans\n",
+      "l'appartement d'une femme entretenue. Or, s'il y a une chose que les\n",
+      "femmes du monde désirent voir, et il y avait là des femmes du monde,\n",
+      "c'est l'intérieur de ces femmes, dont les équipages éclaboussent chaque\n",
+      "jour le leur, qui ont, comme elles et à côté d'elles, leur loge à\n",
+      "l'Opéra et aux Italiens, et qui étalent, à Paris, l'insolente opulence\n",
+      "de leur beauté, de leurs bijoux et de leurs scandales.\n",
+      "\n",
+      "Celle chez qui je me trouvais était morte: les femmes les plus\n",
+      "vertueuses pouvaient donc pénétrer jusque dans sa chambre. La mort avait\n",
+      "purifié l'air de ce cloaque splendide, et d'ailleurs elles avaient pour\n",
+      "excuse, s'il en était besoin, qu'elles venaient à une vente sans savoir\n",
+      "chez qui elles venaient. Elles avaient lu des affiches, elles voulaient\n",
+      "visiter ce que ces affiches promettaient et faire leur choix à l'avance;\n",
+      "rien de plus simple; ce qui ne les empêchait pas de chercher, au milieu\n",
+      "de toutes ces merveilles, les traces de cette vie de courtisane dont on\n",
+      "leur avait fait, sans doute, de si étranges récits.\n",
+      "\n",
+      "Malheureusement les mystères étaient morts avec la déesse, et, malgré\n",
+      "toute leur bonne volonté, ces dames ne surprirent que ce qui était à\n",
+      "vendre depuis le décès, et rien de ce qui se vendait du vivant de la\n",
+      "locataire.\n",
+      "\n",
+      "Du reste, il y avait de quoi faire des emplettes. Le mobilier était\n",
+      "superbe. Meubles de bois de rose et de Boule, vases de Sèvres et de\n",
+      "Chine, statuettes de Saxe, satin, velours et dentelle, rien n'y\n",
+      "manquait.\n",
+      "\n",
+      "Je me promenai dans l'appartement et je suivis les nobles curieuses qui\n",
+      "m'y avaient précédé. Elles entrèrent dans une chambre tendue d'étoffe\n",
+      "perse, et j'allais y entrer aussi, quand elles en sortirent presque\n",
+      "aussitôt en souriant et comme si elles eussent eu honte de cette\n",
+      "nouvelle curiosité. Je n'en désirai que plus vivement pénétrer dans\n",
+      "cette chambre. C'était le cabinet de toilette, revêtu de ses plus\n",
+      "minutieux détails, dans lesquels paraissait s'être développée au plus\n",
+      "haut point la prodigalité de la morte.\n",
+      "\n",
+      "Sur une grande table, adossée au mur, table de trois pieds de large sur\n",
+      "six de long, brillaient tous les trésors d'Aucoc et d'Odiot. C'était là\n",
+      "une magnifique collection, et pas un de ces mille objets, si nécessaires\n",
+      "à la toilette d'une femme comme celle chez qui nous étions, n'était en\n",
+      "autre métal qu'or ou argent. Cependant cette collection n'avait pu se\n",
+      "faire que peu à peu, et ce n'était pas le même amour qui l'avait\n",
+      "complétée.\n",
+      "\n",
+      "Moi qui ne m'effarouchais pas à la vue du cabinet de toilette d'une\n",
+      "femme entretenue, je m'amusais à en examiner les détails, quels qu'ils\n",
+      "fussent, et je m'aperçus que tous ces ustensiles magnifiquement ciselés\n",
+      "portaient des initiales variées et des couronnes différentes.\n",
+      "\n",
+      "Je regardais toutes ces choses dont chacune me représentait une\n",
+      "prostitution de la pauvre fille, et je me disais que Dieu avait été\n",
+      "clément pour elle, puisqu'il n'avait pas permis qu'elle en arrivât au\n",
+      "châtiment ordinaire, et qu'il l'avait laissée mourir dans son luxe et sa\n",
+      "beauté, avant la vieillesse, cette première mort des courtisanes.\n",
+      "\n",
+      "En effet, quoi de plus triste à voir que la vieillesse du vice, surtout\n",
+      "chez la femme? Elle ne renferme aucune dignité et n'inspire aucun\n",
+      "intérêt. Ce repentir éternel, non pas de la mauvaise route suivie, mais\n",
+      "des calculs mal faits et de l'argent mal employé, est une des plus\n",
+      "attristantes choses que l'on puisse entendre. J'ai connu une ancienne\n",
+      "femme galante à qui il ne restait plus de son passé qu'une fille presque\n",
+      "aussi belle que, au dire de ses contemporains, avait été sa mère. Cette\n",
+      "pauvre enfant à qui sa mère n'avait jamais dit: tu es ma fille, que pour\n",
+      "lui ordonner de nourrir sa vieillesse comme elle-même avait nourri son\n",
+      "enfance, cette pauvre créature se nommait Louise, et, obéissant à sa\n",
+      "mère, elle se livrait sans volonté, sans passion, sans plaisir, comme\n",
+      "elle eût fait un métier si l'on eût songé à lui en apprendre un.\n",
+      "\n",
+      "La vue continuelle de la débauche, une débauche précoce, alimentée par\n",
+      "l'état continuellement maladif de cette fille, avait éteint en elle\n",
+      "l'intelligence du mal et du bien que Dieu lui avait donnée peut-être,\n",
+      "mais qu'il n'était venu à l'idée de personne de développer.\n",
+      "\n",
+      "Je me rappellerai toujours cette jeune fille, qui passait sur les\n",
+      "boulevards presque tous les jours à la même heure. Sa mère\n",
+      "l'accompagnait sans cesse, aussi assidûment qu'une vraie mère eût\n",
+      "accompagné sa vraie fille. J'étais bien jeune alors, et prêt à accepter\n",
+      "pour moi la facile morale de mon siècle. Je me souviens cependant que la\n",
+      "vue de cette surveillance scandaleuse m'inspirait le mépris et le\n",
+      "dégoût.\n",
+      "\n",
+      "Joignez à cela que jamais visage de vierge n'eut un pareil sentiment\n",
+      "d'innocence, une pareille\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Cleaned Book\n",
+    "cleaned_book = \" \".join(str(cleaned_book, 'utf-8').split(\" \")[0:1000])\n",
+    "\n",
+    "print(f'Example phrase from the cleaned book: {cleaned_book}')\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "d1ce9c82",
+   "metadata": {},
+   "source": [
+    "### Query Gutenberg Database (SQLite)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "id": "78b86a1c",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "' create Gutenberg database\\nAttention! This needs to be done just once for an OS and it roughly takes 20 minutes '"
+      ]
+     },
+     "execution_count": 8,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "from gutenbergpy.gutenbergcache import GutenbergCache\n",
+    "\n",
+    "\"\"\" create Gutenberg database\n",
+    "Attention! This needs to be done just once for an OS and it roughly takes 20 minutes \"\"\"\n",
+    "# GutenbergCache.create(refresh=False, download=False, \\\n",
+    "                     #unpack=False, parse=True, cache=True, deleteTemp=True)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "id": "ca9f49f5",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#for sqlite\n",
+    "cache  = GutenbergCache.get_cache()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "id": "52b3bb4a",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[(0,)]\n"
+     ]
+    }
+   ],
+   "source": [
+    "res = cache.native_query(\"PRAGMA foreign_keys\")\n",
+    "k = res.fetchall()\n",
+    "print(k)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "id": "f81f5dfc",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[('types',), ('sqlite_sequence',), ('titles',), ('subjects',), ('rights',), ('publishers',), ('languages',), ('downloadlinkstype',), ('downloadlinks',), ('bookshelves',), ('books',), ('book_subjects',), ('book_authors',), ('authors',)]\n"
+     ]
+    }
+   ],
+   "source": [
+    "#show list of tables\n",
+    "res = cache.native_query(\"SELECT name FROM sqlite_master WHERE type='table'\") # WHERE type = \"table\";')\n",
+    "k = res.fetchall()\n",
+    "print(k)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "id": "fdf01c69",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[(0, 'id', 'INTEGER', 0, None, 1), (1, 'publisherid', 'INTEGER', 0, None, 0), (2, 'dateissued', 'DATE', 0, None, 0), (3, 'rightsid', 'INTEGER', 0, None, 0), (4, 'numdownloads', 'INTEGER', 0, None, 0), (5, 'languageid', 'INTEGER', 0, None, 0), (6, 'bookshelveid', 'INTEGER', 0, None, 0), (7, 'gutenbergbookid', 'INTEGER', 0, None, 0), (8, 'typeid', 'INTEGER', 0, None, 0)]\n"
+     ]
+    }
+   ],
+   "source": [
+    "# show columns from table books\n",
+    "res = cache.native_query(\"PRAGMA table_info(books)\")\n",
+    "print(res.fetchall())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "id": "a31b4e73",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[(0, 'id', 'INTEGER', 0, None, 1), (1, 'name', 'TEXT', 0, None, 0)]\n"
+     ]
+    }
+   ],
+   "source": [
+    "# show columns from table languages\n",
+    "res = cache.native_query(\"PRAGMA table_info(languages)\")\n",
+    "print(res.fetchall())\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "id": "4d85e390",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[(0, 'id', 'INTEGER', 0, None, 1), (1, 'name', 'TEXT', 0, None, 0)]\n"
+     ]
+    }
+   ],
+   "source": [
+    "# show columns from table authors\n",
+    "res = cache.native_query(\"PRAGMA table_info(authors)\")\n",
+    "print(res.fetchall())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "id": "63e2231a",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[(0, 'id', 'INTEGER', 0, None, 1), (1, 'publisherid', 'INTEGER', 0, None, 0), (2, 'dateissued', 'DATE', 0, None, 0), (3, 'rightsid', 'INTEGER', 0, None, 0), (4, 'numdownloads', 'INTEGER', 0, None, 0), (5, 'languageid', 'INTEGER', 0, None, 0), (6, 'bookshelveid', 'INTEGER', 0, None, 0), (7, 'gutenbergbookid', 'INTEGER', 0, None, 0), (8, 'typeid', 'INTEGER', 0, None, 0)]\n"
+     ]
+    }
+   ],
+   "source": [
+    "# show columns from table books\n",
+    "res = cache.native_query(\"PRAGMA table_info(books)\")\n",
+    "print(res.fetchall())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "id": "bb4dc1f4",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[(4,)]\n"
+     ]
+    }
+   ],
+   "source": [
+    "# French has languageid 4\n",
+    "res = cache.native_query(\"SELECT id FROM languages WHERE name='fr'\")\n",
+    "print(res.fetchall())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "id": "c1a748a6",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[(615, 'Hugo, Victor Marie, comte'), (616, 'Hugo, Víctor'), (617, 'Hugo, Victor'), (22247, 'Throssell, Hugo, Mrs.')]\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Alexander Dumas ids\n",
+    "res = cache.native_query(\"SELECT * FROM authors WHERE name LIKE '%Hugo,%'\")\n",
+    "print(res.fetchall())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "id": "2947fc5d",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[(13819, 'Les compagnons de Jéhu', 4), (13819, 'Les compagnons de Jéhu', 4), (13819, 'Les compagnons de Jéhu', 4), (13819, 'Les compagnons de Jéhu', 4), (13856, 'La reine Margot - Tome I', 4), (13856, 'La reine Margot - Tome I', 4), (13856, 'La reine Margot - Tome I', 4), (13856, 'La reine Margot - Tome I', 4), (13857, 'La reine Margot - Tome II', 4), (13857, 'La reine Margot - Tome II', 4), (13857, 'La reine Margot - Tome II', 4), (13857, 'La reine Margot - Tome II', 4), (13947, 'Le vicomte de Bragelonne, Tome I.', 4), (13947, 'Le vicomte de Bragelonne, Tome I.', 4), (13947, 'Le vicomte de Bragelonne, Tome I.', 4), (13947, 'Le vicomte de Bragelonne, Tome I.', 4), (13948, 'Le vicomte de Bragelonne, Tome II.', 4), (13948, 'Le vicomte de Bragelonne, Tome II.', 4), (13948, 'Le vicomte de Bragelonne, Tome II.', 4), (13948, 'Le vicomte de Bragelonne, Tome II.', 4), (13949, 'Le vicomte de Bragelonne, Tome III.', 4), (13949, 'Le vicomte de Bragelonne, Tome III.', 4), (13949, 'Le vicomte de Bragelonne, Tome III.', 4), (13949, 'Le vicomte de Bragelonne, Tome III.', 4), (13950, 'Le vicomte de Bragelonne, Tome IV.', 4), (13950, 'Le vicomte de Bragelonne, Tome IV.', 4), (13950, 'Le vicomte de Bragelonne, Tome IV.', 4), (13950, 'Le vicomte de Bragelonne, Tome IV.', 4), (13951, 'Les trois mousquetaires', 4), (13951, 'Les trois mousquetaires', 4), (13951, 'Les trois mousquetaires', 4), (13951, 'Les trois mousquetaires', 4), (13952, 'Vingt ans après', 4), (13952, 'Vingt ans après', 4), (13952, 'Vingt ans après', 4), (13952, 'Vingt ans après', 4), (15208, 'Les mille et un fantômes', 4), (15208, 'Les mille et un fantômes', 4), (15208, 'Les mille et un fantômes', 4), (15208, 'Les mille et un fantômes', 4), (15574, 'Le capitaine Paul', 4), (15574, 'Le capitaine Paul', 4), (15574, 'Le capitaine Paul', 4), (15574, 'Le capitaine Paul', 4), (17693, 'La San-Felice, Tome 01', 4), (17693, 'La San-Felice, Tome 01', 4), (17693, 'La San-Felice, Tome 01', 4), (17693, 'La San-Felice, Tome 01', 4), (17989, 'Le comte de Monte-Cristo, Tome I', 4), (17989, 'Le comte de Monte-Cristo, Tome I', 4), (17989, 'Le comte de Monte-Cristo, Tome I', 4), (17989, 'Le comte de Monte-Cristo, Tome I', 4), (17990, 'Le comte de Monte-Cristo, Tome II', 4), (17990, 'Le comte de Monte-Cristo, Tome II', 4), (17990, 'Le comte de Monte-Cristo, Tome II', 4), (17990, 'Le comte de Monte-Cristo, Tome II', 4), (17991, 'Le comte de Monte-Cristo, Tome III', 4), (17991, 'Le comte de Monte-Cristo, Tome III', 4), (17991, 'Le comte de Monte-Cristo, Tome III', 4), (17991, 'Le comte de Monte-Cristo, Tome III', 4), (17992, 'Le comte de Monte-Cristo, Tome IV', 4), (17992, 'Le comte de Monte-Cristo, Tome IV', 4), (17992, 'Le comte de Monte-Cristo, Tome IV', 4), (17992, 'Le comte de Monte-Cristo, Tome IV', 4), (18003, 'La femme au collier de velours', 4), (18003, 'La femme au collier de velours', 4), (18003, 'La femme au collier de velours', 4), (18003, 'La femme au collier de velours', 4), (18006, 'Le chevalier de Maison-Rouge', 4), (18006, 'Le chevalier de Maison-Rouge', 4), (18006, 'Le chevalier de Maison-Rouge', 4), (18006, 'Le chevalier de Maison-Rouge', 4), (18028, \"Le chevalier d'Harmental\", 4), (18028, \"Le chevalier d'Harmental\", 4), (18028, \"Le chevalier d'Harmental\", 4), (18028, \"Le chevalier d'Harmental\", 4), (18199, 'Le Collier de la Reine, Tome I', 4), (18199, 'Le Collier de la Reine, Tome I', 4), (18199, 'Le Collier de la Reine, Tome I', 4), (18199, 'Le Collier de la Reine, Tome I', 4), (18200, 'Le Collier de la Reine, Tome II', 4), (18200, 'Le Collier de la Reine, Tome II', 4), (18200, 'Le Collier de la Reine, Tome II', 4), (18200, 'Le Collier de la Reine, Tome II', 4), (18271, 'Georges', 4), (18271, 'Georges', 4), (18271, 'Georges', 4), (18271, 'Georges', 4), (18321, 'Acté', 4), (18321, 'Acté', 4), (18321, 'Acté', 4), (18321, 'Acté', 4), (18401, 'La San-Felice, Tome 02', 4), (18401, 'La San-Felice, Tome 02', 4), (18401, 'La San-Felice, Tome 02', 4), (18401, 'La San-Felice, Tome 02', 4), (18402, 'La San-Felice, Tome 03', 4), (18402, 'La San-Felice, Tome 03', 4), (18402, 'La San-Felice, Tome 03', 4), (18402, 'La San-Felice, Tome 03', 4), (18586, 'La San-Felice, Tome 04', 4), (18586, 'La San-Felice, Tome 04', 4), (18586, 'La San-Felice, Tome 04', 4), (18586, 'La San-Felice, Tome 04', 4), (18697, 'Le capitaine Pamphile', 4), (18697, 'Le capitaine Pamphile', 4), (18697, 'Le capitaine Pamphile', 4), (18697, 'Le capitaine Pamphile', 4), (18773, 'La San-Felice, Tome 05', 4), (18773, 'La San-Felice, Tome 05', 4), (18773, 'La San-Felice, Tome 05', 4), (18773, 'La San-Felice, Tome 05', 4), (18826, 'La San-Felice, Tome 06', 4), (18826, 'La San-Felice, Tome 06', 4), (18826, 'La San-Felice, Tome 06', 4), (18826, 'La San-Felice, Tome 06', 4), (1910, 'La Tulipe Noire', 4), (1910, 'La Tulipe Noire', 4), (1910, 'La Tulipe Noire', 4), (1910, 'La Tulipe Noire', 4), (21017, 'La San-Felice, Tome 08, Emma Lyonna, tome 4', 4), (21017, 'La San-Felice, Tome 08, Emma Lyonna, tome 4', 4), (21017, 'La San-Felice, Tome 08, Emma Lyonna, tome 4', 4), (21017, 'La San-Felice, Tome 08, Emma Lyonna, tome 4', 4), (21191, 'La San-Felice, Tome 09, Emma Lyonna, tome 5', 4), (21191, 'La San-Felice, Tome 09, Emma Lyonna, tome 5', 4), (21191, 'La San-Felice, Tome 09, Emma Lyonna, tome 5', 4), (21191, 'La San-Felice, Tome 09, Emma Lyonna, tome 5', 4), (2419, 'La dame aux camélias', 4), (26476, 'Création et rédemption, deuxième partie: La fille du marquis', 4), (26476, 'Création et rédemption, deuxième partie: La fille du marquis', 4), (26476, 'Création et rédemption, deuxième partie: La fille du marquis', 4), (26476, 'Création et rédemption, deuxième partie: La fille du marquis', 4), (26504, 'La tulipe noire', 4), (26504, 'La tulipe noire', 4), (26504, 'La tulipe noire', 4), (26504, 'La tulipe noire', 4), (2682, 'Henri III et sa Cour', 4), (2682, 'Henri III et sa Cour', 4), (2682, 'Henri III et sa Cour', 4), (2682, 'Henri III et sa Cour', 4), (29937, 'Les Femmes qui tuent et les Femmes qui votent', 4), (36812, 'Création et rédemption, première partie: Le docteur mystérieux', 4), (36812, 'Création et rédemption, première partie: Le docteur mystérieux', 4), (36812, 'Création et rédemption, première partie: Le docteur mystérieux', 4), (36812, 'Création et rédemption, première partie: Le docteur mystérieux', 4), (37771, 'Le comte de Moret', 4), (37771, 'Le comte de Moret', 4), (37771, 'Le comte de Moret', 4), (37771, 'Le comte de Moret', 4), (46747, 'Gabriel Lambert', 4), (46747, 'Gabriel Lambert', 4), (46747, 'Gabriel Lambert', 4), (46747, 'Gabriel Lambert', 4), (5104, \"Histoire d'un casse-noisette\", 4), (5104, \"Histoire d'un casse-noisette\", 4), (5104, \"Histoire d'un casse-noisette\", 4), (5104, \"Histoire d'un casse-noisette\", 4), (56054, 'Les trois mousquetaires, Volume  1 (of 2)', 4), (56054, 'Les trois mousquetaires, Volume  1 (of 2)', 4), (56054, 'Les trois mousquetaires, Volume  1 (of 2)', 4), (56054, 'Les trois mousquetaires, Volume  1 (of 2)', 4), (57019, 'Mémoires de Garibaldi, tome 1/2', 4), (57019, 'Mémoires de Garibaldi, tome 1/2', 4), (57019, 'Mémoires de Garibaldi, tome 1/2', 4), (57019, 'Mémoires de Garibaldi, tome 1/2', 4), (57454, 'Mémoires de Garibaldi, tome 2/2', 4), (57454, 'Mémoires de Garibaldi, tome 2/2', 4), (57454, 'Mémoires de Garibaldi, tome 2/2', 4), (57454, 'Mémoires de Garibaldi, tome 2/2', 4), (58211, 'Les trois mousquetaires, Volume 2 (of 2)', 4), (58211, 'Les trois mousquetaires, Volume 2 (of 2)', 4), (58211, 'Les trois mousquetaires, Volume 2 (of 2)', 4), (58211, 'Les trois mousquetaires, Volume 2 (of 2)', 4), (58427, 'La San-Felice, Tome 07, Emma Lyonna, tome 3', 4), (58427, 'La San-Felice, Tome 07, Emma Lyonna, tome 3', 4), (58427, 'La San-Felice, Tome 07, Emma Lyonna, tome 3', 4), (58427, 'La San-Felice, Tome 07, Emma Lyonna, tome 3', 4), (6319, 'Bric-à-brac', 4), (6319, 'Bric-à-brac', 4), (6319, 'Bric-à-brac', 4), (6319, 'Bric-à-brac', 4), (71510, 'Pauline et Pascal Bruno', 4), (71510, 'Pauline et Pascal Bruno', 4), (71510, 'Pauline et Pascal Bruno', 4), (71510, 'Pauline et Pascal Bruno', 4), (7770, 'Les quarante-cinq — Tome 1', 4), (7770, 'Les quarante-cinq — Tome 1', 4), (7770, 'Les quarante-cinq — Tome 1', 4), (7770, 'Les quarante-cinq — Tome 1', 4), (7771, 'Les quarante-cinq — Tome 2', 4), (7771, 'Les quarante-cinq — Tome 2', 4), (7771, 'Les quarante-cinq — Tome 2', 4), (7771, 'Les quarante-cinq — Tome 2', 4), (7772, 'Les quarante-cinq — Tome 3', 4), (7772, 'Les quarante-cinq — Tome 3', 4), (7772, 'Les quarante-cinq — Tome 3', 4), (7772, 'Les quarante-cinq — Tome 3', 4), (8692, 'Le Capitaine Aréna — Tome 2', 4), (8692, 'Le Capitaine Aréna — Tome 2', 4), (8692, 'Le Capitaine Aréna — Tome 2', 4), (8692, 'Le Capitaine Aréna — Tome 2', 4), (8693, 'Le Capitaine Aréna — Tome 1', 4), (8693, 'Le Capitaine Aréna — Tome 1', 4), (8693, 'Le Capitaine Aréna — Tome 1', 4), (8693, 'Le Capitaine Aréna — Tome 1', 4), (8863, 'Le Speronare', 4), (8863, 'Le Speronare', 4), (8863, 'Le Speronare', 4), (8863, 'Le Speronare', 4), (9262, 'Le corricolo', 4), (9262, 'Le corricolo', 4), (9262, 'Le corricolo', 4), (9262, 'Le corricolo', 4), (9637, 'La dame de Monsoreau — \\xadTome 1.', 4), (9637, 'La dame de Monsoreau — \\xadTome 1.', 4), (9637, 'La dame de Monsoreau — \\xadTome 1.', 4), (9637, 'La dame de Monsoreau — \\xadTome 1.', 4), (9638, 'La dame de Monsoreau — Tome 2.', 4), (9638, 'La dame de Monsoreau — Tome 2.', 4), (9638, 'La dame de Monsoreau — Tome 2.', 4), (9638, 'La dame de Monsoreau — Tome 2.', 4), (9639, 'La dame de Monsoreau — Tome 3.', 4), (9639, 'La dame de Monsoreau — Tome 3.', 4), (9639, 'La dame de Monsoreau — Tome 3.', 4), (9639, 'La dame de Monsoreau — Tome 3.', 4)]\n"
+     ]
+    }
+   ],
+   "source": [
+    "# find all French books by Alexander Dumas\n",
+    "\n",
+    "que = \"SELECT t1.gutenbergbookid, t4.name, t1.languageid \\\n",
+    "           FROM books t1 \\\n",
+    "            JOIN titles t4 \\\n",
+    "                ON t4.bookid = t1.id \\\n",
+    "           JOIN book_authors t2 \\\n",
+    "                        ON t2.bookid = t1.id \\\n",
+    "                   JOIN authors t3 \\\n",
+    "                        ON t2.authorid = t3.id \\\n",
+    "       WHERE (t2.authorid=2389 OR t2.authorid=2390 OR t2.authorid=2391 OR t2.authorid=2392) AND t1.languageid=4\"\n",
+    "# find all books by Alexander Dumas\n",
+    "res = cache.native_query(que)\n",
+    "rows = [r for r in res]\n",
+    "print(rows)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "59802752",
+   "metadata": {},
+   "source": [
+    "### Download texts and store them"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "34e0e858",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import os\n",
+    "\n",
+    "directory_name = 'data/gutenberg'\n",
+    "\n",
+    "# Create the directory\n",
+    "try:\n",
+    "    os.mkdir(directory_name)\n",
+    "    print(f\"Directory '{directory_name}' created successfully.\")\n",
+    "except FileExistsError:\n",
+    "    print(f\"Directory '{directory_name}' already exists.\")\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "5cf8b204",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def remove_duplicates(L1):\n",
+    "    s = []\n",
+    "    for i in L1:\n",
+    "       if i not in s:\n",
+    "          s.append(i)\n",
+    "    return s"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "0e9834a7",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "rows = remove_duplicates(rows)\n",
+    "print(f\"Found '{ len(rows)}' titles\")\n",
+    "print(rows)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "5c9c0df9",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#write data to files\n",
+    "\"\"\"\n",
+    "for x in rows:\n",
+    "    gutenberg_bookid = x[0]\n",
+    "    title = '_'.join(x[1].split( )) + '.txt'\n",
+    "    title = title.replace(',', '').replace('\\\\', '').replace('/', '')\n",
+    "    fpath = 'data/gutenberg/' + str(title)\n",
+    "    cleaned_book, _ = usage_example(gutenberg_bookid)\n",
+    "    cleaned_book = \" \".join(str(cleaned_book, 'utf-8').split(\" \"))\n",
+    "    print(title)\n",
+    "    with open(fpath, 'w') as f:\n",
+    "        f.write(cleaned_book)\n",
+    "    \"\"\""
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "1b61b568",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.11"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/gutenbergindex.db b/gutenbergindex.db
new file mode 100644
index 0000000000000000000000000000000000000000..be8637b2f611e232212be80f924bb3486f000af1
Binary files /dev/null and b/gutenbergindex.db differ
diff --git a/sqlitecheme.png b/sqlitecheme.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ed3e7dac7cbb2a338844ec53eff0994d4453f23
Binary files /dev/null and b/sqlitecheme.png differ