Nlp aprendendo métodos de pré-processamento de texto de séries para definição de artrose de aprendizagem profunda

Recentemente, eu comecei com uma competição de PNL em Kaggle chamada desafio de insinceridade do Quora Question. É um Desafio da PNL na classificação do texto e como o problema se tornou mais claro depois de trabalhar com a concorrência, bem como através dos inestimáveis ​​kernels colocados pelos especialistas kaggle, pensei em compartilhar o conhecimento.

Como temos uma grande quantidade de material para cobrir, estou dividindo esse post em uma série de postagens. O primeiro post, ou seja, este será baseado em técnicas de pré-processamento que funcionam com modelos de aprendizado profundo e também falaremos sobre o aumento da cobertura de incorporações. No segundo post, vou tentar levá-lo através de alguns modelos convencionais básicos como TFIDF e SVM que foram usados ​​na classificação de texto e tentar acessar seu desempenho para criar uma linha de base.

Vamos nos aprofundar em modelos de aprendizagem profunda no terceiro post que incidirá sobre diferentes arquiteturas para resolver artrite solavancos o problema de classificação de texto. Vamos tentar usar vários outros modelos que não pudemos usar nesta competição como abordagens de aprendizado de transferência ULMFit no quarto post da série.

Como uma observação: se você quiser saber mais sobre PNL, eu gostaria de recomendar este curso incrível em Processamento de Linguagem Natural na especialização avançada de aprendizado de máquina. Você pode começar de graça com a avaliação gratuita de 7 dias. Este curso cura artrite reumatóide ayurveda abrange uma ampla gama de tarefas em Processamento de Linguagem Natural do básico ao avançado: análise de sentimento, sumarização, rastreamento de estado de diálogo, para citar alguns.

Pode demorar um pouco para escrever a série toda. Até então você pode dar uma olhada nos meus outros posts: O que os Kagglers estão usando para a Classificação de Texto, que fala sobre vários modelos de aprendizagem profunda em uso na PNL e como mudar de Keras para Pytorch.

Então, primeiro deixe-me começar a explicar um pouco mais sobre o problema de classificação de texto. A classificação de texto é uma tarefa comum no processamento de linguagem natural, que transforma uma sequência de um texto de tamanho indefinido em uma categoria de texto. Como você pode usar isso?

Agora, cada um desses problemas tem algo em comum. Do ponto de vista da Aprendizagem de Máquina, estes são essencialmente o mesmo problema com apenas os rótulos alvo que alteram a artrite gotosa medscape e nada mais. Com isso dito, a adição de conhecimento de negócios pode ajudar a tornar esses modelos mais robustos e é isso que queremos incorporar ao pré-processar os dados para classificação de teste. Enquanto o pipeline de pré-processamento que eu estou focando neste post é centrado principalmente em Deep Learning, mas a maior parte também será aplicável aos modelos convencionais de aprendizado de máquina.

Normalmente, começamos limpando os dados de texto e executando o EDA básico. Aqui tentamos melhorar nossa qualidade de dados limpando os dados. Também tentamos melhorar a qualidade de nossos envios word2vec removendo palavras OOV (fora do vocabulário). Esses dois primeiros passos normalmente não têm muita ordem entre eles e eu geralmente alterno entre essas duas etapas. Em seguida, criamos uma representação para o texto que pode ser inserido em um modelo de aprendizado profundo. Começamos então a criar nossos modelos e treiná-los. Por fim, avaliamos os modelos usando métricas apropriadas e obtemos a aprovação dos respectivos acionistas para implantar nossos modelos. Não se preocupe se esses termos não fizerem muito sentido agora. Tentarei explicá-las no decorrer deste artigo.

Precisamos ter uma maneira de representar palavras em um vocabulário. Uma maneira de fazer isso é usar uma codificação de vetores de palavras, mas essa não é uma boa escolha. Uma das principais razões é que os vetores de palavras simples não podem expressar com precisão a similaridade entre palavras diferentes, como a semelhança de cosseno.

Os vetores de palavras Word2vec são aprendidos de tal maneira que eles nos permitem aprender diferentes analogias. Permite-nos fazer manipulações algébricas em palavras que não eram possíveis antes. Por exemplo: o que é rei – homem + mulher? Ele sai para ser a rainha.

Vetores do Word2Vec também nos ajudam a descobrir a similaridade entre as palavras. Se tentarmos encontrar palavras parecidas com “bom”, encontraremos um tratamento incrível, ótimo para a artrite reumatóide em hindi etc. É essa propriedade da word2vec que a torna inestimável para a classificação do texto. Agora, nossa rede de aprendizagem profunda entende que “bom” e “ótimo” são essencialmente palavras com significado semelhante.

Assim, em termos muito simples, o word2vec cria vetores para palavras. Assim, temos um vetor d dimensional para cada palavra (bigramas comuns também) em um dicionário. Normalmente usamos vetores de palavras pré-treinados que são fornecidos a nós por outros após o treinamento em grandes corpora de textos como Wikipedia, twitter etc. Os vetores de palavras pré-estabelecidas mais comumente usados ​​são Glove e Fasttext com vetores de palavras de 300 dimensões. Vamos usar o Glove neste post. Técnicas Básicas de Pré-processamento para dados de texto:

Na maioria dos casos, observamos que os dados de texto não são totalmente limpos. Dados provenientes de diferentes fontes têm características diferentes e isso torna o pré-processamento de texto uma das etapas mais importantes do pipeline de classificação. Por exemplo, os dados de texto do Twitter são totalmente diferentes dos dados de texto no Quora, ou alguma plataforma de notícias / blogs, e, portanto, precisariam ser tratados de forma diferente. Felizmente, as técnicas sobre as quais falarei neste artigo são genéricas o suficiente para qualquer tipo de dados que você possa encontrar nas selvas da PNL. a) Limpando Caracteres Especiais e Removendo Pontuações:

Nosso pipeline de pré-processamento depende muito da incorporação de word2vec que usaremos em nossa tarefa de classificação. Em princípio, nosso pré-processamento deve corresponder ao pré-processamento usado antes do treinamento da incorporação de palavras. Como a maioria dos envolmentos não fornece valores vetoriais para pontuações e outros caracteres especiais, a primeira coisa que você precisa fazer é se livrar dos caracteres especiais em seus dados de texto. Estes são alguns dos caracteres especiais que estavam lá nos dados do Quora Question e usamos a função replace para nos livrarmos desses caracteres especiais.

mispell_dict = {‘color’: ‘cor’, ‘centro’: ‘centro’, ‘favorito’: ‘favorito’, ‘viajando’: ‘viajando’, ‘aconselhando’: ‘aconselhamento’, ‘teatro’: ‘teatro’ , ‘cancelado’: ‘cancelado’, ‘trabalho’: ‘trabalho’, ‘organização’: ‘organização’, ‘segunda guerra mundial’: ‘guerra mundial 2’, ‘citicise’: ‘criticar’, ‘youtu’: ‘youtube’ , ‘Qoura’: ‘Quora’, ‘sallary’: ‘salário’, ‘Whta’: ‘O que’, ‘narcisista’: ‘narcisista’, ‘como’: ‘como fazer’, ‘o que é’: ‘o que são’ , ‘howcan’: ‘how can’, ‘howmuch’: ‘quanta espondiloartrite’, ‘howmany’: ‘how many’, ‘whydo’: ‘por que’, ‘doI’: ‘eu’, ‘o melhor’ : ‘o melhor’, ‘como’: ‘como’, ‘mastrubation’: ‘masturbation’, ‘mastrubate’: ‘masturbate’, "mastrubating": ‘masturbando’, ‘pênis’: ‘pênis’, ‘Etherium’: ‘Ethereum’, ‘narcissit’: ‘narcisista’, ‘bigdata’: ‘big data’, ‘2k17’: ‘2017’, ‘2k18’: «2018», «qouta»: «quota», «ex-namorado»: «ex-namorado», «aeromoça»: «aeromoça», "quem": ‘o que’, ‘watsapp’: ‘whatsapp’, ‘demonitização’: ‘demonetização’, ‘demonização’: ‘demonetização’, ‘demonetização’: ‘demonetização’}

Contrações são palavras que escrevemos com um apóstrofo. Exemplos de contrações são palavras como “não” ou “não são”. Desde o tratamento natural para a dor e inchaço da artrite reumatóide, queremos padronizar o nosso texto, faz sentido expandir essas contrações. Abaixo fizemos isso usando um mapeamento de contração e funções de regex.

contraction_dict = { "não é": "não é", "não são": "não são", "não pode": "não podes", "’causa": "Porque", "poderia ter": "poderia ter", "não podia": "não conseguia", "não fez": "nao fiz", "não faz": "não", "não faça": "não", "não tinha": "não tinha", "não tem": "não tem", "não tem": "não tem", "ele tinha": "ele iria", "inferno": "ele vai", "ele é": "ele é", "como": "como foi", "como foi": "como você", "como vai": "como vai", "como está": "como é", "Identidade": "Eu gostaria", "Eu teria": "eu teria", "eu vou": "eu vou", "Eu vou ter": "eu terei", "Eu estou": "eu sou", "Eu tenho": "eu tenho", "identidade": "Eu gostaria", "eu teria": "eu teria", "eu vou": "eu vou", "eu vou ter": "eu terei", "Eu estou": "eu sou", "eu tenho": "eu tenho", "não é": "não é", "seria": "seria", "teria artrite nos sintomas do pulso: "teria", "vai": "será", "vai ter": "terá", "Está": "isto é", "vamos": "Deixe-nos", "senhora": "Senhora", "não pode": "não deve", "pode ter": "pode ter", "não pode": "pode não", "talvez não": "Talvez não tenha", "deve artrite em fotos dedos": "deve ter", "não deve": "Não deve", "não devo ter": "não deve ter", "não precisa": "não precisa", "não preciso": "não precisava", "horas": "do relógio", "não deveria": "não deve", "não deveria ter": "não deveria ter", "shan’t": "não deve", "não é": "não deve", "não tenho": "não deve ter", "ela": "ela iria", "ela teria": "ela teria", "Concha": "ela vai", "ela vai ter": "Ela vai ter", "ela é": "ela é", "deveria ter": "deveria", "não deveria": "não deveria", "não deveria ter": "não deveria ter", "então eu": "então tenha", "SOS": "assim como", "esta é": "isto é", "que tinha": "isso iria", "que tinha": "isso teria", "isso é": "isso é", "o vermelho": "haveria", "não teria": "não teria", "há": "Há sim", "aqui está": "aqui está", "eles tinham": "Eles artrite medicação para cães seria", "eles teriam": "eles teriam", "eles vão": "elas vão", "eles terão": "Eles terão", "eles estão": "eles são", "eles já": "eles têm", "ter": "Ter", "não foi": "não foi", "qua": "nós faríamos", "nós teríamos": "Nós teríamos", "bem": "nós vamos", "nós vamos ter": "nós teremos", "estamos": "nós somos", "nós temos": "temos", "não estava": "não estivessem", "o que vai": "o que irá", "o que vai ter": "o que terá", coluna de artrose;": "o que são", "o que é": "o que é", "o que": "o que tem", "quando é": "Quando é", "quando eu": "quando tem", "onde d": "onde fez", "Onde está a": "Onde é", "onde eu": "onde tem", "quem vai": "quem vai", "quem vai ter": "quem terá", "quem é": "quem é", "quem tem": "quem têm", "por que": "porque é", "porque eu": "porque tem", "vai ter": "terá", "não vai": "não vou", "não terá": "não terá", "teria": "teria", "não faria": "não faria", "não teria": "Não teria", "vocês todos": "vocês todos", "vocês todos": "todos vocês", "vocês todos": "todos vocês teriam", "vocês são": "vocês todos são", "todos vocês": "todos vocês têm", “remédios para artrite nos dedos; você": "você poderia", "você teria": "você teria", "você vai": "você irá", "você terá": "voce terá", "você é": "tu es", "você tem": "Você tem"}

Além da artrite bilateral do joelho, a partir das técnicas acima, existem outras técnicas de pré-processamento de texto como o Stemming, Lemmatization e Stopword Removal. Como essas técnicas não são usadas junto com os modelos Deep Learning NLP, não falaremos sobre elas. Representação: Criação de Sequência

Uma das coisas que fizeram do Deep Learning a escolha de goto para a PNL é o fato de que não precisamos realmente projetar recursos dos dados de texto. Os algoritmos de aprendizagem profunda tomam como entrada uma seqüência de texto para aprender a estrutura do texto como um humano. Como a máquina não consegue entender as palavras, eles esperam seus dados em formato numérico. Então, gostaríamos de representar dados de texto como uma série de números. Para entender como isso é feito, precisamos entender um pouco sobre a função Keras Tokenizer. Pode-se usar qualquer outro tokenizer também, mas o tokenizer keras parece ser uma boa escolha para mim. a) Tokenizer: