Tokenizzazione

Jan 10 2023
Cos'è la tokenizzazione?? In poche parole, suddivide i testi in parole o frasi... Qui ci occuperemo di diversi tokenizzatori che possiamo usare in PNL...

Cos'è la tokenizzazione?? In parole povere, divide i testi in parole o frasi...

Tokenizzazione

Qui prenderemo in considerazione diversi tokenizzatori che possiamo usare in PNL ………

  1. Spazio Bianco

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

2. Divisione specifica

Uguale allo spazio bianco ma qui diamo splitqualsiasi divisore che vogliamo

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 è una piattaforma leader per la creazione di programmi Python per lavorare con i dati del linguaggio umano. Ci sono molti tokenizer che possiamo usare

l) word_toknizer: Risolve il problema nella funzione split:

word_toknizer: vedi il segno giallo sopra

ll) sent_tokenize: utilizza il testo diviso come modelli che ha addestrato in precedenza.

sent_tokenize: questa è la mia citazione, l'ha divisa in una citazione e il mio nome

lll) wordpunct_tokenize: qui divide tutte le parole e la punteggiatura.

wordpunct_tokenize: ci dà token ha tutte le parole e la punteggiatura

lV) TreebankWordTokenizer: D' altra parte divide il testo come questi segni ?!.,;di punteggiatura, è una varietà di regole comuni per le parole inglesi.

TreebankWordTokenizer: vedi il segno giallo sopra saprai che è il mio nome quindi lo vede come un token

V) TweetTokenizer: divide il testo come questi segni di punteggiatura ?!.,;così emoji

TweetTokenizer

Vl) MWETokenizer: qui possiamo aggiungere token come vogliamo poiché questo tokenizer add_mweci consente di farlo

MWETokenizer: abbiamo aggiunto un token come vediamo nel risultato vedrai quel token

4. Text Blob

TextBlob è una libreria Python (2 e 3) per l'elaborazione di dati testuali . Fornisce una semplice API per immergersi in attività comuni di elaborazione del linguaggio naturale (NLP) come l'etichettatura di parti del discorso, l'estrazione di frasi nominali, l'analisi del sentimento, la classificazione, la traduzione e altro ancora.

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. spaziale

spaCy è una libreria open source gratuita per l'elaborazione del linguaggio naturale in Python . È dotato di NER, codifica POS, analisi delle dipendenze, vettori di parole e altro ancora.

Ci fornisce token e il suo indice tutte le parole, la punteggiatura e gli emoji

6. Gensim

Gensim: è una libreria open source in Python scritta da Radim Rehurek che viene utilizzata nella modellazione di argomenti senza supervisione e nell'elaborazione del linguaggio naturale . È progettato per estrarre argomenti semantici dai documenti. Può gestire grandi raccolte di testo.

qui rimuove tutta la punteggiatura e gli emoji

7. Keras

Keras è una libreria open source è uno dei framework di deep learning più affidabili. Per eseguire la tokenizzazione utilizziamo: metodo text_to_word_sequence della classe Class Keras.preprocessing.text. La cosa grandiosa di Keras è convertire l'alfabeto in minuscolo prima di tokenizzarlo, il che può far risparmiare molto tempo.

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. Tokenizzazione basata su parole secondarie

La sua tokenizzazione popolare è la tokenizzazione basata su parole secondarie che è una soluzione tra la tokenizzazione basata su parole e caratteri. L'idea principale è risolvere i problemi affrontati dalla tokenizzazione basata sulle parole (dimensione del vocabolario molto grande, numero elevato di token OOV e significati diversi di parole molto simili) e dalla tokenizzazione basata sui caratteri (sequenze molto lunghe e token individuali meno significativi).

Gli algoritmi di tokenizzazione basati su parole secondarie utilizzano i seguenti principi.

  1. Non dividere le parole usate di frequente in sottoparole più piccole.
  2. Dividi le parole rare in sottoparole significative più piccole.

Sfide

Parliamo delle sfide e dei limiti dell'attività di tokenizzazione.

In generale, questa attività viene utilizzata per corpus di testo scritti in inglese o francese in cui queste lingue separano le parole utilizzando spazi bianchi o segni di punteggiatura per definire il confine delle frasi. Sfortunatamente, questo metodo non può essere applicato ad altre lingue come cinese, giapponese, coreano tailandese, hindi, urdu, tamil e altre. Questo problema crea la necessità di sviluppare uno strumento di tokenizzazione comune che combini tutte le lingue.

Un'altra limitazione è nella tokenizzazione dei testi arabi poiché l'arabo ha una morfologia complicata come lingua. Ad esempio, una singola parola araba può contenere fino a sei token diversi come la parola "عقد" (eaqad).

stessi caratteri ma con significati diversi

Conclusione

Abbiamo parlato della tokenizzazione e di molte tecniche che possiamo utilizzare poiché vediamo che ci sono molti tipi di ricerca in questo campo e sta crescendo e ci sono molte sfide affrontate dalla PNL ma vedremo in futuro che questi problemi saranno risolti.

puoi vedere il codice in questo link