SSIIM 2012/2013
Jorge Teixeira, Gustavo Laboreiro, Luís Sarmento, Eugénio Oliveira
PROCESSAMENTO DE TEXTO
1. Text Mining 2. Media na web: • Dados • Extracção • Processamento • Visualização
3. Casos de estudo / projectos:
• Verbetes
• Voxx
• MVDi
4. Projectos SSIM
1. Twitter
2. Projectos de Visualização 3. Análise de Redes Sociais
4. Análise do conteúdo das mensages 5. Como trabalhar com Social Media 6. Projectos SSIM
PARTE 1
Extracção de Informação Aprendizagem Automática Visualização de Informação
PROCESSAMENTO DE TEXTO
•
Text mining é uma sub-área do “Data Mining”•
Pode ser definido como uma ciência que trata o processamento deinformação (texto)
•
Processamento que se espera de elevada qualidade-
relevância-
novidade-
interesse•
Envolve técnicas como:-
Extracção de entidades-
Extracção de padrões-
Categorização de texto-
Clustering de texto-
Análise de sentimento-
Sumarização de textosTEXT MINING
ARQUITECTURA
Dados
Extracção Informação
Processamento Informação
•
Agregadores de notícias•
Extracção de tweetsEXTRACÇÃO DE INFORMAÇÃO
WebServer' OSGI' Container' REST'API' WebSocket' UI' subs' subs' topics'by'scope' Ka>a' Hadoop' HDFS' Graph' etc'“ The News.me Daily Email finds the best stories from your Twitter stream”
PROCESSAMENTO DE INFORMAÇÃO
“paper.li enables people to publish
newspapers based on topics they like and treat their readers to fresh news, daily”
•
Recomendação de notícias•
Alinhamento de notícias em várias línguas•
Identificação de citações em notícias•
Identificação de entidades no twitter•
Identificação de sentimento em comentários do Facebook•
Geo-referenciação/localização de notíciasVISUALIZAÇÃO DE INFORMAÇÃO
•
Timeline de notícias (247.liberi.it)•
Wordcould de tópicos (Jornal de Negócios)•
Redes de tópicos e personalidades em notícias (247.liberi.it)•
Redes de entidades (dirtyenergymoney.com)•
Redes de entidades nas notícias - MVDi (voxx.sapo.pt/mvdi)•
Sentimento dos portugueses nas legislativas 2011 (dados do twitter)•
Popularidade de equipas/jogadores no Euro2012 (dados do twitter)•
Sentimento dos portugueses relativo a um comentário de Pedro Passos Coelho no FacebookVERBETES
•
Serviço para pesquisa biográfica de entidades (pessoas, organizações)•
Este serviço responde a perguntas como:-
Quem é Alberto João Jardim?-
Qual a profissão/cargo de Paulo Portas em Julho 2011? e hoje?-
Quem é o ministro da defesa de Israel?•
Paulo Bento: selecionador nacional•
Rui Bento: treinador Beira Mar•
Vítor Bento: economista•
Com base no contexto (notícia, blog, tweet, etc)•
Nomes: Paulo Bento•
Cargos/profissões: selecionador nacional•
Acrónimos e tags: futebol ou economia•
Rede de co-ocorrências: José Mourinho•
Com quem co-ocorreu Paulo Bento de Outubro de 2010 até hoje?•
Tendências de co-ocorrências entrePaulo Bento e Jorge Jesus entre Setembro 2011 até hoje?
•
Sistema baseado em padrões existentes nas notícias:-
O primeiro ministro, Pedro Passos Coelho, ....-
… o ex-primeiro ministro José Sócrates, …-
O candidato presidencial Fernando Nobre...-
O eurodeputado Capoulas Santos ...-
Nuno Santos é o novo director de informação da RTP.•
Identifica nomes de personalidades (candidatos) das notícias•
Extraí tuplos das notícias com base em padrões-
[ Paulo Bento; Selecionador Nacional; 2010-10-01; 2011-10-04 ]•
Identifica nomes alternativos (Pedro Passos Coelho, Passos Coelho, Passos)•
Classifica os tuplos como pessoa, organizacão ou outro•
Guarda os tuplos numa BD MySQL e fornece os dados via WS•
Catálogo de serviços do sapo:•
services.sapo.pt >> InformationRetrievel•
Métodos:• WhoIs?name=Paulo Portas&date=2010-07-01
• WhoIs?job=ministro da defesa de Israel
• GetPersonalities[?min=5]
• GetErgos[?min=5]
• GetCoOccurrences?name=PauloPortas&begin_date=...&end_date=...
• GetCoOccurrencesTrends?name1=...&name2=...&begin_date=...&end_date=...
• Combinação de parâmetros: name, name_like, job, job_like, date, margin, format
• Flags: inactive, dead
•
35 000 nomes distintos•
72 000 tuplos <nome,cargo>•
3 000 nomes com mais de 4 ocorrências•
8 000 tuplos <nome,cargo> com mais de 5 ocorrências•
2 5000 nomes alternativos•
Voxx•
MVDi•
Semantic Lists•
Sapo•
LIACC/FEUP•
outros projectos / dissertaçõesVERBATIM / VOXX
EXTRACÇÃO AUTOMÁTICA DE CITAÇÕES EM NOTÍCIAS
gmalta gmalta
MOTIVAÇÃO
•
Actualmente existe um fluxo gigantesco de notícias que são publicadasdiariamente em sites web
•
Como organizar toda esta informação e torná-la útil do ponto de vistahumano?
•
Como criar histórico de citações?•
Como seguir tópicos ou personalidades?•
Como identificar tópicos ou personalidades activas/quentes?gmalta gmalta
TECNOLOGIAS BASE
•
Recolha de notícias•
Extracção de citações•
Classificação automática de notícias•
Interface dinâmicogmalta gmalta
RECOLHA DE NOTÍCIAS
•
Stream de dados fornecidos pelo Sapo<?xml version="1.0" encoding="UTF-8"?>
<document timestamp="2010-10-13T21:04:14.701Z" isnew="false"> <channel-title>www.ocastanheirense.com</channel-title>
<url>http://www.ocastanheirense.com/1832/noticias.html</url> <hostname>www.ocastanheirense.com</hostname>
<pubdate>2010-10-10T02:58:21Z</pubdate>
<title>Paulo Portas visitou Castanheira de Pera</title>
<body>O Município de Castanheira de Pera comemorou mais um aniversário do 25 de Abril. O hastear da Bandeira, com a presença de entidades civis, GNR e escolta dos Bombeiros Voluntários, abriu as solenidad$
<lang>pt</lang> <categories/> <images/> <geo> <local> <name>Pedrógão Grande</name> <district id="10">Leiria</district>
<municipality id="1013">Pedrógão Grande</municipality> <parish id="101302">Pedrógão Grande</parish>
</local> </geo>
</document>
gmalta gmalta
RECOLHA DE NOTÍCIAS
•
Consumir o stream de dados•
Armazenar os dados em BD indexadas•
Estruturar a BD para escrita menos frequente e leitura muito frequente•
Estruturar a BD (tabelas) para pesquisas rápidas•
Utilizar crons para repetir o processo horiariamente•
3000 a 3500 notícias / diagmalta gmalta
RECOLHA DE NOTÍCIAS
gmalta gmalta 0" 500" 1000" 1500" 2000" 2500" 3000" 3500" 4000" 4500" 9/1/11" 9/4/11" 9/7/11" 9/10/11" 9/13/11" 9/16/11" 9/19/11" 9/22/11" 9/25/11" 9/28/11"•
O que são citações?EXTRACÇÃO DE CITAÇÕES
gmalta gmalta
EXTRACÇÃO DE CITAÇÕES
•
Como são identificadas?“José Sócrates afirmou que o crescimento ... da recuperação económica.” 1. A citação inicia-se com o nome próprio (neste caso nome de pessoa) 2. Segue-se um verbo de comunicação
3. Termina num ponto final
gmalta gmalta
EXTRACÇÃO DE CITAÇÕES
•
Baseia-se em regras (expressões regulares)1. Cada nova notícia é analisada
2. Se for identificada uma citação na notícia
3. Citação é extraída e armazenada numa BD 4. Processo repetido até finalizar a notícia
5. Executado horariamente até terminarem as novas notícias
•
17 categorias de regras, 118 verbos de comunicaçãogmalta gmalta
•
Como resolver o problema de notícias / citações duplicadas?EXTRACÇÃO DE CITAÇÕES
gmalta gmalta
EXTRACÇÃO DE CITAÇÕES
•
É um problema graveExtracção de Conteúdos: Duplicados
• "40% das citações extraídas têm pelo menos um duplicado.
00% 10% 20% 30% 40% 50% 60% 70% 1 2 3 4 5 6 7 8 Group size gmalta gmalta
EXTRACÇÃO DE CITAÇÕES
•
Estratégias típicas de remoção de duplicados:1. Cada nova notícia é comparada com as notícias já recolhidas e temporalmente próximas (aprox. 15 dias)
2. Sempre que a sobreposição entre duas notícias é grande é criado um grupo de notícias duplicadas
3. Este processo repete-se horariamente e até terminarem novas notícias 4. Só será processada uma notícia de cada grupo de duplicados
gmalta gmalta
CLASSIFICAÇÃO DE NOTÍCIAS
•
Como atribuir automaticamente um tópico / tema para uma notícia?•
Usar as taggs atribuídas pelos jornalistas?•
Usar as secçoes dos jornais onde são publicadas as notícias?•
Usar “pistas” presentes nos títulos das notícias?•
Usar palavras-chave nas notícias?gmalta gmalta
CLASSIFICAÇÃO DE NOTÍCIAS
•
Como funciona a classificação automática de texto?1. É criado um conjunto de exemplos positivos
2. A partir deste conjunto é criado um modelo de classificação 3. O modelo é depois aplicado a notícias (documentos teste)
4. Com base nos modelos previamente treinados, o sistema retorna um possível tópico para a notícia (com um valor de probabilidade)
5. Tópico aceite se o valor de probabilidade obtido acima do threshold
gmalta gmalta
CLASSIFICAÇÃO DE NOTÍCIAS
•
Como criar o conjunto de exemplos positivos?1. Identificar tópicos a partir de padrões típicos no título
•
Problemas / desafios com esta técnica:‣
“Dia 20 de Junho: Marchas populares em Palmela”‣
“Paulo Portas: Banco de Portugal precisa ...”gmalta gmalta
CLASSIFICAÇÃO DE NOTÍCIAS
•
Classificadores usados:1. k-Nearest Neighbour 2. Rocchio
3. Support Vector Machines
•
Notícias novas classificadas horáriamente•
Modelos treinados diariamentegmalta gmalta
CLASSIFICAÇÃO DE NOTÍCIAS
•
Porquê 3 classificadores?‣
Tópicos pouco-equilibradosClassificação: Estatísticas
• " 40% das citações extraídas são classificadas
• Distribuição das citações pelos tópicos:
30 0 100 200 300 400 500 600 Futebol L eg is la tiv as P SD E u ro p eia s BPN EUA Freeport Educação P S C ris e G u in é-B is sa u BPP Prove dor L is bo a Q im on d a M éd io O rie n te M ad eir a Gov erno A u tá rq u ic as /L is bo a EU De sp or to Irão G rip e A H 1N 1 Ju st iç a Sp or tin g C on ju n tu ra Açore s gmalta gmalta
DEMONSTRAÇÃO
gmalta gmalta
MVDI
MUNDO VISTO DAQUI INTERACTIVO
gmalta gmalta
OBJECTIVOS
•
MVDi é um sistema de extracção e visualização de redes a partir de dadosextraídos de notícias
1. Identificação de relações entre personalidades públicas que co-ocorrem em notícias
2. Visualização interactiva
3. Informação actualizada horariamente
•
Aplicações jornalísiticas1. Jornalismo investigacional
DEMONSTRAÇÃO
gmalta
REDE EGO-CÊNTRICA
•
Nós representam ocorrências de personalidades (nomes) nas notícias-
Tooltips com informação adicional para cada personalidade•
Arestas representam co-ocorrências entre personalidades-
Lista de notícias onde duas personalidades co-ocorreram•
Rede ego-cêntrica: rede centrada (focada) numa única personalidade•
Não é uma rede direccionalREDE EGO-CÊNTRICA
CO-OCORRÊNCIAS
Para cada notícia:
1. Identificar as ocorrências:
- “Passos Coelho diz ser cedo para avaliar ajuda de emergência à Madeira”
- “A preservação do euro faz parte do nosso mandato” e, para fazê-lo, “estamos abertos e não temos
tabus”, acrescentou o presidente do BCE.
2. Guardar as ocorrências no MySQL
- <news_id, news_date, name, counter>
3. Identificar as co-ocorrências e guardar no MySQL
- <news_id, news_date, name_1, name_2, counter> - <news_id, news_date, name_2, name_1, counter>
ALGUMAS ESTATÍSTICAS
•
Cerca de 30 000 co-ocorrências por semana•
1000 ~ 1500 ocorrências de nomes diferentes por semana•
Cerca de 150 000 co-ocorrências por mês•
2000 ~ 3000 ocorrências de nomes diferentes por semanaINTERFACE WEB
•
Rede interactiva•
Processamento client-side•
JSONp para recolher os dados dos web-services•
Uso de tecnologias web standard (HTML, CSS, SVG, JavaScript)•
Plataformas javascript open-source (D3.js and jQuery)•
Visualização baseada em SVG para uma melhor interacção do utilizador e permitir designs customizáveisINTERFACE WEB
•
Aspectos de interacção:-
Nós arrastáveis-
Clique no nó/aresta para obter informações adicionais-
Para a rede antes da estabilização-
Zoom in / zoom out•
Aspectos de navegação:-
Navegação através de redes ego-cêntricas diferentes-
Escolha livre de nomes e intervalos temporaisSSIM
TÓPICOS DE INVESTIGAÇÃO
•
Extracção de informação•
Identificação e extracção de citações e descrições biográficas•
Identificação de entidades (nomes de pessoas e organizações)•
Desambiguação de entidades•
Identificação de possíveis tópicos para notícias•
Aprendizagem Automática (Machine Learinig)RECURSOS
• Notícias publicadas em sites de notícias portugueses
• Citações de personalidades públicas
• Comentários de notícias
• Tweets (mensagens de utilizadores portugueses e perfis)
• Listas de personalidades, co-menções, etc (Verbetes)
• Listas de profissões, nacionalidades, palavrões, etc (SemanticLists)
PROJECTOS
• Fusão de descritores de entidades (Verbetes)
• Classificação de entidades (Verbetes)
• Identificação de notícias (quase) duplicadas
• Identificação de eventos a partir de tweets (euro2012, jogos olímpicos, etc.)
• Identificação da polaridade de comentários de notícias
LINKS & CONTACTOS
• Voxx: http://voxx.sapo.pt • MVDi: http://voxx.sapo.pt/mvdi • Verbetes: http://services.sapo.pt -> InformationRetrievel/Verbetes • SemanticLists: http://services.sapo.pt -> InformationRetrievel/SemanticLists • NewYorkTimesLab: http://nytlabs.com • NewsExplorer: http://emm.newsexplorer.eu/NewsExplorer/• Visual Complexity: http://www.visualcomplexity.com