Le texte numérique¶
Qu’est-ce qu’un texte numérique?
Tout d’abord comprenons la différence entre:
plein texte
autres formats
Ascii¶
128 caractères sur 7 bits (le 8e est à 0)
mon_texte = "f"
mon_texte = bytes(mon_texte, 'ascii')
for i in mon_texte:
print(i)
print(bin(i))
102
0b1100110
Mais si:
mon_texte = "é"
mon_texte = bytes(mon_texte, 'ascii')
for i in mon_texte:
print(i)
print(bin(i))
---------------------------------------------------------------------------
UnicodeEncodeError Traceback (most recent call last)
<ipython-input-3-954f1b27eed8> in <module>
1 mon_texte = "é"
----> 2 mon_texte = bytes(mon_texte, 'ascii')
3 for i in mon_texte:
4 print(i)
5 print(bin(i))
UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 0: ordinal not in range(128)
iso-8859¶
256
Mais… pas de Œ, œ, Ÿ, et le signe €
mon_texte = "œ"
mon_texte = bytes(mon_texte, 'iso-8859-1')
---------------------------------------------------------------------------
UnicodeEncodeError Traceback (most recent call last)
<ipython-input-10-87108dd06aa8> in <module>
1 mon_texte = "œ"
----> 2 mon_texte = bytes(mon_texte, 'iso-8859-1')
UnicodeEncodeError: 'latin-1' codec can't encode character '\u0153' in position 0: ordinal not in range(256)
for i in mon_texte:
print(i)
print(bin(i))
233
0b11101001
UTF-8¶
1 à 4 octets
mon_texte = "œ"
mon_texte = bytes(mon_texte, 'utf-8')
for i in mon_texte:
print(i)
print(bin(i))
197
0b11000101
147
0b10010011
Traitement de texte¶
À quoi sert un ordinateur?¶
à calculer
à enregistrer?
à écrire?
documenter le code
Les machines à écrire¶
Pourquoi ne pas utiliser une machine à écrire?
parce qu’on écrit aussi du code
pour enregistrer
Écrire du code et de la doc, enregistrer et imprimer.¶
1976 Electric Pencil (Michael Shrayer)
1979 Easy Writer - John Thomas Draper
1979 WordStar: WYSYWYG - car notion de page
L’ordinateur pour tous - 1984
1983 Word
Les principes¶
interface graphique
imprimé
bureautique
format=software
Les effets¶
la “désintermédiation”
perte de compétences
la perte de contrôle
la perte d’utilité (utiliser un ordinateur comme une machine à écrire)
Et si on balisait nous-mêmes?¶
html
xml
md
tex
…
mon_texte = '''
[TOC]
# Titre
Nous allons faire un *essai*. Par exemple:
Une liste numérottée:
1. une chose
2. deux choses
3. trois _choses_
## Titre 2
## Titre 3
### Titre 3.2
'''
import markdown
mon_texte = markdown.markdown(mon_texte, extensions=['toc'])
print(mon_texte)
<div class="toc">
<ul>
<li><a href="#titre">Titre</a><ul>
<li><a href="#titre-2">Titre 2</a></li>
<li><a href="#titre-3">Titre 3</a><ul>
<li><a href="#titre-32">Titre 3.2</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<h1 id="titre">Titre</h1>
<p>Nous allons faire un <em>essai</em>. Par exemple:</p>
<p>Une liste numérottée:</p>
<ol>
<li>une chose</li>
<li>deux choses</li>
<li>trois <em>choses</em></li>
</ol>
<h2 id="titre-2">Titre 2</h2>
<h2 id="titre-3">Titre 3</h2>
<h3 id="titre-32">Titre 3.2</h3>
Prendre un texte d’un fichier¶
Admettons de vouloir ouvrir le fichier qui s,appelle 01numerique.md (!!!ATTENTION AU CHEMIN!!!)
with open('01numerique.md', 'r') as mon_fichier:
mon_texte = mon_fichier.read()
mon_texte
'# Numérique, modélisation et algorithmes\n\n\n\n## Un mot très utilisé\n\nD\'abord un adjectif, ensuite le mot est substantivé et commence à signifier un ensemble très hétérogène de choses. Il devient finalement une étiquette pour parler de notre époque.\n\n```{admonition} Prudence...\n:class: caution\nSignification floue\n```\n\nOn regroupe sous le chapeau de "numérique" un ensemble de choses, environnements, techniques, pratiques très différentes en les mettant toutes ensemble comme si elles étaient une unité.\n\n```{admonition} Danger\n:class: danger\nEssentialisation\n```\n\n## Le numérique au sens propre du terme\n\n\nReprésentation de la réalité via des éléments discrets et atomiques qui correspondent à des nombres naturels.\n\n::: {attention}\nS’oppose à analogique: représentation du réel via un signal continu, “analogue” au réel.\n:::\n\n![Numérique et analogique](http://www.bedwani.ch/electro/ch23/image88.gif)\n\n\n## La modélisation du monde\n\n### Trois étapes:\n\n\n- modèle représentationnel\n - donner une description en langage naturel de quelque chose\n- modèle fonctionnel\n - transformer la représentation en unités atomiques discrètes et définir des fonctions pour les traiter \n ```{attention}\n Le "_numérique_" se situe ici!\n ```\n- modèle physique\n - implémenter le calcul fonctionnel dans une machine de Turing réelle.\n - calculable = computable\n\n::: {attention}\nLes trois étapes ne sont pas étanches!\n:::\n\n\n## Les “limites” de la machine?\n\n- une machine ne peut pas…\n- le topos de l’humain qui excède la machine\n- l’angoisse de l’intelligence artificielle\n\n## [Un exemple de modélisation simple](modelisation.ipynb)\n\n\n## Les algorithmes\n\n```{admonition} Définition\n\nEnsemble d’instructions qui respectent deux conditions:\n\n- à chaque instruction il est possible de connaître l’instruction suivante\n- si on suit les étapes on arrive à une instruction qui demande l’arrêt.\n```\n\n## La machine de Turing\n\n[Jouez avec une machine de Turing virtuelle](https://interstices.info/comment-fonctionne-une-machine-de-turing/)\n\n\n## [Modèles et algorithmes](modelisationamour)\n\n'
Manipulons un peu ce texte!¶
Tout d’abord divisons-le en lignes:
liste_lignes = mon_texte.split('\n')
for ligne in liste_lignes:
print(ligne)
# Numérique, modélisation et algorithmes
## Un mot très utilisé
D'abord un adjectif, ensuite le mot est substantivé et commence à signifier un ensemble très hétérogène de choses. Il devient finalement une étiquette pour parler de notre époque.
```{admonition} Prudence...
:class: caution
Signification floue
```
On regroupe sous le chapeau de "numérique" un ensemble de choses, environnements, techniques, pratiques très différentes en les mettant toutes ensemble comme si elles étaient une unité.
```{admonition} Danger
:class: danger
Essentialisation
```
## Le numérique au sens propre du terme
Représentation de la réalité via des éléments discrets et atomiques qui correspondent à des nombres naturels.
::: {attention}
S’oppose à analogique: représentation du réel via un signal continu, “analogue” au réel.
:::
![Numérique et analogique](http://www.bedwani.ch/electro/ch23/image88.gif)
## La modélisation du monde
### Trois étapes:
- modèle représentationnel
- donner une description en langage naturel de quelque chose
- modèle fonctionnel
- transformer la représentation en unités atomiques discrètes et définir des fonctions pour les traiter
```{attention}
Le "_numérique_" se situe ici!
```
- modèle physique
- implémenter le calcul fonctionnel dans une machine de Turing réelle.
- calculable = computable
::: {attention}
Les trois étapes ne sont pas étanches!
:::
## Les “limites” de la machine?
- une machine ne peut pas…
- le topos de l’humain qui excède la machine
- l’angoisse de l’intelligence artificielle
## [Un exemple de modélisation simple](modelisation.ipynb)
## Les algorithmes
```{admonition} Définition
Ensemble d’instructions qui respectent deux conditions:
- à chaque instruction il est possible de connaître l’instruction suivante
- si on suit les étapes on arrive à une instruction qui demande l’arrêt.
```
## La machine de Turing
[Jouez avec une machine de Turing virtuelle](https://interstices.info/comment-fonctionne-une-machine-de-turing/)
## [Modèles et algorithmes](modelisationamour)
Maintenant imprimons toutes les lignes qui contiennent un mot… par exemple “Turing”
for l in mon_texte.split('\n'):
if 'Turing' in l:
print(l)
- implémenter le calcul fonctionnel dans une machine de Turing réelle.
## La machine de Turing
[Jouez avec une machine de Turing virtuelle](https://interstices.info/comment-fonctionne-une-machine-de-turing/)
Et si on veut savoir à quelle ligne se trouve le mot?
for i, l in enumerate(mon_texte.split('\n')):
if 'Turing' in l:
print(i)
print(l)
45
- implémenter le calcul fonctionnel dans une machine de Turing réelle.
72
## La machine de Turing
74
[Jouez avec une machine de Turing virtuelle](https://interstices.info/comment-fonctionne-une-machine-de-turing/)
On pourrait aussi le transformer en une liste de mots, non?
ma_liste = []
for mot in mon_texte.split(' '):
ma_liste.append(mot)
ma_liste
['#',
'Numérique,',
'modélisation',
'et',
'algorithmes\n\n\n\n##',
'Un',
'mot',
'très',
"utilisé\n\nD'abord",
'un',
'adjectif,',
'ensuite',
'le',
'mot',
'est',
'substantivé',
'et',
'commence',
'à',
'signifier',
'un',
'ensemble',
'très',
'hétérogène',
'de',
'choses.',
'Il',
'devient',
'finalement',
'une',
'étiquette',
'pour',
'parler',
'de',
'notre',
'époque.\n\n```{admonition}',
'Prudence...\n:class:',
'caution\nSignification',
'floue\n```\n\nOn',
'regroupe',
'sous',
'le',
'chapeau',
'de',
'"numérique"',
'un',
'ensemble',
'de',
'choses,',
'environnements,',
'techniques,',
'pratiques',
'très',
'différentes',
'en',
'les',
'mettant',
'toutes',
'ensemble',
'comme',
'si',
'elles',
'étaient',
'une',
'unité.\n\n```{admonition}',
'Danger\n:class:',
'danger\nEssentialisation\n```\n\n##',
'Le',
'numérique',
'au',
'sens',
'propre',
'du',
'terme\n\n\nReprésentation',
'de',
'la',
'réalité',
'via',
'des',
'éléments',
'discrets',
'et',
'atomiques',
'qui',
'correspondent',
'à',
'des',
'nombres',
'naturels.\n\n:::',
'{attention}\nS’oppose',
'à',
'analogique:',
'représentation',
'du',
'réel',
'via',
'un',
'signal',
'continu,',
'“analogue”',
'au',
'réel.\n:::\n\n![Numérique',
'et',
'analogique](http://www.bedwani.ch/electro/ch23/image88.gif)\n\n\n##',
'La',
'modélisation',
'du',
'monde\n\n###',
'Trois',
'étapes:\n\n\n-',
'modèle',
'représentationnel\n',
'',
'',
'-',
'donner',
'une',
'description',
'en',
'langage',
'naturel',
'de',
'quelque',
'chose\n-',
'modèle',
'fonctionnel\n',
'',
'',
'-',
'transformer',
'la',
'représentation',
'en',
'unités',
'atomiques',
'discrètes',
'et',
'définir',
'des',
'fonctions',
'pour',
'les',
'traiter',
'\n',
'',
'',
'',
'```{attention}\n',
'',
'',
'',
'Le',
'"_numérique_"',
'se',
'situe',
'ici!\n',
'',
'',
'',
'```\n-',
'modèle',
'physique\n',
'',
'',
'-',
'implémenter',
'le',
'calcul',
'fonctionnel',
'dans',
'une',
'machine',
'de',
'Turing',
'réelle.\n',
'',
'',
'-',
'calculable',
'=',
'computable\n\n:::',
'{attention}\nLes',
'trois',
'étapes',
'ne',
'sont',
'pas',
'étanches!\n:::\n\n\n##',
'Les',
'“limites”',
'de',
'la',
'machine?\n\n-',
'une',
'machine',
'ne',
'peut',
'pas…\n-',
'le',
'topos',
'de',
'l’humain',
'qui',
'excède',
'la',
'machine\n-',
'l’angoisse',
'de',
'l’intelligence',
'artificielle\n\n##',
'[Un',
'exemple',
'de',
'modélisation',
'simple](modelisation.ipynb)\n\n\n##',
'Les',
'algorithmes\n\n```{admonition}',
'Définition\n\nEnsemble',
'd’instructions',
'qui',
'respectent',
'deux',
'conditions:\n\n-',
'à',
'chaque',
'instruction',
'il',
'est',
'possible',
'de',
'connaître',
'l’instruction',
'suivante\n-',
'si',
'on',
'suit',
'les',
'étapes',
'on',
'arrive',
'à',
'une',
'instruction',
'qui',
'demande',
'l’arrêt.\n```\n\n##',
'La',
'machine',
'de',
'Turing\n\n[Jouez',
'avec',
'une',
'machine',
'de',
'Turing',
'virtuelle](https://interstices.info/comment-fonctionne-une-machine-de-turing/)\n\n\n##',
'[Modèles',
'et',
'algorithmes](modelisationamour)\n\n']
Regex en python¶
Tutoriel ici https://www.datacamp.com/community/tutorials/python-regular-expression-tutorial
Et la doc: https://docs.python.org/3/howto/regex.html
import re
print(re.search(r'Numérique', mon_texte).group())
Numérique
mon_dialogue = '''
Pierre: Bonjour!
Marie: Salut!
Pierre: Comment vas-tu?
Marie: Bien! Et toi?
'''
repliques_pierre = re.search(r'(Pierre: )(.*)', mon_dialogue)
repliques_pierre.group(2)
'Bonjour!'
repliques_pierre = re.findall(r'(Pierre: )(.*)', mon_dialogue)
repliques_pierre
[('Pierre: ', 'Bonjour!'), ('Pierre: ', 'Comment vas-tu?')]
Plus intéressant…
repliques = re.findall(r'(.*): (.*)', mon_dialogue)
repliques
[('Pierre', 'Bonjour!'),
('Marie', 'Salut!'),
('Pierre', 'Comment vas-tu?'),
('Marie', 'Bien! Et toi?')]
repliques_pierre=[]
for prenom, replique in repliques:
if prenom == 'Pierre':
repliques_pierre.append(replique)
repliques_pierre
['Bonjour!', 'Comment vas-tu?']
# je vais chercher les titres dans mon document
re.findall(r'## (.*)', mon_texte)
['Un mot très utilisé',
'Le numérique au sens propre du terme',
'La modélisation du monde',
'Trois étapes:',
'Les “limites” de la machine?',
'[Un exemple de modélisation simple](modelisation.ipynb)',
'Les algorithmes',
'La machine de Turing',
'[Modèles et algorithmes](modelisationamour)']