Descripció
El processament del llenguatge natural (NLP, de l’anglès natural language processing) s’ocupa de les interaccions entre els ordinadors i els llenguatges humans (naturals). En concret, s’ocupa de com programar els ordinadors per a processar i analitzar grans quantitats de dades del llenguatge natural. Els desafiaments en el processament del llenguatge natural freqüentment involucren el reconeixement de la parla, així com la compressió i generació del llenguatge natural.
El processament del llenguatge natural ha de fer-se de manera sistemàtica, dividint-lo en parts, agregant elements gramaticals i identificant elements interessants. Els següents són alguns dels elements comuns del processament en NLP:
- Tokenització: consisteix a dividir el text en oracions i aquestes, en paraules.
- Normalització: estandarditza totes les paraules, per exemple, convertint totes les paraules en majúscules o minúscules.
- Eliminació de paraules redundants: consisteix a ometre o eliminar paraules redundants, com els articles, que no contribueixen en gran manera a entendre el text.
- Stemming: relaciona els afixos de les paraules per a obtenir l’arrel de la paraula, per exemple, going es converteix en go.
- Lematització: relaciona una paraula flexionada o derivada amb la seva forma canònica o lema.
- Etiquetatge POS: consisteix a assignar etiquetes per a substantius, pronoms, verbs, adjectius, adverbis, etc.
- Borsa de paraules: una oració es considera com un conjunt de paraules, sense tenir en compte la gramàtica ni l’ordre de les paraules.
- N-grames: son una seqüència contínua de paraules adjacents en una oració, necessàries per a obtenir el significat correctament, per exemple, machine learning és un bigrama.
- TF (freqüència del terme): és el nombre de vegades que apareix una paraula en un missatge o una oració; indica la importància d’aquesta paraula.
- Reconeixement d’entitats anomenades: identifica i etiqueta paraules que representen entitats de paraules reals, com ara persones, organitzacions, llocs, dates, etc.
En l’actualitat, el processament del llenguatge natural s’utilitza en múltiples eines o programaris, alguns exemples del seu ús són els següents:
- Chatbots
- Resum de textos
- Anàlisi de sentiments
- Classificació de textos
- Traducció automàtica
- Reconeixement de veu
Per tant, l’NLP tracta d’aconseguir que el llenguatge humà sigui comprensible per a una màquina en cinc grans àrees: fonologia, morfologia, sintaxi, semàntica i pragmàtica. Un factor que ha de depurar i controlar en tot moment és l’ambigüitat, ja que el llenguatge humà n’està ple, i pot variar el significat de les expressions.
Algunes de les principals llibreries per a NLP són:
- NLTK (https://www.nltk.org/): llibreria Python per a treballar amb llenguatge natural que proporciona interfícies fàcils d’usar juntament amb cinquanta corpus i recursos lèxics com WordNet, així com un conjunt de llibreries de processament de text per a classificació, tokenització, stemming, etiquetatge (tagging), anàlisi (parsing) i raonament semàntic.
- Polyglot (https://github.com/abosamoor/polyglot): joc d’eines (toolkit) de llenguatge natural que suporta aplicacions multilingües massives, entre les quals es troben el català i el castellà.
- TextBlob (https://textblob.readthedocs.io/en/dev/): proporciona una API senzilla per a submergir-se en tasques comunes de processament del llenguatge natural (NLP), com l’etiquetatge de part de la veu, l’extracció de frases de noms, l’anàlisi de sentiments, la classificació, la traducció…
- spaCy (https://spacy.io/): biblioteca de processament de llenguatge natural Python dissenyada específicament amb l’objectiu de ser útil per a implementar sistemes preparats per a la producció.
- OpenNLP (https://opennlp.apache.org/): kit d’eines basat en l’aprenentatge automàtic per al processament de text en llenguatge natural.
Enllaç al recurs
https://en.wikipedia.org/wiki/natural_language_processing
Exemple d’ús
En l’exemple següent utilitzem la llibreria spaCy amb una simple oració, i identifiquem tokens (components lèxics), stop words (paraules buides) i anàlisi sintàctica. El codi Python utilitzat és el següent (s’han numerat les línies per a millorar-ne la lectura):
1 # Càrrega de packages 2 import spacy 3 from spacy import displacy 4 from spacy.lang.en.stop_words import STOP_WORDS 5 nlp = spacy.lloeu('en') 6 7 sample = u"I would like to give you more than $1000 for your car in cash." 8 9 doc = nlp(sample) 10 11 # Tokens 12 tokens = [token for token in doc ] 13 print(tokens) 14 15 # Stopwords 16 for word in doc : 17 if word.is_stop == True: 18 print(word) 19 # Anàlisi 20 for token in doc : 21 print(token.text, token.lemma_, token.pos_, token.tag_, token.dep_, 22 token.shape_, token.is_alpha, token.is_stop)
En primer lloc, fem la càrrega de la llibreria spaCy i indiquem l’idioma anglès juntament amb els seus stop words (línies 2 a 5). A la línia 7 indiquem l’oració d’exemple, que podríem substituir per un text de més longitud, i l’emmagatzemem en la variable doc després d’incorporar-la al nostre model de spaCy. Posteriorment, en les línies 12 i 13 obtenim i imprimim els tokens de què està composta l’oració. A més, en haver-hi suport d’anglès és possible fer el mateix, però per a les stop words (línies 16 a 18). Finalment, analitzem sintàcticament els elements de l’oració simple (línies 20 a 22).
Enllaços relacionats
Cran NLP: https://cran.r-project.org/web/views/naturallanguageprocessing.html