Cos'è la tokenizzazione? Metodi per eseguire la tokenizzazione

Contenuti

Panoramica

  • Vuoi iniziare con l'elaborazione del linguaggio naturale? (PNL)? Questo è il primo passo perfetto
  • Impara a tokenizzare, un aspetto chiave della preparazione dei dati per creare modelli di PNL
  • Noi presentiamo 6 diversi modi per tokenizzare i dati di testo

introduzione

Sei affascinato dalla quantità di dati testuali disponibili su Internet?? Alla ricerca di modi per lavorare con questi dati di testo ma non sono sicuro da dove iniziare? Dopotutto, le macchine riconoscono i numeri, non le lettere della nostra lingua. E questo può essere un panorama difficile da navigare nell'apprendimento automatico..

Quindi, Come possiamo manipolare e pulire questi dati di testo per costruire un modello?? La risposta sta nel meraviglioso mondo di Elaborazione del linguaggio naturale (PNL).

Risolvere un problema di PNL è un processo in più fasi. Abbiamo bisogno di ripulire i dati di testo non strutturati prima di poter pensare di arrivare alla fase di modellazione. La pulizia dei dati consiste in pochi passaggi chiave:

  • Tokenizzazione delle parole
  • Prevedi parti del discorso per ogni token
  • Testo derivato
  • Identifica e rimuovi le parole di arresto e molto altro.

comp-2-0_00_13_15-8303848

In questo articolo, parleremo del primo passo: tokenizzazione. Vedremo prima cos'è la tokenizzazione e perché è necessaria in PNL.. Dopo, Vedremo sei modi unici per eseguire la tokenizzazione in Python.

Questo articolo non ha prerequisiti. Chiunque sia interessato alla PNL o alla scienza dei dati potrà seguirlo. Se stai cercando una risorsa completa per l'apprendimento della PNL, dovresti consultare il nostro corso completo:

Sommario

  • Cos'è la tokenizzazione in PNL?
  • Perché è richiesta la tokenizzazione??
  • Diversi metodi per eseguire la tokenizzazione in Python
    • Tokenizzazione tramite la funzione di divisione () di Python
    • Tokenizzazione usando espressioni regolari
    • Tokenizzazione tramite NLTK
    • Tokenizzazione con Spacy
    • Tokenizzazione con Keras
    • Tokenizzazione con Gensim

Cos'è la tokenizzazione in PNL?

La tokenizzazione è una delle attività più comuni quando si tratta di lavorare con dati di testo. Ma, Cosa significa veramente il termine "tokenizzazione"??

La tokenizzazione consiste essenzialmente nel dividere una frase, preghiera, paragrafo o un documento di testo completo in unità più piccole, come singole parole o termini. Ognuna di queste unità più piccole è chiamata token.

Guarda l'immagine qui sotto per visualizzare questa definizione:

screenshot-da-2019-07-05-13-50-56-1778299

I token possono essere parole, numeri o segni di punteggiatura. Nella tokenizzazione, le unità più piccole vengono create individuando i confini delle parole. In attesa, Quali sono i limiti delle parole??

Questi sono il punto finale di una parola e l'inizio della successiva. Questi token sono considerati un primo passo per la derivazione e lo stemming (la fase successiva della preelaborazione del testo che tratteremo nel prossimo articolo).

Duro? Non preoccuparti! Il 21° secolo ha facilitato l'accessibilità all'apprendimento e alla conoscenza. Qualsiasi corso di elaborazione del linguaggio naturale può essere utilizzato per impararli facilmente.

Perché è richiesta la tokenizzazione in PNL??

Voglio che tu pensi in lingua inglese qui. Scegli una frase che ti viene in mente e tienila a mente mentre leggi questa sezione. Questo ti aiuterà a capire l'importanza della tokenizzazione in un modo molto più semplice.

Prima di elaborare un linguaggio naturale, dobbiamo identificare il parole che costituiscono una stringa di caratteri. Ecco perché tuL'okenizzazione è il passaggio più elementare per procedere con la PNL (dati di testo). Questo è importante perché il significato del testo potrebbe essere facilmente interpretato analizzando le parole presenti nel testo..

Facciamo un esempio. Considera la seguente stringa:

“Questo è un gatto.”

Cosa pensi che accadrà dopo che avremo tokenizzato su questa catena? Otteniamo ['Questo', 'è', 'un', gatto'].

Ci sono numerosi usi per farlo. Possiamo usare questo modulo tokenizzato per:

  • Conta il numero di parole nel testo.
  • Conta la frequenza della parola, vale a dire, il numero di volte in cui una parola particolare è presente.

E così via. Possiamo estrarre molte più informazioni che discuteremo in dettaglio nei prossimi articoli.. Per adesso, è ora di approfondire il nocciolo di questo articolo: i diversi metodi per eseguire la tokenizzazione in PNL.

Metodi per eseguire la tokenizzazione in Python

Vedremo sei modi unici in cui possiamo tokenizzare i dati di testo. Ho fornito il codice Python per ogni metodo in modo che tu possa seguirlo sulla tua macchina.

1. Tokenizzazione tramite la funzione di divisione () di Python

Cominciamo con spezzare() metodo poiché è il più elementare. Restituisce un elenco di stringhe dopo aver diviso la stringa data per il separatore specificato. Per impostazione predefinita, diviso () spezza una catena in ogni spazio. Possiamo cambiare il separatore in qualsiasi cosa. Vedremo.

Tokenizzazione delle parole

Produzione : ['Fondato', 'in', '2002,', 'SpazioX', 'missione', 'è', 'a', 'abilitare', 'umani', 
          'a', 'diventare', 'un', 'viaggiare nello spazio', 'civiltà', 'e', 'un', 'multi-pianeta', 
          'specie', 'di', 'costruzione', 'un', 'autosufficiente', 'città', 'Su', 'Marte.', 'In', 
          '2008,', 'SpazioX', 'Falco', '1', 'divennero', 'il', 'primo', 'privato', 
          'sviluppato', 'carburante liquido', 'lanciare', 'veicolo', 'a', 'orbita', 'il', 'Terra.']

Tokenizzazione dell'istruzione

È simile alla tokenizzazione delle parole. Qui, studiamo la struttura delle frasi nell'analisi. Una frase di solito termina con un punto (.), Quindi possiamo usare “.” come separatore per rompere la corda:

Produzione : [«Fondata in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet nspecies by building a self-sustaining city on 
           Mars', 
          «In 2008, Falcon di SpaceX 1 became the first privately developed nliquid-fuel 
           launch vehicle to orbit the Earth.']

Un grande svantaggio dell'uso di Python spezzare() Il metodo è che possiamo usare solo un separatore alla volta. Un'altra cosa da tenere a mente: tokenizzazione in Word, spezzare() non ha considerato la punteggiatura come simbolo autonomo.

2. Tokenizzazione usando espressioni regolari (RegEx)

Primo, capiamo cos'è un'espressione regolare. Fondamentalmente, è una sequenza di caratteri speciale che ti aiuta ad abbinare o trovare altre stringhe o set di stringhe usando quella sequenza come pattern.

Possiamo usare il Rif Libreria Python per lavorare con le espressioni regolari. Questa libreria è preinstallata con il pacchetto di installazione Python.

Ora, facciamo la tokenizzazione delle parole e la tokenizzazione delle frasi tenendo conto dell'espressione regolare.

Tokenizzazione delle parole

Produzione : ['Fondato', 'in', "2002", 'SpazioX', 'S', 'missione', 'è', 'a', 'abilitare', 
          'umani', 'a', 'diventare', 'un', 'viaggiare nello spazio', 'civiltà', 'e', 'un', 
          'multiplo', 'pianeta', 'specie', 'di', 'costruzione', 'un', 'se stesso', 'sostenere', 
          'città', 'Su', 'Marte', 'In', '2008', 'SpazioX', 'S', 'Falco', '1', 'divennero', 
          'il', 'primo', 'privato', 'sviluppato', 'liquido', 'carburante', 'lanciare', 'veicolo', 
          'a', 'orbita', 'il', 'Terra']

il re.trovare () La funzione trova tutte le parole che corrispondono al modello passato e le memorizza nell'elenco.

Il “w"Rappresenta" qualsiasi carattere di parola "che normalmente significa alfanumerico (lettere, numeri) e sottolinea (_). '+’ indica un numero qualsiasi di volte. Quindi [w']+ indica che il codice deve trovare tutti i caratteri alfanumerici fino a quando non vengono trovati altri caratteri.

Screenshot-da-2019-07-05-13-31-01-1727408

Tokenizzazione dell'istruzione

Per eseguire la tokenizzazione delle frasi, possiamo usare il re.split () funzione. Questo dividerà il testo in frasi passando un modello ad esso..

Produzione : [«Fondata in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet nspecies by building a self-sustaining city on 
           Mars.', 
          «In 2008, Falcon di SpaceX 1 became the first privately developed nliquid-fuel 
           launch vehicle to orbit the Earth.']

Qui, abbiamo un vantaggio rispetto al spezzare() poiché possiamo passare più separatori contemporaneamente. Nel codice sopra, noi usiamo il ri.compila () funzione in cui passiamo [.?!]. ciò significa che le frasi saranno divise non appena uno di questi caratteri verrà trovato..

Sei interessato a leggere di più sull'espressione regolare?? Le seguenti risorse ti aiuteranno a iniziare con le espressioni regolari in PNL:

3. Tokenizzazione tramite NLTK

Ora, questa è una libreria che apprezzerai più lavorerai con i dati di testo. NLTK, abbreviazione di Natural Language ToolKit, è una libreria scritta in Python per l'elaborazione simbolica e statistica del linguaggio naturale.

Puoi installare NLTK usando il seguente codice:

pip install --user -U nltk

NLTK contiene un modulo chiamato tokenizzare () che è anche classificato in due sottocategorie:

  • Tokenizzazione delle parole: Usiamo il metodo word_tokenize () dividere una frase in simboli o parole
  • Tokenizzazione della frase: Usiamo il metodo send_tokenize () dividere un documento o un paragrafo in frasi

Diamo un'occhiata a entrambi uno per uno.

Tokenizzazione delle parole

Produzione: ['Fondato', 'in', "2002", ',', 'SpazioX', ''', 'S', 'missione', 'è', 'a', 'abilitare', 
         'umani', 'a', 'diventare', 'un', 'viaggiare nello spazio', 'civiltà', 'e', 'un', 
         'multi-pianeta', 'specie', 'di', 'costruzione', 'un', 'autosufficiente', 'città', 'Su', 
         'Marte', '.', 'In', '2008', ',', 'SpazioX', ''', 'S', 'Falco', '1', 'divennero', 
         'il', 'primo', 'privato', 'sviluppato', 'carburante liquido', 'lanciare', 'veicolo', 
         'a', 'orbita', 'il', 'Terra', '.']

Tokenizzazione dell'istruzione

Produzione: [«Fondata in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
          civilization and a multi-planet nspecies by building a self-sustaining city on 
          Mars.', 
         «In 2008, Falcon di SpaceX 1 became the first privately developed nliquid-fuel 
          launch vehicle to orbit the Earth.']

4. Tokenizzazione tramite la libreria spaCy

Adoro la libreria SpaCy. Non ricordo l'ultima volta che non l'ho usato quando stavo lavorando a un progetto di PNL.. È così utile..

spaCy è un libreria open source per avanzati Elaborazione del linguaggio naturale (PNL). Supporta più di 49 lingue e fornisce velocità di calcolo all'avanguardia.

spacy-2586479

Per installare Spacy su Linux:

pip install -U spacy
python -m spacy download en

Per installarlo su altri sistemi operativi, vai a questo link.

Quindi, Vediamo come possiamo usare il genio di spaCy per fare la tokenizzazione. noi useremo spacy.lang.en che supporta la lingua inglese.

Tokenizzazione delle parole

Produzione : ['Fondato', 'in', "2002", ',', 'SpazioX', ''S', 'missione', 'è', 'a', 'abilitare', 
          'umani', 'a', 'diventare', 'un', 'viaggiare nello spazio', 'civiltà', 'e', 'un', 
          'multiplo', '-', 'pianeta', 'n', 'specie', 'di', 'costruzione', 'un', 'se stesso', '-', 
          'sostenere', 'città', 'Su', 'Marte', '.', 'In', '2008', ',', 'SpazioX', ''S', 
          'Falco', '1', 'divennero', 'il', 'primo', 'privato', 'sviluppato', 'n', 
          'liquido', '-', 'carburante', 'lanciare', 'veicolo', 'a', 'orbita', 'il', 'Terra', '.']

Tokenizzazione dell'istruzione

Produzione : [«Fondata in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet nspecies by building a self-sustaining city on 
           Mars.', 
          «In 2008, Falcon di SpaceX 1 became the first privately developed nliquid-fuel 
           launch vehicle to orbit the Earth.']

spaCy è abbastanza veloce rispetto ad altre librerie durante le attività di PNL (sì, anche NLTK). Ti incoraggio ad ascoltare il seguente podcast di DataHack Radio per conoscere la storia di come è stato creato spaCy e dove puoi usarlo.:

Ed ecco un tutorial dettagliato per iniziare con spaCy:

5. Tokenizzazione con Keras

Duro! Uno dei framework di deep learning più popolari nel settore in questo momento. È una libreria di rete neurale open source per Python. Keras è molto facile da usare e può essere eseguito anche su TensorFlow.

Nel contesto della PNL, possiamo usare Keras per ripulire i dati di testo non strutturati che normalmente raccogliamo.

keras_tokenization-4173569

Puoi installare Keras sulla tua macchina usando solo una riga di codice:

pip install Hard

Andiamo a lavorare. Per eseguire la tokenizzazione delle parole utilizzando Keras, noi usiamo il text_to_word_sequence metodo di keras.preprocessing.text classe.

Vediamo Keras in azione.

Tokenizzazione delle parole

Produzione : ['fondato', 'in', "2002", 'spacex', 'missione', 'è', 'a', 'abilitare', 'umani', 
          'a', 'diventare', 'un', 'viaggiare nello spazio', 'civiltà', 'e', 'un', 'multiplo', 
          'pianeta', 'specie', 'di', 'costruzione', 'un', 'se stesso', 'sostenere', 'città', 'Su', 
          'Marte', 'in', '2008', 'spacex', 'falco', '1', 'divennero', 'il', 'primo', 
          'privato', 'sviluppato', 'liquido', 'carburante', 'lanciare', 'veicolo', 'a', 'orbita', 
          'il', 'terra']

Keras riduce la casella di tutti gli alfabeti prima di tokenizzarli. Questo ci fa risparmiare un bel po' di tempo, come puoi immaginare!!

6. Tokenizzazione con Gensim

Il metodo di tokenizzazione finale che tratteremo qui è l'uso della libreria Gensim. È una libreria open source per la modellazione di argomenti senza supervisione e l'elaborazione del linguaggio naturale. ed è progettato per estrarre automaticamente temi semantici da un determinato documento.

Ecco come installare Gensim:

pip installare gensim

Possiamo usare il gensim.utils per importare la classe tokenizzare metodo per l'esecuzione della tokenizzazione di Word.

Tokenizzazione delle parole

Outpur : ['Fondato', 'in', 'SpazioX', 'S', 'missione', 'è', 'a', 'abilitare', 'umani', 'a', 
          'diventare', 'un', 'viaggiare nello spazio', 'civiltà', 'e', 'un', 'multiplo', 'pianeta', 
          'specie', 'di', 'costruzione', 'un', 'se stesso', 'sostenere', 'città', 'Su', 'Marte', 
          'In', 'SpazioX', 'S', 'Falco', 'divennero', 'il', 'primo', 'privato', 
          'sviluppato', 'liquido', 'carburante', 'lanciare', 'veicolo', 'a', 'orbita', 'il', 
          'Terra']

Tokenizzazione dell'istruzione

Per eseguire la tokenizzazione delle frasi, noi usiamo il split_sentences metodo di gensim.summerization.texttcleaner classe:

Produzione : [«Fondata in 2002, SpaceX’s mission is to enable humans to become a spacefaring 
           civilization and a multi-planet ', 
          "specie costruendo una città autosufficiente su Marte.", 
          «In 2008, Falcon di SpaceX 1 divenne il primo sviluppato privatamente ', 
          "veicolo di lancio a combustibile liquido in orbita attorno alla Terra."]

Potresti aver notato che Gensim è piuttosto severo con il punteggio. Dividere ogni volta che viene trovato un punteggio. Nella divisione delle frasi anche, Gensim ha tokenizzato il testo trovando ” n” mentre altre librerie lo hanno ignorato.

Note finali

La tokenizzazione è un passaggio fondamentale nella pipeline complessiva della PNL. Non possiamo semplicemente passare alla parte di costruzione del modello senza prima ripulire il testo.

In questo articolo, abbiamo visto sei diversi metodi di tokenizzazione (parola e frase) di un dato testo. Ci sono anche altri modi, ma sono abbastanza buoni per iniziare.

Tratterò altri passaggi di pulizia del testo come la rimozione delle parole non significative, taggare parte del discorso e riconoscere entità nominate nei miei post futuri. Fino ad allora, continua a imparare!

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.