MO432 - Processamento de textos

Jacques Wainer

Tecnologia pré 2018

Bag of Words

  1. o texto é representado pelo conjunto de palavras. A ordem das palavras no texto é perdida

  2. Algumas palavras são “jogadas fora” e a maioria das palavras se refere a uma versão neutra delas (sem sufixo, sem plural, sem genero)

Textos são uma matrix de palavras (colunas) e linhas (documentos)

Tokenization: determina as palavras, converte maiuscula/minuscula, remove acentos, remove pontuação (mas nem sempre). Palavras compostas: Rio de Janeiro

Stop words: palavras que são removidas, palavras frequentes sem muito sentido especifico:

Stemming e lemmatization - extrai a raiz das palavras (plural, genero, declinação verbal)

Matriz de palavras/documentos

Redução de dimensionalidade

a matriz TF ou TDIDF é esparsa

grande mas a maioria dos valores são 0

Nao fazer o PCA nessas matrizes pois voce precisa fazer a centralização que perde a esparsidade!

Redução de dimensionalidade em texto normalmente é chamada de topic model wikipedia

Cada documento tem “volumes” “cargas” diferentes de diferentes tópicos

Cada palavra tem tambem um distribuição de topicos que ela se refere

Matriz de documentos agora tem k tópicos (50-100-400) em vez de 10.000 palavras

A matriz reduzida é apenas positiva - uma documento pode ter uma carga 0 em relação a um tópico (“futebol”) mas nao uma carga negativa (um texto que é contra o futebol é ainda sobre futebol!!!)

Dai o non-negative matriz fatorization como uma alternativa.

Blog sobre LDA

Classificadores

Para TF ou TFIDF (ou 0/1) naive Bayes era uma alternativa competitiva. SVM Linear tambem

Com topic modeling, qualquer classificador pode ser usado

SKlearn

Count of TFIDF https://scikit-learn.org/stable/modules/classes.html#module-sklearn.feature_extraction vecotrizers input texto -> matriz

Topic model https://scikit-learn.org/stable/modules/classes.html#module-sklearn.decomposition LDA e NMF

Outros pacotes de NLP (natural language processing)

NLTK

lista de toolkits

Outros conceitos

name entity recognizer (NER)- reconhece nomes compostos: Rio de Janeiro

part of speech (POS)- faz a analise sintática da frase e associa a cada palavra sua classe/familia: pronome, preposição, substantivo, adjetivo, verbo, etc

n-gram - em vez de representar palavras individuais, representar sequencias de palavras (raizes) que aparecem no texto. 2-gram: pares adjacentes de palavras. (n^2 pares!!)

Embedings - word2vec

Representar cada palavra como um ponto num espaço de alta dimensão de 100 a 600

Palavras com sentido parecido são proximas

Ha algum sentido sobre diferenças: rei + (menino - menina) = rainha

Deep em NLP

BERT https://towardsdatascience.com/bert-explained-state-of-the-art-language-model-for-nlp-f8b21a9b6270 e http://jalammar.github.io/a-visual-guide-to-using-bert-for-the-first-time/

Rede gigante treinada com “a internet” em duas tarefas: Masked Language Model e Next sentence prediction.

Deve ser “fine tuned” para seu problema especifico - classificação: coloque uma camada de saída para as classes na saída “intermediaria” do BERT pretreinado, e faça o novo treinamento por decida do gradiente.

a rede pre treinada

Variaçoes: veja https://huggingface.co/transformers/index.html Huggingface é um repositorio de modelos pre-treinados.

Outras redes:

XLM - para tradução

BART para sumarização

GPT2 e GPT3 para geração