Processamento de Linguagem Natural

Mapa usado para organizar conhecimentos acerca do Processamento de Linguagem Natural

Get Started. It's Free
or sign up with your email address
Processamento de Linguagem Natural by Mind Map: Processamento de Linguagem Natural

1. Word Embedding

1.1. São representações de termos em espaço vetorial

1.1.1. Vetorização

1.1.2. Textos traduzidos em vetores de números

1.1.3. técnicas de vetorização tentam mapear todas as palavras possíveis para um inteiro específico.

1.2. Termos do vocabulário são mapeadas para vetores de números reais.

1.2.1. Vetores de termos

1.3. Tipos

1.3.1. Prediction based Embedding

1.3.1.1. Vetores obtidos a partir treinos não-supervisionados em grandes corpus de textos não estruturados

1.3.1.2. O significado de cada termo e sua relação com outros termos são capturados pelo valores destes vetores que representa cada termo, bem como pelas similaridades entre os diferentes vetores.

1.3.1.3. CBOW (Continuous Bag of Words)

1.3.1.3.1. Funciona prevendo a probabilidade de uma palavra dada a um contexto. Um contexto pode ser uma única palavra ou um grupo de palavras.

1.3.1.3.2. Utiliza redes neurais

1.3.1.4. Skip-Gram Model

1.3.1.4.1. Objetivo é predizer o contexto dada uma palavra

1.3.1.4.2. Segue a mesma topologia do CBOW, mas é inverso a ele

1.3.1.5. Word2vec

1.3.1.5.1. Aglutina as arquiteturas do CBOW e Skip-Gram

1.3.1.5.2. Um framework (um conjunto de algoritmos baseados em redes neurais) para o aprendizado de Word Vectors.

1.3.1.5.3. Dados e capacidade computacional tornaram o word2vec popular

1.3.1.5.4. Considera o contexto

1.3.1.5.5. Funcionamento

1.3.1.5.6. Aplica Semântica Distribucional para

1.3.1.6. GloVe (Global Vectors)

1.3.1.6.1. Tenta usar o melhor das abordagens Fatoração da matriz global Baseados em janela de contexto local

1.3.1.6.2. Pode ser dizer que é um Word2Vec modificado

1.3.1.7. FastText

1.3.2. Frequency based Embedding

1.3.2.1. TF-IDF

1.3.2.1.1. Term frequency — inverse document frequency

1.3.2.1.2. indica a importância de uma palavra de um documento em relação a uma coleção de documentos

1.3.2.1.3. É utilizada para computar pesos ou scores para os termos.

1.3.2.1.4. Calculado a partir das metricas

1.3.2.1.5. Pode ser usado para identificar documentos similares

1.3.2.2. One-Hot Encoding

1.3.2.2.1. Simbolos Discretos

1.3.2.2.2. Palavras podem ser representadas por vetores one-hot, com o valor 1 representando a palavra e o restante composto de 0

1.3.2.2.3. Exemplo

1.3.2.3. Vector Co-Occurrence Vector

2. Atividades de PLN são fundamentadas em análises textuais

2.1. As atividades realizadas no domínio do PLN podem ser organizadas de acordo com o tipo de análise textual que fundamentam essas atividades.

2.2. 1

2.2.1. Analise Léxica

2.2.1.1. Consiste em analisar a entrada de linhas de caracteres e produzir uma sequência de símbolos chamado "símbolos léxicos" ou somente "símbolos" (tokens)

2.2.1.2. Exemplos de Atividades

2.2.1.2.1. Tokenização

2.2.2. Morfológica

2.2.2.1. Consiste em analisar a classe gramatical dos elementos que formam um enunciado linguístico individualmente, sem que haja ligação entre eles.

2.2.2.2. verbo, artigo, substantivo, pronome, adjetivo, etc

2.2.2.3. Pode ser representada por meio de gramáticas e árvores sintáticas (parsing)

2.2.2.3.1. 1

2.2.2.3.2. Representação de todas as etapas na derivação da frase a partir do nó raiz.

2.2.2.4. Fortemente associada a Análise Sintática

2.2.2.4.1. Análise morfosintatica

2.2.2.5. Exemplos de Atividades

2.2.2.5.1. Lematization e Steming

2.2.3. Analise Sintatica

2.2.3.1. Análise função e a ligação de cada elemento que forma uma sentença

2.2.3.2. sujeito, verbo de ligação, complemento verbal, complemento nominal, objeto direto, etc

2.2.3.3. Requer implementação de gramaticas

2.2.3.4. Exemplos de Atividades

2.2.3.4.1. POS Tagging

2.2.4. Análise Semantica

2.2.4.1. Análise do significado das palavras, expressões fixadas, sentenças inteiras e enunciados no contexto.

2.2.4.2. Usado para resolução de ambiguidade

2.2.4.3. Exemplos de Atividades

2.2.4.3.1. Chunking

2.2.4.3.2. NER

2.2.4.3.3. Similaridade de texto

2.2.4.3.4. Classificação de texto

2.2.5. Análise Pramagmatica

2.2.5.1. Busca nas outras frases a compreensão do texto que falta àquela frase em análise

2.2.5.2. Estruturas mais utilizadas na análise pragmática são as gramáticas baseadas em casos

2.2.5.3. Exemplos de atividades

2.2.5.3.1. Geração de Linguagem Natural

3. Conceitos Básico

3.1. O Processamento de Linguagem Natural (PLN) é a subárea da Inteligência Artificial (IA) que estuda a capacidade e as limitações de uma máquina em entender a linguagem dos seres humanos.

3.2. PLN tem como objetivo fornecer aos computadores a capacidade de entender e compor textos.

3.2.1. "Entender" um texto significa reconhecer o contexto, fazer análise sintática, semântica, léxica e morfológica, criar resumos, extrair informação, interpretar os sentidos, analisar sentimentos e até aprender conceitos com os textos processados.

3.3. PLN é uma área multidisciplinar

3.3.1. 1

3.4. PLN processa linguagem natural

3.4.1. Linguagem Natural

3.4.2. Linguagem natural é não estruturada

3.4.2.1. Possui regras gramaticais, e algumas frases podem ter uma estrutura bem simples. Mas na maior parte do tempo, a linguagem natural é não estruturada

3.4.2.1.1. É ambígua.

3.4.2.2. Não possuí estrutura definida

3.4.2.2.1. Sua analise depende de contexto

3.4.2.2.2. Não podemos falar de um único significado para uma sentença, mas de uma distribuição deprobabilidade sobre significados possíveis

3.4.2.3. Exemplos

3.4.2.3.1. O conteúdo de um livro

3.4.2.3.2. Quando você fala, ouve ou escreve durante o dia

3.4.2.3.3. Diálogos de filmes

3.4.2.3.4. Suas conversas no WhatsApp

3.4.3. O que é uma linguagem estruturada?

3.4.3.1. Fácil de ser processada pelo computador pois ela é definida por um conjunto restrito de regras ou gramática

3.4.3.2. Exemplos

3.4.3.2.1. Matematica Logica Programação

3.5. Em PLN o conjunto de dados analisado recebe o nome de Corpus

3.5.1. Conjunto de textos escritos e registros orais em uma determinada língua e que serve como base de análise.

3.5.2. Vários Corpus são Corpora

3.5.3. O termo dataset também é usado quando falamos de Corpus

3.6. Exemplos de atividades de PLN

3.6.1. - Sumarização Automática - Análise de Discurso - Segmentação Morfológica - Análise Sintática - Análise morfológica e segmentação de palavras - Geração de linguagem natural - Compreensão da linguagem natural - Analise morfológica e reconhecimento de tópico - Marcação de classe gramatical - Tradução - Reconhecimento de entidades nomeadas - OCR - Respostas a perguntas (Chatbots) - Extração de relacionamento - Quebra de frases - Analise de subjetividade (Sentimentos) - Reconhecimento da Fala - Segmentação da Fala - Recuperação de Informação - Extração de Informação

4. Fluxo de trabalho para desenvolvimento de aplicações de PLN

4.1. Aplicações de PLN podem ser desenvolvidas através de um fluxo de trabalho contemplando várias atividades de PLN como Stemming, POS Tagging, Modelagem, Classificação

4.2. Pré-processamento de texto

4.2.1. Atividades de baixo nível

4.2.2. Tokenização

4.2.3. Remoção de Stopwords

4.2.4. Stemming

4.3. Modelagem

4.3.1. Transformação do texto em um conjunto de dados estruturados que pode ser utilizado em técnicas analíticas e aprendizado de máquina

4.3.2. Tipos

4.3.2.1. Modelagem estatística

4.3.2.1.1. Bag of words - BoW

4.3.2.2. Modelagem probabilística

4.3.2.2.1. Atribuir uma probabilidade a uma sentença ou sequência de palavras.

4.3.2.2.2. Técnicas de modelagem probabilística de linguagem

4.3.2.2.3. Usado para:

4.3.3. A saída da modelagem recebe o nome de Word Embedding

4.3.3.1. Textos traduzidos em vetores de números

4.3.3.1.1. Representações de termos em espaço vetorial

4.3.3.2. Cada termo é representada como um vetor de valores reais

4.4. Aplicação de técnica analíticas ou de aprendizado de maquina

4.4.1. Os dados modelados (word embedding) são usado como entradas para várias técnicas

4.4.2. Modelos de classificação/agrupamento de texto

4.4.2.1. Analise de Sentimento

4.4.2.2. Similaridade de texto

4.4.3. Geração de resumos

4.4.4. Identificação de tópicos nos textos

5. Ferramentas para PLN

5.1. NLTK

5.1.1. Natural Language Toolkit

5.1.2. Plataforma líder de mercado para construir programas em Python

5.1.3. Open-source

5.1.4. Mais de 50 corporas

5.1.5. Instalação

5.2. Stanford CoreNLP

5.2.1. Sem suporte para portugues

5.3. Apache OpenNLP

5.4. Apache Uima

5.5. Gensim

5.6. TextBlob

6. O que é possível fazer com PLN?

6.1. Grupos de Atividades

6.2. Grupo 1 - Baixo nível

6.2.1. Tokenização

6.2.1.1. Processo de dividir uma string em listas de pedaços ou "tokens".

6.2.1.2. Um token é uma parte inteira.

6.2.1.2.1. Uma sentença é um token em um parágrafo.

6.2.1.2.2. Uma palavra é um token em uma sentença.

6.2.2. Remoção de Stopwords

6.2.2.1. Stopwords são palavras comuns que normalmente não contribuem para o significado de uma frase, pelo menos com relação ao propósito da informação e do processamento da linguagem natural

6.2.2.1.1. São palavras como "The" e "a" ((em inglês) ou "O/A" e "Um/Uma" ((em português).

6.2.2.2. Muitos mecanismos de busca filtram estas palavras (stopwords), como forma de economizar espaço em seus índices de pesquisa.

6.2.3. Stemming

6.2.3.1. Remoção de sufixos e prefixos de uma palavra

6.2.3.2. Muito usado em mecanismos de buscas para indexação de palavras.

6.2.3.2.1. Ao invés de armazenar todas as formas de uma palavras é armazenada apenas o radical da palavra, reduzindo o tamanho do índice e aumentando a performance do processo de busca.

6.2.4. Lemmatization

6.2.4.1. Determinação do lema para uma determinada palavra.

6.2.4.1.1. Forma mais simples da palavra

6.2.4.1.2. Exemplo: feliz é o lema de felicidade, infelizmente, felizmente

6.2.4.2. Similar o Stemming

6.2.4.2.1. Pode ser criada uma nova palavra diferente do radical

6.2.4.2.2. stemmer opera em uma única palavra sem conhecimento do contexto e, portanto, não pode discriminar entre palavras

6.2.4.3. Lemmatization agrupa as diferentes formas flexionadas de uma palavra para que possam ser analisadas como um único item

6.2.5. Chunking

6.2.5.1. Extração de sentenças curtas um texto através da reunião de tokens seguidos com uma estrutura sintática definida

6.2.5.1.1. Por exemplo (Artigo + Substantivo)

6.2.5.2. Similar a tokenização

6.2.5.2.1. Mas considera regras para separar os tokens

6.2.5.3. Para realizar chuncking é necessário um Chunker

6.2.5.3.1. Chunkers podem se customizados através de gramaticas

6.2.5.3.2. Chunkers podem ser treinados, para descobrirem o padrão gramatical mais adequado

6.2.5.4. Exemplo de chuncking

6.2.5.4.1. texto

6.2.5.4.2. chunks

6.2.6. Etiquetagem de partes do texto (Part-of-Speech Tagging)

6.2.6.1. POS Tagging

6.2.6.2. Processo de etiquetagem de elementos textuais, com o fim de evidenciar a estrutura gramatical de um determinado trecho de texto.

6.2.6.3. Pode ser usado para:

6.2.6.3.1. Reconhecimento e síntese de fala

6.2.6.3.2. - Extração de termos (entidades) - Desambiguação - Composição de novas frases - Reconhecimento e síntese de fala

6.2.6.4. Para realizar POS Tagging é necessário um etiquetador

6.2.6.4.1. Responsável pelo processo de definição da classe gramatical dos tokens

6.2.6.4.2. Leva em consideração toda a oração (sentença)

6.2.6.4.3. Necessita de um Corpus de treinamento anotado com um tagst (rotulado).

6.2.6.5. Tipos de etiquetadores

6.2.6.5.1. Unigram tagger

6.2.6.5.2. N-gram tagger

6.2.6.6. Alguns etiquetadores prontos para uso

6.2.6.6.1. MacMorpho

6.2.6.7. Boa práticas para POS Tagging

6.2.6.7.1. Colocar todas as palavras com uma tag padrão

6.2.6.8. Outras referencias

6.2.6.8.1. Building a POS Tagger with Python NLTK and Scikit-Learn

6.3. Grupo 2 - Nível médio

6.3.1. Reconhecimento de entidade nomeada (Named Entity Recognition - NER)

6.3.1.1. Permite identificar e classificar nomes em textos.

6.3.1.2. Através do NER é possível identificar

6.3.1.2.1. - o nome de uma pessoa - um nome de organização - símbolos relacionados à moeda - formatos numéricos e assim por - etc

6.3.1.3. Ferramentas para NER

6.3.1.3.1. Stanford NER

6.3.1.3.2. spaCy

6.3.1.4. NER pode utilizar as etiquetas obtidas no POS Tagging

6.3.2. Extração de informação

6.3.2.1. Método para converter dados não estruturados (texto) em em dados estruturados (atributos).

6.3.2.2. Fluxo comum da extração de informação

6.3.2.2.1. Fluxo

6.3.2.2.2. Dividir o texto bruto de um documento em sentenças

6.3.2.2.3. Cada sentença é subdividida em palavras usando um tokenizador.

6.3.2.2.4. Cada sentença é etiquetada

6.3.2.2.5. São reconhecidas as entidades e chuncks

6.3.2.2.6. São conhecidos os relacionamentos entre essas entidades

6.3.2.3. Na extração de informação é utilizada a modelagem estatística

6.3.2.3.1. Permiti compreender informação relevante dentro de textos.

6.3.2.3.2. Obter informação de muitos textos

6.3.2.3.3. Organizar a informação com precisão semântica para permitir inferências

6.3.2.3.4. Produzir representação estruturada de informação relevante

6.3.2.3.5. Produzir conhecimento

6.3.2.3.6. Organizar informação

6.3.2.4. Extração de informação deve permitir responder perguntas como Quem fez o que, para que e quando?

6.3.3. Recuperação de informação

6.3.3.1. Utilizado para encontrar documentos que são relevantes para a necessidade de um usuário de obter informação

6.3.3.2. Exemplo

6.3.3.2.1. Mecanismos de busca na World Wide Web

6.3.4. Similaridade entre textos

6.3.4.1. Usado para comparar textos e obter de métricas de similaridade entre eles

6.3.4.1.1. Usado em aplicações de tradução

6.3.4.2. A similaridade pode ser calculada como a distancia minima entre duas string

6.3.4.2.1. A distância minima entre 2 strings é o número minimo de operações de inserção, deleção e substituição necessárias para transformar uma string na outra.

6.3.4.2.2. Precisamos minimizar o número de operações de edição.

6.3.4.2.3. Como é realizado o cálculo

6.3.4.3. Métricas de similaridade que podem ser analisadas

6.3.4.3.1. Levenstein

6.3.4.4. Ferramentas para cálculo de similaridade entre textos

6.3.4.4.1. jellyfish

6.3.5. Classificação de textos

6.3.5.1. Processo

6.3.5.2. Aplicações

6.3.5.2.1. Análise de sentimentos

6.3.5.2.2. Classificação de Spam

6.3.5.2.3. Identificação de Autenticidade

6.3.5.2.4. Classificação de tópicos

6.3.5.2.5. Identificação de Idade/Sexo do autor

6.3.5.2.6. Identificação de Linguagem/Idioma

6.3.5.3. Algumas técnicas

6.3.5.3.1. Classificação baseada em compressão

6.4. Grupo 3 - Alto nível

6.4.1. Compreensão/analise de linguagem natural

6.4.1.1. NLU - Natural Language Understanding N/A

6.4.1.2. Analise o texto para extrair metadados de conteúdos como conceitos, entidades, palavras-chave, categorias, sentimentos, emoções, relacionamentos e funções semânticas, usando a compreensão de linguagem natural.

6.4.1.3. Converter linguagem natural em uma representação útil usando ferramentas linguísticas.

6.4.1.4. Problema "Al-Hard"

6.4.1.4.1. Pois tentamos fazer com que as máquinas sejam tão inteligentes como os humanos.

6.4.1.5. Requer os seguintes tipos de análises

6.4.1.5.1. -Análise Morfológica -Análise Léxica -Análise Sintática -Análise Semântica -Análise Pragmática -Tratamento de Ambiguidade

6.4.1.6. Watson NLU

6.4.2. Geração de linguagem natural

6.4.2.1. O objetivo é gerar linguagem natural compreensível para humanos

6.4.2.2. NLG - Natural Language Generation

6.4.2.3. Muitos sistemas de NLG usam uma representação de base de conhecimento.

6.4.2.3.1. Rede semântica

6.4.2.4. Seq2Seq

6.4.2.4.1. A aprendizagem sequência a sequência (Seq2Seq) refere-se a modelos para converter sequências de um domínio (por exemplo, frases em inglês) para sequências em outro domínio (por exemplo, as mesmas frases traduzidas para francês).

6.4.2.4.2. exigem o mapeamento de uma sequência de comprimento arbitrário para outra sequência de comprimento arbitrário.

6.4.2.4.3. Aplicações

6.4.3. Sistemas de Resposta (Chatbots)

7. Gramática

7.1. Mecanismo formal usado para definir conjuntos de sequências de símbolos, utilizando regras de produção que especificam uma linguagem

7.2. Regras gramaticais

7.2.1. Baseia-se no princípio de estrutura sintagmática

7.2.1.1. Correspondem a elementos semânticos a partir dos quais o significado de uma expressão pode ser construído.

7.2.2. Geram sentenças

7.2.2.1. Sentenças são compostas por sub-sentenças denominadas sintagmas

7.3. Formalmente, uma gramática G(S,T,N,R) é definida por quatro componentes:

7.3.1. S: símbolo inicial da gramática (S ∈N)

7.3.2. T: conjunto de símbolos terminais, também denominado léxico (ou conjunto de palavras da linguagem)

7.3.3. N: conjunto de símbolos não-terminais

7.3.4. R: conjunto de regras de produção

7.4. Podem ser classificadas por sua capacidade gerativa

7.4.1. 1

7.4.2. Tipo-0: Gramáticas Irrestritas (ou Recursivamente Enumeráveis)

7.4.3. Tipo-1: Gramáticas Sensíveis ao Contexto

7.4.4. Tipo-2: Gramáticas Livres de Contexto

7.4.5. Tipo-3: Gramáticas Regulares

7.5. CFG –Context-Free Grammar

7.5.1. Conjunto de regras de reescrita recursivas (ou produções) usadas para gerar padrões de strings.

7.5.2. Uma gramática livre de contexto pode descrever todos os idiomas regulares, mas não pode descrever todos os idiomas possíveis.

7.5.3. CFG Probabilística

7.5.3.1. Determina as probabilidade de um simbolo ser usado na produção da regra

8. Deep Learning aplicado a PLN

8.1. Estado da Arte em PLN

8.1.1. Deep Learning tenta automaticamente aprender as melhores features.

8.1.2. Reduz esforço de preparação das features

8.1.3. Redes preparam melhor as features

8.2. CNN

8.2.1. 1

8.2.2. Muito usada para classificação de CNN

8.3. RNN

8.3.1. LSTM

8.3.1.1. Extensão da RNN's

8.3.1.2. Estrategias para melhorar

8.3.1.2.1. Greedy Search

8.3.1.2.2. Beam Search

8.3.2. BPTT

9. BERT

9.1. Bidirectional Encoder Representations from Transformers

9.2. Objetivo é gerar um modelo de linguagem

9.3. Caracteristicas

9.3.1. Aplicável a tarefas

9.3.1.1. Respostas a perguntas

9.3.1.2. Inferência de linguagem natural

9.3.1.3. etc

9.3.2. Descendente direto do GPT (Generalized Language Models),

9.3.3. Pré-treinada usando apenas um corpus de texto simples

9.3.3.1. Toda a Wikipedia (cerca de 2.500 milhões de palavras) e um corpus de livros (800 milhões de palavras).

9.4. Inovação

9.4.1. Aplicação do treinamento bidirecional do Transformer

9.4.1.1. Transformer

9.4.1.1.1. Modelo de linguagem

9.4.1.1.2. Aprende relações contextuais entre palavras (ou sub-palavras) em um texto.

9.4.1.1.3. Componentes padrão

9.4.1.1.4. Referência

9.4.1.2. Ao contrário dos modelos direcionais, que leem a entrada de texto sequencialmente (da esquerda para a direita ou da direita para a esquerda), o codificador Transformer lê toda a sequência de palavras de uma só vez

9.4.1.2.1. Modelo de linguagem treinado bidirecionalmente pode ter um senso mais profundo do contexto e fluxo da linguagem do que os modelos de linguagem de direção única.

9.4.2. Primeira representação de linguagem profundamente bidirecional e sem supervisão

9.4.2.1. Transfer Learning

9.4.2.1.1. Deep Learning

9.5. Funcionamento

9.5.1. 1

9.5.2. A entrada é uma sequência de tokens, que são incorporados primeiro aos vetores e depois processados na rede neural.

9.5.3. A saída é uma sequência de vetores, na qual cada vetor corresponde a um token de entrada com o mesmo índice.

9.6. Demonstração