:: Enseignements :: Licence :: L3 :: 2007-2008 :: Introduction à l'informatique linguistique ::
[LOGO]

Chunking


Ce TP est dédié à la segmentation en constituants simples non récursifs (ou "chunks"). En particulier, le but est de développer un petit chunker pour le français.

Ressources

Pour cette séance, nous vous donnons

Exercice 1 - Introduction au chunking avec NLTK

Exercice 2 - Chunking par une procédure en cascade

Une procédure de segmentation en chunks est en général itérative. Chaque étape dépend de la précédente. Par exemple, l'étape de reconnaissance des chunks nominaux (XN) est précédée de l'étape de reconnaissance des chunks adjectivaux (XA) :
				XA-> Adv? Adj
				XN-> Det XA XN
			
Le code en python ci-dessous montre un exemple d'une telle procédure en cascade.
	import nltk
	tagged_tokens = [("the", "DT"), ("little", "JJ"), ("yellow", "JJ"),
				("dog", "NN"), ("barked", "VBD"), ("at", "IN"),  ("the", "DT"), ("cat", "NN")]
	grammar = r"""
	NP: {<DT>?<JJ>*<NN.*>+} # noun phrase chunks
	VP: {<TO>?<VB.*>}       # verb phrase chunks
	PP: {<IN> <NP>}              # prepositional phrase chunks
	"""
	cp = nltk.RegexpParser(grammar)
	cp.parse(tagged_tokens).draw()
	#cp.parse(tagged_tokens)				
			
L'expression NN.* représente tous les noms (NN, NNS, ...).
Le but de cet exercice est de construire un chunker pour le français.
  • Reconnaître les chunks adjectivaux (grand, très grand, vraiment très grand)
  • Reconnaître les chunks nominaux et les chunks prépositionnels
  • Élaborer une cascade pour reconnaître les chunks verbaux complexes (a beaucoup mangé, a pu manger})
  • Tester votre chunker sur des dépêches AFP. Quels problèmes pouvez-vous identifier? Quelles en seraient les solutions?