Comment utiliser le module de tokenize dans Python

Comment utiliser le module de tokenize dans Python
Cet article couvrira un guide sur l'utilisation du module «tokenize» dans Python. Le module de tokenize peut être utilisé pour segmenter ou diviser le texte en petits morceaux de différentes manières. Vous pouvez utiliser ces segments dans des applications Python qui utilisent l'apprentissage automatique, le traitement du langage naturel et les algorithmes d'intelligence artificielle. Tous les échantillons de code de cet article sont testés avec Python 3.9.5 sur Ubuntu 21.04.

À propos du module de tokenize

Comme son nom l'indique, le module de tokenize peut être utilisé pour créer des «jetons» à partir d'un paragraphe ou d'un morceau de texte. Chaque pièce cassée individuelle retournée après le processus de tokenisation est appelée un jeton. Une fois que vous avez tokeniser un texte, vous pouvez implémenter votre propre logique dans votre programme Python pour traiter les jetons en fonction de votre cas d'utilisation. Le module tokenize fournit des méthodes utiles qui peuvent être utilisées pour créer des jetons. L'utilisation de ces méthodes peut être mieux comprise à travers des exemples. Certains d'entre eux sont expliqués ci-dessous.

Tokensizing un paragraphe ou une phrase

Vous pouvez tokensize un paragraphe ou une phrase avec des mots séparés dans l'espace en utilisant l'échantillon de code expliqué ci-dessous.

tokenize d'importation
à partir d'Io Import Bytesio
text = "Lorem ipsum Dolor Sit Amet, Consectetur adipiscing elit, sed do eiusmod tempory inciditunt ut Labore et Dolore Magna Aliqua."
jetons = tokenize.tokenize (bytesio (texte.Encode ('UTF-8')).readline)
pour t dans les jetons:
imprimer (t)

Les deux premières déclarations importent les modules Python nécessaires nécessaires à la conversion d'un texte en jetons individuels. Une variable appelée «texte» contient un exemple de chaîne. Ensuite, la méthode «tokenize» du module de tokenize est appelée. Il utilise la méthode «Readline» comme argument obligatoire. Étant donné que la variable de texte est de type «STR», l'utiliser directement lancera une erreur. L'argument Readline est une méthode appelée qui doit renvoyer les octets au lieu d'une chaîne pour que la méthode tokenize fonctionne correctement. Ainsi, en utilisant la classe «ByTesio», le texte est converti en flux d'octets en spécifiant un type de codage.

La méthode de tokenize génère un tuple nommé contenant cinq types: type (type de jeton), chaîne (nom du jeton), démarrage (position de départ du jeton), end (position de fin du jeton) et ligne (la ligne qui a été utilisé pour créer des jetons). Ainsi, après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir une sortie similaire à ceci:

Tokeninfo (type = 62 (codage), string = 'utf-8', start = (0, 0), end = (0, 0), line = ")
Tokeninfo (type = 1 (name), string = 'lorem', start = (1, 0), end = (1, 5), line = 'lorem ipsum Dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor inciditunt ut ut ut ut ut ut ut Labore et Dolore Magna Aliqua.')


Tokeninfo (type = 54 (op), string = '.', start = (1, 122), end = (1, 123), line =' lorem ipsum Dolor sit amet, conseectetur adipiscing elit, sed do eiusmod tempor.')
Tokeninfo (type = 4 (newline), string = ", start = (1, 123), end = (1, 124), line =")
Tokeninfo (type = 0 (Endmarker), String = ", start = (2, 0), end = (2, 0), line =")

Comme vous pouvez le voir dans la sortie ci-dessus, la méthode de tokenize génère un «Tokeninfo”Objet avec cinq types mentionnés ci-dessus. Si vous souhaitez accéder à ces types individuellement, utilisez la notation de points (comme indiqué dans l'échantillon de code ci-dessous).

tokenize d'importation
à partir d'Io Import Bytesio
text = "Lorem ipsum Dolor Sit Amet, Consectetur adipiscing elit, sed do eiusmod tempory inciditunt ut Labore et Dolore Magna Aliqua."
jetons = tokenize.tokenize (bytesio (texte.Encode ('UTF-8')).readline)
pour t dans les jetons:
imprimer (t.chaîne, t.commencer, t.fin, t.taper)

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:


UTF-8 (0, 0) (0, 0) 62
Lorem (1, 0) (1, 5) 1
ipsum (1, 6) (1, 11) 1

Notez que le «t.taper»L'appel renvoie un nombre constant pour le type de jeton. Si vous voulez un type de jeton plus lisible par l'homme, utilisez le "jeton”Module et le"tok_name”Dictionnaire disponible.

tokenize d'importation
à partir d'Io Import Bytesio
jeton d'importation
text = "Lorem ipsum Dolor Sit Amet, Consectetur adipiscing elit, sed do eiusmod tempory inciditunt ut Labore et Dolore Magna Aliqua."
jetons = tokenize.tokenize (bytesio (texte.Encode ('UTF-8')).readline)
pour t dans les jetons:
imprimer (t.chaîne, t.commencer, t.fin, jeton.tok_name [t.taper])

En fournissant «t.Type ”Constante au dictionnaire« tok_name », vous pouvez obtenir un nom lisible par l'homme pour le type de jeton. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

UTF-8 (0, 0) (0, 0) Encodage
Lorem (1, 0) (1, 5) Nom
Ipsum (1, 6) (1, 11) Nom
Dolor (1, 12) (1, 17) Nom

Une liste complète de tous les types de jetons et leurs noms est disponible ici. Notez que le premier jeton est toujours le type de flux d'entrée de codage et qu'il n'a pas de valeur de début et de fin.

Vous pouvez facilement obtenir une liste de noms de jetons justes en utilisant des instructions de boucle ou des compréhensions de liste, comme indiqué dans l'échantillon de code ci-dessous.

tokenize d'importation
à partir d'Io Import Bytesio
text = "Lorem ipsum Dolor Sit Amet, Consectetur adipiscing elit, sed do eiusmod tempory inciditunt ut Labore et Dolore Magna Aliqua."
jetons = tokenize.tokenize (bytesio (texte.Encode ('UTF-8')).readline)
token_list = [t.chaîne pour t dans les jetons]
print (token_list)

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

[«utf-8», «Lorem», «ipsum», «Dolor», «Sit», «Amet», «,« Connecteur »,« adipiscing »,« Elit »,», «,« Sed » , «do», «eiusmod», «temporaire», «incidint», «ut», «labore», «et», «dolore», «magna», «Aliqua», «.', ","]

Vous pouvez utiliser la méthode "generate_tokens" disponible dans le module tokenize si vous souhaitez tokenize une chaîne sans la convertir en octets. Il prend toujours une méthode de lecture appelable comme l'argument obligatoire, mais il ne gère que les chaînes renvoyées par la méthode de lecture et non les octets (contrairement à la méthode de tokenize expliquée ci-dessus). L'exemple de code ci-dessous illustre l'utilisation de la méthode Generate_Tokens. Au lieu de la classe ByTesio, maintenant la classe «Stringio» est utilisée.

tokenize d'importation
à partir d'Io Import Stringio
text = "Lorem ipsum Dolor Sit Amet, Consectetur adipiscing elit, sed do eiusmod tempory inciditunt ut Labore et Dolore Magna Aliqua."
jetons = tokenize.générer_tokens (stringio (texte).readline)
token_list = [t.chaîne pour t dans les jetons]
print (token_list)

Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

[«Lorem», «Ipsum», «Dolor», «Sit», «Amet», «,« Conseectetur »,« Adipsing »,« Elit »,«, «Sed», «Do», » eiusmod ',' tempor ',' incidint ',' ut ',' labore ',' et ',' dolore ',' magna ',' Aliqua ','.', ","]

Contenu de tokenisage d'un fichier

Vous pouvez utiliser l'instruction «avec ouverte» en mode «RB» pour lire directement le contenu d'un fichier puis le tokenize. Le mode «R» en «RB» représente le mode en lecture seule tandis que «B» représente le mode binaire. L'exemple de code ci-dessous ouvre un «échantillon.Fichier txt »et tokenise son contenu en utilisant les méthodes de tokenize et de lecture.

tokenize d'importation
avec ouvert ("".txt "," rb ") comme f:
jetons = tokenize.tokenize (f.readline)
token_list = [t.chaîne pour t dans les jetons]
print (token_list)

Vous pouvez également utiliser «Open», une méthode de commodité disponible dans le module Tokenize, puis des méthodes Generate_tokens et Readline pour créer des jetons à partir d'un fichier directement.

tokenize d'importation
avec tokenize.Ouvert ("échantillon.txt ") comme f:
jetons = tokenize.générer_tokens (f.readline)
token_list = [t.chaîne pour t dans les jetons]
print (token_list)

En supposant que l'échantillon.Le fichier txt contient le même exemple de chaîne, vous devez obtenir la sortie suivante après avoir exécuté les deux échantillons de code expliqués ci-dessus.

[«Lorem», «Ipsum», «Dolor», «Sit», «Amet», «,« Conseectetur »,« Adipsing »,« Elit »,«, «Sed», «Do», » eiusmod ',' tempor ',' incidint ',' ut ',' labore ',' et ',' dolore ',' magna ',' Aliqua ','.', ","]

Conclusion

Le module de tokenize dans Python fournit un moyen utile de tokenize des morceaux de texte contenant des mots séparés dans l'espace. Il crée également une carte des positions de démarrage et de fin des jetons. Si vous souhaitez tokeniser chaque mot d'un texte, la méthode de tokenize est meilleure que la méthode «divisée» car elle prend également en charge les caractères de ponctuation de tokensine / autres symboles et dépente également le type de jeton.