terça-feira, 13 de março de 2018

Text Mining - preparação dos dados

Análise de Opinião

Antes que o conhecimento seja extraído, é necessário que a qualidade do texto seja melhorada, uma vez que, os textos podem conter caracteres ou termos que não são importantes para análise. Essa etapa se chama de Pré-processamento. Para realizá-la precisamos fazer uso das técnicas de Processamento de Linguagem Natural (PLN) que segundo Liddy (2001, p.1, tradução livre) “é um conjunto de técnicas computacionais para analisar e representar ocorrências naturais de texto em um ou mais níveis de análise linguística, com o objetivo de se alcançar um processamento de linguagem similar ao humano para uma série de tarefas ou aplicações”.



Linguagem de Programação?
Para o esse exemplo utilizei a linguagem Python por ser gratuita, multiplataforma e de fácil aprendizado e bastante usada na área de Inteligência Artificial e também a biblioteca NLTK oferece recursos fáceis de usar para processamento de textos em tarefas de classificação, "tokenização", "stopwords" "stemming".

Tokenização: É a divisão do texto em partes menores. Cada parte é chamada de token e os delimitadores tanto dos tokens, como os grupos de caracteres seguem algum critério como espaço (“ “), virgulas, ponto etc.

#coding=utf-8
import nltk

texto = 'Eu tenho o meu notebook faz um ano. estou gostando muito dele até agora nenhum problema'
frases = nltk.tokenize.sent_tokenize(texto, language='portuguese')
print(frases)

>> ['Eu tenho o meu notebook faz um ano.', 'estou gostando muito dele até agora nenhum problema']

No primeiro código a separação é feita com encontrar o um ponto. O mesmo separou em duas frases.

print(texto.split(" "))
>> ['Eu', 'tenho', 'o', 'meu', 'notebook', 'faz', 'um', 'ano.', 'estou', 'gostando', 'muito', 'dele', 'até', 'agora', 'nenhum', 'problema']

Já o segundo código é mais interessante, pois pode tokenizar de acordo com os critérios citados anteriormente. A separação de frases pode nos ajudar a identificar quais palavras realmente importam nos conjuntos de textos.

Stopwords: São palavras que mais aparecem no texto sendo consideradas irrelevantes no processo de descoberta de conhecimento servindo apenas como função sintática na compreensão do assunto. Artigos, preposições, conjunções, pronomes e alguns verbos não necessitam ser indexados por possuírem frequência elevada.
A biblioteca NLTN já traz com sigo um conjunto desta palavras chamada de stoplist. Para que seja identificado as stopwords é necessário fazer a separação das palavras e depois remove-las.

stopwords = nltk.corpus.stopwords.words('portuguese')

for w in texto:
    filtrado = [e for e in texto.split() if e not in stopwords]
print(filtrado)

>> ['Eu', 'notebook', 'faz', 'ano.', 'gostando', 'ate', 'agora', 'nenhum', 'problema']

No código acima foi feita a remoção das stopword com o intuito de reduzir o número de palavras deixando apenas o conteúdo relevante para ser processado na etapa de mineração.

Stemming: É a técnica que tem como objetivo reduzir palavras que se encontram em formas derivadas para sua base (radical). Um bom exemplo disso é a alteração das formas "comeremos" e "comeram" para sua base comer. 

Mas se tratando do algoritmo de stemming que usa um processo heurístico que simplesmente corta as extremidades das palavras na tentativa de alcançar o radical, o algoritmo em geral não se preocupa com semântica das palavras.

stopwords = nltk.corpus.stopwords.words('portuguese')

stemmer = nltk.stem.RSLPStemmer()
for w in texto:
    filtrado = [str(stemmer.stem(e)) for e in texto.split() if e not in stopwords]
print(filtrado)

>> ['eu', 'notebook', 'faz', 'ano.', 'gost', 'ate', 'agor', 'nenhum', 'problem']

Esse é o produto final após aplicação do algoritmo stemming, onde o mesmo faz um recorte nas palavras na tentativa de alcançar na maioria das vezes a forma base. 

O texto já está pronto para a próxima etapa no processo de mineração de texto.



Gostou deste e de outros artigos, então Assine o [Descoberta de Conhecimento] por Email.

sexta-feira, 16 de fevereiro de 2018

Text mining - coleta de dados




A internet proporciona um volume de informações em formato de texto, por exemplo, comentários em redes sociais e fórum de discussão, e-mails e dentre outros. Através da Mineração de Textos (Text Mining) é possível extrair sentimentos em textos, mas precisamente classificar de acordo com o sentimento (Ex. positivo ou negativo). Com isso, influenciar as organizações que querem encontrar as opiniões dos consumidores e as pessoas também querem saber as opiniões dos usuários existente de um produto antes de comprá-los.

Etapa do Processo
A primeira etapa do processo de mineração é coleta de dados. É possível fazer a coleta automaticamente ou de forma manual. Seja qual for a maneira, após a coleta dos dados no formato de texto é necessário realizar ajustes para melhorar o conteúdo e remover algumas imperfeições que possam vim existir no texto como:

  1. Pontuações; 
  2. Acentuações; 
  3. Caracteres especiais;
  4. Letras maiúsculas.

Linguagem de programação Python?
Por ser gratuita, multiplataforma e de fácil aprendizado é uma das linguagens usadas na área de Inteligência Artificial. Contêm uma infinidade de pacotes desenvolvidos para facilitar as análises de textos.

Texto de exemplo:
texto = '#Eu tenho o meu Notebook faz um ano!. estou gostando muito dele até agora não apresentou              problema'

Letras Maiúsculas
Primeiro vamos converter todo o nosso texto para letras minúsculas. Aproveitando o código do texto anterior que gera uma variável chamada texto_longo:

texto = texto.lower()
print (texto)

Pontuações e Caracteres especiais
Para remover podemos utilizar o comando replace(). Assim remover todas as pontuações e caracteres especiais.

pontos = ['.', '!', '?', ';', '@', '#','$','%','&','*','(',')']

for p in pontos:
 texto = texto.replace(p, '')

print (texto)

Letras Maiúsculas
Para remoção das acentuações temos que substituir cada letra acentuada pela sua correspondente não acentuada utilizando também o comando replace().

acentos = ['á','é','í','ó','ú','à','è','ì','ò','ù',
     'ã','ẽ','ĩ','õ','ũ','â','ê','î','ô','û']
s_acentos = ['a','e','i','o','u','a','e','i','o','u',
    'a','e','i','o','u','a','e','i','o','u']

for i in range(0, len(acentos)):
 texto = texto.replace(acentos[i], s_acentos[i])

print (texto)

No próximo post iremos continua com a preparação dos dados conhecer as técnicas de pré-processamento.

Gostou deste e de outros artigos, então Assine o [Descoberta de Conhecimento] por Email.

quarta-feira, 7 de fevereiro de 2018

Text Mining - parte 1

Text Analytics

O aumento do acesso das pessoas à internet representa um meio natural de armazenar informações em formato textual. Isso contribui para o crescimento da informação produzida e disponível nas mais variadas formas de documento de textos como, livros, revistas, artigos científicos, comentários em rede sociais, e-mails e outros tipos[1]. Deve-se também ao fato de que formato textual representa um meio intuitivo de internalização, quer dizer, registrar em textos livres, pensamentos, ideias, sentimentos e opiniões [2]. Isso foi de grande valia para que as pessoas pudessem dar suas opiniões sobre um produto ou serviços.

A Mineração de Texto (Text Mining) ou mais precisamente Análise de Textos (Text Analytics), visa descobrir informações uteis que ainda não são conhecidas e que a extração é feita de textos livres da Internet através da identificação e exploração de padrões não triviais. Essas fontes de dados dizem respeito às informações não estruturadas e/ou semiestruturadas que o cientista de dados tem que lidar [3].


A Mineração de Textos (MT) vem sendo uma variante da área de Mineração de Dados (Data Mining) é uma solução mais atraente para lidar com fontes que apresentam uma organização bastante heterogênea. Correlacionando com os algoritmos e métodos do KDD, e áreas de Aprendizado de Máquina, Estatística, Processamento de Linguagem Natural (NLP) e Classificação de Documentos (CP). E também faz uso de técnicas de recuperação de informação e extração de informação.

Por exemplo, pense em comentários de rede sociais e fóruns que estão comentando sobre um determinado assunto:

“Lançamento de um produto no mercado”
  1. Qual a reputação dessa marca ou marcas?
  2. Quais os aspectos positivos ou negativos acerca do produto?

Nesses ambientes, é possível verificar de que forma uma determinada marca ou produto estar sendo avaliado e, essa informação pode ser um bem muito valioso tanto para as pessoas quanto dentro de uma organização. Dispondo da informação correta no momento oportuno é caracterizado como um imprescindível diferencial. Mas há um problema, o grande volume de informações faz com que organizações e pessoas tenham dificuldades para gerenciá-las, principalmente, se não tiverem uma estrutura apropriada.
E assim, para sanas essas dificuldades e responder as perguntas acima, o Text Analytics traz um conjunto de técnicas e metodologias automatizadas para extrair informações uteis do texto [3]. Ou seja, você pode aplicar essa técnica para analisar sentimento dos comentários e verificar o feedback dos usuários.

Text Analytics

Isso porque, a análise de textos envolve várias áreas de conhecimento como extração de informação, análise léxica, estudo das distribuições de frequência de palavras, reconhecimento de padrões, tagging, mineração de dados, redes complexas, regre as de associação, visualização de dados e análise preditiva. Em resumo, estamos falando essencialmente de transformar textos em dados para análise, por meio da aplicação de técnicas de processamento de linguagem natural e métodos analíticos.


Essa foi a introdução de uma aplicação prática, onde o cientista de dados poderá aplicar os conceitos da Inteligência Artificial. No próximo post apresentarei a manipulação de textos usando a linguagem Python.


Gostou deste e de outros artigos, então Assine o [Descoberta de Conhecimento] por Email.


Fonte:
[1] Data Mining – [http://ieeexplore.ieee.org/document/8057510/]
[2] ARANHA, C.N. Uma Abordagem de Pré-Processamento Automático para Mineração de Textos em Português: Sob o Enfoque da Inteligência Computacional.
[3] Sentiment analysis - [http://ieeexplore.ieee.org/document/7877424/].

quinta-feira, 1 de fevereiro de 2018

Introdução à Mineração de Dados

mineração de dados

KDD (Knowledge Discovery in Databases) é um processo de descoberta de conhecimento em bases de dados que tem como objetivo principal extrair conhecimento a partir de grandes bases de dados. Esse processo é utilizado na abordagem de Aprendizagem de Máquina, ou seja, cria um modelo (sistema) que aprende com os dados históricos e assim consegue identificar um registro novo como sendo de uma classe preditiva. Para isto ele envolve diversas áreas do conhecimento, tais como: estatística, matemática, bancos de dados, inteligência artificial, visualização de dados e reconhecimento de padrões. São utilizadas técnicas, em seus diversos algoritmos, oriundas dessas áreas.

Esse processo envolve as etapas de coleta (seleção), pré-processamento e/ou transformação, mineração e por último a interpretação/avaliação.

Descoberta de conhecimento em base de dados


Coleta dos dados
A coleta de dados tem como função formar a base dados onde será minerado o conhecimento valioso. A tarefa de coleta dos dados é crítica porque os dados podem não estar disponíveis em formato apropriado para serem utilizados no processo de KDD. Ou, mesmo se disponíveis, os dados podem precisar ser rotulados com o auxílio de um especialista do domínio. Esse auxílio é chamado de supervisionado (acesse o post, Aprendizado de Máquina para entender sobre essa abordagem).

Pré-processamento
O Pré-processamento e/ou transformação são etapas que se aglutinam e que o estado da arte denomina apenas de pré-processamento.
É realizado sobre os dados coletados com o intuito de melhorar a qualidade dos mesmos, afim de prepará-los em uma forma estruturada para serem submetidos à fase de mineração de dados. É a face mais complexa, pois suas atividades são, por exemplo, a integração de dados heterogêneos, eliminação de incompletude dos dados e aplicação de técnicas Processamento de Linguagem Natural (NPL).
A limpeza dos dados envolve uma verificação da consistência das informações, e o preenchimento ou eliminação de valores nulos e redundantes. Nessa fase são identificados e removidos os dados duplicados e/ou corrompidos os chamados “ruídos”. 

Mineração
A mineração de dados é a etapa que é decidida quais os algoritmos serão aplicados. Nessa etapa, pode-se utilizar diferentes áreas do conhecimento, como Aprendizado de Máquina, Estatística, Rede Neurais e dentre outros. Se o objetivo dessa fase é criar um modelo preditivo, então, decidir qual algoritmo é ótimo para o problema que está sendo analisado não é uma tarefa trivial. Esse fato ocorre pois a Aprendizagem de Máquina utiliza diversos tipos de algoritmos que são, Associação, Clusterização, Árvore de decisão, Regressão, Rede neural, Classificação e dentre outros.

Avaliação
Avaliação e interpretação de resultados são as últimas etapas no processo de descoberta do conhecimento. É fase onde se avalia a performance do modelo, onde se extrai o conhecimento.


Referências:

 10 passos para o Big Data


Gostou deste e de outros artigos, então Assine o [Descoberta de Conhecimento] por Email.

quarta-feira, 31 de janeiro de 2018

Profissões campeãs de emprego, diz pesquisa


O perfil dos profissionais que estão em destaque no mercado de trabalho exige requisitos que sofreram grandes alterações nos últimos anos. Em um mundo em constante evolução, noções em Análise de Dados, principalmente análise preditiva e Data Mining; são mais valorizadas nessa nova área de atuação, que é cientista / analista de dados.

TI
Quanto mais se cresce, mais informações são geradas e uma equipe de Data & Analytics, se faz cada vez mais necessária para transformar todos esse volume de dados em conhecimento e vantagem competitiva para o negócio.

As possibilidades de usar os dados com inteligência são infinitas e temos condições de criar campanhas personalizadas de nível mundial como Netflix, Spotify e Airbnb. Assim como estas, muitas empresas querem atingir esse propósito. Logo abaixo, exponho oportunidades reais de vagas de emprego na área de Data Mining (Mineração de Dados).

 Curso Python


Como você pode observar o mercado tem demanda para essas profissões e as vagas são novas, posições que não existiam.
Outra boa notícia é que o setor de tecnologia é a exceção à estabilidade de salários apontada pela Pesquisa Salarial 2018 feita pela consultoria Robert Walters no Brasil. O perfil mais buscado é técnico, mão-na-massa, mas com capacidade de gestão, segundo a equipe da consultoria. A pesquisa ainda indica que cientistas de dados, profissionais de segurança da informação, de inteligência de negócios, e arquitetos de soluções são algumas das profissões promissoras na área de tecnologia para este ano.

Gostou deste e de outros artigos, então Assine o [Descoberta de Conhecimento] por Email.

segunda-feira, 29 de janeiro de 2018

Mineração de Dados - Classificação


No processo de descoberta de conhecimento em base de dados (KDD) uma das mais uteis tarefas chama-se classificação, como foi visto no post anterior – clique aqui para acessá-lo. Seu objetivo é fazer com que um programa de computador atribua automaticamente uma classe para um objeto cuja classe seja desconhecida.

Desvendado a Técnica
Com o intuito de classificar registros para poder prever, ou seja, tem a tarefa de associar os registros minerados a classes pré-estabelecidas, de acordo com as suas semelhanças, buscando associar cada registro da base a um único rótulo categórico chamado de classe. Por exemplo, com base nas características pessoais de um indivíduo é possível aprender se irá ou não comprar um livro. A classificação é uma das técnicas de aprendizado de máquina mais utilizadas em trabalhos científicos (estado da arte).

Para ficar mais claro, apresento alguns exemplos. Considere um projeto onde a tarefa é verificar o sexo masculino ou feminino. O sistema recebe como entrada a fotografia do rosto de uma pessoa realiza o processamento e no final seja capaz de determinar automaticamente o sexo do indivíduo. Veja que o objetivo do sistema é associar uma classe (“masculino” ou “feminino”) para um objeto (a fotografia de um rosto), desta forma, trata-se de um sistema que realiza a tarefa de classificação.

Existem vários outros exemplos de aplicações práticas em áreas distintas como segurança de informação, finanças, comercio, marketing, bioinformática e outras como: 
  • Detecção de fraudes: identificar se uma transação financeira é “legal” ou “suspeita”.
  • Programas de filtragem de spam: detectar se e­mail é “normal” ou “spam”.
  • Aprovação de crédito: classificar um cliente como de “alto”, “médio” ou “baixo” risco para a concessão de crédito.
  • Atribuição de tópicos (Topic Tagging): textos livres (ex: texto de uma notícia), podem ser automaticamente classificados em um número fixo de categorias (ex: “esporte”, “política”, “cultura”).

Na área de bioinformática, os algoritmos de classificação possuem diversas aplicações como, por exemplo, a identificação da classe de proteínas, o que possibilita descobrir quais são as funções das mesmas.

Um programa ou algoritmo criado com o intuito de executar a tarefa de classificação é denominado classificador. Sua construção deve ser precisa e eficiente devido ao seu grande de minerar grandes base de dados. Por este motivo, foram desenvolvidas diversas técnicas (algoritmos) para a construção de classificadores, tais como, árvores de decisão, redes neurais, SVMs (Support Vector Machines), k­NN (k­Nearest Neighbors) e Naïve Bayes.

Referências:

 10 passos para o Big Data


Gostou deste e de outros artigos, então Assine o [Descoberta de Conhecimento] por Email.

quinta-feira, 25 de janeiro de 2018

Aprendizagem de Máquina


Aprendizagem de Máquina

É dividida em três partes basicamente: supervisionada, não supervisionada e aprendizagem por reforço. As maiores pesquisas da área de aprendizagem de máquina é justamente na supervisionada. Temos as tarefas de classificação e regressão, caso não tenha visto o post sobre Inteligência Artificial e o Mercado, clique aqui para acessá-lo - vá lá para ficar mais informado!

Figura 1: classificação aprendizagem de máquina.


Por outro lado, na aprendizagem não supervisionada de acordo com a figura (classificação aprendizagem de máquina) nós temos as regras de associação, agrupamento, detecção de desvios, padrões sequenciais e sumarização.

Funcionamento da Abordagem Supervisionada?
A abordagem de aprendizagem de máquina supervisionada está estruturada em etapas que no final do processo é criado o modelo de aprendizagem. a figura 2 mostra como é o funcionamento da abordagem de aprendizagem supervisionada.

Figura 2: Fases da abordagem supervisionada.

Vamos supor por exemplo as imagens do Homer e Bart. Temos imagens desses dois personagens e o objetivo é passar uma nova imagem para o sistema e o mesmo terá que classificar automaticamente o personagem da imagem (Homer ou Bart). 

Para isso precisamos passar por uma séries de processos: primeiro é preciso fazer a extração de características de cada personagem, por exemplo, quais são as características únicas do Homer e as características únicas do Bart. Depois da extração de características que nada mais é do que a montagem da base de dados é aplicada a um algoritmo de aprendizado de máquina. Mas antes desta etapa é necessário que os dados passem pelo o supervisor (uma pessoa que vai dizer a que classe pertence cada imagem).

Por exemplo, temos cinco imagens: depois que foram feitos as extrações das características o supervisor classifica a primeira imagem como Homer.

A segunda como Homer

A terceira como Bart




Na base de dados preciso identificar cada imagem de acordo com suas características. E esse é papel do supervisor, rotular cada cada registro de acordo com as classes. Após essas etapas temos o "modelo aprendido" que é o conhecimento aprendido pelo algoritmo.

A segunda fase do processo (figura 2) de aprendizagem supervisionada temos uma imagem que não sabemos que classe pertence, é feita a extração de características e logo em seguida é enviada para o modelo aprendido. O mesmo fará vários cálculos e irá dizer se a imagem é do personagem Homer ou do Bart.
E dessa maneira que funcionar esse processo de aprendizagem supervisionada. Quer se aprofundar mais no assunto? Então clique na imagem logo baixo

Gostou deste e de outros artigos, então Assine o [Descoberta de Conhecimento] por Email.

Text Mining - preparação dos dados

Antes que o conhecimento seja extraído, é necessário que a qualidade do texto seja melhorada, uma vez que, os textos podem conter carac...