Tokénisation

Jan 10 2023
Qu'est-ce que la tokenisation ?? En bref, il divise les textes en mots ou en phrases… Ici, nous allons parler de différents tokenizers que nous pouvons utiliser en NLP ……… 2. Split spécifique Identique à l'espace blanc mais ici nous donnons split n'importe quel séparateur que nous voulons 3.

Qu'est-ce que la tokenisation ?? En bref, il décompose les textes en mots ou en phrases…

Tokénisation

Ici, nous aborderons différents tokenizers que nous pouvons utiliser en NLP ………

  1. Espace blanc

text = 'Earth was born around 4.54 billion years ago.'
print(text.split())
# output
# ['Earth', 'was', 'born', 'around', '4.54', 'billion', 'years', 'ago.']

2. Fractionnement spécifique

Identique à l'espace blanc mais ici nous donnons splitn'importe quel séparateur que nous voulons

text = 'Egypt, a country linking northeast Africa with the Middle East, dates to the time of the pharaohs.'
print(text.split(','))
# output
# ['Egypt', ' a country linking northeast Africa with the Middle East', ' dates to the time of the pharaohs.']

3. NLTK

NLTK est une plate-forme leader pour la création de programmes Python pour travailler avec des données de langage humain. Il y a beaucoup de tokenizers que nous pouvons utiliser

l) word_toknizer : Il résout le problème dans la fonction split :

word_toknizer : voir la marque jaune ci-dessus

ll) sent_tokenize : il utilise le texte fractionné comme modèles qu'il a entraînés auparavant.

sent_tokenize : ceci est ma citation, elle l'a divisée en une citation et mon nom

lll) wordpunct_tokenize : Ici, il divise tous les mots et les ponctuations.

wordpunct_tokenize : il nous donne un jeton contenant tous les mots et ponctuations

lV) TreebankWordTokenizer: Il divise le texte comme ces ponctuations ?!.,;, d'autre part, il s'agit d'une variété de règles communes pour les mots anglais.

TreebankWordTokenizer : voyez la marque jaune ci-dessus, vous saurez que c'est mon nom, donc il le voit comme un jeton

V) TweetTokenizer : Il divise le texte comme ces ponctuations ?!.,;donc emojis

TweetTokenizer

Vl) MWETokenizer : Ici, nous pouvons ajouter un jeton comme nous le souhaitons, car ce générateur de jetons add_mwenous permet de le faire

MWETokenizer : nous avons ajouté un jeton comme nous le voyons dans le résultat, vous verrez ce jeton

4. TextBlob

TextBlob est une bibliothèque Python (2 et 3) pour le traitement de données textuelles . Il fournit une API simple pour plonger dans les tâches courantes de traitement du langage naturel (NLP) telles que le balisage des parties du discours, l'extraction de phrases nominales, l'analyse des sentiments, la classification, la traduction, etc.

from textblob import TextBlob
text="""But I'm glad you'll see me as I am. Above all, I wouldn't want people to think that I want to 
prove anything. I don't want to prove anything, I just want to live; to cause no evil to anyone but myself. 
I have that right, haven't I? Leo Tolstoy """

blob_object= TextBlob(text)     # Word tokenization of  the text
text_words = blob_object.words  # To see all tokens
print(text_words)  # To count the number of tokens
print(len(text_words))

# output
# ['But', 'I', "'m", 'glad', 'you', "'ll", 'see', 'me', 'as', 'I', 'am', 'Above', 'all', 'I', 'would', "n't", 'want', 'people', 'to', 'think', 'that', 'I', 'want', 'to', 'prove', 'anything', 'I', 'do', "n't", 'want', 'to', 'prove', 'anything', 'I', 'just', 'want', 'to', 'live', 'to', 'cause', 'no', 'evil', 'to', 'anyone', 'but', 'myself', 'I', 'have', 'that', 'right', 'have', "n't", 'I', 'Leo', 'Tolstoy']
# 55

5. spacieux

spaCy est une bibliothèque open source gratuite pour le traitement du langage naturel en Python . Il comprend le NER, le marquage POS, l'analyse des dépendances, les vecteurs de mots et plus encore.

Il nous donne un jeton et son index tous les mots et ponctuations et emojis

6. Génisim

Gensim : Il s'agit d'une bibliothèque open-source en python écrite par Radim Rehurek qui est utilisée dans la modélisation de sujet non supervisée et le traitement du langage naturel . Il est conçu pour extraire des sujets sémantiques à partir de documents. Il peut gérer de grandes collections de texte.

ici, il supprime toute la ponctuation et les emojis

7. Kéras

Keras est une bibliothèque open source qui est l'un des frameworks d'apprentissage en profondeur les plus fiables. Pour effectuer la tokenisation, nous utilisons : la méthode text_to_word_sequence de la classe Class Keras.preprocessing.text. L'avantage de Keras est de convertir l'alphabet en minuscules avant de le symboliser, ce qui peut faire gagner beaucoup de temps.

from keras.preprocessing.text import Tokenizer
from keras.preprocessing.text import text_to_word_sequence

text = "Two things are infinite: the universe and human stupidity; and I'm not sure about the universe.  #Albert Einstein"


tokinzer = Tokenizer(num_words=20)  # as recommended we put here the max text length we have
tokinzer.fit_on_texts(text)
tokens = text_to_word_sequence(text)
print(tokens)

# output
# ['two', 'things', 'are', 'infinite', 'the', 'universe', 'and', 'human', 'stupidity', 'and', "i'm", 'not', 'sure', 'about', 'the', 'universe', '', 'albert', 'einstein']

8. Tokénisation basée sur les sous-mots

Sa tokenisation populaire est la tokenisation basée sur les sous-mots qui est une solution entre la tokenisation basée sur les mots et les caractères. L'idée principale est de résoudre les problèmes rencontrés par la tokenisation basée sur les mots (taille de vocabulaire très importante, grand nombre de jetons OOV et significations différentes de mots très similaires) et la tokenisation basée sur les caractères (séquences très longues et jetons individuels moins significatifs).

Les algorithmes de tokenisation basés sur les sous-mots utilisent les principes suivants.

  1. Ne divisez pas les mots fréquemment utilisés en sous-mots plus petits.
  2. Divisez les mots rares en sous-mots significatifs plus petits.

Défis

Discutons des défis et des limites de la tâche de tokenisation.

En général, cette tâche est utilisée pour les corpus de texte rédigés en anglais ou en français où ces langues séparent les mots en utilisant des espaces blancs ou des signes de ponctuation pour définir la limite des phrases. Malheureusement, cette méthode ne peut pas s'appliquer à d'autres langues comme le chinois, le japonais, le coréen thaï, l'hindi, l'ourdou, le tamoul et autres. Ce problème crée le besoin de développer un outil commun de tokenisation qui combine toutes les langues.

Une autre limitation réside dans la tokenisation des textes arabes puisque l'arabe a une morphologie compliquée en tant que langue. Par exemple, un seul mot arabe peut contenir jusqu'à six jetons différents comme le mot « عقد » (eaqad).

mêmes caractères mais ont des significations différentes

Conclusion

Nous avons parlé de la tokenisation et de nombreuses techniques que nous pouvons utiliser car nous voyons qu'il existe de nombreux types de recherche dans ce domaine et qu'il grandit et qu'il y a de nombreux défis à relever en PNL, mais nous verrons à l'avenir que ces problèmes seront résolus.

vous pouvez voir le code dans ce lien