Introduction - PowerPoint PPT Presentation

About This Presentation
Title:

Introduction

Description:

G n ration de textes en langues naturelles ( crits, oraux) ... conjuguer Je vais, Il va, Nous allons... Variations de forme et propri t s des mots ... – PowerPoint PPT presentation

Number of Views:52
Avg rating:3.0/5.0
Slides: 32
Provided by: lapo4
Category:

less

Transcript and Presenter's Notes

Title: Introduction


1
Introduction à l'informatique linguistique
  • Mathieu Constant, Eric Laporte
  • Licence d'informatique 3
  • Université de Marne-la-Vallée
  • IGM

2
Cours 1
  • Introduction
  • Tokenisation
  • Expressions rationnelles et automates finis
  • Introduction au langage Python

3
Introduction
  • Objectifs de l'informatique linguistique
  • Applications informatiques sur les langues
    naturelles
  • Génération de textes en langues naturelles
    (écrits, oraux)
  • Dialogue homme-machine (écrit, oral)
  • Traduction (écrit, oral)
  • Recherche d'information, moteurs de recherche
  • Extraction d'information
  • Vérification et correction orthographique
  • etc.

4
Introduction
  • Niveaux de complexité
  • 1. Tokens
  • wc idees.txt extrait.txt
  • 40 149 947 idees.txt
  • 2294 16638 97724 extrait.txt
  • 2334 16787 98671 total
  • Lignes, mots, caractères
  • Connaissances qu'est-ce qu'un mot ?
  • Découper un texte en éléments simples

5
Introduction
  • Niveaux de complexité
  • 1. Tokens
  • 2. Morpho-syntaxique
  • Un robot parlant français doit pouvoir produire
  • Je vais fermer l'autre porte
  • et non
  • Je vais fermer la autre porte
  • et doit savoir conjuguer Je vais, Il va, Nous
    allons...
  • Variations de forme et propriétés des mots

6
Introduction
  • Niveaux de complexité
  • 1. Tokens
  • 2. Morpho-syntaxique
  • 3. Syntaxico-sémantique
  • Le robot doit pouvoir distinguer les ordres et
    les questions
  • Ferme toutes les autres portes
  • Toutes les portes sont-elles fermées ?
  • Il doit savoir que
  • autre fermer je l'porte vais
  • n'a pas de sens, bien qu'elle contienne les mêmes
    mots
  • Structure et sens des phrases

7
Introduction
  • Niveaux de complexité
  • 1. Tokens
  • 2. Morpho-syntaxique
  • 3. Syntaxico-sémantique
  • 4. Pragmatique
  • Le robot doit pouvoir répondre
  • Non, je ne peux pas
  • au lieu de
  • Non, je ne fermerai pas les autres portes
  • Non, je ne le ferai pas
  • Comment s'exprimer pour atteindre un objectif

8
Tokenisation
  • Tokens éléments simples d'un texte écrit
  • Passer d'une séquence de caractères à une
    séquence de tokens
  • Je vais fermer l'autre porte
  • /Je/vais/fermer/l/'/autre/porte/
  • Définition des tokens
  • Les mots délimités par des espaces
  • /l'autre/ /l/'/autre/ /autre,/ /autre/,/
  • Expressions rationnelles
  • \w une séquence d'1 ou plusieurs caractères
    alphanumériques
  • \d une séquence d'1 ou plusieurs chiffres
  • \w\s un symbole de ponctuation

9
Algorithme de tokenisation
  • Entrées le texte, séquence de caractères une
    ou plusieurs expressions rationnelles définissant
    les tokens
  • Sorties une séquence de tokens
  • tant que le texte n'est pas fini
  • pour chaque expression rationnelle
  • appliquer l'expression au texte en allant le
    plus loin possible
  • marquer dans le texte la position obtenue
  • si aucune marque alors passer au caractère
    suivant
  • sinon
  • conserver seulement la marque la plus à droite
  • copier sur la sortie depuis le caractère
    courant jusqu'à la marque
  • prendre comme caractère courant le caractère
    marqué

10
Tokenisation
  • Je vais fermer l'autre porte
  • Je
  • vais
  • ...
  • Variante
  • Les expressions définissent les délimiteurs et
    non les tokens

11
Expressions rationnelles
  • Définition mathématique
  • - les symboles de l'alphabet et le mot vide a
  • - les expressions obtenues avec les opérateurs
  • - concaténation ab
  • - union ab
  • - itération a
  • Priorités entre opérateurs
  • le plus prioritaire itération le moins
    prioritaire union
  • Exemples
  • 0123456789
  • (0123456789)(0123456789)

12
Expressions rationnelles
  • Notations en grep, sed, vi, emacs, flex, perl,
    python...
  • Détails des conventions différents pour chaque
    programme
  • 0123456789 0123456789
  • 0-9 0123456789
  • a-zA-Z 1 caractère autre que a-zA-Z
  • CLEF? CLECLEF
  • 0-9 0-90-9
  • . 1 caractère autre que fin de ligne (\n)
  • Le "Le" si placé en début de ligne
  • dernier "dernier" si placé en fin de ligne
  • \\(\)\\\?\\.\\\\ ()?.\

13
Expressions rationnelles
  • Notation en python
  • \s 1 espace, fin de ligne ou tabulation
  • \w 1 caractère alphanumérique
  • \d 1 chiffre

14
Automates finis
  • Graphes équivalents aux expressions rationnelles
  • Expression rationnelle brrr!
  • Automate fini équivalent
  • (reconnaît exactement les mêmes séquences)
  • Etats 0 1 2 3 4
  • Transitions 0b1 1r2 2r3 3r3 3!4
  • Etats initiaux 0
  • Etats finaux 4

r
b
!
r
r
4
0
1
2
3
15
Automates finis
  • Automate déterministe
  • 1 état initial au plus
  • si 2 transitions sortent du même état et sont
    étiquetées par le même symbole de l'alphabet,
    alors elles sont égales
  • Un automate non déterministe

r
b
!
r
r
4
0
1
2
3
r
b
!
r
r
4
0
1
2
3
16
Reconnaissance par automate fini déterministe
  • Entrées une séquence de symboles, un automate
    déterministe
  • Sorties oui/non
  • curseur le premier symbole de la séquence
  • état l'unique état initial de l'automate
  • tant que vrai
  • si curseur à la fin de la séquence alors
  • si état est final alors renvoyer oui sinon
    renvoyer non
  • sinon si transitionétat, curseur vide alors
    renvoyer non
  • sinon
  • état transitionétat, curseur
  • curseur le symbole suivant

17
Automates finis non déterministes
  • Peuvent contenir des transitions étiquetées par
    le mot vide (interdit dans un automate
    déterministe)
  • L'algorithme de reconnaissance est plus compliqué

b
!
r
r
4
0
1
2
3
?
18
Automates et expressions rationnelles
  • Pour toute expression rationnelle il existe un
    automate fini équivalent et inversement
  • Il existe des algorithmes pour construire un
    automate fini équivalent à un expression donnée
    et inversement
  • Expressions simples plus faciles à manipuler
    que les automates
  • Expressions compliquées il y a souvent un
    automate équivalent plus facile à lire
  • Exemple (1(01)0)\.((01)1)?\.((01)10)

0
1
0
1
.
?
1
3
5
.
4
0
1
?
0
2
1
0
7
.
6
19
Automates et expressions rationnelles
  • Trouver un automate fini équivalent à une
    expression donnée
  • Union chemins en parallèle
  • ac
  • Concaténation chemins en série
  • (ac)d

a
1
0
c
a
d
2
1
0
c
20
Automates et expressions rationnelles
  • Itération cycle
  • (a(ab)c)d
  • (ac)(ab)d

ab
a
1
?
d
3
2
0
c
ab
a
d
2
1
0
c
21
Introduction à Python
  • En TP nous utiliserons NLTK, un système écrit en
    langage Python
  • Python est un langage à objets interprété
  • Utilisation interactive ipython
  • Utilisation par scripts python2.4
    ltfichier_de_script.pygt
  • Commentaires
  • Mon premier script en python

22
Chaînes de caractères
  • message "Tokenisation..."
  • print message Tokenisation...
  • print len(message) 15
  • print message message Tokenisation...Tokenisatio
    n...
  • repeter 2
  • print message repeter Tokenisation...Tokenisati
    on...
  • message message repeter
  • print message Tokenisation...Tokenisation...
  • print message0 T
  • print message05 Token
  • print message5 isation...Tokenisation...
  • print message0, message1 T o

23
Inspection d'une expression
  • En mode interactif, quand on écrit une
    expression, Python répond en donnant la valeur
  • gtgtgt message
  • 'Tokenisation...'
  • gtgtgt

24
Listes
  • gtgtgt compte "zero", "un", "deux"
  • gtgtgt compte0 'zero'
  • gtgtgt compte02 'zero', 'un'
  • gtgtgt suite compte-1 'trois'
  • gtgtgt suite 'deux', 'trois'
  • gtgtgt compte2 "2"
  • gtgtgt compte 'zero', 'un', '2'
  • gtgtgt compte.reverse()
  • gtgtgt compte '2', 'un', 'zero'
  • gtgtgt len(compte) 3

25
Méthodes
  • gtgtgt compte.reverse()
  • gtgtgt compte '2', 'un', 'zero'
  • Le nom d'un objet, un point, le nom d'une
    méthode, les paramètres
  • gtgtgt mots "antre", "outre", "autre"
  • gtgtgt mots.sort()
  • gtgtgt mots 'antre', 'autre', 'outre'
  • gtgtgt mots.append("pot")
  • gtgtgt mots 'antre, 'autre', 'outre', 'pot'

26
Méthodes
  • gtgtgt a_rebours " ".join(compte)
  • gtgtgt a_rebours '2 un zero'
  • gtgtgt phrase "Je vois l'autre."
  • gtgtgt phrase.split(" ") 'Je', 'vois', "l'autre."

27
Paramètres en ligne de commande
  • import sys
  • sys est le module Python qui gère la ligne de
    commande et autres questions liées au système
  • argv liste des paramètres passés en ligne de
    commande
  • argv0 est le nom du script
  • len(argv) est le nombre de paramètres

28
Itération
  • total 0
  • for mot in mots
  • print mot
  • total len(mot)
  • print total
  • La fin du bloc for est indiquée par l'indentation
  • L'indentation est obligatoire

autre outre pot 18
29
Expressions rationnelles
  • gtgtgt import re
  • gtgtgt from nltk_lite.utilities import re_show
  • gtgtgt phrase "Je vois l'autre."
  • gtgtgt re_show("e", phrase)
  • Je vois l'autre.
  • gtgtgt
  • "re" est le module de Python sur les expressions
    rationnelles

30
Le tokeniseur de NLTK
  • gtgtgt from nltk_lite import tokenize
  • gtgtgt phrase "Je vois l'autre."
  • gtgtgt list(tokenize.regexp(phrase, "\s")
  • 'Je', 'vois', "l'autre."
  • gtgtgt
  • Pour ne pas mélanger les types de caractères dans
    un token
  • gtgtgt list(tokenize.regexp(phrase, "\w\s")
  • 'Je', 'vois', 'l', "'", 'autre', '.'
  • gtgtgt

31
Fichiers
  • f open('phrase.txt', 'rU')
  • ouvre le fichier en lecture
  • text f.read()
  • lit tout le fichier dans une chaîne de
    caractères
  • f.close()
  • referme le fichier
Write a Comment
User Comments (0)
About PowerShow.com