{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "\n", "\n", "# Tutorial\n", "\n", "This notebook gets you started with using\n", "[Text-Fabric](https://annotation.github.io/text-fabric/) for coding in the Fusus al Hikam by Ibn Arabi, Lakhnawi edition.\n", "\n", "Familiarity with the underlying\n", "[data model](https://annotation.github.io/text-fabric/tf/about/datamodel.html)\n", "is recommended." ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "## Installing Text-Fabric\n", "\n", "See [here](https://annotation.github.io/text-fabric/tf/about/install.html)" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "## Tip\n", "If you start computing with this tutorial, first copy its parent directory to somewhere else,\n", "outside your repository.\n", "If you pull changes from the repository later, your work will not be overwritten.\n", "Where you put your tutorial directory is up to you.\n", "It will work from any directory." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2018-10-18T10:40:34.922214Z", "start_time": "2018-10-18T10:40:34.901689Z" } }, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2018-10-18T10:40:36.468086Z", "start_time": "2018-10-18T10:40:36.442023Z" } }, "outputs": [], "source": [ "import os\n", "import collections" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2018-10-18T10:40:37.964346Z", "start_time": "2018-10-18T10:40:37.346091Z" } }, "outputs": [], "source": [ "from tf.app import use" ] }, { "cell_type": "markdown", "metadata": { "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ "## Fusus data\n", "\n", "Text-Fabric will fetch a standard set of features for you from the newest GitHub release binaries.\n", "\n", "The data will be stored in the `text-fabric-data` in your home directory." ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "# Load Features\n", "The data of the corpus is organized in features.\n", "They are *columns* of data.\n", "Think of the text as a gigantic spreadsheet, where row 1 corresponds to the\n", "first word, row 2 to the second word, and so on, for all 50,000+ words.\n", "\n", "The letters of each word is a column `form` in that spreadsheet.\n", "\n", "The corpus contains ca. 35 columns, not only for the words, but also for\n", "textual objects, such as *pieces*, *pages*, and *lines*.\n", "\n", "Instead of putting that information in one big table, the data is organized in separate columns.\n", "We call those columns **features**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the very last version, use `hot`.\n", "\n", "For the latest release, use `latest`.\n", "\n", "If you have cloned the repos (TF app and data), use `clone`.\n", "\n", "If you do not want/need to upgrade, leave out the checkout specifiers." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2018-10-18T10:40:42.958397Z", "start_time": "2018-10-18T10:40:41.535490Z" } }, "outputs": [ { "data": { "text/html": [ "TF-app: ~/text-fabric-data/among/fusus/app" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "data: ~/text-fabric-data/among/fusus/tf/Fusus/0.7" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "This is Text-Fabric 9.2.2\n", "Api reference : https://annotation.github.io/text-fabric/tf/cheatsheet.html\n", "\n", "37 features found and 0 ignored\n" ] }, { "data": { "text/html": [ "Text-Fabric: Text-Fabric API 9.2.2, among/fusus/app v3, Search Reference
Data: FUSUS, Character table, Feature docs
Features:
\n", "
Fusus Al Hikam, by Ibn Arabi, merged editions Lakhnawi-Afifi\n", "
\n", "\n", "
\n", "
\n", "combine_af\n", "
\n", "
int
\n", "
\n", " number of consecutive words in the Afifi textthat form an alignment entry with 1 or more words in the Lakhnawi text\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:57Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
integer
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "combine_lk\n", "
\n", "
int
\n", "
\n", " number of consecutive words in the Lakhnawi textthat form an alignment entry with 1 or more words in the Afifi text\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:57Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
integer
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "dir\n", "
\n", "
str
\n", "
\n", " writing direction of a span\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:57Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string, either r or l
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "editdistance\n", "
\n", "
int
\n", "
\n", " edit distance between the Lakhnawi part in an alignment entryand its Afifi counterpart\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:57Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
integer, number of edits between the counterparts
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "fass\n", "
\n", "
int
\n", "
\n", " number of the piece (bezel) that the word belongs to\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:57Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
number
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "letters\n", "
\n", "
str
\n", "
\n", " text string of a word without punctuation\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:57Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "letters_af\n", "
\n", "
str
\n", "
\n", " text string of a word without punctuation (Afifi edition)\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:57Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "lettersn\n", "
\n", "
str
\n", "
\n", " text string of a word in latin transcription (beta code)\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:57Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string, latin with diacritics
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "lettersn_af\n", "
\n", "
str
\n", "
\n", " text string of a word in latin transcription (beta code) (Afifi edition)\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:57Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string, latin with diacritics
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "lettersp\n", "
\n", "
str
\n", "
\n", " text string of a word in ASCII transcription (beta code)\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string, ASCII
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "lettersp_af\n", "
\n", "
str
\n", "
\n", " text string of a word in ASCII transcription (beta code) (Afifi edition)\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string, ASCII
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "letterst\n", "
\n", "
str
\n", "
\n", " text string of a word in romanized transcription (Library of Congress)\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string, latin with diacritics
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "letterst_af\n", "
\n", "
str
\n", "
\n", " text string of a word in romanized transcription (Library of Congress) (Afifi edition)\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string, latin with diacritics
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "line_af\n", "
\n", "
int
\n", "
\n", " line number in the raw fususa dataset, which is obtained from ocr-ing the Afifi page images\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
integer
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "ln\n", "
\n", "
int
\n", "
\n", " sequence number of a line within a page\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
number
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "lwcvl\n", "
\n", "
str
\n", "
\n", " personal notes by Cornelis van Lit\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "n\n", "
\n", "
int
\n", "
\n", " sequence number of a piece, page, column within a line, or span\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
number
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "np\n", "
\n", "
int
\n", "
\n", " sequence number of a proper content piece\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
number
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "otype\n", "
\n", "
str
\n", "
\n", " \n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "page_af\n", "
\n", "
int
\n", "
\n", " page number in the raw fususa dataset, which is obtained from ocr-ing the Afifi page images\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
integer
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "poetrymeter\n", "
\n", "
str
\n", "
\n", " meter in which this verse is written\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "poetryverse\n", "
\n", "
int
\n", "
\n", " word is start of a verse of poetry, value is the number of the verse\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
number
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "punc\n", "
\n", "
str
\n", "
\n", " punctuation and/or space immediately after a word\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "punc_af\n", "
\n", "
str
\n", "
\n", " punctuation and/or space immediately after a word (Afifi edition)\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "punca\n", "
\n", "
str
\n", "
\n", " punctuation and/or space immediately after a word\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string, ASCII
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "punca_af\n", "
\n", "
str
\n", "
\n", " punctuation and/or space immediately after a word (Afifi edition)\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string, ASCII
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "puncb\n", "
\n", "
str
\n", "
\n", " punctuation immediately before a word\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "puncba\n", "
\n", "
str
\n", "
\n", " punctuation immediately before a word\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string, ASCII
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "qunawims\n", "
\n", "
str
\n", "
\n", " on which folio of the oldest manuscript, penned by Qunawi himself, is this word attested?\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "quran\n", "
\n", "
str
\n", "
\n", " word is part of a quran citation (sura:aya)\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "ratio\n", "
\n", "
int
\n", "
\n", " ratio (=similarity) between the Lakhnawi part in an alignment entryand its Afifi counterpart\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
integer, scale 1 to 10, higher is more similar
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "raw\n", "
\n", "
str
\n", "
\n", " letters of the word straight from the pdf\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "slot_af\n", "
\n", "
int
\n", "
\n", " slot number in the raw fususa dataset, which is obtained from ocr-ing the Afifi page images\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
integer
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "slot_lk\n", "
\n", "
int
\n", "
\n", " slot number in the raw fususl dataset, which is obtained from reverse-engineering the Lakhnawi pdf\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
integer
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "title\n", "
\n", "
str
\n", "
\n", " title of a piece\n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
format:
\n", "
string
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n", "oslots\n", "
\n", "
none
\n", "
\n", " \n", "
\n", "\n", "
\n", "
author:
\n", "
Ibn Arabi
\n", "
\n", "\n", "
\n", "
converters:
\n", "
Cornelis van Lit, Dirk Roorda (Text-Fabric)
\n", "
\n", "\n", "
\n", "
dateWritten:
\n", "
2021-11-14T11:43:58Z
\n", "
\n", "\n", "
\n", "
editor:
\n", "
Lakhnawi and Afifi (merged with diff info)
\n", "
\n", "\n", "
\n", "
institute:
\n", "
Univ Utrecht NL/DANS
\n", "
\n", "\n", "
\n", "
language:
\n", "
ara
\n", "
\n", "\n", "
\n", "
name:
\n", "
fusus
\n", "
\n", "\n", "
\n", "
period:
\n", "
1165-1240
\n", "
\n", "\n", "
\n", "
project:
\n", "
Fusus
\n", "
\n", "\n", "
\n", "
published:
\n", "
pdf, personal communication
\n", "
\n", "\n", "
\n", "
researcher:
\n", "
Cornelis van Lit
\n", "
\n", "\n", "
\n", "
sourceFormat:
\n", "
CSV (tab-separated)
\n", "
\n", "\n", "
\n", "
title:
\n", "
Fusus Al Hikam
\n", "
\n", "\n", "
\n", "
writtenBy:
\n", "
Text-Fabric
\n", "
\n", "\n", "
\n", "
\n", "
\n", "\n", "
\n", "
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
Text-Fabric API: names N F E L T S C TF directly usable

" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A = use(\"among/fusus\", hoist=globals())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## API\n", "\n", "At this point it is helpful to throw a quick glance at the text-fabric API documentation\n", "(see the links under **API Members** above).\n", "\n", "The most essential thing for now is that we can use `F` to access the data in the features\n", "we've loaded.\n", "But there is more, such as `N`, which helps us to walk over the text, as we see in a minute." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Counting\n", "\n", "In order to get acquainted with the data, we start with the simple task of counting.\n", "\n", "## Count all nodes\n", "We use the\n", "[`N.walk()` generator](https://annotation.github.io/text-fabric/tf/core/nodes.html#tf.core.nodes.Nodes.walk)\n", "to walk through the nodes.\n", "\n", "We compared corpus to a gigantic spreadsheet, where the rows correspond to the words.\n", "In Text-Fabric, we call the rows `slots`, because they are the textual positions that can be filled with words.\n", "\n", "We also mentioned that there are also more textual objects.\n", "They are the verses, chapters and books.\n", "They also correspond to rows in the big spreadsheet.\n", "\n", "In Text-Fabric we call all these rows *nodes*, and the `N()` generator\n", "carries us through those nodes in the textual order.\n", "\n", "Just one extra thing: the `info` statements generate timed messages.\n", "If you use them instead of `print` you'll get a sense of the amount of time that\n", "the various processing steps typically need." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:13:01.501437Z", "start_time": "2018-03-08T10:13:01.452315Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.00s Counting nodes ...\n", " 0.01s 57143 nodes\n" ] } ], "source": [ "A.indent(reset=True)\n", "A.info(\"Counting nodes ...\")\n", "\n", "i = 0\n", "for n in N.walk():\n", " i += 1\n", "\n", "A.info(\"{} nodes\".format(i))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## What are those nodes?\n", "Every node has a type, like word, or phrase, sentence.\n", "We know that we have approximately 100,000 words and a few other nodes.\n", "But what exactly are they?\n", "\n", "Text-Fabric has two special features, `otype` and `oslots`, that must occur in every Text-Fabric data set.\n", "`otype` tells you for each node its type, and you can ask for the number of `slot`s in the text.\n", "\n", "Here we go!" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:13:05.040545Z", "start_time": "2018-03-08T10:13:05.019791Z" } }, "outputs": [ { "data": { "text/plain": [ "'word'" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F.otype.slotType" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:13:05.855607Z", "start_time": "2018-03-08T10:13:05.849069Z" } }, "outputs": [ { "data": { "text/plain": [ "40983" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F.otype.maxSlot" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:13:06.387787Z", "start_time": "2018-03-08T10:13:06.381228Z" } }, "outputs": [ { "data": { "text/plain": [ "57143" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F.otype.maxNode" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:13:07.770989Z", "start_time": "2018-03-08T10:13:07.764917Z" } }, "outputs": [ { "data": { "text/plain": [ "('piece', 'page', 'sentence', 'line', 'column', 'span', 'word')" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F.otype.all" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:13:11.588722Z", "start_time": "2018-03-08T10:13:11.581305Z" } }, "outputs": [ { "data": { "text/plain": [ "(('piece', 1413.2068965517242, 50215, 50243),\n", " ('page', 101.69478908188586, 49812, 50214),\n", " ('sentence', 16.789430561245393, 50244, 52684),\n", " ('line', 9.380407415884642, 45443, 49811),\n", " ('column', 9.191074231890559, 40984, 45442),\n", " ('span', 9.191074231890559, 52685, 57143),\n", " ('word', 1, 1, 40983))" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "C.levels.data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is interesting: above you see all the textual objects, with the average size of their objects,\n", "the node where they start, and the node where they end." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Count individual object types\n", "This is an intuitive way to count the number of nodes in each type.\n", "Note in passing, how we use the `indent` in conjunction with `info` to produce neat timed\n", "and indented progress messages." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:13:21.547051Z", "start_time": "2018-03-08T10:13:21.498807Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.00s counting objects ...\n", " | 0.00s 29 pieces\n", " | 0.00s 403 pages\n", " | 0.00s 2441 sentences\n", " | 0.00s 4369 lines\n", " | 0.00s 4459 columns\n", " | 0.00s 4459 spans\n", " | 0.00s 40983 words\n", " 0.01s Done\n" ] } ], "source": [ "A.indent(reset=True)\n", "A.info(\"counting objects ...\")\n", "\n", "for otype in F.otype.all:\n", " i = 0\n", " A.indent(level=1, reset=True)\n", "\n", " for n in F.otype.s(otype):\n", " i += 1\n", "\n", " A.info(\"{:>7} {}s\".format(i, otype))\n", "\n", "A.indent(level=0)\n", "A.info(\"Done\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Viewing textual objects\n", "\n", "We use the A API (the extra power) to peek into the corpus." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's inspect some words." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2018-05-18T09:18:02.282178Z", "start_time": "2018-05-18T09:18:02.274117Z" } }, "outputs": [ { "data": { "text/html": [ "
1000 في
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
10000 يجتمعان
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
page:50000 16 195
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "wordShow = (1000, 10000, 50000)\n", "for word in wordShow:\n", " A.pretty(word, withNodes=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Feature statistics\n", "\n", "`F`\n", "gives access to all features.\n", "Every feature has a method\n", "`freqList()`\n", "to generate a frequency list of its values, higher frequencies first.\n", "Here are the words in beta code, a top 20:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:13:28.926742Z", "start_time": "2018-03-08T10:13:28.846500Z" } }, "outputs": [ { "data": { "text/plain": [ "(('fy', 1341),\n", " ('mn', 1181),\n", " ('mā', 665),\n", " ('āllh', 619),\n", " ('', 604),\n", " ('lā', 486),\n", " ('ʿlá', 466),\n", " ('ān', 452),\n", " ('ālā', 420),\n", " ('ʿlyh', 322),\n", " ('hw', 311),\n", " ('lh', 294),\n", " ('ʿn', 290),\n", " ('ālḥḳ', 280),\n", " ('ḏlk', 279),\n", " ('hḏā', 273),\n", " ('bh', 257),\n", " ('kān', 249),\n", " ('whw', 244),\n", " ('wlā', 243))" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F.lettersn.freqList()[0:20]" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "## Word distribution\n", "\n", "Let's do a bit more fancy word stuff.\n", "\n", "### Hapaxes\n", "\n", "A hapax can be found by inspecting words and see how many occurrences they have.\n", "If that is number is one, we have a hapax.\n", "\n", "We work with the ASCII transliteration.\n", "\n", "We print 10 hapaxes with their gloss." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:13:58.376059Z", "start_time": "2018-03-08T10:13:58.247752Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.08s 5731 hapaxes found\n", "\t'_alh=t\n", "\t'_alhtkm\n", "\t'_amnw_a\n", "\t'_ant\n", "\t'_at/akm\n", "\t'_atyn_a\n", "\t'_ay=t\n", "\t'_aytn_a\n", "\t*d_a*hk=t\n", "\t*d_a*k\n" ] } ], "source": [ "A.indent(reset=True)\n", "\n", "hapax = []\n", "lexIndex = collections.defaultdict(list)\n", "\n", "for n in F.otype.s(\"word\"):\n", " lexIndex[F.lettersp.v(n)].append(n)\n", "\n", "hapax = dict((lex, occs) for (lex, occs) in lexIndex.items() if len(occs) == 1)\n", "\n", "A.info(\"{} hapaxes found\".format(len(hapax)))\n", "\n", "for h in sorted(hapax)[0:10]:\n", " print(f\"\\t{h}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we want more info on the hapaxes, we get that by means of its *node*.\n", "The `lexIndex` dictionary stores the occurrences of a lexeme as a list of nodes.\n", "\n", "Let's get the latin beta code and the arabic form of those 10 hapaxes." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:14:00.590376Z", "start_time": "2018-03-08T10:14:00.580157Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\tʾālhŧ ءالهة\n", "\tʾālhtkm ءالهتكم\n", "\tʾāmnwā ءامنوا\n", "\tʾānt ءأنت\n", "\tʾātákm ءاتىكم\n", "\tʾātynā ءاتينا\n", "\tʾāyŧ ءاية\n", "\tʾāytnā ءايتنا\n", "\tḍāḥkŧ ضاحكة\n", "\tḍāḳ ضاق\n" ] } ], "source": [ "for h in sorted(hapax)[0:10]:\n", " node = hapax[h][0]\n", " print(f\"\\t{F.lettersn.v(node):<12} {F.letters.v(node)}\")" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "### Small occurrence base\n", "\n", "The occurrence base of a word are the pieces in which it occurs.\n", "Let's look for words that occur in a single piece.\n", "\n", "Oh yes, we have already found the hapaxes, we will skip them here." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:14:09.712557Z", "start_time": "2018-03-08T10:14:09.068800Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.00s Finding single piece words\n", " 0.19s found 6408 single piece words\n" ] } ], "source": [ "A.indent(reset=True)\n", "A.info(\"Finding single piece words\")\n", "\n", "lexPieceIndex = {}\n", "allPiece = collections.defaultdict(set)\n", "for p in F.otype.s(\"piece\"):\n", " for w in L.d(p, otype=\"word\"):\n", " allPiece[p].add(F.lettersp.v(w))\n", "\n", "for (lex, occs) in lexIndex.items():\n", " lexPieceIndex[lex] = set(L.u(n, otype=\"piece\")[0] for n in occs)\n", "\n", "singlePieceLex = collections.defaultdict(set)\n", "for (lex, pieces) in lexPieceIndex.items():\n", " if len(pieces) == 1:\n", " singlePieceLex[list(pieces)[0]].add(lex)\n", "\n", "singlePiece = {piece: len(lexs) for (piece, lexs) in singlePieceLex.items()}\n", "\n", "A.info(\"found {} single piece words\".format(sum(singlePiece.values())))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:14:10.997607Z", "start_time": "2018-03-08T10:14:10.964980Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "piece #all #own %own\n", "-----------------------------------\n", "3 201 89 44.3%\n", "28 1627 672 41.3%\n", "18 1239 482 38.9%\n", "30 1242 465 37.4%\n", "6 837 311 37.2%\n", "27 681 243 35.7%\n", "11 1123 394 35.1%\n", "13 954 333 34.9%\n", "14 418 137 32.8%\n", "19 1010 329 32.6%\n", "21 432 139 32.2%\n", "5 1026 330 32.2%\n", "25 770 239 31.0%\n", "16 603 185 30.7%\n", "23 323 97 30.0%\n", "8 471 140 29.7%\n", "9 666 195 29.3%\n", "22 565 164 29.0%\n", "20 735 212 28.8%\n", "10 427 123 28.8%\n", "15 785 226 28.8%\n", "4 936 269 28.7%\n", "17 764 219 28.7%\n", "7 565 157 27.8%\n", "26 448 119 26.6%\n", "24 476 119 25.0%\n", "34 73 15 20.5%\n", "35 43 5 11.6%\n", "1 1 0 0.0%\n" ] } ], "source": [ "print(\n", " \"{:<20}{:>5}{:>5}{:>5}\\n{}\".format(\n", " \"piece\",\n", " \"#all\",\n", " \"#own\",\n", " \"%own\",\n", " \"-\" * 35,\n", " )\n", ")\n", "pieceList = []\n", "\n", "for p in F.otype.s(\"piece\"):\n", " piece = T.pieceName(p)\n", " a = len(allPiece[p])\n", " o = singlePiece.get(p, 0)\n", " pc = 100 * o / a\n", " pieceList.append((piece, a, o, pc))\n", "\n", "for x in sorted(pieceList, key=lambda e: (-e[3], -e[1], e[0])):\n", " print(\"{:<20} {:>4} {:>4} {:>4.1f}%\".format(*x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Layer API\n", "We travel upwards and downwards, forwards and backwards through the nodes.\n", "The Layer-API (`L`) provides functions: `u()` for going up, and `d()` for going down,\n", "`n()` for going to next nodes and `p()` for going to previous nodes.\n", "\n", "These directions are indirect notions: nodes are just numbers, but by means of the\n", "`oslots` feature they are linked to slots. One node *contains* an other node, if the one is linked to a set of slots that contains the set of slots that the other is linked to.\n", "And one if next or previous to an other, if its slots follow of precede the slots of the other one.\n", "\n", "`L.u(node)` **Up** is going to nodes that embed `node`.\n", "\n", "`L.d(node)` **Down** is the opposite direction, to those that are contained in `node`.\n", "\n", "`L.n(node)` **Next** are the next *adjacent* nodes, i.e. nodes whose first slot comes immediately after the last slot of `node`.\n", "\n", "`L.p(node)` **Previous** are the previous *adjacent* nodes, i.e. nodes whose last slot comes immediately before the first slot of `node`.\n", "\n", "All these functions yield nodes of all possible node types.\n", "By passing an optional parameter, you can restrict the results to nodes of that type.\n", "\n", "The result are ordered according to the order of things in the text.\n", "\n", "The functions return always a tuple, even if there is just one node in the result.\n", "\n", "## Going up\n", "We go from the first word to the piece it contains.\n", "Note the `[0]` at the end. You expect one piece, yet `L` returns a tuple.\n", "To get the only element of that tuple, you need to do that `[0]`.\n", "\n", "If you are like me, you keep forgetting it, and that will lead to weird error messages later on." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:14:15.350367Z", "start_time": "2018-03-08T10:14:15.343039Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "50215\n" ] } ], "source": [ "firstPiece = L.u(1, otype=\"piece\")[0]\n", "print(firstPiece)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Text API\n", "\n", "So far, we have mainly seen nodes and their numbers, and the names of node types.\n", "You would almost forget that we are dealing with text.\n", "So let's try to see some text.\n", "\n", "In the same way as `F` gives access to feature data,\n", "`T` gives access to the text.\n", "That is also feature data, but you can tell Text-Fabric which features are specifically\n", "carrying the text, and in return Text-Fabric offers you\n", "a Text API: `T`.\n", "\n", "## Formats\n", "Syriac text can be represented in a number of ways:\n", "\n", "* in transliteration, or in Syriac characters,\n", "* showing the actual text or only the lexemes,\n", "\n", "If you wonder where the information about text formats is stored:\n", "not in the program text-fabric, but in the data set.\n", "It has a feature `otext`, which specifies the formats and which features\n", "must be used to produce them. `otext` is the third special feature in a TF data set,\n", "next to `otype` and `oslots`.\n", "It is an optional feature.\n", "If it is absent, there will be no `T` API.\n", "\n", "Here is a list of all available formats in this data set." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:14:31.965590Z", "start_time": "2018-03-08T10:14:31.955945Z" } }, "outputs": [ { "data": { "text/plain": [ "['text-afifi-full',\n", " 'text-afifi-nice',\n", " 'text-afifi-plain',\n", " 'text-afifi-trans',\n", " 'text-orig-full',\n", " 'text-orig-nice',\n", " 'text-orig-plain',\n", " 'text-orig-trans']" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sorted(T.formats)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using the formats\n", "\n", "We can pretty display in other formats:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
fy
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
yjtm`ān
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
page 16 195
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for word in wordShow:\n", " A.pretty(word, fmt=\"text-orig-trans\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's use those formats to print out the first verse of the corpus." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:14:35.240131Z", "start_time": "2018-03-08T10:14:35.231752Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "text-afifi-full:\n", "\tبنزليلالع يلرعاالحمد له منزل الحك على قلوب الكلم بأحدية الطريق \n", "text-afifi-nice:\n", "\tbnzlylālʿ ylrʿāālḥmd lh mnzl ālḥk ʿlá ḳlwb ālklm bāḥdyŧ ālṭryḳ \n", "text-afifi-plain:\n", "\tbnzlyl_al` ylr`_a_al*hmd lh mnzl _al*hk `l/a *klwb _alklm b_a*hdy=t _al*try*k \n", "text-afifi-trans:\n", "\tbnzlylāl` ylr`āālḥmd lh mnzl ālḥk `lā qlwb ālklm bāḥdyt ālṭryq \n", "text-orig-full:\n", "\t الحمد لله منزل الحكم على قلوب الكلم بأحدية الطريق \n", "text-orig-nice:\n", "\t ālḥmd llh mnzl ālḥkm ʿlá ḳlwb ālklm bāḥdyŧ ālṭryḳ \n", "text-orig-plain:\n", "\t _al*hmd llh mnzl _al*hkm `l/a *klwb _alklm b_a*hdy=t _al*try*k \n", "text-orig-trans:\n", "\t ālḥmd llh mnzl ālḥkm `lā qlwb ālklm bāḥdyt ālṭryq \n" ] } ], "source": [ "for fmt in sorted(T.formats):\n", " print(\"{}:\\n\\t{}\".format(fmt, T.text(range(1, 12), fmt=fmt)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we do not specify a format, the **default** format is used (`text-orig-full`)." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:14:37.681491Z", "start_time": "2018-03-08T10:14:37.674538Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " الحمد لله منزل الحكم على قلوب الكلم بأحدية الطريق \n" ] } ], "source": [ "print(T.text(range(1, 12)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Whole text in all formats in less than a second\n", "Part of the pleasure of working with computers is that they can crunch massive amounts of data.\n", "The text of this corpus is a piece of cake.\n", "\n", "It takes less than a second to have that cake and eat it." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:14:40.870244Z", "start_time": "2018-03-08T10:14:39.998071Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.00s writing plain text of the Fusus in all formats\n", " 0.56s done 8 formats\n", "text-afifi-full\n", "بنزليلالع يلرعا\n", "الحمد له منزل الحك على قلوب الكلم بأحدية الطريق الأمم من المقام االأقدم وإن اختلفت النحل والملل لاختلاف الأمم \n", "وصلى الله على مد الهمم من خزائن الجود والكرم بالقيل الأقوم محمد وعلى آله وسلم أما بعد فإني رأيت رسول الله صلى الله عليه وسلم في مبشرة أريتها فيالعشر الآخر من محرم سنة سبع وعشرون وستمائة بمحروسة دمشق وبيدهصلى الله عليه وسلم كتاب فقال لي هذا تاب فصوص الحكم» خذه واخرجبه إلى الناس ينتفعون به \n", "فقلت المع والطاعة له ولرسوله وأولي الأمر مناكما أمرنا فحققنت الأمنية وأخلصت النية وجردت القصد والممة إلىإبراز هذا الكتاب كما حده لي رسول الله صلى الله عليه وسلم من غير زيادةولا نقصان وسألت الله تعالى أن يجعلني فيه وفي جميع أحوالي منعباده الذين ليس للشيطان عليهم سطان وأن يخصني في جميع ما يرقمهبناني وينطق به لساني وينطوي عليه جناني بالالقاء السثبوحي والنفثالروحي في \n", "الروع النفسي بالتأييد الاعتصامي حتى أكون مترجما لامتحكما ليتحقق من يقف عليه من أهل الله أصحاب القلوبأنه من مقام التقديس المنزه عن الأغراض النفسية التي يدخلها التلبيس وأرجو أن يكون الحق ما سمع دعاي فد أجاب نداي فما ألقي إلا مايلقي إلي ولا أنزل في هذا المسطور إلا ما \n", "\n", "text-afifi-nice\n", "bnzlylālʿ ylrʿā\n", "ālḥmd lh mnzl ālḥk ʿlá ḳlwb ālklm bāḥdyŧ ālṭryḳ ālāmm mn ālmḳām āālāḳdm wān āḫtlft ālnḥl wālmll lāḫtlāf ālāmm \n", "wṣlá āllh ʿlá md ālhmm mn ḫzāʾn ālǧwd wālkrm bālḳyl ālāḳwm mḥmd wʿlá ālh wslm āmā bʿd fāny rāyt rswl āllh ṣlá āllh ʿlyh wslm fy mbšrŧ ārythā fyālʿšr ālāḫr mn mḥrm snŧ sbʿ wʿšrwn wstmāʾŧ bmḥrwsŧ dmšḳ wbydhṣlá āllh ʿlyh wslm ktāb fḳāl ly hḏā tāb fṣwṣ ālḥkm» ḫḏh wāḫrǧbh ālá ālnās yntfʿwn bh \n", "fḳlt ālmʿ wālṭāʿŧ lh wlrswlh wāwly ālāmr mnākmā āmrnā fḥḳḳnt ālāmnyŧ wāḫlṣt ālnyŧ wǧrdt ālḳṣd wālmmŧ āláābrāz hḏā ālktāb kmā ḥdh ly rswl āllh ṣlá āllh ʿlyh wslm mn ġyr zyādŧwlā nḳṣān wsālt āllh tʿālá ān yǧʿlny fyh wfy ǧmyʿ āḥwāly mnʿbādh ālḏyn lys llšyṭān ʿlyhm sṭān wān yḫṣny fy ǧmyʿ mā yrḳmhbnāny wynṭḳ bh lsāny wynṭwy ʿlyh ǧnāny bālālḳāʾ ālsṯbwḥy wālnfṯālrwḥy fy \n", "ālrwʿ ālnfsy bāltāyyd ālāʿtṣāmy ḥtá ākwn mtrǧmā lāmtḥkmā lytḥḳḳ mn yḳf ʿlyh mn āhl āllh āṣḥāb ālḳlwbānh mn mḳām āltḳdys ālmnzh ʿn ālāġrāḍ ālnfsyŧ ālty ydḫlhā āltlbys wārǧw ān ykwn ālḥḳ mā smʿ dʿāy fd āǧāb ndāy fmā ālḳy ālā māylḳy āly wlā ānzl fy hḏā ālmsṭwr ālā mā \n", "\n", "text-afifi-plain\n", "bnzlyl_al` ylr`_a\n", "_al*hmd lh mnzl _al*hk `l/a *klwb _alklm b_a*hdy=t _al*try*k _al_amm mn _alm*k_am _a_al_a*kdm w_an _a_htlft _aln*hl w_almll l_a_htl_af _al_amm \n", "w*sl/a _allh `l/a md _alhmm mn _hz_a'n _aljwd w_alkrm b_al*kyl _al_a*kwm m*hmd w`l/a _alh wslm _am_a b`d f_any r_ayt rswl _allh *sl/a _allh `lyh wslm fy mb^sr=t _aryth_a fy_al`^sr _al_a_hr mn m*hrm sn=t sb` w`^srwn wstm_a'=t bm*hrws=t dm^s*k wbydh*sl/a _allh `lyh wslm kt_ab f*k_al ly h_d_a t_ab f*sw*s _al*hkm» _h_dh w_a_hrjbh _al/a _aln_as yntf`wn bh \n", "f*klt _alm` w_al*t_a`=t lh wlrswlh w_awly _al_amr mn_akm_a _amrn_a f*h*k*knt _al_amny=t w_a_hl*st _alny=t wjrdt _al*k*sd w_almm=t _al/a_abr_az h_d_a _alkt_ab km_a *hdh ly rswl _allh *sl/a _allh `lyh wslm mn *gyr zy_ad=twl_a n*k*s_an ws_alt _allh t`_al/a _an yj`lny fyh wfy jmy` _a*hw_aly mn`b_adh _al_dyn lys ll^sy*t_an `lyhm s*t_an w_an y_h*sny fy jmy` m_a yr*kmhbn_any wyn*t*k bh ls_any wyn*twy `lyh jn_any b_al_al*k_a' _als_tbw*hy w_alnf_t_alrw*hy fy \n", "_alrw` _alnfsy b_alt_ayyd _al_a`t*s_amy *ht/a _akwn mtrjm_a l_amt*hkm_a lyt*h*k*k mn y*kf `lyh mn _ahl _allh _a*s*h_ab _al*klwb_anh mn m*k_am _alt*kdys _almnzh `n _al_a*gr_a*d _alnfsy=t _alty yd_hlh_a _altlbys w_arjw _an ykwn _al*h*k m_a sm` d`_ay fd _aj_ab nd_ay fm_a _al*ky _al_a m_ayl*ky _aly wl_a _anzl fy h_d_a _alms*twr _al_a m_a \n", "\n", "text-afifi-trans\n", "bnzlylāl` ylr`ā\n", "ālḥmd lh mnzl ālḥk `lā qlwb ālklm bāḥdyt ālṭryq ālāmm mn ālmqām āālāqdm wān ākhtlft ālnḥl wālmll lākhtlāf ālāmm \n", "wṣlā āllh `lā md ālhmm mn khzāyn āljwd wālkrm bālqyl ālāqwm mḥmd w`lā ālh wslm āmā b`d fāny rāyt rswl āllh ṣlā āllh `lyh wslm fy mbshrt ārythā fyāl`shr ālākhr mn mḥrm snt sb` w`shrwn wstmāyt bmḥrwst dmshq wbydhṣlā āllh `lyh wslm ktāb fqāl ly hdhā tāb fṣwṣ ālḥkm» khdhh wākhrjbh ālā ālnās yntf`wn bh \n", "fqlt ālm` wālṭā`t lh wlrswlh wāwly ālāmr mnākmā āmrnā fḥqqnt ālāmnyt wākhlṣt ālnyt wjrdt ālqṣd wālmmt ālāābrāz hdhā ālktāb kmā ḥdh ly rswl āllh ṣlā āllh `lyh wslm mn ghyr zyādtwlā nqṣān wsālt āllh t`ālā ān yj`lny fyh wfy jmy` āḥwāly mn`bādh āldhyn lys llshyṭān `lyhm sṭān wān ykhṣny fy jmy` mā yrqmhbnāny wynṭq bh lsāny wynṭwy `lyh jnāny bālālqā' ālsthbwḥy wālnfthālrwḥy fy \n", "ālrw` ālnfsy bāltāyyd ālā`tṣāmy ḥtā ākwn mtrjmā lāmtḥkmā lytḥqq mn yqf `lyh mn āhl āllh āṣḥāb ālqlwbānh mn mqām āltqdys ālmnzh `n ālāghrāḍ ālnfsyt ālty ydkhlhā āltlbys wārjw ān ykwn ālḥq mā sm` d`āy fd ājāb ndāy fmā ālqy ālā māylqy āly wlā ānzl fy hdhā ālmsṭwr ālā mā \n", "\n", "text-orig-full\n", " \n", "الحمد لله منزل الحكم على قلوب الكلم بأحدية الطريق الأمم من المقام الأقدم وإن اختلفت النحل والملل لاختلاف الأمم. \n", "وصلى الله على ممد الهمم، من خزائن الجود والكرم، بالقيل الأقوم، محمد وعلى آله وسلم. أما بعد: فإني رأيت رسول الله صلى الله عليه وسلم في مبشرة أريتها في العشر الأخر من المحرم سنة سبع وعشرين وستمائة بمحروسة دمشق، وبيده صلى الله عليه وسلم كتاب. فقال لي: هذا كتاب فصوص الحكم. خذه واخرج به إلى الناس ينتفعون به». \n", "فقلت: السمع والطاعة لله ولرسوله وأولي الأمر منا، كما أمرنا». فحققت الأمنية، وأخلصت النية، وجردت القصد والهمة إلى إبراز هذا الكتاب كما حده لي رسول الله صلى الله عليه وسلم من غير زيادة ولا نقصان. وسألت الله أن يجعلني فيه وفي جميع أحوالي من عباده الذين ليس للشيطان عليهم سلطان، وأن يخصني في جميع ما يرقمه بناني، وينطق به لساني، وينطوي عليه جناني، بالإلقاء السبوحي والنفث الروحي في \n", "الروع النفسي بالتأييد الاعتصامي، حتى أكون مترجما لا متحكما، ليتحقق من يقف عليه من أهل الله، أصحاب القلوب، أنه من مقام التقديس المنزه عن الأغراض النفسية التي يدخلها التلبيس. وأرجو أن يكون الحق تعالى لما سمع دعائي، قد أجاب ندائي، فما ألقي إلا ما يلقى إلي، ولا أنزل في هذا المسطور إلا ما \n", "\n", "text-orig-nice\n", " \n", "ālḥmd llh mnzl ālḥkm ʿlá ḳlwb ālklm bāḥdyŧ ālṭryḳ ālāmm mn ālmḳām ālāḳdm wān āḫtlft ālnḥl wālmll lāḫtlāf ālāmm. \n", "wṣlá āllh ʿlá mmd ālhmm, mn ḫzāʾn ālǧwd wālkrm, bālḳyl ālāḳwm, mḥmd wʿlá ālh wslm. āmā bʿd: fāny rāyt rswl āllh ṣlá āllh ʿlyh wslm fy mbšrŧ ārythā fy ālʿšr ālāḫr mn ālmḥrm snŧ sbʿ wʿšryn wstmāʾŧ bmḥrwsŧ dmšḳ, wbydh ṣlá āllh ʿlyh wslm ktāb. fḳāl ly: hḏā ktāb fṣwṣ ālḥkm. ḫḏh wāḫrǧ bh ālá ālnās yntfʿwn bh». \n", "fḳlt: ālsmʿ wālṭāʿŧ llh wlrswlh wāwly ālāmr mnā, kmā āmrnā». fḥḳḳt ālāmnyŧ, wāḫlṣt ālnyŧ, wǧrdt ālḳṣd wālhmŧ ālá ābrāz hḏā ālktāb kmā ḥdh ly rswl āllh ṣlá āllh ʿlyh wslm mn ġyr zyādŧ wlā nḳṣān. wsālt āllh ān yǧʿlny fyh wfy ǧmyʿ āḥwāly mn ʿbādh ālḏyn lys llšyṭān ʿlyhm slṭān, wān yḫṣny fy ǧmyʿ mā yrḳmh bnāny, wynṭḳ bh lsāny, wynṭwy ʿlyh ǧnāny, bālālḳāʾ ālsbwḥy wālnfṯ ālrwḥy fy \n", "ālrwʿ ālnfsy bāltāyyd ālāʿtṣāmy, ḥtá ākwn mtrǧmā lā mtḥkmā, lytḥḳḳ mn yḳf ʿlyh mn āhl āllh, āṣḥāb ālḳlwb, ānh mn mḳām āltḳdys ālmnzh ʿn ālāġrāḍ ālnfsyŧ ālty ydḫlhā āltlbys. wārǧw ān ykwn ālḥḳ tʿālá lmā smʿ dʿāʾy, ḳd āǧāb ndāʾy, fmā ālḳy ālā mā ylḳá āly, wlā ānzl fy hḏā ālmsṭwr ālā mā \n", "\n", "text-orig-plain\n", " \n", "_al*hmd llh mnzl _al*hkm `l/a *klwb _alklm b_a*hdy=t _al*try*k _al_amm mn _alm*k_am _al_a*kdm w_an _a_htlft _aln*hl w_almll l_a_htl_af _al_amm. \n", "w*sl/a _allh `l/a mmd _alhmm, mn _hz_a'n _aljwd w_alkrm, b_al*kyl _al_a*kwm, m*hmd w`l/a _alh wslm. _am_a b`d: f_any r_ayt rswl _allh *sl/a _allh `lyh wslm fy mb^sr=t _aryth_a fy _al`^sr _al_a_hr mn _alm*hrm sn=t sb` w`^sryn wstm_a'=t bm*hrws=t dm^s*k, wbydh *sl/a _allh `lyh wslm kt_ab. f*k_al ly: h_d_a kt_ab f*sw*s _al*hkm. _h_dh w_a_hrj bh _al/a _aln_as yntf`wn bh». \n", "f*klt: _alsm` w_al*t_a`=t llh wlrswlh w_awly _al_amr mn_a, km_a _amrn_a». f*h*k*kt _al_amny=t, w_a_hl*st _alny=t, wjrdt _al*k*sd w_alhm=t _al/a _abr_az h_d_a _alkt_ab km_a *hdh ly rswl _allh *sl/a _allh `lyh wslm mn *gyr zy_ad=t wl_a n*k*s_an. ws_alt _allh _an yj`lny fyh wfy jmy` _a*hw_aly mn `b_adh _al_dyn lys ll^sy*t_an `lyhm sl*t_an, w_an y_h*sny fy jmy` m_a yr*kmh bn_any, wyn*t*k bh ls_any, wyn*twy `lyh jn_any, b_al_al*k_a' _alsbw*hy w_alnf_t _alrw*hy fy \n", "_alrw` _alnfsy b_alt_ayyd _al_a`t*s_amy, *ht/a _akwn mtrjm_a l_a mt*hkm_a, lyt*h*k*k mn y*kf `lyh mn _ahl _allh, _a*s*h_ab _al*klwb, _anh mn m*k_am _alt*kdys _almnzh `n _al_a*gr_a*d _alnfsy=t _alty yd_hlh_a _altlbys. w_arjw _an ykwn _al*h*k t`_al/a lm_a sm` d`_a'y, *kd _aj_ab nd_a'y, fm_a _al*ky _al_a m_a yl*k/a _aly, wl_a _anzl fy h_d_a _alms*twr _al_a m_a \n", "\n", "text-orig-trans\n", " \n", "ālḥmd llh mnzl ālḥkm `lā qlwb ālklm bāḥdyt ālṭryq ālāmm mn ālmqām ālāqdm wān ākhtlft ālnḥl wālmll lākhtlāf ālāmm. \n", "wṣlā āllh `lā mmd ālhmm, mn khzāyn āljwd wālkrm, bālqyl ālāqwm, mḥmd w`lā ālh wslm. āmā b`d: fāny rāyt rswl āllh ṣlā āllh `lyh wslm fy mbshrt ārythā fy āl`shr ālākhr mn ālmḥrm snt sb` w`shryn wstmāyt bmḥrwst dmshq, wbydh ṣlā āllh `lyh wslm ktāb. fqāl ly: hdhā ktāb fṣwṣ ālḥkm. khdhh wākhrj bh ālā ālnās yntf`wn bh». \n", "fqlt: ālsm` wālṭā`t llh wlrswlh wāwly ālāmr mnā, kmā āmrnā». fḥqqt ālāmnyt, wākhlṣt ālnyt, wjrdt ālqṣd wālhmt ālā ābrāz hdhā ālktāb kmā ḥdh ly rswl āllh ṣlā āllh `lyh wslm mn ghyr zyādt wlā nqṣān. wsālt āllh ān yj`lny fyh wfy jmy` āḥwāly mn `bādh āldhyn lys llshyṭān `lyhm slṭān, wān ykhṣny fy jmy` mā yrqmh bnāny, wynṭq bh lsāny, wynṭwy `lyh jnāny, bālālqā' ālsbwḥy wālnfth ālrwḥy fy \n", "ālrw` ālnfsy bāltāyyd ālā`tṣāmy, ḥtā ākwn mtrjmā lā mtḥkmā, lytḥqq mn yqf `lyh mn āhl āllh, āṣḥāb ālqlwb, ānh mn mqām āltqdys ālmnzh `n ālāghrāḍ ālnfsyt ālty ydkhlhā āltlbys. wārjw ān ykwn ālḥq t`ālā lmā sm` d`āyy, qd ājāb ndāyy, fmā ālqy ālā mā ylqā āly, wlā ānzl fy hdhā ālmsṭwr ālā mā \n", "\n" ] } ], "source": [ "A.indent(reset=True)\n", "A.info(\"writing plain text of the Fusus in all formats\")\n", "\n", "text = collections.defaultdict(list)\n", "\n", "for v in F.otype.s(\"page\"):\n", " words = L.d(v, \"word\")\n", " for fmt in sorted(T.formats):\n", " text[fmt].append(T.text(words, fmt=fmt))\n", "\n", "A.info(\"done {} formats\".format(len(text)))\n", "\n", "for fmt in sorted(text):\n", " print(\"{}\\n{}\\n\".format(fmt, \"\\n\".join(text[fmt][0:5])))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The full plain text\n", "We write a few formats to file, in your `Downloads` folder." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:14:43.743463Z", "start_time": "2018-03-08T10:14:43.726787Z" } }, "outputs": [], "source": [ "orig = \"text-orig-full\"\n", "trans = \"text-orig-trans\"\n", "for fmt in (orig, trans):\n", " with open(os.path.expanduser(f\"~/Downloads/FususL-{fmt}.txt\"), \"w\") as f:\n", " f.write(\"\\n\".join(text[fmt]))" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:14:44.766248Z", "start_time": "2018-03-08T10:14:44.618476Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " \n", "الحمد لله منزل الحكم على قلوب الكلم بأحدية الطريق الأمم من المقام الأقدم وإن اختلفت النحل والملل لاختلاف الأمم. \n", "وصلى الله على ممد الهمم، من خزائن الجود والكرم، بالقيل الأقوم، محمد وعلى آله وسلم. أما بعد: فإني رأيت رسول الله صلى الله عليه وسلم في مبشرة أريتها في العشر الأخر من المحرم سنة سبع وعشرين وستمائة بمحروسة دمشق، وبيده صلى الله عليه وسلم كتاب. فقال لي: هذا كتاب فصوص الحكم. خذه واخرج به إلى الناس ينتفعون به». \n", "فقلت: السمع والطاعة لله ولرسوله وأولي الأمر منا، كما أمرنا». فحققت الأمنية، وأخلصت النية، وجردت القصد والهمة إلى إبراز هذا الكتاب كما حده لي رسول الله صلى الله عليه وسلم من غير زيادة ولا نقصان. وسألت الله أن يجعلني فيه وفي جميع أحوالي من عباده الذين ليس للشيطان عليهم سلطان، وأن يخصني في جميع ما يرقمه بناني، وينطق به لساني، وينطوي عليه جناني، بالإلقاء السبوحي والنفث الروحي في \n", "الروع النفسي بالتأييد الاعتصامي، حتى أكون مترجما لا متحكما، ليتحقق من يقف عليه من أهل الله، أصحاب القلوب، أنه من مقام التقديس المنزه عن الأغراض النفسية التي يدخلها التلبيس. وأرجو أن يكون الحق تعالى لما سمع دعائي، قد أجاب ندائي، فما ألقي إلا ما يلقى إلي، ولا أنزل في هذا المسطور إلا ما \n", "ينزل به علي. ولست بنبي ولا رسول، ولكني وارث، ولآخرتي حارث. فمن الله فاسمعوا وإلى الله فارجعوا فإذا سمعتم ما أتيتم به، فعوا ثم بالفهم فصلوا مجمل القول واجمعوا ثم منوا به على طالبيه لا تمنعوا هذه الرحمة التي وسعتكم فوسعوا \n", "ومن الله أرجو أن أكون ممن أيد فتأيد، وأيد وقيد بالشرع المحمدي المطهر فتقيد وقيد. وحشرنا في زمرته، كما جعلنا من أمته. فأول ما ألقاه المالك على العبد من ذلك: \n", "فص حكمة إلهية في كلمة آدمية لما شاء الحق سبحانه من حيث أسماؤه الحسنى التي لا يبلغها الإحصاء أن يرى أعيانها، وإن شئت قلت: أن يرى عينه في كون \n", "جامع يحصر الأمر لكونه متصفا بالوجود، ويظهر به سره إليه. فإن رؤية الشيء نفسه بنفسه، ما هي مثل رؤيته نفسه في أمر آخر، يكون له كالمرآة، فإنه تظهر له نفسه في صورة يعطيها المحل المنظور فيه، مما لم يكن يظهر له من غير وجود هذا المحل، ولا تجليه له. وقد كان الحق أوجد العالم كله وجود شبح مسوى، لا روح فيه، \n", "فكان كمرآة غير مجلوة. ومن شأن الحكم الإلهي أنه ما سوى محلا إلا ولا بد أن يقبل روحا إلهيا عبر عنه بالنفخ فيه، وما هو إلا حصول الاستعداد من تلك الصورة المسواة لقبول الفيض المتجلي الدائم الذي لم يزل ولا يزال. وما بقي إلا قابل، والقابل لا يكون إلا من فيضه الأقدس. فالأمر كله منه ابتداؤه وانتهاؤه وإليه― يرجع الأمر كله﴾― كما ابتدأ منه. فاقتضى الأمر جلاء مرآة العالم؛ فكان آدم عين جلاء تلك المرآة، وروح تلك الصورة. وكانت الملائكة من بعض قوى تلك الصورة التي هي صورة العالم المعبر عنه في اصطلاح القوم بالإنسان الكبير. \n", "فكانت الملائكة له كالقوى الروحانية والحسية التي في النشأة الإنسانية. وكل قوة منها محجوبة بنفسها، لا ترى أفضل من ذاتها، وأن فيها فيما― تزعم الأهلية― لكل منصب عال، ومنزلة رفيعة عند الله، لما عندها من الجمعية الإلهية. بين ما يرجع من ذلك إلى الجناب الإلهي، وإلى جانب حقيقة الحقائق، وفي النشأة الحاملة لهذه الأوصاف إلى ما تقتضيه الطبيعة للكل التي حصرت قوابل العالم كله، أعلاه وأسفله. \n", "وهذا لا يعرفه عقل، بطريق نظر فكري، بل هذا الفن من الإدراك لا يكون إلا عن كشف إلهي منه يعرف ما أصل صور العالم القابلة لأرواحه، فسمى هذا المذكور إنسانا وخليفة؛ فأما إنسانيته فلعموم نشأته، وحصره الحقائق كلها، وهو للحق بمنزلة إنسان العين من العين الذي به يكون النظر، وهو المعبر عنه بالبصر. فلهذا سمي إنسانا، فإنه به نظر الحق إلى خلقه فرحمهم. فهو الإنسان الحادث الأزلي، والنشء الدائم الأبدي، والكلمة الفاصلة الجامعة. فتم العالم بوجوده. فهو من العالم كفص الخاتم من الخاتم، هو محل النقش والعلامة التي بها يختم الملك على خزانته. وسماه خليفة من أجل هذا. لأنه تعالى الحافظ خلقه كما يحفظ الختم الخزائن. فما دام ختم الملك عليها، لا يجسر أحد على فتحها إلا بإذنه. فاستخلفه في حفظ العالم، فلا يزال العالم محفوظا، ما دام فيه هذا الإنسان الكامل. \n", "ألا تراه إذا زال، وفك من خزانة الدنيا، لم يبق فيها ما اختزنه الحق فيها، وخرج ما كان فيها، والتحق بعضه ببعضه، وانتقل الأمر إلى الآخرة، فكان ختما على خزانة الآخرة ختما أبديا. فظهر جميع ما في الصورة الإلهية من الأسماء في هذه النشأة الإنسانية. فحازت رتبة الإحاطة والجمع، بهذا الوجود، وبه قامت الحجة لله تعالى على الملائكة. فتحفظ، فقد وعظك الله بغيرك، وانظر من أين أتي على من أتي عليه. فإن الملائكة لم تقف مع ما تعطيه نشأة هذا الخليفة، ولا وقفت مع ما تقتضيه حضرة الحق من العبادة الذاتية. \n", "فإنه ما يعرف أحد من الحق إلا ما تعطيه ذاته. وليس للملائكة جمعية آدم، ولا وقفت مع الأسماء الإلهية التي تخصها، وسبحت الحق بها وقدسته، وما علمت أن لله أسماء، ما وصل علمها إليها، فما سبحته بها ولا قدسته، فغلب عليها ما ذكرناه، وحكم عليها هذا الحال، فقالت من― حيث النشأة أتجعل فيها من يفسد فيها﴾. وليس إلا النزاع وهو عين ما وقع منهم، فما قالوه في حق آدم، هو عين ما هم فيه مع الحق. فلو لا أن نشأتهم تعطي ذلك، ما قالوا في حق آدم ما قالوه، وهم لا يشعرون. فلو عرفوا نفوسهم لعلموا، ولو علموا لعصموا. ثم لم يقفوا مع التجريح، حتى زادوا في الدعوى بما هم عليه من التقديس والتسبيح. وعند آدم من الأسماء الإلهية ما لم تكن الملائكة عليها، فما سبحت ربها بها، ولا قدسته عنها تقديس آدم وتسبيحه. فوصف الحق لنا ما جرى لنقف عنده، ونتعلم الأدب مع الله تعالى، \n", "فلا ندعي ما― أنا محقق به وحاو عليه بالتقييد.― فكيف أن نطلق في الدعوى، فنعم بها ما ليس لي بحال، ولا أنا منه على علم فنفتضح فهذا التعريف الإلهي مما أدب الحق به عباده الأدباء الأمناء الخلفاء. ثم نرجع إلى الحكمة فنقول: اعلم أن الأمور الكلية وإن― لم يكن لها وجود في عينها فهي― معقولة معلومة بلا شك في الذهن، فهي باطنة لا تزال عن الوجود العيني. ولها الحكم والأثر في كل ما له وجود عيني. بل هو عينها لا غيرها؛ أعني: أعيان الموجودات العينية. ولم تزل عن كونها معقولة في نفسها فهي الظاهرة من حيث أعيان \n", "الموجودات، كما هي الباطنة من حيث معقوليتها. فاستناد كل موجود عيني لهذه الأمور الكلية التي لا يمكن رفعها عن العقل، ولا يمكن وجودها في العين وجودا تزول به عن أن تكون معقولة. وسواء كان ذلك الموجود العيني مؤقتا أو غير مؤقت، نسبة المؤقت وغير المؤقت إلى هذا الأمر الكلي المعقول نسبة واحدة. غير أن هذا الأمر الكلي يرجع إليه حكم من الموجودات العينية بحسب ما تطلبه حقائق تلك الموجودات العينية، كنسبة العلم إلى العالم، والحياة إلى الحي، فالحياة حقيقة معقولة، والعلم حقيقة معقولة متميزة عن الحياة، كما هي الحياة متميزة عنه، ثم نقول في الحق تعالى: إن له علما وحياة، فهو الحي العالم. ونقول في الملك: إن له حياة وعلما، فهو الحي العالم. ونقول في الإنسان: إن له حياة وعلما، فهو الحي العالم. وحقيقة العلم واحدة. وحقيقة الحياة واحدة. ونسبتها إلى العالم والحي نسبة واحدة. ونقول في علم الحق: إنه قديم. وفي علم الإنسان: إنه محدث. فانظر ما أحدثته الإضافة من الحكم في هذه الحقيقة المعقولة. \n", "وانظر إلى هذا الارتباط بين المعقولات والموجودات العينية، فكما حكم العلم على من قام به أن يقال فيه: عالم»، حكم الموصوف به على العلم بأنه حادث في حق الحادث؛ قديم في حق القديم. فصار كل واحد محكوما به، محكوما عليه. ومعلوم أن هذه الأمور الكلية وإن كانت― معقولة فإنها― معدومة العين، موجودة الحكم، كما هي محكوم عليها إذا نسبت إلى الموجود العيني. فتقبل الحكم في الأعيان الموجودة، ولا تقبل التفصيل، ولا التجزي، فإن ذلك محال عليها. فإنها بذاتها في كل موصوف بها، كالإنسانية في كل شخص، شخص من هذا النوع الخاص، لم يتفصل ولم يتعدد بتعدد الأشخاص. ولا برحت معقولة. وإذا كان الارتباط بين من له وجود عيني، وبين من ليس له وجود عيني، قد ثبت وهي― نسب عدمية فارتباط― الموجودات بعضها ببعض أقرب أن يعقل لأنه على كل حال بينها جامع، وهو الوجود العيني. وهناك، فما ثم جامع، وقد وجد الارتباط بعدم الجامع، فبالجامع أقوى وأحق. ولا شك أن المحدث قد ثبت حدوثه وافتقاره إلى محدث أحدثه لإمكانه لنفسه، فوجوده من غيره، فهو يرتبط به ارتباط افتقار، ولا بد أن يكون المستند إليه واجب الوجود لذاته غنيا في وجوده بنفسه، غير مفتقر، \n", "وهو الذي أعطى الوجود بذاته لهذا الحادث، فانتسب إليه، ولما اقتضاه لذاته كان واجبا به. ولما كان استناده إلى من ظهر عنه لذاته، اقتضى أن يكون على صورته فيما ينسب إليه من كل شيء من اسم وصفة ما عدا الوجوب الذاتي، فإن ذلك لا يصح في الحادث، وإن كان واجب الوجود، ولكن وجوبه بغيره لا بنفسه. ثم لتعلم أنه لما كان الأمر على ما قلناه من ظهوره تصورته، أحالنا تعالى في العلم به على النظر في الحادث، وذكر أنه أرانا آياته فيه. فاستدللنا بنا عليه، فما وصفناه بوصف إلا كنا نحن ذلك الوصف، إلا الوجوب الخاص الذاتي. فلما علمناه بنا ومنا، نسبنا إليه كل ما نسبناه إلينا. وبذلك وردت الإخبارات الإلهية على ألسنة التراجم إلينا. فوصف نفسه لنا بنا، فإذا شهدناه، شهدنا نفوسنا، وإذا شهدنا، شهد نفسه. ولا نشك أنا كثيرون بالشخص والنوع، وأنا وإن كنا― على حقيقة واحدة تجمعنا، فنعلم― قطعا أن ثم فارقا به تميزت الأشخاص بعضها عن بعض، ولولا ذلك ما كانت الكثرة في الواحد. \n", "فكذلك أيضا، وإن وصفناه بما وصف نفسه من جميع الوجوه فلا بد من فارق. وليس إلا افتقارنا إليه في الوجود، وتوقف وجودنا عليه؛ لإمكاننا وغناه عن مثل ما افتقرنا إليه. فبهذا صح له الأزل والقدم الذي انتفت عنه الأولية التي لها افتتاح الوجود عن عدم، فلا ينسب إليه مع كونه الأول»، ولهذا قيل فيه الآخر». فلو كانت أوليته أولية وجود التقييد، لم يصح أن يكون الآخر للمقيد، لأنه لا آخر للممكن، لأن الممكنات غير متناهية، فلا آخر لها، وإنما كان آخرا لرجوع الأمر كله إليه، بعد نسبة ذلك إلينا، فهو الآخر في عين أوليته، والأول في عين آخريته. ثم لتعلم أن الحق وصف نفسه بأنه ظاهر باطن، فأوجد العالم؛ عالم غيب وشهادة، لندرك الباطن بغيبنا، والظاهر بشهادتنا. ووصف نفسه بالرضا والغضب. وأوجد العالم ذا خوف ورجاء، فنخاف غضبه، ونرجو رضاه. ووصف نفسه بأنه جميل، وذو جلال، فأوجدنا على هيبة وأنس، وهكذا جميع ما ينسب إليه تعالى، ويسمى به. فعبر عن هاتين الصفتين باليدين» اللتين توجهتا منه على خلق \n", "الإنسان الكامل؛ لكونه الجامع لحقائق العالم ومفرداته. فالعالم شهادة، والخليفة غيب، ولهذا يحجب السلطان. ووصف الحق نفسه بالحجب الظلمانية وهي― الأجسام الطبيعية والنورية،― وهي الأرواح اللطيفة. والعالم بين كثيف ولطيف، وهو عين الحجاب على نفسه. فلا يدرك الحق إدراكه نفسه. فلا يزال في حجاب لا يرفع، مع علمه بأنه متميز عن موجده بافتقاره، ولكن لا حظ له في وجوب الوجود الذاتي الذي لوجود الحق. فلا يدركه أبدا، فلا يزال الحق من هذه الحقيقة غير معلوم، علم ذوق وشهود؛ لأنه لا قدم للحادث في ذلك. فما جمع الله لآدم بين يديه إلا تشريفا، ولهذا قال لإبليس: ما منعك أن تسجد لما خلقت بيدى﴾، وما هو إلا عين جمعه بين الصورتين؛ صورة العالم، وصورة الحق، وهما يدا الحق. وإبليس جزء من العالم لم تحصل له هذه الجمعية. ولهذا كان آدم خليفة. فإن لم يكن ظاهرا بصورة من استخلفه فيما استخلفه فيه، فما هو خليفة. وإن لم يكن فيه جميع ما تطلبه الرعايا التي استخلف عليها لأن― استنادها إليه فلا― بد أن يقوم بجميع ما تحتاج إليه، وإلا، فليس بخليفة عليهم. \n" ] } ], "source": [ "!head -n 20 ~/Downloads/FususL-{orig}.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sections\n", "\n", "A section is a piece, a page or a line.\n", "Knowledge of sections is not baked into Text-Fabric.\n", "The config feature `otext.tf` may specify three section levels, and tell\n", "what the corresponding node types and features are.\n", "\n", "From that knowledge it can construct mappings from nodes to sections, e.g. from verse\n", "nodes to tuples of the form:\n", "\n", " (piece number, page number, line number)\n", "\n", "Here are examples of getting the section that corresponds to a node and vice versa.\n", "\n", "**NB:** `sectionFromNode` always delivers a verse specification, either from the\n", "first slot belonging to that node, or, if `lastSlot`, from the last slot\n", "belonging to that node." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "ExecuteTime": { "end_time": "2018-03-08T10:14:49.175819Z", "start_time": "2018-03-08T10:14:49.151007Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "section of first word (1, 0, 0)\n", "node of piece 8, page 88, line 3 46293\n" ] } ], "source": [ "for x in (\n", " (\"section of first word\", T.sectionFromNode(1)),\n", " (\"node of piece 8, page 88, line 3\", T.nodeFromSection((8, 88, 3))),\n", "):\n", " print(\"{:<30} {}\".format(*x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Next steps\n", "\n", "By now you have an impression how to compute around in the text.\n", "While this is still the beginning, I hope you already sense the power of unlimited programmatic access\n", "to all the bits and bytes in the data set.\n", "\n", "Here are a few directions for unleashing that power.\n", "\n", "## Search\n", "Text-Fabric contains a flexible search engine, that does not only work for this data,\n", "but also for data that you add to it.\n", "There are tutorials dedicated to search, but not in this corpus.\n", "See e.g. [quran search](https://nbviewer.org/github/q-ran/quran/blob/master/tutorial/search.ipynb).\n", "\n", "## Add your own data\n", "If you study the additional data, you can observe how that data is created and also\n", "how it is turned into a text-fabric data module.\n", "The last step is incredibly easy. You can write out every Python dictionary where the keys are numbers\n", "and the values string or numbers as a Text-Fabric feature.\n", "When you are creating data, you have already constructed those dictionaries, so writing\n", "them out is just one method call.\n", "\n", "You can then easily share your new features on GitHub, so that your colleagues everywhere\n", "can try it out for themselves." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "CC-BY Dirk Roorda" ] } ], "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.10.2" }, "toc": { "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "toc_cell": false, "toc_position": {}, "toc_section_display": "block", "toc_window_display": false }, "toc-autonumbering": false, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }