{ "cells": [ { "cell_type": "markdown", "id": "4a486875-147d-492a-9003-f05c48d841fc", "metadata": {}, "source": [ "\n", "\n", "\n", "\n", "---\n", "\n", "To get started: consult [start](start.ipynb)\n", "\n", "---\n", "\n", "# Search Introduction\n", "\n", "*Search* in Text-Fabric is a template based way of looking for structural patterns in your dataset.\n", "\n", "Within Text-Fabric we have the unique possibility to combine the ease of formulating search templates for\n", "complicated syntactical patterns with the power of programmatically processing the results.\n", "\n", "This notebook will show you how to get up and running.\n", "\n", "## Easy command\n", "\n", "Search is as simple as saying (just an example)\n", "\n", "```python\n", "results = A.search(template)\n", "A.show(results)\n", "```\n", "\n", "See all ins and outs in the\n", "[search template docs](https://annotation.github.io/text-fabric/tf/about/searchusage.html)." ] }, { "cell_type": "markdown", "id": "3f0597b0-6f7d-4610-91bb-6aa93a5c3f7a", "metadata": {}, "source": [ "# Incantation\n", "\n", "The ins and outs of installing Text-Fabric, getting the corpus, and initializing a notebook are\n", "explained in the [start tutorial](start.ipynb)." ] }, { "cell_type": "code", "execution_count": 1, "id": "b8d43d3f-d00a-4ec3-b690-d0fa6fc9dcbe", "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 2, "id": "156b5da3-563a-4081-967b-afd74cc314a3", "metadata": { "ExecuteTime": { "end_time": "2018-05-24T10:06:39.818664Z", "start_time": "2018-05-24T10:06:39.796588Z" } }, "outputs": [], "source": [ "from tf.app import use" ] }, { "cell_type": "code", "execution_count": 3, "id": "d77aff2b-9f7d-45fb-a1a2-7d31c16c2bca", "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "**Locating corpus resources ...**" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "app: ~/text-fabric-data/github/CLARIAH/descartes-tf/app" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "data: ~/text-fabric-data/github/CLARIAH/descartes-tf/tf/1.1" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "data: ~/text-fabric-data/github/CLARIAH/descartes-tf/parallels/tf/1.1" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", " Text-Fabric: Text-Fabric API 11.1.2, CLARIAH/descartes-tf/app v3, Search Reference
\n", " Data: DESCARTES-TF, Character table, Feature docs
\n", "
Node types\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "
Name# of nodes# slots/node% coverage
volume885241.88100
letter725940.60100
page2884236.45100
postscriptum5646.790
opener5451.970
closer54113.101
address8615.220
head72523.372
p843880.82100
sentence1307450.1496
hi59724.634
formula62001.211
figure3191.000
word6819351.00100
\n", " Sets: no custom sets
\n", " Features:
\n", "
Similar Sentences\n", "
\n", "\n", "
\n", "
\n", "sim\n", "
\n", "
int
\n", "\n", " similarity between sentences based on the Levenshtein ratio\n", "\n", "
\n", "\n", "
\n", "
\n", "\n", "
Descartes = Descartes, all letters\n", "
\n", "\n", "
\n", "
\n", "alt_date\n", "
\n", "
str
\n", "\n", " alternative date of a letter\n", "\n", "
\n", "\n", "
\n", "
\n", "alt_id\n", "
\n", "
str
\n", "\n", " alternative ids of a letter, comma separated\n", "\n", "
\n", "\n", "
\n", "
\n", "cert\n", "
\n", "
str
\n", "\n", " certainty of something\n", "\n", "
\n", "\n", "
\n", "
\n", "date\n", "
\n", "
str
\n", "\n", " date of a letter\n", "\n", "
\n", "\n", "
\n", "
\n", "id\n", "
\n", "
str
\n", "\n", " id of a letter\n", "\n", "
\n", "\n", "
\n", "
\n", "intermediary\n", "
\n", "
str
\n", "\n", " person involved in the transmission of the letter from sender to receiver\n", "\n", "
\n", "\n", "
\n", "
\n", "isitalic\n", "
\n", "
str
\n", "\n", " whether the word is in italic\n", "\n", "
\n", "\n", "
\n", "
\n", "ismargin\n", "
\n", "
str
\n", "\n", " whether the word is in the margin\n", "\n", "
\n", "\n", "
\n", "
\n", "issub\n", "
\n", "
str
\n", "\n", " whether the word is in subscript\n", "\n", "
\n", "\n", "
\n", "
\n", "issup\n", "
\n", "
str
\n", "\n", " whether the word is in supscript\n", "\n", "
\n", "\n", "
\n", "
\n", "language\n", "
\n", "
str
\n", "\n", " language of a letter\n", "\n", "
\n", "\n", "
\n", "
\n", "level\n", "
\n", "
str
\n", "\n", " level of a paragraph when it acts like a heading\n", "\n", "
\n", "\n", "
\n", "
\n", "n\n", "
\n", "
int
\n", "\n", " number of whatever element\n", "\n", "
\n", "\n", "
\n", "
\n", "notation\n", "
\n", "
str
\n", "\n", " notation method of a formula\n", "\n", "
\n", "\n", "
\n", "
\n", "otype\n", "
\n", "
str
\n", "\n", " \n", "\n", "
\n", "\n", "
\n", "
\n", "punc\n", "
\n", "
str
\n", "\n", " nonword chars after a word \n", "\n", "
\n", "\n", "
\n", "
\n", "recipient\n", "
\n", "
str
\n", "\n", " recipient of a letter\n", "\n", "
\n", "\n", "
\n", "
\n", "recipientloc\n", "
\n", "
str
\n", "\n", " location from where a letter was received\n", "\n", "
\n", "\n", "
\n", "
\n", "resp\n", "
\n", "
str
\n", "\n", " person responsible for something\n", "\n", "
\n", "\n", "
\n", "
\n", "sender\n", "
\n", "
str
\n", "\n", " sender of a letter\n", "\n", "
\n", "\n", "
\n", "
\n", "senderloc\n", "
\n", "
str
\n", "\n", " location from where a letter was sent\n", "\n", "
\n", "\n", "
\n", "
\n", "tex\n", "
\n", "
str
\n", "\n", " unformatted TeX code of a formula, without the `$`\n", "\n", "
\n", "\n", "
\n", "
\n", "trans\n", "
\n", "
str
\n", "\n", " transcription of a word \n", "\n", "
\n", "\n", "
\n", "
\n", "typ\n", "
\n", "
str
\n", "\n", " kind of a node; \"empty\"; \"formula\", \"head\", \"symbol\", \"illustration\"\n", "\n", "
\n", "\n", "
\n", "
\n", "url\n", "
\n", "
str
\n", "\n", " url of a graphic node\n", "\n", "
\n", "\n", "
\n", "
\n", "oslots\n", "
\n", "
none
\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" }, { "data": { "text/html": [ "data: ~/text-fabric-data/github/CLARIAH/descartes-tf/source/illustrations" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "Found 5 symbols
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "Found 310 illustrations
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A = use(\"CLARIAH/descartes-tf\", hoist=globals())" ] }, { "cell_type": "markdown", "id": "60350686-190b-4581-bb11-a5ccd2b21c83", "metadata": {}, "source": [ "# Basic search command\n", "\n", "We start with the most simple form of issuing a query.\n", "Let's look for the 16th sentence of the paragraphs that have that many sentences.\n", "\n", "Note that sentences are numbered within paragraphs and that the sentence number is in feature `n`." ] }, { "cell_type": "code", "execution_count": 4, "id": "b1586fae-955e-4043-84fa-f75320be7fc8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.01s 10 results\n" ] } ], "source": [ "template = \"\"\"\n", "sentence n=16\n", "\"\"\"\n", "\n", "results = A.search(template)" ] }, { "cell_type": "markdown", "id": "eff1eed5-bd15-4264-8e32-8d1feacb440c", "metadata": {}, "source": [ "We see the amount of results, but how do we get the results?" ] }, { "cell_type": "code", "execution_count": 5, "id": "0a163b37-4db0-440d-a838-5980932cfceb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(709049,),\n", " (709186,),\n", " (710254,),\n", " (712431,),\n", " (713741,),\n", " (716957,),\n", " (717009,),\n", " (717350,),\n", " (719832,),\n", " (720490,)]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results" ] }, { "cell_type": "markdown", "id": "f75dc1a4-c4e4-4052-b04e-cbc4bf918b5a", "metadata": {}, "source": [ "Nice try. These are indeed the results, but they are just the nodes, i.e. meaningless numbers (to us).\n", "\n", "We get more flesh and blood by displaying the results." ] }, { "cell_type": "code", "execution_count": 6, "id": "3fe1432d-2876-4245-a72a-53778c93dfe9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
npsentence
11 1027:3 Ce n'est pas que je ne l'aime et que je ne le tienne pour un homme tout plein d'honneur et de bonté; mais parce que je ne connais que deux personnes, avec qui il ait jamais eu quelque chose à démêler, qui sont M. Mydorge et M. Morin, et qu'il se plaint de tous les deux, je ne saurais que je ne juge qu'il tient quelque chose de cette humeur, il faut dire qu'il est bien malheureux.
21 1032:4 Quâ tamen in re non judico te satis prudenter cavere tuis rebus: quid enim si de istius manuscripti fide dubitatur? nunquid tutius esset testes adhibere vel tabulis publicis confirmare? Sed profecto, ut verum loquar, istae divitiae, quae fures timent et tantâ cum sollicitudine debent asservari, miserum te reddunt potius quàm beatum; nec, si mihi credis, te pigebit illa amittere simul cum morbo.
31 1116:3 Opinor autem quod, sicuti apud Poetam consessus Didonianus, conticebunt omnes intentique ora tenebunt. Precor autem te et obtestor ut eodem tenore caetera quae in manibus habes prosequaris et aliquando proferas, meque subinde epistolio tuo bees.
43 3174:23 Je m'étonne aussi de ce que, nonobstant que j'aie clairement démontré tout ce que j'ai dit devoir être corrigé en sa règle, et qu'il n'aît donné aucune raison à l'encontre, il ne laisse pas de dire que j'y ai mal réussi, au lieu de quoi je me persuade qu'il m'en devrait remercier; et même il ajoute que j'ai failli pour avoir dit qu'il fallait donner deux noms à la ligne qu'il nomme B etc., ce qui ne réussit, dit-il, qu'aux questions qui sont aisées, au lieu qu'il devrait dire que c'est donc lui-même qui avait failli, à cause que j'ai suivi en cela son texte de mot à mot, ainsi que j'ai faire pour le corriger.
53 3220:3 Je suis, Monsieur, Votre très obéissant et très obligé serviteur, DESCARTES. De Leyde le lundi au soir [12 décembre 1639]. Monsieur,
66 6391:3 Maer niet-te-min dewijl al de Werelt oordeelt, dat hy de voornaemste autheur is vande lasteringhen die in het ghemelt fameux boeck teghens my worden ghevonden, versoeck ick U. Ed.
76 6396:3 Je vous assure qu'elles ne me touchent guère, et ne m'ont point emmaigri, comme Voetius, à qui on dit qu'elles ont ôté treize livres de chair, mais non pas de graisse, à cause qu'il n'en eut jamais tant.
86 6425:9 Quin etiam nullum ea de re scriptum peculiare composui, sed obiter tantum in epistola in qua de Patre quodam Societatis conquerebar, et quam tunc commodam sub praelo habebam, paucas de illo paginas inserui.
97 7601:6 Lorsque l'écriture sainte parle en divers endroits de la multitude innombrable des Anges, elle confirme entièrement cette opinion: car nous jugeons que les moindres Anges sont incomparablement plus parfaits que les hommes.
108 8650:3 Cependant je puis vous assurer que cette Princesse, qui n'estime rien au monde que la vérité et la vertu, fait un grand jugement de vous pour l'amour de l'une et de l'autre.
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A.table(results)" ] }, { "cell_type": "markdown", "id": "8faefe5b-a4d7-4066-946e-7781511ca93f", "metadata": {}, "source": [ "In front of each result you see the volume number, letter id, and paragraph number of the result." ] }, { "cell_type": "markdown", "id": "9976d9ba-be60-42ab-90f4-0d0122352007", "metadata": {}, "source": [ "## Figures\n", "\n", "Let's look for all sentences with an illustration in it." ] }, { "cell_type": "code", "execution_count": 7, "id": "4269b0ee-87fe-46e1-bd99-3e62dd64d692", "metadata": {}, "outputs": [], "source": [ "query = \"\"\"\n", "sentence\n", " figure\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": 8, "id": "d791e8e9-9dd6-4443-bd6f-75a225f74cdb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.00s 319 results\n" ] } ], "source": [ "results = A.search(query)" ] }, { "cell_type": "code", "execution_count": 9, "id": "99de2119-7e2b-4f5b-b18a-eb04b9aff5bf", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "
npsentencefigure
11 1001:4 Unum autem est, quod, opinor, non satis meditate scripsisti: nempe omnes saltus in unicâ voce fieri per consonantias exactas.
21 1002:3 Atque hac arte quadruplo plures quaestiones et longe difficiliores solvi poterunt, quàm communi Algebrâ; 13 enim diversa genera aequationum cubicarum numero, qualia tantùm sunt tria aequationum communium: nempe inter 1 et O + ON, vel O − ON,\n", "vel denique ON − O . Aliud est quod jam quaero de radicibus simul ex pluribus variis nominibus compositis extrahendis; quod si reperero, ut spero, scientiam illam plane digeram in ordinem, si desidiam innatam possim vincere, et fata liberam vitam indulgeant.
31 1002:3 Atque hac arte quadruplo plures quaestiones et longe difficiliores solvi poterunt, quàm communi Algebrâ; 13 enim diversa genera aequationum cubicarum numero, qualia tantùm sunt tria aequationum communium: nempe inter 1 et O + ON, vel O − ON,\n", "vel denique ON − O . Aliud est quod jam quaero de radicibus simul ex pluribus variis nominibus compositis extrahendis; quod si reperero, ut spero, scientiam illam plane digeram in ordinem, si desidiam innatam possim vincere, et fata liberam vitam indulgeant.
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A.table(results, end=3)" ] }, { "cell_type": "markdown", "id": "825f8b50-152d-4dbb-96f8-547d5daf2d53", "metadata": {}, "source": [ "Note that there are two columns: 1 for the sentence node in each result, and 2 for the figure node in each result.\n", "\n", "The display of the second column does not add much here, so we can skip it:" ] }, { "cell_type": "code", "execution_count": 10, "id": "ae60e09b-042e-4f4e-a3f6-8449e9491842", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "
npsentencefigure
11 1001:4 Unum autem est, quod, opinor, non satis meditate scripsisti: nempe omnes saltus in unicâ voce fieri per consonantias exactas.
21 1002:3 Atque hac arte quadruplo plures quaestiones et longe difficiliores solvi poterunt, quàm communi Algebrâ; 13 enim diversa genera aequationum cubicarum numero, qualia tantùm sunt tria aequationum communium: nempe inter 1 et O + ON, vel O − ON,\n", "vel denique ON − O . Aliud est quod jam quaero de radicibus simul ex pluribus variis nominibus compositis extrahendis; quod si reperero, ut spero, scientiam illam plane digeram in ordinem, si desidiam innatam possim vincere, et fata liberam vitam indulgeant.
31 1002:3 Atque hac arte quadruplo plures quaestiones et longe difficiliores solvi poterunt, quàm communi Algebrâ; 13 enim diversa genera aequationum cubicarum numero, qualia tantùm sunt tria aequationum communium: nempe inter 1 et O + ON, vel O − ON,\n", "vel denique ON − O . Aliud est quod jam quaero de radicibus simul ex pluribus variis nominibus compositis extrahendis; quod si reperero, ut spero, scientiam illam plane digeram in ordinem, si desidiam innatam possim vincere, et fata liberam vitam indulgeant.
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A.table(results, end=3, skipCols={2})" ] }, { "cell_type": "markdown", "id": "2d6d6313-88a1-452f-9323-e977013d0d5a", "metadata": {}, "source": [ "We can make the display richer: instead of a plain table, we can unfold the sentences in the results.\n", "We only show the second result:" ] }, { "cell_type": "code", "execution_count": 11, "id": "4d5f1536-4194-4c9d-86b1-a3dbd44580db", "metadata": {}, "outputs": [ { "data": { "text/html": [ "

result 2" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

1 1002:3
sentence 4
Atque
hac
arte
quadruplo
plures
quaestiones
et
longe
difficiliores
solvi
poterunt,
quàm
communi
Algebrâ;
13
enim
diversa
genera
aequationum
cubicarum
numero,
qualia
tantùm
sunt
tria
aequationum
communium:
nempe
inter
formula
1
figure
et
formula
O
figure
+ ON
,
vel
formula
O
figure
− ON
,\n", "
vel
denique
formula
ON − O
figure
.
Aliud
est
quod
jam
quaero
de
radi
cibus
simul
ex
pluribus
variis
nominibus
compositis
extrahendis;
quod
si
reperero,
ut
spero,
scientiam
illam
plane
digeram
in
ordinem,
si
desidiam
innatam
possim
vincere,
et
fata
liberam
vitam
indulgeant.
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A.show(results, start=2, end=2)" ] }, { "cell_type": "markdown", "id": "6f4def1a-f87a-4f82-a537-0e3fadbcd6a1", "metadata": {}, "source": [ "# Formulas\n", "\n", "Now let's look for formulas that have a square root in them.\n", "\n", "Note that in TeX a square root is written as `\\sqrt`.\n", "\n", "The TeX source of a formula is contained in the `tex` feature of a formula node, provided\n", "the formula is written in TeX. Not all formulas are written in TeX." ] }, { "cell_type": "code", "execution_count": 12, "id": "b9a91170-0cd7-4ecc-b6cb-5b4fb08f7f05", "metadata": {}, "outputs": [], "source": [ "query = \"\"\"\n", "sentence\n", " formula tex~sqrt\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": 13, "id": "0c638c11-2064-4c91-b359-81ac6562b251", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.00s 54 results\n" ] } ], "source": [ "results = A.search(query)" ] }, { "cell_type": "code", "execution_count": 14, "id": "331153b5-2783-4b65-a161-28f157a0382b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "
npsentenceformula
12 2152:4 Or par cette seule équation de la page 326, à savoir: y ${\\rm m} - {{\\displaystyle\\strut {\\rm n}\\over \\displaystyle\\strut {\\rm z}}}{\\rm x} + \\sqrt{{\\rm mm} + {\\rm ox} - {{\\displaystyle\\strut {\\rm p}\\over \\displaystyle\\strut {\\rm m}}}{\\rm xx}}$,$\n", "en changeant seulement les marques + et -, ou supposant quelques termes pour nuls, je comprends toutes celles qui peuvent se rapporter à quelque lieu plan ou solide.
23 3174:14 Je cherche la tangente FE ou CB parallèle au diamètre AK, posant que la propriété de cette courbe est telle que, menant FG à angles droits sur AH, l'agrégat des cubes de FG et AG est égal au parallélipipède des mêmes FG et AG, et d'une autre ligne donnée qui est double d' AH.\n", "Et je fais AG = x, GF = y et le double d' AH = n d'j'ai x 3 + y 3 = xyn Puis je fais AE = v de façon que EG est x v et parce que l'angle EFG est de 45 degrés, GF est aussi x v ce que je substitue, au lieu d' y, en l'équation précédente, et au lieu de y 3 je substitue son cube, qui est x 3 − 3 vxx + 3 vvx v 3 si bien que j'ai pour mon équation 2 x 3 − 3 vxx + 3 vvx v 3 = nxx nvx ce que je compare avec xx − 2 ex + ee = 0 multiplié par 2 x − 2 f = 0 et j'ai 2 x 3 − 4 exx + 2 eex \n", "− 2 fxx + 4 efx − 2 eef = 0 de même forme que 2 x 3 − 3 vxx + 3 vvx v 3 = 0 \n", "− nxx + nvx. \n", "Et les termes multipliés par xx me donnent 2 f = 3 v + n − 4 e Puis les termes multipliés par x me donnent 6 ev + 2 en − 6 ee = 3 vv + nv ou bien $vv = - {{1\\over 3}}nv + 2ev + {{2\\over 3}}ne - 2ee$ c'est-à-dire à cause que e est égal à x, que v est $x - {{1\\over 6}}n \\pm \\sqrt{{{1\\over 36}}nn + {{1\\over 3}}nx - xx}$. \n", "Ce qui déterminerait entièrement la tangente cherchée, si la quantité x était connue; mais parce qu'elle ne l'est pas, il faut poursuivre en cette sorte.
33 3174:15 Puisque y est égal à x v et que v vient d'être trouvé, nous avons aussi $y = {{1\\over 6}}n \\pm \\sqrt{{{1\\over 36}}nn + {{1\\over 3}}nx - xx}$ ce qui étant substitué au lieu d' y, et son cube au lieu d' y 3 en la première équation, on trouve en la démêlant qu'elle se réduit à ces termes: $x^{4}.. - {{1\\over 9}}n^{3}x + {{1\\over 54}}n^{4} = 0$. \n", "Et par la règle qui est en ma Géométrie, page 383, j'écris en leur place: $z^{6}. - {{2\\over 27}}n^{4}zz - {{1\\over 81}}n^{6} = 0$. \n", "Puis (par la page 381) je trouve la valeur de zz, qui est ${{1\\over 3}}nn$ et $z = n\\sqrt{{{1\\over 3}}}$ Au moyen de quoi (par la page 385), je divise l'équation $x^{4} - {{1\\over 9}}n^{3}x + {{1\\over 54}}n^{4} = 0$ en deux autres qui sont $xx - nx\\sqrt{{{1\\over 3}} + {{1\\over 6}}nn} - {\\displaystyle\\strut {nn}\\over \\displaystyle\\strut {6\\sqrt{ 3}}} = 0$ et $xx + nx\\sqrt{{{1\\over 3}} + {{1\\over 6}}nn} + {\\displaystyle\\strut {nn}\\over \\displaystyle\\strut {6\\sqrt{ 3}}} = 0$. \n", "Et par la première de ces deux équations, je connais la valeur d' x, qui est $x = n\\sqrt{{{1\\over 12}}} \\pm \\sqrt{{\\displaystyle\\strut {nn}\\over \\displaystyle\\strut {6\\sqrt{3}}} - {{1\\over 12}}nn}$. \n", "Enfin, à cause que, cherchant en même façon la ligne AB par la tangente CB, il vient une équation toute semblable, on apprend de que la ligne AG est $n\\sqrt{{{1\\over 12}}} + \\sqrt{{\\displaystyle\\strut {nn}\\over \\displaystyle\\strut {6\\sqrt{3}}} - {{1\\over 12}}nn}$ et que AD est $n\\sqrt{{{1\\over 12}}} - \\sqrt{{\\displaystyle\\strut {nn}\\over \\displaystyle\\strut {6\\sqrt{3}}} - {{1\\over 12}}nn}$ et par conséquent que DG est $\\sqrt{{\\displaystyle\\strut {2nn}\\over \\displaystyle\\strut {3\\sqrt{3}}} - {{1\\over 3}}nn}$ et que CF est $\\sqrt{{\\displaystyle\\strut {4nn}\\over \\displaystyle\\strut {3\\sqrt{3}}} - {{2\\over 3}}nn}$. \n", "Ce qui est la plus grande largeur de la feuille qu'on demandait, en sorte que, si la ligne n est 9, CF sera $\\sqrt{36\\sqrt{3} - 54}$ et si n est 3, CF sera $\\sqrt{4\\sqrt{3} - 6}$ et ainsi des autres.
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A.table(results, end=3, skipCols={2})" ] }, { "cell_type": "code", "execution_count": 15, "id": "cb021654-21c0-435d-bd80-99d1ba02914e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "

result 1" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

2 2152:4
sentence 9
Or
par
cette
seule
équation
de
la
page
326,
à
savoir:
formula
y
formula
figure
formula TeX
tex={\\rm m} - {{\\displaystyle\\strut {\\rm n}\\over \\displaystyle\\strut {\\rm z}}}{\\rm x} + \\sqrt{{\\rm mm} + {\\rm ox} - {{\\displaystyle\\strut {\\rm p}\\over \\displaystyle\\strut {\\rm m}}}{\\rm xx}}
${\\rm m} - {{\\displaystyle\\strut {\\rm n}\\over \\displaystyle\\strut {\\rm z}}}{\\rm x} + \\sqrt{{\\rm mm} + {\\rm ox} - {{\\displaystyle\\strut {\\rm p}\\over \\displaystyle\\strut {\\rm m}}}{\\rm xx}}$
,$\n", "
en
changeant
seulement
les
marques +
et -,
ou
supposant
quelques
termes
pour
nuls,
je
comprends
toutes
celles
qui
peuvent
se
rapporter
à
quelque
lieu
plan
ou
solide.
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A.show(results, end=1)" ] }, { "cell_type": "markdown", "id": "9a70cab4-9316-46cd-beb5-66edd63f4a58", "metadata": {}, "source": [ "We can get rid of the TeX codes.\n", "\n", "We see them because our query mentioned the feature `tex`, but we can turn that off (showing the 3rd result only)" ] }, { "cell_type": "code", "execution_count": 16, "id": "028d28df-ff81-4e47-b904-974749c69ee2", "metadata": {}, "outputs": [ { "data": { "text/html": [ "

sentence 1" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

2 2152:4
sentence 9
Or
par
cette
seule
équation
de
la
page
326,
à
savoir:
formula
y
formula
figure
formula TeX
${\\rm m} - {{\\displaystyle\\strut {\\rm n}\\over \\displaystyle\\strut {\\rm z}}}{\\rm x} + \\sqrt{{\\rm mm} + {\\rm ox} - {{\\displaystyle\\strut {\\rm p}\\over \\displaystyle\\strut {\\rm m}}}{\\rm xx}}$
,$\n", "
en
changeant
seulement
les
marques +
et -,
ou
supposant
quelques
termes
pour
nuls,
je
comprends
toutes
celles
qui
peuvent
se
rapporter
à
quelque
lieu
plan
ou
solide.
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A.show(results, end=1, condensed=True, queryFeatures=False)" ] }, { "cell_type": "markdown", "id": "5d89b91b-dc66-4cc8-aec7-43e4a2765164", "metadata": {}, "source": [ "## Formulas without TeX\n", "\n", "We gather the formulas not written in TeX:" ] }, { "cell_type": "code", "execution_count": 17, "id": "398e1c5f-01f2-41d8-9317-ab73dd1f4ce1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.01s 5981 results\n" ] } ], "source": [ "query = \"\"\"\n", "formula notation#TeX\n", "\"\"\"\n", "\n", "results = A.search(query)" ] }, { "cell_type": "markdown", "id": "6df9780c-8aef-40ff-b474-7939e7bc6425", "metadata": {}, "source": [ "The majority is not written in TeX, let's sample a few:" ] }, { "cell_type": "code", "execution_count": 18, "id": "90250c53-9231-4a76-87ab-94c2df23284a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
npformula
17 7538:6 IN
22 2122:12 G
31 1020:7 ZZ
42 2164:25 GR
52 2159:5 g
62 2156:9 C in A + C in EAqA in E bisEq
72 2126:16 AO
81 1f1b:3 DE
97 7547:12 S
104 4303:13 BG
111 1063:9 B
126 6408:5 x
133 3198:15 FL
141 1020:12 Q
151 1020:10 LD
161 1066:7 B
172 2156:6 DN
182 2156:15 EO
194 4289:9 AC
206 6467:5 g
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from random import seed, sample\n", "\n", "seed(42)\n", "\n", "selected = sample(results, 20)\n", "\n", "A.table(selected)" ] }, { "cell_type": "markdown", "id": "aab833a7-aaaa-49ee-bb23-06712544bc17", "metadata": {}, "source": [ "These formulas are all so simple that TeX was not needed to display them.\n", "\n", "Let's see the first 2 of them in context:" ] }, { "cell_type": "code", "execution_count": 19, "id": "e3c73134-887d-4640-b138-46e08b7936db", "metadata": {}, "outputs": [ { "data": { "text/html": [ "

sentence 1" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

2 2122:12
sentence 1
Au
reste,
il
faut
remarquer
que
ce
n'
est
point
la
poulie
qui
cause
cette
force,
mais
seulement
le
redoublement
de
la
corde:
car
si
on
attache
encore
une
poulie
vers
formula
A
,
par
laquelle
on
passe
la
corde
formula
ABCH
,
il
ne
faudra
pas
moins
de
force
pour
tirer
formula
H
vers
formula
K
,
et
ainsi
lever
le
poids
formula
E
,
qu'
il
en
fallait
auparavant
pour
tirer
formula
C
vers
formula
G
.
Mais,
si
à
ces
deux
poulies
on
en
ajoute
encore
une
autre
vers
formula
D
,
à
laquelle
on
attache
le
poids
et
dans
laquelle
on
passe
la
corde
tout
de
même
qu'
en
la
première,
alors
on
n'
aura
pas
besoin
de
plus
de
force
pour
lever
ce
poids
de
200
livres,
que
pour
en
lever
un
de
50
sans
poulie,
à
cause
qu'
en
tirant
4
pieds
de
la
corde
on
ne
l'
élèvera
que
d'
un
pied.
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

sentence 2" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

7 7538:6
sentence 5
Il
en
sera
de
même
de
tous
les
points
éloignés
également
de
part
et
d'
autre
du
point
formula
N
.\n", "
Enfin,
par
les
lignes
formula
AB
et
formula
IN
,
soit
mené
un
plan
formula
ABHG
,\n", "
qui
coupera
le
secteur
formula
AH
en
deux
autres
secteurs
égaux,
et
formera
le
rectangle
formula
ABHG
,
duquel
les
côtés
formula
AG
et
formula
BH
couperont
aussi
en
deux
également
les
secteurs
de
cercles
formula
ACGE
et
formula
BDHF
,
et
par
les
points
formula
G
,
formula
N
,
formula
H
soient
menées
des
lignes
droites
qui
touchent
les
arcs
formula
CE
,
formula
LM
,
formula
DF
,
lesquelles
touchantes
soient
formula
ZG 4
,
formula
XNY
,
et
formula
6 H 7
,
qui
seront
perpendiculaires
aux
demi-
diamètres
formula
AG
,
formula
IN
,
formula
BH
.
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A.show(selected[0:2], condensed=True)" ] }, { "cell_type": "markdown", "id": "09577595-dbb0-4322-a61f-1615613325d3", "metadata": { "tags": [] }, "source": [ "---\n", "\n", "# Contents\n", "\n", "* **[start](start.ipynb)** intro and highlights\n", "* **search** turbo charge your hand-coding with search templates\n", "* **[compute](compute.ipynb)** sink down a level and compute it yourself\n", "* **[exportExcel](exportExcel.ipynb)** make tailor-made spreadsheets out of your results\n", "\n", "Advanced\n", "\n", "* **[similar sentences](similar.ipynb)** find similar sentences\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.11.1" } }, "nbformat": 4, "nbformat_minor": 5 }