root / classifier / tokenizer / tokenizer.txt

Revision 157:aa28bbe9592e, 3.5 kB (checked in by Tarek Ziad?? <tarek@…>, 12 months ago)

first move to recode the package

Line 
1Tokenizer
2_________
3
4:Revision: $Id: tokenizer.txt 46815 2006-06-28 16:25:48Z tziade $
5:Author: Tarek Ziadé
6
7TODO: remove the from `Products.BayesCore` dependency in the tests.
8
9Le module tokenizer est en charge d'effectuer un traitement sur les messages,
10pour en extraire une liste de lèmes.
11
12Chaque texte est traité en fonction de sa langue lorsque c'est possible.
13
14Tokenizer procède en 3 étapes:
15
16- éclatement du texte en mots et suppression des mots courts, suivant un seuil
17- application d'une liste de stop words
18- normalisation des mots restants
19- application d'un stemming
20
21Le code est organisé en suivant le principe d'une chaînes de transformations
22(design pattern: chain of responsibility):
23chaque étape est représentée par une classe qui réceptionne un élément
24à transformer et renvoie un résultat.
25
26Les implémentations font usage des modules C de zopyx.txng3 lorsque qu'ils
27sont disponibles.
28
29Ces classes respectent une interface particulière ::
30
31  >>> from Products.BayesCore.tokenizer.interfaces import ITextTransform
32  >>> from zope.interface.verify import verifyClass
33  >>> from Products.BayesCore.tokenizer.filters import (AllFilters,
34  ...                                                  TextSplitter,
35  ...                                                  StopWords,
36  ...                                                  Normalizer,
37  ...                                                  Stemmer)
38  >>> verifyClass(ITextTransform, AllFilters)
39  True
40  >>> verifyClass(ITextTransform, TextSplitter)
41  True
42  >>> verifyClass(ITextTransform, StopWords)
43  True
44  >>> verifyClass(ITextTransform, Normalizer)
45  True
46  >>> verifyClass(ITextTransform, Stemmer)
47  True
48
49Le tokenizer prend le rôle de director et compose sa chaine de transformation
50
51Le texte à transformer est le corps d'un mail::
52
53  >>> text = """
54  ... Zope est un serveur d'application complet, écrit principalement en Python
55  ... -- et en C pour certaines parties --,
56  ... disponible comme logiciel libre depuis 1998, date à laquelle
57  ... Digital Creation,
58  ... la société à l'origine du produit, l'a mis à disposition de la communauté.
59  ... Zope a rapidement évolué vers une version 2.
60  ... """
61
62- Filtre 1, éclatement en mots, et seuil
63- Filtre 2, application d'une liste de StopWords
64- Filtre 3, normalisation (ie retrait des accents, etc..)
65- Filtre 4, stemming des mots par le biais de pystemmer/snowball
66
67Application de la chaine de filtres::
68
69  >>> options = {'lang': 'fr', 'treshold': 3}
70  >>> from Products.BayesCore.tokenizer.filters import applyFilters
71  >>> filters = ('splitter', 'stopwords', 'normalizer', 'stemmer')
72  >>> changed_text = applyFilters(filters, text, options)
73
74Résultat du filtrage::
75
76  >>> ' '.join(changed_text)
77  'zop un serveur appliqu complet ecrit principal en python et en certain part disponibl logiciel libr depuis 1998 dat laquel digital creation societ origin du produit mis disposit de communaut zop rapid evolu version'
78
79Application de la chaine de filtres en anglais::
80
81  >>> options = {'lang': 'en', 'treshold': 3}
82  >>> from Products.BayesCore.tokenizer.filters import applyFilters
83  >>> filters = ('splitter', 'stopwords', 'normalizer', 'stemmer')
84  >>> changed_text = applyFilters(filters, text, options)
85
86Résultat du filtrage en anglais::
87
88  >>> ' '.join(changed_text)
89  'zope est un serveur applic complet ecrit principal en python et en pour certain parti dispon comm logiciel libr depui 1998 date laquell digit creation la societ origin du produit mis disposit de la communaut zope rapid evolu ver une version'
Note: See TracBrowser for help on using the browser.