La bibliothèque NLTK de Python dispose d’un tokenizer de phrase et d’un tagger POS robustes. Python dispose d’un tokenizer natif, la fonction .split()
, à laquelle vous pouvez passer un séparateur et qui divisera la chaîne sur laquelle la fonction est appelée sur ce séparateur. Le tokenizer de NLTK est plus robuste. Il tokenise une phrase en mots et en ponctuation. Étant donné le code suivant:
Il va tokeniser la phrase Can you please buy me an Arizona Ice Tea? It's .99."
comme suit :
Notez que le tokenizer traite 's
, '$'
, 0.99
, et .
comme des tokens séparés. Ceci est important car les contractions ont leur propre signification sémantique ainsi que leur propre partie du discours, ce qui nous amène à la partie suivante de la bibliothèque NLTK, le tagueur POS. Le tagueur POS de la bibliothèque NLTK produit des balises spécifiques pour certains mots. La liste des balises POS est la suivante, avec des exemples de ce que chaque POS représente.
CC conjonction de coordination
CD chiffre cardinal
DT déterminant
EX existentiel là (comme : « il y a » … pensez-y comme « il existe »)
FW mot étranger
IN préposition/conjonction de subordination
JJ adjectif ‘grand’
JJR adjectif, comparatif ‘plus grand’
JS adjectif, superlatif ‘biggest’
LS marqueur de liste 1)
MD modal could, will
NN nom, singulier ‘desk’
NNS nom pluriel ‘desks’
NNP nom propre, singulier ‘Harrison’
NNPS nom propre, pluriel ‘Americans’
PDT prédéterminateur ‘all the kids’
POS terminaison possessive parent’s
PRP pronom personnel I, he, she
PRP$ pronom possessif my, son, sa
RB adverbe très, silencieusement,
RBR adverbe, comparatif meilleur
RBS adverbe, superlatif meilleur
RP particule abandonner
TO, aller ‘au’ magasin.
UH interjection, errrrrrrrm
VB verbe, forme de base prendre
VBD verbe, passé prendre
VBG verbe, gérondif/participe présent prendre
VBN verbe, participe passé prendre
VBP verbe, sing. présent, non-3d prendre
VBZ verbe, 3ème personne sing. présent prend
WDT wh-determiner which
WP wh-pronoun who, what
WP$ possessif wh-pronoun whose
WRB wh-abverb where, quand
Comme vous pouvez le voir à la ligne 5 du code ci-dessus, la fonction .pos_tag()
a besoin qu’on lui transmette une phrase tokenisée pour le balisage. Le marquage est effectué au moyen d’un modèle entraîné dans la bibliothèque NLTK. Le trieur POS inclus n’est pas parfait mais il donne des résultats assez précis. En utilisant la même phrase que ci-dessus, le résultat est :
Le marquage des parties du discours peut être important pour l’analyse syntaxique et sémantique. Ainsi, pour quelque chose comme la phrase ci-dessus, le mot can
a plusieurs significations sémantiques. L’un étant un modal pour la formation de questions, un autre étant un récipient pour contenir de la nourriture ou du liquide, et encore un autre étant un verbe dénotant la capacité de faire quelque chose. Donner à un mot comme celui-ci une signification spécifique permet au programme de le traiter de la bonne manière dans les analyses sémantiques et syntaxiques.