sumarizac¸˜ao de servic¸os noticiosos televisivos - INESC-ID

Transcrição

sumarizac¸˜ao de servic¸os noticiosos televisivos - INESC-ID
Instituto Superior Técnico
Departamento de Engenharia Electrotécnica e de Computadores
SUMARIZAÇÃO DE SERVIÇOS NOTICIOSOS
TELEVISIVOS
Realizado por:
Vitor João Cardoso Pereira no 43797
João Miguel Duarte Gaspar no 42358
Orientado por:
Prof. João Paulo Neto
Eng. David Matos
Realizado no:
L2 F - Laboratório de Sistemas de Lı́ngua Falada, INESC-ID Lisboa - Julho 2002
Índice
Índice
ii
Agradecimentos
iv
Resumo
vi
1 Introdução
1.1 O Projecto ALERT . . . . . . . . . . .
1.2 Como funciona . . . . . . . . . . . . .
1.3 Estrutura e Fluxo de Dados do Sistema
1.4 Estrutura do Relatório . . . . . . . . .
2 Sumarização
2.1 Introdução . . . . . . . . . . . . . .
2.2 Sumarização por Extracção . . . .
2.3 Aplicabilidade dos Métodos . . . .
2.4 Sumarizer . . . . . . . . . . . . . .
2.4.1 Planeamento . . . . . . . .
2.4.2 Arquitectura . . . . . . . . .
2.4.3 Implementação . . . . . . .
2.4.4 Utilização . . . . . . . . . .
2.4.5 Limitações e Recomendações
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . .
. . . . .
ALERT
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Análise e Planeamento do Servidor SERVICE
3.1 Como Funciona . . . . . . . . . . . . . . . . . .
3.2 Estrutura SSNT-Service . . . . . . . . . . . . .
3.3 Escolha das Tecnologias . . . . . . . . . . . . .
3.4 Base de Dados . . . . . . . . . . . . . . . . . . .
3.5 Website . . . . . . . . . . . . . . . . . . . . . .
3.6 Matching . . . . . . . . . . . . . . . . . . . . .
3.7 Envio de e-mail . . . . . . . . . . . . . . . . . .
ii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
1
2
4
.
.
.
.
.
.
.
.
.
5
5
7
7
9
9
10
11
12
13
.
.
.
.
.
.
.
14
14
14
17
18
18
19
20
3.8 Streaming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.9 Controlo do Sistema ALERT . . . . . . . . . . . . . . . . . . . . . . . . .
4 Implementação do Servidor SERVICE
4.1 Processamento do Thesaurus da RTP .
4.2 Da definição da DTD à Base de Dados
4.3 Website . . . . . . . . . . . . . . . . .
4.4 Serviço de Matching e Envio de e-mail
4.5 Streaming . . . . . . . . . . . . . . . .
4.6 Administração . . . . . . . . . . . . . .
4.6.1 Website . . . . . . . . . . . . .
4.6.2 Parser s . . . . . . . . . . . . .
4.7 Controlo do Sistema ALERT . . . . . .
21
22
.
.
.
.
.
.
.
.
.
23
23
26
35
39
46
47
47
48
49
5 Considerações Finais
5.1 Análise de Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Compromissos do Projecto . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Nota do Autores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
50
50
51
Apêndices
52
A Estudo de Tecnologias de Desenvolvimento
53
B XML
B.1 DTD Alert-pt . . . . . . . .
B.2 XML Exemplo . . . . . . . .
B.3 Thesaurus Temático . . . .
B.4 Thesaurus Geográfico . . . .
B.5 Thesaurus Onomástico . . .
B.6 Programas . . . . . . . . . .
B.7 Oradores . . . . . . . . . . .
B.8 Léxico Lematizado - excerto
66
67
70
86
88
90
92
94
98
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
C Imagens do website
100
D Imagens do e-mail
109
E Guia de Instalação
111
F Ficheiros Template para o e-mail
118
Referências
121
iii
Agradecimentos
Quero apresentar a minha gratidão a todos aqueles que, directa ou indirectamente, contribuı́ram para a realização deste projecto. A toda a equipa do projecto ALERT, em
especial ao Prof. João Paulo Neto pelo seu exemplar empenhamento que foi além da
sua função como orientador. E ainda ao João Gaspar pela sua admirável dedicação e
excelente prestação durante todo o decorrer do projecto.
INESC-ID L2 F, Lisboa, 17 de Julho de 2002
iv
Vitor Pereira
v
Queria agradecer ao coordenador deste projecto, o Prof. Dr. João Paulo Neto, a oportunidade que me concedeu de realizar o trabalho final de curso nesta área (actual e de
constante dinâmica, expandindo claramente os horizontes técnicos consolidados no curso
LEEC/SEC), a sua disponibilidade e o seu acompanhamento permanente em todas as
fases deste trabalho.
Uma palavra de apreço vai também para o Mestre Hugo Meinedo e o Eng. Rui Amaral,
quer pelo trabalho de análise efectuado em conjunto, quer pelos momentos de bom humor
que proporcionaram em tudo o que foi debatido, bem como aos colegas do L2 F e pessoas
envolvidas no projecto ALERT com quem tive contacto, quer no INESC, quer na RTP.
Outro grande obrigado vai para o Eng. António Vaz e para o Eng. Alexandre Mendes
da 4VDO, pelas discussões acesas que proporcionaram, pelo trabalho que desenvolveram
neste projecto e pela troca de ideias e de experiências que fomentaram.
Dado ser esta, neste projecto, a ocasião última de agradecimento na licenciatura que
frequento, aproveito para agradecer aos meus pais, irmã e familiares, o seu apoio e amor
incondicionais ao longo destes anos, bem como a lealdade dos amigos mais próximos e
a camaradagem dos colegas do IST, tal como foi um bom exemplo, o Vı́tor Pereira, de
inexcedı́vel empenho neste trabalho.
Finalmente gostaria de expressar a minha gratidão à Enga Irina Leonte e ao Pe. missionário Adelino Ascenso pelas suas lições de vida, bem como ao Pe. Paulo Madureira e
Pe. Abel Santos, aos meus tios Pe. Manuel Gaspar e Pe. Virgı́lio Gaspar, ao Dr. Hélder
Roque e Dr. Fernando Girão, por todo o apoio das conversas ao domingo (e não só), ao
longo de todos estes anos.
À Ana Margarida por toda a sua força e coragem.
INESC-ID L2 F, Lisboa, 17 de Julho de 2002
João Gaspar
Resumo
O ALERT é um sistema de inspecção do sinal de vı́deo emitido por um qualquer
canal de televisão e de difusão das notı́cias (em português) aı́ transmitidas. Os vários
programas envolvidos no sistema garantem a captura do sinal, a transcrição e indexação
das notı́cias e o seu armazenamento e difusão. A capacidade de indexação e armazenamento do sistema permite aos utilizadores terem um acesso rápido e fiel às notı́cias do
seu interesse.
O SSNT-Service (SSNT resulta do tı́tulo deste projecto, Sumarização de Serviços
Noticiosos Televisivos, e Service da componente do projecto que implementa o serviço)
constitui a parte do sistema ALERT responsável pelo armazenamento e acesso às notı́cias
por parte dos utilizadores. Disponibiliza simultaneamente o serviço de um motor de busca
(através de um site na web) e de um mensageiro (através do envio de mail) de notı́cias.
Actualmente, 24 horas por dia, 7 dias por semana, o sistema ALERT captura, transcreve, segmenta, classifica, resume, armazena e envia as notı́cias dos telejornais da noite
do canal 1 da RTP.
O SSNT-Service permite efectuar pesquisas por tópicos permitindo ao utilizador
aceder a notı́cias relacionadas com determinado assunto, pessoa, local e/ou organização.
O utilizador tem então acesso directo a notı́cias constituı́das por tı́tulo, sumário e vı́deo
legendado (com a transcrição efectuada). A capacidade que o sistema SSNT tem de
enviar as notı́cias directamente ao utilizador permite-lhe estar informado sem que tenha
de se preocupar com a procura da informação (ver televisão, ler o jornal, etc.). Deixa
então de ser o utilizador a procurar informação, passa a ser a informação a procurar o
utilizador. Revela-se assim como uma ferramenta útil não só do ponto de vista lúdico,
mas também do ponto de vista profissional.
vi
Capı́tulo 1
Introdução
1.1
O Projecto ALERT
Este projecto enquadra-se no contexto do projecto ALERT - Alert System for Selective Dissemination of Multimedia Information - desenvolvido no Laboratório de Sistemas
de Lı́ngua Falada, INESC-ID, Lisboa, que visa integrar reconhecimento de fala com segmentação de áudio e vı́deo e indexação automática por tópicos, para desenvolver um
demonstrador do sistema e o avaliar no contexto de aplicações reais.
O SSNT-Service 1 apresenta-se neste projecto como responsável pela implementação
do sistema ALERT na forma de uma aplicação real, servindo assim como demonstrador
do sistema. Do ponto de vista das pessoas envolvidas no projecto ALERT, o SSNTService, é também uma ferramenta útil para o desenvolvimento, análise e avaliação do
desempenho dos diferentes módulos que o sistema agrega.
1.2
Como funciona
Atendendo aos requisitos deste sistema podemos isolar 3 fases: Captura, Processamento e Serviço.
O tratamento dum programa noticioso (p.e., o telejornal) inicia-se pela respectiva
captura. A Captura é um processo contı́nuo de inspecção do sinal difundido por um
qualquer canal de televisão, tratando-se de um canal generalista (p.e., o canal 1 da
RTP) é necessária a detecção do inı́cio e fim do programa noticioso para proceder à sua
extracção.
Obtida a ”matéria-prima”que é o programa noticioso, inicia-se a fase do Processamento onde é feita a transcrição, segmentação, classificação e sumarização das notı́cias
desse programa. A informação aqui gerada é compilada num ficheiro em formato XML2 .
1
2
SSNT: Do tı́tulo deste projecto: Sumarização de Serviços Noticiosos Televisivos
XML: Do inglês: eXtensible Markup Language - formato para documentos e dados estruturados
1
2
Terminada esta fase, este ficheiro XML dá entrada na base de dados do sistema SSNTService, sendo este último responsável pela disponibilização dos resultados.
Após a entrada desta informação na base de dados, as notı́cias daquele programa
passam a estar disponı́veis no website do sistema SSNT-Service, e são enviadas para
os utilizadores registados no sistema de acordo com as respectivas áreas de interesse.
Conclui-se assim o tratamento dum programa noticioso e o ciclo repete-se.
O Serviço, através de uma aplicação de análise (matching), permite efectuar pesquisas
por tópicos e aceder a notı́cias relacionadas com determinado assunto, pessoa, local e/ou
organização. Assim, o utilizador tem acesso a notı́cias, constituı́das por tı́tulo, sumário
e vı́deo legendado (com a transcrição efectuada), mediante a especificação de tópicos
do seu interesse a partir de descritores de tipo Temático, Geográfico e Onomástico. A
capacidade que o sistema tem de enviar as notı́cias directamente ao utilizador permite-lhe
estar informado sem que tenha de se preocupar com o acesso à informação. O Serviço
constitui também um arquivo digital de notı́cias de elevado valor do ponto de vista
audiovisual, na medida em que garante o armazenamento dos programas numa base de
dados e dos respectivos vı́deos.
Das fases acima descritas, concretizaram-se neste projecto a sumarização (efectuada
na fase de Processamento) e o sistema que implementa a fase de Serviço (SSNT-Service).
1.3
Estrutura e Fluxo de Dados do Sistema ALERT
Para a implementação de cada uma das fases acima descritas montou-se uma infraestrutura de três computadores em rede, actualmente em funcionamento nas instalações
da RTP. A figura 1.1 ilustra esta infra-estrutura.
Figura 1.1: A Infra-estrutura ALERT
Na figura 1.2 encontra-se esquematizado o andamento temporal dos processos a executar em cada uma das máquinas do sistema que se passam a descrever.
Na máquina CAPTURE decorre a captura do sinal de vı́deo em formato MPEG1.
Uma vez terminada a emissão do programa em captura, procede-se na máquina PROCESS à extracção do audio a partir do vı́deo MPEG para formato RAW, passando de
seguida à detecção dos ”jingles”.
Seguidamente arranca na máquina CAPTURE o processo de conversão para o formato RealVı́deo do vı́deo MPEG capturado, processo este que decorre em cerca de 2,5x
3
Figura 1.2: Distribuição de processamento entre as diferentes máquinas do sistema
ALERT
do tempo de duração do programa. Simultaneamente na máquina PROCESS passase ao corte do ficheiro de áudio de acordo com o detector de ”jingles”, à segmentação
e classificação acústicas, à geração de probabilidades (para efeitos de transcrição), descodificação, indexação (segmentação e detecção de tópicos), e por fim à sumarização.
Os resultados do processamento de um programa, obtidos na máquina PROCESS,
são compilados num ficheiro XML ao longo de todo o processo. Este ficheiro obedece
a uma DTD3 definida para o efeito apresentada no apêndice B.1 e descrita em 4.2.
Concluı́da a geração do ficheiro XML a máquina SERVICE), responsável pelo serviço
SSNT, garante o carregamento da informação do XML numa base de dados (BD-SSNT
mantida nesta máquina) e o armazenamento do ficheiro de vı́deo (no formato RealVı́deo)
do programa processado.
Paralelamente a esta sequência de processos, na máquina SERVICE responsável pelo
serviço SSNT, garantem-se os serviços de servidor HTTP e de servidor Streaming Media
(RTSP4 ). Esta máquina corre também continuamente os serviços de envio de e-mail
(geração de alertas) aos clientes registados, bem como o serviço de matching, responsável
pelo estabelecimento da correspondência entre perfis de utilizador e classificação das
notı́cias segmentadas. Este serviço, denominado matching, é utilizado quer pelo processo
de envio de e-mail, quer pela camada de apresentação web que utiliza este recurso através
do motor de pesquisa sobre as notı́cias (”Story”) armazenadas na BD-SSNT, e que por
sua vez as apresenta na página de resultados do website do servidor SSNT-Service.
3
4
DTD: Do inglês: Document Type Definition - define a estrutura de um documento XML
RTSP: Do inglês: Real Time Streaming Protocol
4
1.4
Estrutura do Relatório
Concluı́-se assim a apresentação do sistema ALERT. O capı́tulo que se segue, capı́tulo
2, apresenta o módulo de Sumarização da fase de Processamento do sistema ALERT e
a descrição da sua implementação.
O servidor SSNT-Service é abordado nos dois capı́tulos seguintes, capı́tulos 3 e 4.
No capı́tulo 3 pretende-se identificar os módulos nucleares a implementar e fazer uma
primeira abordagem à metodologia utilizada no cumprimento dos objectivos de cada
um desses módulos. Começa-se por apresentar a estrutura do servidor SSNT-Service,
segue-se o processo de escolha das tecnologias e concluı́-se com a análise a cada um dos
módulos identificados. No capı́tulo 4 procede-se isoladamente à descrição detalhada da
implementação de cada um destes módulos, assim como outras tarefas que serviram de
suporte à implementação.
O relatório termina com o capı́tulo 5 com as conclusões do projecto onde se avaliam
os resultados obtidos face aos compromissos iniciais.
Capı́tulo 2
Sumarização
Com a explosão da quantidade de informação multimédia acessı́vel nos nossos dias,
surge a necessidade de desenvolver sistemas que permitam facilitar a sua pesquisa. Esta
explosão deve-se fundamentalmente ao crescimento na difusão de informação através da
web. Da mesma forma, a web é uma fonte de informação que já faz parte do nosso diaa-dia. No entanto, tem-se verificado que as ferramentas actuais de busca de informação
são, em geral, pouco eficientes. Os resultados produzidos por estas ferramentas levam
os utilizadores a ler documentos com grandes quantidades de texto o que justifica a
necessidade de ferramentas de sumarização automática.
No âmbito deste projecto pretende-se, através do SSNT-Service, fazer chegar ao
cliente as notı́cias processadas com um tı́tulo e sumário associados. Ao processo de
geração de tı́tulo e sumário deu-se o nome de Sumarização. A Sumarização é realizada
sobre as transcrições das notı́cias previamente segmentadas e classificadas, sendo por isso
a última etapa da fase de processamento (ver 1.3).
2.1
Introdução
Em geral, um sistema de sumariar automaticamente tem como objectivo representar
de uma forma condensada o conteúdo do seu input num formato interpretável pelo
Homem. O processo de sumariar automaticamente é referido como sumarização, e para
referência à aplicação desenvolvida que efectua a sumarização usa-se o nome Sumarizer.
De uma forma abstracta, a sumarização pode ser vista em termos de 3 fases[2][3][5]:
• Análise - fase de análise do documento a sumariar e construção de uma representação interna.
• Transformação - fase de transformação da representação interna do documento
numa representação interna do seu sumário.
5
6
• Sı́ntese - fase de tradução da representação interna do sumário em linguagem natural.
Os métodos de sumarização podem classificar-se quanto ao nı́vel de domı́nio linguı́stico
que atingem. Nas aproximações mais superficiais não se vai muito além do domı́nio
sintáctico, sendo dominante a fase de análise. Tipicamente este tipo de abordagens produzem um conjunto de citações, por extracção de frases ou sequências de palavras. São
métodos mais vantajosos na medida em que não necessitam de geração efectiva de frases
nem de análises semânticas e por isso são normalmente mais robustos. Como desvantagens há a apontar a possibilidade da extracção de frases fora de contexto ou incoerentes.
Em aproximações mais vastas é usado pelo menos um nı́vel de representação semântica
do documento. Nestas aproximações é necessário ter componentes que façam análise
morfológica, sintáctica e semântica, o que as torna significativamente mais complexas
que as anteriores. Revelam-se mais eficazes quando dotadas de algoritmos orientados a
determinado tipo de informação, sendo por isso sido usadas em sistemas de sumarização
de documentos de tópico bem definido.
A adaptabilidade destes métodos está directamente relacionada com o formato de
entrada, a taxa de compressão de informação, os utilizadores, a função ou objectivo, a
lı́ngua, o tipo de informação, o formato de saı́da, entre outros. Em particular, no caso
do sistema ALERT pretende-se realizar um breve sumário como antevisão do que trata
uma determinada notı́cia e da informação que ela possa conter. As caracterı́sticas do
sistema são essencialmente as seguintes:
• formato de entrada: conjunto de transcrições automaticamente geradas em lı́ngua
falada (potenciais frases).
• compressão: geração de 2 a 4 frases acerca da notı́cia de dimensão variável.
• utilizadores: qualquer pessoa interessada em informação noticiosa em português.
• objectivo: essencialmente indicativo, para ajudar o utilizador a decidir sobre o
acesso ao conteúdo de toda a notı́cia.
• lı́ngua: essencialmente portuguesa.
• tipo de informação: qualquer informação susceptı́vel de ser notı́cia, de tópico indefinido.
• formato de saı́da: frases sintáctica e morfologicamente correctas, na forma narrativa.
Atendendo a estas caracterı́sticas desenvolver-se-á a análise de soluções de sumarização por extracção para avaliar a sua adaptabilidade às necessidades deste projecto.
As abordagens de nı́vel semântico não se revelam adequadas ao sistema ALERT, quer
pelas caracterı́sticas acima apresentadas quer pela sua complexidade (que está além dos
objectivos deste projecto).
7
2.2
Sumarização por Extracção
Neste tipo de métodos a análise é a fase dominante, sendo as fases de transformação
e sı́ntese opcionais. Caracterizam-se, também por isso, por serem soluções de baixo
”custo”ao nı́vel do processamento.
Tomando como base o clássico trabalho de Edmundson [1] verificamos que o processo
de extracção se baseia na avaliação das caracterı́sticas principais de uma dada frase
e/ou documento. O método consiste em atribuir pontuação às frases do documento
para escolha das frases a extrair, em função da pontuação atribuı́da a cada uma dessas
caracterı́sticas.
Edmundson considerou como caracterı́sticas principais para uma dada frase:
• presença de palavras pista, extraı́das com base na sua frequência em todo o corpus.
• presença de palavras de tı́tulo, extraı́das do tı́tulo.
• presença de palavras-chave, extraı́das com base na sua frequência por documento.
• localização da frase, relativa ao documento.
A cada uma destas caracterı́sticas associou um peso que determinou através de um
conjunto de treino. A escolha destas caracterı́sticas é empı́rica e baseia-se em métodos
de sumarização manual, no entanto este processo revelou-se bastante eficaz e tornou-se
uma referência para grande parte dos sistemas até hoje desenvolvidos[4].
2.3
Aplicabilidade dos Métodos
A aplicabilidade destes métodos de sumarização ao sistema ALERT é questionável
na medida em que se aplicam a sumarização de texto, normalmente na forma narrativa, sintáctica e morfologicamente correcto. No caso do sistema ALERT a informação
encontra-se na forma de um conjunto de transcrições, geradas automaticamente, em
lı́ngua falada e associadas a um conjunto de meta dados (de acordo com a DTD no
apêndice B.1).
Analisando o corpus existente (ver no apêndice B.2 um exemplo de um programa)
verificamos ter:
• transcrições de lı́ngua falada;
• falta de pontuação, cada transcrição é normalmente um segmento de uma frase;
• baixo nı́vel de coesão do texto;
• coerência de texto afectada por erros de reconhecimento;
8
• presença de meta dados com erro associado à respectiva detecção automática:
– classificação acústica (AudioType)
– detecção de orador (SpeakerID)
– detecção de género do orador (Gender)
– detecção da lı́ngua do orador (SpeakerLanguage)
– probabilidade de confiança no reconhecimento de cada palavra (Word::Conf)
– segmentação acústica para delimitação de frases (TranscriptWordList)
– segmentação de um programa em notı́cias (StorySegment)
– detecção de tópicos (Descriptor)
– detecção de palavras chave (RelevantWords)
• corpus existente insuficiente quantitativa e qualitativamente para desenvolvimento
de um sistema de treino, a detecção automática dos meta dados acima está ainda
em desenvolvimento.
Como se pretende um sumário em estilo narrativo e/ou linguagem natural, há que
equacionar a necessidade de conversão das transcrições de lı́ngua falada em lı́ngua natural. Assim, a adaptabilidade destes métodos depende essencialmente da realização dos
seguintes passos:
• correcção morfológica das transcrições para a forma de diálogos;
• geração dos diálogos numa forma narrativa (sendo o pivot o narrador, p.e.) com o
objectivo de identificar quem disse o quê sobre quem/o quê.
• extracção de frases pista:
– léxico de palavras pista - associadas ao(s) tópico(s) no qual a notı́cia foi classificada;
– resolução de formas do léxico (passar verbos para o tempo verbal infinitivo,
passar para o singular, etc.);
• requisitos de implementação do método da extracção:
– conjunto de treino na forma narrativa.
– extracção manual de frases pista.
– desenvolvimento e teste do algoritmo de sumarização.
9
Para realizar estes passos será necessário recorrer a uma ferramenta de análise e
correcção morfológica, bem como uma ferramenta de conversão de diálogos para forma
narrativa recorrendo ambas aos meta dados gerados. De notar que o desempenho do
algoritmo de sumarização virá afectado pelos erros associados a esses meta dados.
Verificamos assim que os métodos de sumarização por extracção são insuficientes para
o caso do sistema ALERT mas aplicáveis. As caracterı́sticas particulares dos documentos
gerados pelo sistema ALERT devem ser exploradas no sentido de determinar uma medida
de pontuação das frases a extrair.
2.4
2.4.1
Sumarizer
Planeamento
Na abordagem que se tomou, descrita de seguida, assumiu-se uma correcta segmentação das notı́cias do programa de informação televisivo. Assim, optou-se por explorar a caracterı́stica mais evidente e importante dos documentos a tratar: o facto de
cada notı́cia ser composta normalmente por uma introdução apresentada pelo pivot do
programa seguida de uma reportagem ou entrevista.
Atendendo a que as primeiras n transcrições de cada notı́cia se referem a m<n frases
e assumindo que foram proferidas pelo pivot verificou-se que, para um sumário de 2 a
4 frases são necessárias cerca de 5 transcrições. Para determinação do tı́tulo recorreu-se
a este conjunto de transcrições, por simplicidade, e determinou-se empiricamente que a
primeira transcrição seria a mais indicada.
A aplicação Sumarizer é responsável pela geração de Tı́tulo e Sumário para cada
uma das notı́cias do programa, efectuada de acordo com a descrição anterior. Tem como
entrada um ficheiro XML de acordo com a DTD em que os elementos Title e Abstract
estão vazios e como saı́da o mesmo ficheiro com estes elementos preenchidos.
Esta aplicação implementa um parser de XML1 em Java2 que recorre à framework
Apache Xerces 3 dada a sua modularidade e simplicidade. Esta framework (sob a licença
do tipo open-source: The Apache Software License 4 ) é uma das mais comuns para o
desenvolvimento de parsers de XML em Java fornecendo suporte para SAX5 e DOM6
(API’s de XML).
SAX é um standard que estabelece uma API de XML, possui uma arquitectura
orientada ao tratamento de eventos e faz o stream do documento XML, sem necessitar
por isso de ter acesso ao documento como um todo.
1
http://www.w3.org/XML/
http://java.sun.com
3
http://xml.apache.org/xerces2-j/index.html
4
http://www.apache.org/LICENSE.txt
5
http://sax.sourceforge.net/
6
http://www.w3.org/DOM/
2
10
DOM é também uma API de XML, possui uma arquitectura que representa um
documento XML em árvore permitindo navegar e extrair dados a partir dessa estrutura,
para isso necessita de importar previamente todo o ficheiro para memória.
Programas em SAX caracterizam-se por serem mais rápidos do que os seus equivalentes em DOM, mas ao contrário destes últimos são sensı́veis a qualquer alteração na
estrutura do XML (DTD) e são também de difı́cil extensão.
A capacidade de navegar numa estrutura em árvore (DOM) aliada a uma linguagem
de pesquisa sobre os nós dessa árvore (como XPath7 ) torna a manipulação do documento
de XML bastante flexı́vel criando condições para implementar uma estrutura que permita
extensibilidade. Assim, utilizando XPath a aplicação Sumarizer pode isolar o processo
de pesquisa e actualização do XML do algoritmo de sumarização propriamente dito
permitindo a actualização futura do algoritmo de sumarização.
XPath é uma linguagem para pesquisa de dados em documentos XML em estruturas
do tipo DOM.
Não existindo ainda uma ferramenta para validar o XML gerado pelo sistema ALERT
e sendo o processo de sumarização o último passo na geração do XML integra-se no
Sumarizer a validação sintáctica do documento XML.
2.4.2
Arquitectura
O Sumarizer, aplicação responsável pela geração de tı́tulo e sumário para cada notı́cia
do XML, começou por ser desenvolvido com um parser em SAX. Apesar da relativa
facilidade de desenvolvimento desta primeira versão e da sua eficiência, tratava-se de
uma aplicação fechada e dependente do algoritmo de sumarização.
Como não se pretendia tornar o algoritmo de sumarização definitivo, optou-se então
por uma arquitectura modular que o permitisse substituir. Assim, a arquitectura nesta
nova versão permite isolar o algoritmo de sumarização dos processos de parsing, validação
e actualização do ficheiro XML.
A figura 2.1 apresenta a arquitectura da segunda versão do Sumarizer.
A arquitectura do Sumarizer pode ser dividida em 3 camadas: análise (parsing e
validação), gestão de informação (pesquisa e actualização), e operação (sumarização).
Na camada de análise utilizou-se a framework xerces2 java parser (Apache XML
Project). Para desenvolvimento do parser utilizou-se a sua implementação DOM e para
a validação de XML a implementação SAX.
Na camada de pesquisa e actualização desenvolveu-se uma classe auxiliar para extracção e actualização de dados sobre estruturas de XML em DOM. Esta classe recorre à
linguagem de pesquisa Xpath e utiliza a implementação Xalan-J(Apache XML Project).
Possui também a funcionalidade de gerar um ficheiro XML a partir da respectiva representação em DOM.
7
http://www.w3.org/TR/xpath
11
Figura 2.1: Arquitectura do Sumarizer.
A classe que implementa o algoritmo de sumarização constitui a camada de operação.
A partir desta classe pode definir-se um interface para futura actualização do algoritmo
de sumarização pela sua simples substituição.
2.4.3
Implementação
Figura 2.2: Diagrama de actividades do Sumarizer.
A figura 2.2 apresenta o ciclo de actividades realizadas no processo de sumarização
das notı́cias de um ficheiro XML. Após a validação sintáctica do XML seleccionam-se
todas as notı́cias que este contém, através do query em Xpath:
child::StorySegment[child::StoryType = \”report\”]
Para cada notı́cia, cada nó do resultado, seleccionam-se as respectivas transcrições,
descritores e palavras relevantes pelos 3 queries seguintes respectivamente:
12
descendant::TranscriptSegment
descendant::ThematicDescriptorList | descendant::GeographicDescriptorList |
descendant::OnomasticDescriptorList
descendant::StoryRepresentation
O resultado destes 3 queries, que contém toda a informação relativa a uma notı́cia
(presente no XML), é enviado ao algoritmo de sumarização para geração de tı́tulo e
sumário. O algoritmo de sumarização implementado foi o descrito no ponto 2.4
Como referência para desenvolvimento futuro efectuou-se a documentação das classes
que compõem o Sumarizer.
2.4.4
Utilização
Embora o Sumarizer tenha sido integrado no sistema ALERT ao nı́vel do processamento pode ser usado como uma aplicação isolada disponibilizando as seguintes funcionalidades:
• validação sintáctica de XML:
#java SAXValidator\$TestSAXValidator <in-xml filename>
• geração de tı́tulo:
#java SumXML -not <in-xml filename> <out-xml filename>
• geração de sumário:
#java SumXML -noa <in-xml filename> <out-xml filename>
• geração de tı́tulo e sumário:
#java SumXML <in-xml filename> <out-xml filename>
Para usar qualquer destas funcionalidades é necessário um ficheiro com a respectiva
DTD, referenciada no ficheiro XML, ter instalado o J2RE e a variável de ambiente
classpath deve conter:
<sumarizer2 path>;<xercesImpl.jar path>;<xml-apis.jar path>;<xalan.jar path>
Em alternativa a esta última condição, invocar a JVM8 com a opção -classpath especificando esta path.
8
Java Virtual Machine
13
2.4.5
Limitações e Recomendações
Em conclusão, o desempenho do Sumarizer é condicionado pela utilização de DOM
e pela arquitectura desenvolvida de suporte à modularidade e extensibilidade. Esta
quebra de desempenho pode, ou não, ser uma condicionante num sistema real, mas é
sem dúvida preferı́vel para efeitos de desenvolvimento e teste de diferentes algoritmos de
sumarização.
Ficou por definir o interface para diferentes implementações do algoritmo de sumarização, mas este corresponde aos métodos públicos da classe Sumarizer desenvolvida.
O ficheiro XML gerado pelo Sumarizer contém os atributos dos diversos elementos
ordenados por ordem alfabética o que torna o ficheiro menos agradável de ler, embora o
XML gerado seja válido.
A validação do XML é apenas sintáctica não garantindo a inexistência de erros no
XML. Tal seria possı́vel com uma validação semântica que implicaria uma reestruturação
do XML devido à existência de ligeiras ambiguidades descritas na secção 4.2(onde se
descrevem as Limitações).
Capı́tulo 3
Análise e Planeamento do Servidor
SERVICE
3.1
Como Funciona
O servidor SERVICE, apresentado em 1.3, é como o nome indica responsável pela
prestação do serviço aos clientes do sistema SSNT-Service. O SSNT-Service constitui a
parte do sistema ALERT responsável pelo armazenamento e acesso às notı́cias por parte
dos utilizadores. Disponibiliza simultaneamente o serviço de um motor de busca (através
de um site na web) e de um mensageiro (através do envio de mail) de notı́cias.
O funcionamento do sistema permite então dois modos. Num modo o utilizador pode
especificar o seu perfil definindo os assuntos/temas que lhe interessam. Num instante
especificado será enviado um e-mail ao utilizador com os tı́tulos e sumários das notı́cias e
com links para o ficheiro em RealVideo, correspondente aos últimos programas noticiosos
processados.
No segundo modo o utilizador acede a um website onde tem a possibilidade de fazer
uma pesquisa no sistema, definindo o assunto/tema que lhe interessa, sendo retornados
os tı́tulos e sumários das notı́cias que se adequam à pesquisa do utilizador. Igualmente
é indicado para cada notı́cia, o link para o ficheiro em RealVideo disponı́vel no website
da RTP.
3.2
Estrutura SSNT-Service
A figura 3.1 ilustra a estrutura do SSNT-Service e apresenta algumas correcções face
à estrutura proposta no relatório intercalar. O SSNT-Service implementa os dois modos
acima descritos fundamentalmente através de queries à base de dados.
De acordo com a figura 3.1, a implementação deste sistema baseia-se no desenvolvimento das seguintes estruturas:
• Modos: envio de e-mail e pesquisa directa no website:
14
15
Figura 3.1: Estrutura do sistema SSNT-Service.
– website como interface para o serviço:
∗ definição e desenvolvimento da estrutura do website;
∗ interacção do website com a base de dados, BD-SSNT.
– aplicação de serviço de envio de e-mail :
∗ definição de processo de matching entre notı́cia e perfil de utilizador.
– streaming do vı́deo das notı́cias.
– aplicação de matching.
• BD-SSNT - base de dados para armazenamento de informação relativa ao processamento das notı́cias e relativa aos clientes;
– definição da estrutura da base de dados:
∗
∗
∗
∗
∗
registos de notı́cias com informação a armazenar;
registos de notı́cias com classificação;
registos de utilizadores com dados pessoais;
registos de utilizadores com definição de perfil;
informação auxiliar de classificação de notı́cias;
– inserir população e teste;
A estrutura base acima apresentada do Servidor SSNT concretiza-se no diagrama de
componentes da figura 3.2.
Verifica-se assim a necessidade dum servidor HTTP , de uma base de dados, de um
servidor de SMTP1 local para uma fase de testes, dum servidor de streaming media, dum
1
SMTP: Do inglês: Simple Mail Transfer Protocol
16
Figura 3.2: Diagrama de componentes do SSNT-Service
motor de scripting responsável pelo pré-processamento do website a disponibilizar, dum
serviço automático de envio de e-mail, bem como um módulo de matching.
Para proceder ao controlo, quer do bloco de serviço, quer do bloco de processamento
apresentam-se também na figura 3.2 os respectivos componentes: SMILGenerator/DBLoaderTrigger e DBLoader. O DBLoader é uma aplicação que permite o carregamento
de um ficheiro XML na BD-SSNT2 . O componente SMILGenerator/DBLoaderTrigger
garante a invocação do DBLoader após a geração do XML na fase de Processamento,
realizando também a geração de ficheiros SMIL3 (usados para a apresentação de legendas
sob os vı́deos dos programas).
As secções que seguem apresentam a escolha das tecnologias para implementação de
cada um dos componentes da figura 3.2 e uma análise detalhada de cada um destes.
2
3
desenvolvida pela 4VDO - Sistemas e Serviços Multimédia, S.A.
SMIL: DO Inglês: Synchronized Multimedia Integration Language
17
3.3
Escolha das Tecnologias
Foi necessário optar por uma combinação de tecnologias, dada a grande quantidade
de ferramentas e tecnologias existentes no mercado, e a grande variedade de formas como
podem ser combinadas, quer entre si, quer ao longo do eixo das diferentes plataformas.
Houve então que proceder a uma prospecção das tecnologias existentes no mercado.
No Anexo A apresentamos o estudo realizado às principais tecnologias web mais utilizadas, avaliando vantagens e desvantagens que pudessem advir da utilização de cada
uma delas.
Da análise realizada, estudou-se a viabilidade de possı́veis tecnologias a utilizar para
as seguintes funções do sistema SSNT: servidor HTTP, servidor SMTP, servidor de Base
de Dados, motor de Scripting, servidor de Streaming Media, plataforma/Sistema Operativo, aplicações de Matching e envio de e-mail.
Apesar da existência no mercado de grande quantidade de produtos para cada um dos
módulos do sistema, foi notória a utilização mais frequente de determinadas combinações
de tecnologias e plataformas. A escolha duma determinada combinação poderia ser
influenciada por uma grande quantidade de factores, sem que ainda assim nenhuma delas
apresentasse grande distância relativamente às outras, uma vez que todas elas garantiam
as funcionalidades de base, que o modelo tecnológico que suportam, exigia.
Consideraram-se na escolha de tecnologia diferentes critérios tais como: facilidade
de implementação, portabilidade, custos de implementação no projecto, Adequação à
plataforma alvo, documentação, Ferramentas de desenvolvimento, know-how.
Optou-se assim por implementar o servidor SSNT sobre o sistema operativo Windows2000 Professional Edition, usando o servidor web Apache 1.3.22 em conjunção com
o motor de scripting para web PHP 4.06. A base de dados adoptada por facilidade
de integração com as tecnologias web escolhidas foi o MySQL 3.23.45. Para questões
de teste do envio de e-mail aquando da geração de alertas, utilizámos um servidor de
e-mail local, o Java Apache Mail Enterprise Server 2.0a2 (James). Nas fases finais do
projecto, utilizou-se o servidor de e-mail da rede local em que o servidor SSNT foi inserido (primeiramente na rede do INESC: mail.local.net, mais tarde na rede da RTP:
mail.rtp.pt). Relativamente ao servidor de Streaming Media utilizou-se o RealServer
8.0. O desenvolvimento das aplicações de Matching e de envio de e-mail foi feito com o
Java2 1.4 SDK.
De salientar, que um denominador comum a todas as tecnologias usadas, foi a sua
existência no mercado na versão Open Source ou em versões de avaliação, adequando-se
ao desenvolvimento, sendo inteiramente funcionais, viáveis para os requisitos a atingir e
obtidas a custo zero.
18
3.4
Base de Dados
Uma vez gerado o XML resultante do processamento dos programas, houve a necessidade de armazenar essa informação numa base de dados (BD-SSNT). Deste modo, a
base de dados armazena informação relativa aos episódios inseridos e às notı́cias que eles
contêm, guardando as frases transcritas dessas notı́cias.
A BD-SSNT é responsável também por conservar informação dos utilizadores do
serviço SSNT, quer dados pessoais, indicados na fase de registo, quer o perfil em que
está interessado e que foi especificado posteriormente ao registo.
Adicionalmente armazenam-se na BD-SSNT os descritores4 . As árvores de descritores
foram armazenadas numa estrutura tabelar muito semelhante à estrutura de dados relacional implementada nos sistemas do arquivo de dados da RTP. Compatibilizando-o com
a estrutura já existente na RTP, facilita-se assim, futuras migrações de dados a que este
sistema seja sujeito.
3.5
Website
O website funciona como um portal para o resultado final de todas as etapas envolvidas nas máquinas responsáveis pela captura e processamento. Deste modo uma vez
escolhidas as tecnologias web a usar (PHP; JavaScript; HTML; CSS; Apache Server)
elaboraram-se gradualmente os diferentes cenários virtuais, dotando-os das funcionalidades exigidas no enunciado do projecto:
• Página de entrada - permite o acesso ao SSNT-Service.
• Página de pesquisa directa - modo ”motor de busca”.
• Página de registo - subscrição para recepção de alertas por Mail.
• Página de alteração dos tópicos - definição do perfil pessoal do utilizador.
• Página de alteração da informação pessoal - alteração de dados de registo.
• Página de resultados - apresentação dos resultados de uma pesquisa directa.
Desenvolveu-se ainda um outro website, o website de administração, que permite
pré-processar e extrair para formato XML, os principais ramos da árvore do Thesaurus
fornecido pela RTP, assim como inicializar e actualizar múltiplas tabelas na BD-SSNT,
com informação relativa a descritores, programas, oradores, léxico e léxico lematizado,
com os ficheiros XML gerados. Mas a principal funcionalidade do website de administração, centra-se na facilidade de consultar duma forma simples, o resultado dos últimos
4
define-se descritor neste contexto, como o constituinte temático, geográfico ou onomástico associado
à notı́cia. Uma notı́cia pode ter vários descritores.
19
programas processados, apresentando separadamente, as frases reconhecidas por orador
(Speaker Segment), bem como informação vária relativa ao orador detectado. Esta ferramenta revela-se útil na avaliação do desempenho dos algoritmos incluı́dos na máquina
PROCESS, dispensando a consulta directa sobre o ficheiro XML gerado ou a inspecção
na BD-SSNT.
3.6
Matching
O processo de selecção de notı́cias de acordo com os perfis dos utilizadores constitui
uma função nuclear do serviço. Para referir este processo usa-se o termo matching, e os
seus resultados são denominados alertas.
O matching foi realizado quer para apresentação de resultados no website quer para
o envio de alertas (notı́cias por mail ), embora sob condições distintas. Optou-se então
por tratar de forma semelhante a pesquisa directa e a definição de perfil de utilizador,
sendo ambas as situações implementadas pela definição de um conjunto de tópicos.
Estas duas formas de apresentação de resultados distinguem-se quanto ao arranque
do processo, ao alvo da pesquisa e ao modo de apresentação de resultados. Na pesquisa
directa o processo inicia-se no imediato, sobre os programas processados até então, e
os resultados são apresentados no site. Enquanto que, no caso do mail, os alertas são
gerados unicamente após o processamento de um novo programa e referem-se apenas a
este, tendo-se escolhido o e-mail como forma de apresentação de resultados. Embora sob
condições distintas, verifica-se que o processo é idêntico do ponto de vista algorı́tmico
para ambos os casos, pelo que se justifica o desenvolvimento de uma única aplicação.
O algoritmo de matching notı́cia/perfil realiza a associação dos descritores e palavras
relevantes de cada notı́cia aos descritores e texto livre (palavras chave) que compõem o
perfil do utilizador para determinar os resultados (denominados alertas).
Para efeitos de teste e desenvolvimento iniciais é necessário preencher a base de
dados existente com um conjunto de notı́cias de teste, pois à partida o conjunto de
teste existente não estava em condições de inserir na base de dados. Para efeitos de
demonstração preparou-se o conjunto de teste existente (pilot-corpus) tendo sido passado
para XML e adaptado à DTD5 (ver apêndice B.1).
Restrições
Há que ter em conta algumas restrições impostas pelas tecnologias escolhidas que
interagem directamente com esta aplicação. Na pesquisa directa a aplicação de matching
(em Java) interage com a linguagem de scripting do site (PHP) e a base de dados
(MySQL).
O suporte para Java disponibilizado pelo PHP está limitado à invocação de construtores sem argumentos, troca de dados em variáveis de tipo primitivo (na invocação
5
Document Type Definition
20
de métodos), e não permite a distribuição da aplicação Java por pacotes. Quanto às
limitações do MySQL, documentadas no respectivo manual, há que ter em conta que
não suporta triggers, stored procedures nem nested queries.
Dadas as limitações do PHP, a comunicação de dados da pesquisa e resultados será
feita através de tabelas na base de dados. Da mesma forma a aplicação de envio de mail
usará a base de dados para compor os alertas a enviar.
Considerando como o fim do processamento de um novo programa o fim da inserção
das respectivas notı́cias na base de dados, o ideal seria usar um trigger para despoletar
um stored-procedure na base de dados que implementaria o matching. Como o MySQL
não suporta esta funcionalidade a implementação será feita através de pooling à base de
dados e instalada como um serviço no sistema operativo (MS Windows 2000 ).
3.7
Envio de e-mail
O processo para envio de e-mail é responsável pela composição e envio dos alertas.
É iniciado após conclusão do processo de matching e, como já foi referido, usará a base
de dados para tratar os alertas gerados. Quanto ao envio dos alertas este pode ser diário
após a hora especificada ou imediatamente após o fim do processamento de um novo
programa (esta opção é definida pelo cliente no momento de registo).
A informação que se pretende fazer chegar ao cliente deste sistema é a seguinte:
• ProgramName - o nome do programa em que a notı́cia foi difundida
• EmissionDate - data em que a notı́cia foi difundida
• EmissionDuration - duração da notı́cia
• Hit - grau de alerta relativo à classificação da notı́cia
• VideoLink - link para acesso ao vı́deo que corresponde à notı́cia
• ThemeDescriptor - tópico geral em que se classificou a notı́cia
• Level1ThemeDescriptor - tópico especializado em que se classificou a notı́cia
• Level2ThemeDescriptor - sub-tópico especializado em que se classificou a notı́cia
• Title - tı́tulo gerado para a notı́cia
• Summary - sumário gerado para a notı́cia
• TopicThemeDescriptor - descriptor(es) temático(s) de um dado tópico de utilizador
21
• TopicOnomaDescriptor - descriptor(es) onomástico(s) de um dado tópico de utilizador
• TopicGeogrDescriptor - descriptor(es) geográfico(s) de um dado tópico de utilizador
Procurou-se encontrar um formato para a estrutura do e-mail a enviar. Para tal
foram inquiridas pessoas que fazem parte do projecto ALERT. As estruturas analisadas
foram apresentadas no relatório intercalar.
Num dos formatos as notı́cias são apresentadas numa lista ordenada cronologicamente
e por programa associadas aos descritores que constituı́ram o alerta. No outro formato
apresenta-se a lista de tópicos do utilizador com a(s) notı́cia(s) associada(s). Neste
formato, dado que uma mesma notı́cia pode ter sido classificada em 2 ou mais tópicos
especificados no perfil de utilizador, as notı́cias podem aparecer repetidas.
Optou-se por implementar os dois formatos levando o utilizador a escolher o que
mais lhe interessa no processo de registo. Do ponto de vista de implementação, faria
sentido também dar a possibilidade ao utilizador de escolher a forma como a lista de
notı́cias deveria ser ordenada: cronologicamente, por grau de relevância, por ordem de
preferência de tópico, etc.
Para permitir o acesso a este serviço a diferentes tipos de clientes de e-mail são
suportados dois tipos: plain-text e HTML. Para isso a aplicação fornece a possibilidade
de definição de templates que permitam implementar estes dois tipos de clientes.
Para acesso ao vı́deo, apenas disponı́vel em formato MPEG inicialmente, foi necessário
preparar o e-mail para usar um player de MPEG (escolheu-se o Windows Media Player).
No entanto, como inicialmente estava previsto o formato real media foi necessário converter os vı́deos quando, mais tarde, nos foi disponibilizado software para o efeito.
Como o software para aceder a vı́deo neste formato (realplayer ), está menos divulgado
considerou-se importante prevenir a não instalação deste software no cliente e nesse caso
redireccioná-lo ao respectivo site para instalação.
Para efeitos de desenvolvimento e demonstração optou-se por instalar um servidor de
e-mail local (James - sob a licença Apache). Tendo acesso à administração deste servidor
tornou-se possı́vel criar (além de configurar e eliminar) contas de e-mail para cada cliente
do sistema. Em termos de desenvolvimento e teste evitou-se assim qualquer transtorno
das contas de e-mail pessoais. Em termos de demonstração evita-se a necessidade de
acesso a um servidor de SMTP externo, sendo também possı́vel efectuar demonstrações
off-line.
3.8
Streaming
Visando fornecer ao utilizador SSNT um serviço eficiente de entrega dos conteúdos
multimédia associados às notı́cias processadas (como eram neste caso, a legendagem e o
22
serviço de vı́deo sem atrasos ou interrupções) e tendo em vista o suporte simultâneo de
grande número de utilizadores, surgiu a necessidade de suportar a entrega dos conteúdos
multimédia num servidor de streaming media.
O servidor de streaming media utilizado foi o Real Server 8.0. Optou-se por fazer
streaming RTSP, em vez de streaming HTTP, para melhor qualidade do serviço uma vez
que nos possibilitava o uso de marcas temporais para indicar o intervalo de vı́deo a servir,
não necessitando de esperar pelo download do ficheiro de Real Vı́deo como acontecia
via HTTP. Além disso, o facto de dispormos duma versão de avaliação inteiramente
funcional, limitada a 25 stream counts simultâneos, permitiu eleger o Real Server face
às outras tecnologias referidas no estudo apresentado no apêndice A.
Os conteúdos multimédia que se pretendiam servir eram os vı́deos em formato Real
Vı́deo e as suas legendagens, em formato Real Text, pelo que a plataforma da Real
Networks (já utilizada pela RTP, para efectuar streaming dos seus conteúdos vı́deo), se
revelou a mais adequada às apresentações a disponibilizar.
3.9
Controlo do Sistema ALERT
O controlo do sistema SSNT, cujas transacções entre máquinas foram descritas na
figura 1.2, é efectuado pela aplicação DBLoaderTrigger desenvolvida para o efeito, que
controla quer as chamadas ao DBLoader para inserção do XML processado na BDSSNT, quer ao SMILGenerator para geração dos ficheiros SMIL e RealText, de que serão
compostas as apresentações a servir via RTSP.
O DBLoaderTrigger permite fazer o pooling ao sistema de ficheiros, averiguando
alterações pela existência ou não de ficheiros com extensões que indicassem o fim da
última fase de processamento na máquina PROCESS.
Capı́tulo 4
Implementação do Servidor
SERVICE
O processo de implementação do Servidor SERVICE consistiu numa série de etapas
envolvendo actividades, restrições e recursos. O desenvolvimento do sistema atravessou
diversas fases e dependeu essencialmente:
• da estrutura estipulada.
• das necessidades do projecto.
• das competências da equipa.
• da tecnologia utilizada.
Visando a fiabilidade promoveu-se a detecção precoce de erros, quer a nı́vel algorı́tmico, quer a nı́vel da definição do formato XML utilizado na transacção de dados.
As etapas de desenvolvimento apesar de distintas, sobrepuseram-se no decorrer do
tempo de realização do projecto, para que se convergisse mais rapidamente para a prototipagem do sistema na sua globalidade. A definição da DTD (Document Type Definition)
e definição da base de dados foram as tarefas de partida para o desenvolvimento do sistema. Este capı́tulo descreve detalhadamente as alterações efectuadas às recomendações
existentes e explana as principais tarefas levadas a cabo em cada um dos módulos.
4.1
Processamento do Thesaurus da RTP
Todo o esquema de classificação de notı́cias com que o sistema SSNT lida, foi pensado
para girar em torno de tópicos e descritores numa estrutura baseada naquela que é
23
24
utilizada actualmente no arquivo de dados da RTP. Um tópico é constituı́do a partir
de um conjunto de descritores definindo assim uma pergunta do utilizador ao sistema,
que se poderá traduzir numa entrada no seu perfil pessoal ou um vector de pesquisa no
website de pesquisa directa. Assim, entende-se por descritor, o constituinte dum tópico
(simultaneamente, o nı́vel máximo de atomicidade que um tópico pode ter), podendo
existir descritores TE (Temáticos), GE (Geográficos) ou ON (Onomásticos)1 . A definição
das árvores adequadas de descritores, permitir-nos-iam facultar ao utilizador aquando
da utilização do website, a definição do seu perfil, navegando numa árvore de descritores.
Partindo do thesaurus temático disponibilizado pela RTP e dada a sua grande complexidade, que incluia relações cruzadas para termos relacionados(TR) e de substituição(USE, USE por), optou-se como se indica na figura 4.1 por extrair os 3 nı́veis
superiores da árvore, considerando apenas as relações hierárquicas (TG:Termo genérico e
TE:Termo especı́fico). Extraı́ram-se assim 21 nós correspondentes a domı́nios temáticos,
557 nós correspondentes a sub-domı́nios temáticos de nı́vel 1, e 2845 nós relativos a
sub-domı́nios temáticos de nı́vel 2. Definiu-se um formato de XML/DTD para esta
hierarquia, de forma a facilitar futuras alterações na árvore de descritores:
<?xml version=”1.0” encoding=”ISO−8859−1”?> <!DOCTYPE
THEM THESAURUS BD SYSTEM ”them thesaurus bd.dtd”>
<THEM THESAURUS BD>
...
<DOMAIN>
<NAME ID=”247”>Ambiente e Energia</NAME>
<LEVEL1>
<NAME1 ID=”248”>Agua</NAME1>
<LEVEL2><NAME2 ID=”249”>Agua doce</NAME2></LEVEL2>
<LEVEL2><NAME2 ID=”250”>Agua estagnada</NAME2></LEVEL2>
<LEVEL2><NAME2 ID=”251”>Agua mineral</NAME2></LEVEL2>
<LEVEL2><NAME2 ID=”252”>Agua potavel</NAME2></LEVEL2>
<LEVEL2><NAME2 ID=”253”>Agua salgada</NAME2></LEVEL2>
</LEVEL1>
<LEVEL1>
<NAME1 ID=”254”>Animal</NAME1>
<LEVEL2><NAME2 ID=”255”>Abrigo animal</NAME2></LEVEL2>
<LEVEL2><NAME2 ID=”256”>Animal abandonado</NAME2></LEVEL2>
<LEVEL2><NAME2 ID=”257”>Animal domestico</NAME2></LEVEL2>
<LEVEL2><NAME2 ID=”258”>Animal maltratado</NAME2></LEVEL2>
<LEVEL2><NAME2 ID=”259”>Animal treinado</NAME2></LEVEL2>
<LEVEL2><NAME2 ID=”260”>Especie em vias de extincao</NAME2></LEVEL2>
<LEVEL2><NAME2 ID=”261”>Especie protegida</NAME2></LEVEL2>
...
</LEVEL1>
1
de acordo com os Thesaurus Temático, Geográfico e Onomástico facultados pela RTP.
25
</DOMAIN>
...
</THEM THESAURUS BD>
Figura 4.1: 3 Nı́veis extraı́dos do thesaurus temático do EBC (European Broadcasting
Consortium) facultado pela RTP.
Desenvolveram-se parsers especı́ficos para fazer esta extracção para XML a partir do
thesaurus temático, e para proceder ao carregamento do XML gerado na base de dados
BD-SSNT.
Relativamente aos thesaurus geográfico e onomástico, as acções foram semelhantes,
pré-processando-se inicialmente os thesaurus, com posterior extracção para XML (estes
agora com uma estrutura apenas com um nı́vel, correspondente ao nı́vel DOMAIN do
thesaurus temático), e consequente carregamento na BD-SSNT.
Estes parsers, foram incluı́dos no website de administração, como será descrito na
secção 4.6.2, permitindo actualizar os descritores do sistema SSNT, sempre que se revele
necessário, dispondo dos ficheiros em formato XML, ou gerar estes formatos a partir dos
thesaurus.
No apêndice B apresentam-se os ficheiros XML extraı́dos dos 3 thesaurus processados.
26
4.2
Da definição da DTD à Base de Dados
A definição do formato do XML a utilizar à saı́da da máquina PROCESS foi uma
das tarefas cruciais no arranque deste projecto. A DTD recomendada para o XML
em [6], encontrava-se bastante incompleta, pelo que se apresenta no apêndice B.1 a
estrutura actual corrigida e melhorada. Passa-se seguidamente à descrição detalhada
dos elementos do XML, pela análise da DTD, descrevendo a informação que contêm, e
de que forma esta informação é armazenada na BD-SSNT da máquina SERVICE. Na
figura 4.2 apresenta-se o diagrama UML da base de dados BD-SSNT. A DTD a analisar
é a extensão portuguesa da DTD do sistema ALERT, pelo que a nossa descrição se irá
limitar aos elementos com que se lidou.
Da análise da DTD apresentada do apêndice B.1, o elemento Transcript,
<!ELEMENT Transcript (VersionGUID, StorySegment*)>
contém informação acerca do basename escolhido para representar o programa, em
todos os estágios de processamento, desde a captura, até ao carregamento da BD-SSNT
e geração das apresentações SMIL/RT, no campo VersionGUID.
Este formato de basename facilita a listagem dos ficheiros nas máquinas em que serão
guardados e define-se de acordo com a seguinte sintaxe:
{aaaa mm dd}−{hh mm ss}−{Nome do Programa}−{ID do Programa}
A BD-SSNT contém uma tabela de programas Program que reflecte o conteúdo do
XML apresentado no apêndice B.6:
Program
ProgramID
integer
Name
char(255)
SourceName char(255)
Signature
char(255)
Tabela 4.1: BD-SSNT: Tabela Program
Adicionalmente o elemento Transcript contém uma lista de StorySegments, que
conterão todos os elementos descritivos da história em causa. Deste modo existe um
StorySegment por notı́cia:
<!ELEMENT StorySegment (StoryType?, (TranscriptSegment | VideoClass)+, (UserProfileList?
| (ThematicDescriptorList?, GeographicDescriptorList?, OnomasticDescriptorList?, Title?,
Abstract?, StoryRepresentation?)))>
O StoryType descreve o tipo de história em análise podendo tomar os valores: report,
filler, ou nontrans:
<!ELEMENT StoryType(#PCDATA)>
27
Figura 4.2: Diagrama UML da BD-SSNT.
28
Apenas serão carregadas na BD-SSNT, as notı́cias (StoryType=report). Seguidamente o StorySegment contém o elemento TranscriptSegment. Um StorySegment
pode conter vários TranscriptSegments, equivalendo estes últimos a frases reconhecidas:
<!ELEMENT TranscriptSegment (TranscriptGUID, AudioType+, Speaker?, Bandwidth?,
SpeakerLanguage?, Time, TranscriptWordList?)>
O campo TranscriptGUID indica a ordem do TranscriptSegment dentro do Transcript.
O elemento Audiotype indica um ou mais tipos de som ambiente reconhecidos no
TranscriptSegment em causa, e pode assumir valores como music, speech, noise, clean
contendo também informação sobre inı́cio e fim desse som ambiente.
<!ELEMENT AudioType (#PCDATA)>
<!ATTLIST AudioType
start CDATA #REQUIRED
end CDATA #REQUIRED
>
O elemento seguinte do TranscriptSegment é o Speaker, que contém a informação
relativa ao orador:
<!ELEMENT Speaker EMPTY>
<!ATTLIST Speaker
id CDATA #IMPLIED
name CDATA #IMPLIED
gender CDATA #IMPLIED
known CDATA #IMPLIED
>
Caso o orador seja conhecido, terá uma correspondência directa na tabela Speaker
a carregar na BD-SSNT, com a informação definida no ficheiro XML apresentado no
apêndice B.7
Speaker
SpeakerID
integer
SpeakerName char(255)
Gender
char(1)
Tabela 4.2: BD-SSNT: Tabela Speaker
A informação contida em SpeakerLanguage indica a lı́ngua reconhecida ao orador,
bem como informação booleana acerca do orador estar, ou não, a falar na sua lı́ngua
nativa:
29
<!ELEMENT SpeakerLanguage (#PCDATA)>
<!ATTLIST SpeakerLanguage
native CDATA #IMPLIED
>
SpeakerLanguage pode então assumir valores como PT, EN, FR, etc... ao passo que
o seu atributo native assumirá valores booleanos: T/F (true/false).
Seguidamente, dentro dum TranscriptSegment, o elemento Time contém indicação
acerca do princı́pio e fim desse TranscriptSegment:
<!ELEMENT Time EMPTY>
<!ATTLIST Time
start CDATA #REQUIRED
end CDATA #REQUIRED
reasons CDATA #REQUIRED
>
O elemento que se segue no TranscriptSegment é o TranscriptWordList, que
contém a lista de palavras (Words), associadas à transcrição (gerada pelo Sistema de
Reconhecimento automático de Fala):
<!ELEMENT TranscriptWordList (Word*)>
<!ELEMENT Word(#PCDATA)>
<!ATTLIST Word
start CDATA #IMPLIED
Os restantes elementos da DTD re-
end CDATA #IMPLIED
conf CDATA #IMPLIED
>
flectem caracterı́sticas utilizadas apenas em StorySegment’s que tenham report para
valor do atributo StoryType, ou seja, que tenham sido classificados como notı́cias.
De modo a associar as notı́cias a descritores temáticos, geográficos e onomásticos,
incluı́ram-se neste elemento, os elementos ThematicDescriptorList,
GeographicDescriptorList e OnomasticDescriptorList:
<!ELEMENT ThematicDescriptorList (Descriptor*)>
<!ELEMENT OnomasticDescriptorList (Descriptor*)>
<!ELEMENT GeographicDescriptorList (Descriptor*)>
<!ELEMENT Descriptor (#PCDATA)>
<!ATTLIST Descriptor
id CDATA #IMPLIED
conf CDATA #IMPLIED
>
30
O elemento Descriptor indica o(s) descritor(es) em que foi classificada a notı́cia
(report) presente no StorySegment em causa. Na base de dados BD-SSNT os descritores
foram inicialmente carregados, após o processamento que se efectuou aos 3 thesaurus
e estão armazenados em 2 tabelas (ver 4.3 e 4.4), em conformidade com a estrutura
existente no arquivo de dados da RTP:
Category
CategoryID
integer
CategoryType char(2)
Tabela 4.3: BD-SSNT: Tabela Category
Descriptor
DescriptorID
integer
DescriptorText char(255)
CategoryID
integer
SubDescriptorID
integer
Tabela 4.4: BD-SSNT: Tabela Descriptor
Por sua vez os descritores associados às notı́cias Story processadas na BD-SSNT,
presentes em ThematicDescriptorList, GeographicDescriptorList
e OnomasticDescriptorList, são carregados na tabela StoryDescriptor, que contém
informação acerca do descritor bem como o grau de confiança na atribuição do descritor
à notı́cia:
StoryDescriptor
StoryID
integer
DescriptorID
integer
DescriptorConf float(10)
Tabela 4.5: BD-SSNT: Tabela StoryDescriptor
Esta tabela equivale ao bloco Story Descriptor Block indicado a sombreado no
diagrama da figura 4.2 e que será utilizado pelo algoritmo de matching para gerar alertas
de envio de mail, ou resultados de pesquisa no website.
Concluindo a descrição dos elementos que compõem o StorySegment, de referir o
tı́tulo (Title) e o sumário (Abstract) que são gerados pelo Sumarizer no último estágio
de processamento da máquina PROCESS:
<!ELEMENT Title (#PCDATA)>
<!ELEMENT Abstract (#PCDATA)>
Refira-se ainda o elemento StoryRepresentation (o último elemento do StorySegment),
que contém uma lista de palavras relevantes da história (RelevantWords), para uso em
31
algoritmos de sumarização, geração de tı́tulo e pesquisa texto livre, com informação estatı́stica adicional como o número de vezes que ocorrem no StorySegment e em que
TranscriptSegments estão presentes:
<!ELEMENT StoryRepresentation (RelevantWord*)>
<!ELEMENT RelevantWord (#PCDATA)>
<!ATTLIST RelevantWord
id CDATA #REQUIRED
ocurr CDATA #REQUIRED
ocurrTranscList CDATA #REQUIRED
>
O atributo ocurrTranscList é uma lista de números separados por vı́rgulas. Estes
números referenciam os identificadores dos TranscriptSegments onde se encontra a
respectiva RelevantWord do report em causa. Também a informação deste elemento
(RelevantWord) terá tradução nas tabelas da BD-SSNT, agora na tabela
TranscriptSegmentKeywords:
TranscriptSegmentKeywords
KeywordID
integer
TranscriptSegmentID integer
KeywordTimes
integer
StoryID
integer
Tabela 4.6: BD-SSNT: Tabela TranscriptSegmentKeywords
A informação descrita contida no XML irá então preencher adicionalmente na BDSSNT as seguintes tabelas:
Episode
EpisodeNr
integer
EmissionDate
date
EmissionTime
time
Medium
char(50)
VideoLink
char(255)
FlagAlert
bit
ProgramID
integer
Tabela 4.7: BD-SSNT: Tabela Episode
32
Story
StoryID
integer
StartOffset
float
EndOffset
float
Title
char(255)
Summary
blob
ProgramID
integer
EpisodeNr
integer
Tabela 4.8: BD-SSNT: Tabela Story
TranscriptSegment
TranscriptSegmentID integer
Transcript
blob
SpeakerID
integer
KnownSpeaker
bit
SpeakerLang
char(2)
NativeLang
bit
Gender
char(1)
StartOffset
float
EndOffset
float
StoryID
integer
Tabela 4.9: BD-SSNT: Tabela TranscriptSegment
Passa-se agora à descrição das restantes tabelas não relacionadas com o XML. Estas
tabelas permitiram dar suporte à definição de perfil de utilizador (no website), bem como
preparar as estruturas de dados para a implementação dos algoritmos de matching(ver
na figura 4.2 os blocos User Descriptor Block e Guest Descriptor Block):
• Tabela Keyword: inicializada na BD-SSNT, com o léxico lematizado cujo formato
XML usado no carregamento se apresenta no apêndice B.8.
Keyword
KeywordID
integer
KeywordText char(30)
Weight
float(10)
Tabela 4.10: BD-SSNT: Tabela Keyword
• Tabela Word: inicializada na BD-SSNT, com o léxico base em formato XML (para
evoluções futuras do sistema) semelhante ao usado para o léxico lematizado, mas
sem o atributo weight(ver apêndice B.8).
33
Word
KeywordID integer
WordText char(30)
Tabela 4.11: BD-SSNT: Tabela Word
• Tabela User: permite armazenar a informação pessoal do utilizador registado
através do website no serviço SSNT e guardar um histórico de todos os utilizadores
do sistema:
User
UserID
Username
Password
RecoveryQuestionID
RecoveryAnswer
Name
Email
Telephone
AlertTime
Info
Accepted
MailFormat
MailStoryOrder
integer
char(30)
char(30)
integer
char(30)
char(40)
char(40)
char(20)
integer
char(1)
char(16)
char(6)
bit
Tabela 4.12: BD-SSNT: Tabela UserTopic
• Tabela UserTopic: permite armazenar a informação referente aos tópicos do perfil
de utilizador. A tabela GuestTopic é semelhante a esta, e permite armazenar os
tópicos no caso da pesquisa directa no website (para utilizadores não registados).
UserTopic
TopicID
integer
UserID
integer
FreeText char(255)
OnoText char(255)
GeoText char(255)
Tabela 4.13: BD-SSNT: Tabela UserTopic
• Tabela UserAndDescriptor: permite armazenar a informação referente aos descritores dos tópicos do perfil de utilizador. A tabela GuestAndDescriptor é semelhante a esta, e permite armazenar descritores dos tópicos no caso da pesquisa no
website.
34
UserAndDescriptor
AndID
integer
TopicID
integer
DescriptorID integer
Tabela 4.14: BD-SSNT: Tabela UserAndDescriptor
• Tabela UserTopicKeywords: permite armazenar as palavras que no campo de
pesquisa manual do website, são consideradas relevantes, da mesma forma como as
RelevantWords do XML são armazenadas na tabela
TranscriptSegmentKeywords. A pesquisa directa no website possui uma estrutura
tabelar na BD-SSNT semelhante, conseguida à custa da tabela GuestTopicKeywords2 .
UserTopicKeywords
KeywordID integer
TopicID
integer
Tabela 4.15: BD-SSNT: Tabela UserTopicKeywords
• Tabela AlertUser: permite armazenar a informação resultante do módulo de
matching, quer para o envio de email, quer para a pesquisa no website(conseguida
à custa da tabela AlertGuest, de estrutura semelhante).
AlertUser
AndID integer
TopicID integer
StoryID integer
UserID integer
Sent
bit
Tabela 4.16: BD-SSNT: Tabela AlertUser
Uma entrada nesta tabela identifica totalmente o alerta gerado no matching, indicando o utilizador a que se refere, a notı́cia para o qual foi gerado o alerta, bem
como informação, quer acerca do tópico quer acerca do AndID associado ao alerta.
O campo Sent permite guardar informação acerca do estado de envio do alerta.
Na secção 4.4[Matcher] explica-se pormenorizadamente o processo de geração de
resultados nesta tabela, e na sua equivalente AlertGuest para a pesquisa livre no
website.
2
A utilizar em evoluções futuras da pesquisa manual (texto livre) no website.
35
Limitações
Revelou-se necessário ao longo do projecto uma forma de validar semanticamente os
ficheiros XML à saı́da da máquina PROCESS, para se averiguar em que fase da geração
do XML foram gerados erros. O facto do DBLoader não fazer qualquer verificação a este
nı́vel impossibilita o controlo da informação que chega à BD-SSNT.
Recomenda-se assim o desenvolvimento dum verificador semântico para o XML.
No entanto adverte-se para a existência de algumas limitações e ambiguidades a nı́vel
sintáctico e semântico no XML, que se apresentam:
• Todos os atributos dos elementos: Speaker, SpeakerLanguage, Descriptor e Word
indicados como facultativos, deviam ser obrigatórios, pois são necessários para o
armazenamento duma notı́cia.
• O elemento OcurrTranscList é impossı́vel representar com uma expressão regular e mesmo com uma gramática livre de contexto. A solução para o problema
é adicionar um novo atributo RelevantWordID em Word assumindo que zero seria o valor predefinido para uma ”non-Relevant Word ”, eliminando-se o elemento
RelevantWord. Esta solução conduz a uma redução significativa da dimensão
do XML, que facilita o seu processamento. No entanto implica a correcção do
DBLoader e o processo de geração das RelevantWords.
4.3
Website
O principal interface do sistema SSNT é o website já abordado na secção 3.5 cuja
estrutura apresentamos na figura 4.3. O portal SSNT apresenta-se sobre a forma duma
página de entrada com uma breve descrição do sistema, possibilitando diversos trajectos
ao longo do website(ver apêndice C, figura C.1). Deste modo o utilizador pode escolher
fazer directamente uma pesquisa no sistema sobre o tema da sua preferência na página de
pesquisa directa, sem necessidade de identificação ou pré-registo (ver apêndice C, figura
C.2), ou registar-se para recepção de alertas.
A página de pesquisa directa permite navegar directamente na estrutura de 3 nı́veis
(extraı́dos do thesaurus) de descritores armazenada nas tabelas Category e Descriptor
na BD-SSNT, possibilitando ao utilizador efectuar pesquisas com referências onomásticas
e geográficas.3
Exemplifica-se para o caso da figura 4.4, o preenchimento das tabelas UserTopic /
GuestTopic e UserAndDescriptor / GuestAndDescriptor. Isto acontece nas tabelas
referidas, sempre que o utilizador define um tópico na página de pesquisa manual ou na
sua conta pessoal, respectivamente (como será descrito à frente). Por um lado, verificase a selecção de 3 descritores abaixo de ”Defesa Nacional; Forças Armadas, Policiais
3
A pesquisa manual encontra-se por implementar e será alvo de evoluções futuras, garantindo-se
para já os parsers necessários e as estruturas de dados na BD-SSNT.
36
e Segurança na árvore hierárquica de descritores: São eles Aviação militar, Conceito
estratégico de defesa nacional e Defesa Nacional com os identificadores DescriptorID
na tabela Descriptor: 810, 817 e 831, respectivamente. Por outro lado existe uma
referência onomástica: ”António Guterres” e uma referência geográfica: ”Lisboa”.
Figura 4.3: Estrutura do website SSNT.
Contrariamente à escolha temática efectuada, os campos de especificação onomástico
e geográfico, não apresentam ao utilizador todas as entradas dos thesaurus respectivos,
uma vez que dado o grande número de entradas, seria impraticável no que diz respeito à
apresentação ao utilizador. Deste modo, optou-se por aceitar as referências onomásticas,
e em função disso, pesquisar na BD-SSNT, as ocorrências aproximadas do texto inserido
pelo utilizador nestes campos(Índice Onomástico e Índice Geográfico).
37
Deste modo, para a referência Geográfica ”Lisboa”, são encontradas na base de dados
os descritores com os IDs apresentados na tabela 4.17.
Figura 4.4: Definição do tópico de pesquisa em conta pessoal do website SSNT.
Registos do Índice Geográfico para ”Lisboa”
3512 ÁREA METROPOLITANA DE LISBOA
3866
CONCELHO DE LISBOA
4079
DISTRITO DE LISBOA
4201
grande lisboa
4400
LISBOA
4581
NOVA LISBOA
4743 REGIÃO DE LISBOA E VALE DO TEJO
Tabela 4.17: Entradas e Identificadores do Índice Geográfico para ”Lisboa”.
Do mesmo modo para a referência Onomástica ”António Guterres” efectua-se o
preenchimento da tabela 4.18.
Para o tópico descrito, o conjunto de descritores temáticos será pois {810, 817, 831},
o conjunto de descritores onomásticos será {6672, 6673}, e o conjunto de descritores
geográficos {3512, 3866, 4079, 4201, 4400, 4581, 4743}. Para reduzir o peso de processamento do matching, o website realiza um preenchimento prévio das tabelas GuestTopic
e GuestAndDescriptor (no caso da página de pesquisa directa, as tabelas usadas são a
38
Registos do Índice Onomástico para ”António Guterres”
6672 PORTUGAL. Primeiro Ministro, 1995-1999 (António Guterres)
6673
PORTUGAL. Primeiro Ministro, 1999- ( AntónioGuterres)
Tabela 4.18: Entradas e Identificadores do Índice Onomástico para ”António Guterres”.
UserTopic e a UserAndDescriptor). Deste modo, procede-se ao seguinte preenchimento
das tabelas para o tópico: Aviação Militar; Conceito estratégico de defesa nacional;
Defesa nacional com referência onomástica ”António Guterres”e referência geográfica
”Lisboa”:
TopicID UserID
101
152
GuestTopic
FreeText
OnoText
António Guterres
GeoText
Lisboa
Tabela 4.19: Registo na tabela GuestTopic com valores arbitrários para o TopicID e
UserID.
Posto isto, os 3 conjuntos definidos acima têm um total de 42 (3x2x7) combinações4
dos seus descritores pelo que para o conjunto de descritores {810, 6672, 3512} haveria
que preencher na tabela GuestandDescriptor:
GuestAndDescriptor
AndID TopicID DescriptorID
501
101
810
501
101
6672
501
101
3512
Tabela 4.20: Exemplo de preenchimento da tabela GuestAndDescriptor para o TopicID
da tabela 4.19 e AndID com inı́cio arbitrário.
Em vez de aceder directamente à página de pesquisa directa, o utilizador pode
registar-se no sistema SSNT, recebendo um link de confirmação no seu e-mail, que deverá ser usado para proceder à autenticação do registo (ver apêndice C, figuras C.4, C.5,
C.6, C.7).
Uma vez registado, o utilizador pode entrar directamente na sua conta pessoal do
sistema SSNT e associar tópicos compostos por descritores temáticos, geográficos e
onomásticos ao seu perfil pessoal(ver apêndice C, figuras C.8, C.9).
Dentro da sua conta pessoal o utilizador pode modificar os seus dados pessoais fornecidos no momento do registo, dispondo ainda da opção de eliminar permanentemente a
sua conta (ver apêndice C, figura C.10).
4
Número de entradas com AndIDs distintos. Uma das combinações seria {810, 6672, 3512}
39
Uma vez especificados os tópicos a pesquisar (quer na página de pesquisa directa,
quer na página de definição de perfil), a visualização de resultados é feita na página
de apresentação de resultados, podendo-se alternar de tópico, e dispondo-se de vários
métodos de ordenação das notı́cias encontradas, tais como ordenação cronológica e por
programa, ou ordenação por percentagem de acerto como se exemplifica na figura 4.5.
Figura 4.5: Página de apresentação de resultados.
No apêndice E apresentam-se as configurações que devem ser efectuadas, para configurar correctamente o website SSNT (ficheiro config.inc.php). O website de administração será descrito na secção 4.6.2. Garantiu-se em todo o website a confidencialidade
das sessões, e que ao fim do tempo estipulado em config.inc.php de inactividade no
browser do utilizador, as sessões de utilizador expiram, conduzindo o utilizador ao portal
de entrada.
4.4
Serviço de Matching e Envio de e-mail
Os módulos de matching e envio de mail foram integrados numa mesma aplicação a
que se chamou Matching Service. Trata-se da aplicação responsável por gerar e enviar
os alertas aos utilizadores do sistema.
40
Arquitectura
O Matching Service é uma aplicação desenvolvida em Java cuja arquitectura se apresenta na figura 4.6. Esta é uma aplicação que corre a nı́vel do servidor e como tal foi
desenvolvida para instalar como um serviço no sistema operativo (MS Windows 2000 ).
Por isso contém um módulo (SCMEventManager ) que lhe permite efectuar o tratamento
de sinais do sistema operativo (tais como stop, close, logoff e shutdown). A sua interacção com a base de dados é estabelecida através de um driver JDBC (usou-se o Mark
Matthews JDBC Driver for MySQL 2.0.11 sob licença GNU). Os módulos de Matcher e
AlertMailer garantem respectivamente a geração e o envio de alertas. O módulo Logger
é responsável por garantir o registo das operações efectuadas pelos módulos anteriores
nos respectivos ficheiros.
Figura 4.6: Arquitectura do Matching Service.
Este serviço funciona num esquema de pooling à base de dados para detecção de
novos episódios. O processo de matching é despoletado sempre que existir pelo menos
um registo na tabela Episode com o atributo FlagAlert activo a ’1’ (o que corresponde
a um novo episódio). O processo de composição e envio de e-mail é controlado de
forma semelhante na tabela AlertUser pelo atributo Sent, que a ’0’ indica que aquele
alerta não foi ainda enviado. Quando o processo de matching termina coloca o atributo
FlagAlert dos episódios processados a ’0’ e, de forma semelhante, após o envio de email o atributo Sent passa a ’1’ nos alertas enviados. Caso não se pretenda manter o
registo dos alertas enviados estes são apagados(pelo query delSentAlertsQ definido no
ficheiro mailer.cfg). A definição do tempo entre acessos (pooling) é feita no momento de
instalação da aplicação, bem como os nomes para os ficheiros de registo (log). Quaisquer
outras definições são garantidas por ficheiros de propriedades (ver configuração nesta
secção).
41
Matcher
Sendo este módulo responsável pela geração dos alertas, há que definir alerta. Em
geral, entende-se por alerta A qualquer notı́cia que, após entrada no sistema (base de
dados), garante as condições estabelecidas por um tópico T, do perfil de um utilizador,
P. Um perfil de utilizador é estabelecido por um conjunto de tópicos, sendo cada tópico
definido a partir de um conjunto de descritores d. Um descritor constitui um elemento
classificador de notı́cias (secções 4.2, 4.3).
Esta definição pode ter diferentes implementações tendo-se optado por uma concretização simples a partir de queries SQL com vista ao mı́nimo tempo de resposta a
uma pesquisa, delegando a exactidão dos resultados para o domı́nio da classificação. A
concretização implementada pode definir-se assim:
Dada uma notı́cia, classificada num conjunto de descritores C = {d1 , d2 , ..., dn } e
um perfil de utilizador P = {T1 , T2 , ..., Tn } onde Tk = {{d1 ’, d2 ’, ..., dn ’}, ... , ...} o
tópico Tk . Esta notı́cia constitui um alerta se a expressão booleana A = aT 1 OR aT 2 OR
... OR aT n for verdadeira, onde aT k é verdade se e só se pelo menos um dos conjuntos
que formam Tk está contido em C.
Concretizando num exemplo, seja uma notı́cia classificada no seguinte conjunto de
descritores:
{ Construção Urbana ; Urbanismo ; Habitação ; Impacto Ambiental ; Ordenamento
Paisagı́stico ; Ecologia ; Ambiente e Energia ; Conselho de Ministros ; Governo ; Organização Polı́tica ; José Sócrates ; Tróia de Setúbal }
e um perfil definido a partir dos seguintes tópicos:
T1 = { { Tribunal } ; { Justiça } ; { Liberdade } }
T2 ={ { Habitação ; Tróia de Setúbal } ; { Indústria ; Tróia de Setúbal } }
T3 = { { Ambiente e Energia ; Tróia de Setúbal } }
T4 = { { Governo ; José Sócrates } ; { Lobbie ; José Sócrates } }
Esta notı́cia constituirá alerta pois aT 3 = verdadeiro e aT 4 = verdadeiro fazem A =
verdadeiro;
Esta implementação do matching condicionou a estrutura da base de dados, em particular as tabelas AlertUser, UserTopic e UserAndDescriptor. A tabela
UserAndDescriptor estabelece a relação entre os tópicos de utilizador (tabela UserTopic)
e os respectivos descritores (tabela Descriptor), constituindo o perfil de utilizador. Os
alertas aT k gerados são armazenados na tabela AlertUser para um pós-processamento
pelo AlertMailer. Apesar desta tabela AlertUser apenas introduzir informação redundante na base de dados a sua existência justifica-se pela necessidade de modularidade na
aplicação, descentralização de processos distintos e pelo facto do MySQL não suportar
42
nested-queries. Recorde-se que o módulo Matcher é partilhado pela aplicação Matching
Service e pelo website, e que neste último caso é usado como aplicação stand-alone.
AlertMailer
Este módulo é responsável pelo tratamento dos resultados do Matcher (alertas),
fazendo a composição dos e-mails a enviar de acordo com esses resultados e algumas
definições dos clientes (estabelecidas no processo de registo).
A forma escolhida para o envio de alertas foi o e-mail. Apesar disso, a estrutura
deste módulo isola o processo de envio e o formato do mail de forma a permitir a sua
futura substituição (p.e. envio de sms, mms, etc.). A figura 4.7 apresenta a estrutura
do AlertMailer.
Figura 4.7: Arquitectura do AlertMailer.
O módulo Mailer é responsável pela interacção com a base de dados e invoca os
módulos acima para composição (MailTextGen) e envio (Email ) dos e-mail s. O módulo
MailTextGen é independente da forma e do tipo de envio dos alertas, para isso recorre
a ficheiros template que estabelecem esse formato (que é em geral dependente também
do tipo de envio). Os templates implementados estabelecem dois formatos de e-mail :
plain-text e HTML. Este formato é escolhido no momento de registo pelo cliente, sendo
registado no atributo MailFormat da tabela User. Para apresentação de resultados foram
criados dois outros formatos que estabelecem a ordenação dos resultados no mail, esta
escolha é também efectuada pelo cliente no processo de registo sendo armazenado no
atributo MailStoryOrder da tabela User. O módulo Sender é responsável apenas pelo
envio estabelecendo o respectivo protocolo. A implementação deste módulo trata do
processo de envio de alertas por e-mail.
Os templates (ver anexo F dividem-se em header, footer, report e topicheader que
estabelecem respectivamente o cabeçalho, o rodapé, notı́cia e tópico. Os report são
definidos tendo em conta a informação (apresentada na tabela 4.21) que se pretende fazer
chegar ao cliente. Para cada item de informação definiu-se uma string que é substituı́da
pelo respectivo valor pelo módulo MailTextGen, no processo de composição.
43
Plain-text
HTML
String
{program}
{date}
{duration}
{hitruler}
{baseurl}
{videofile}
{startoff}
{endoff}
{themdom}
{onom}
{onom}
{title}
{summary}
{themtopic}
{onomtopic}
{geotropic}
strings do módulo MailTextGen
Descrição
o nome do programa em que a notı́cia foi difundida
data em que a notı́cia foi difundida
duração da notı́cia
grau de alerta em relação à classificação da notı́cia
link para acesso ao vı́deo que corresponde à notı́cia
ficheiro de video do programa
offset de inı́cio da notı́cia relativamente ao inı́cio do programa
offset de fim da notı́cia relativamente ao inı́cio do programa
tópico geral em que se classificou a notı́cia
tópico especializado em que se classificou a notı́cia
sub-tópico especializado em que se classificou a notı́cia
tı́tulo gerado para a notı́cia
sumário gerado para a notı́cia
descriptor(es) temático(s) que constituem o alerta
descriptor(es) onomástico(s) que constituem o alerta
descriptor(es) geográfico(s) que constituem o alerta
Tabela 4.21: Tabela de strings do módulo MailTextGen
A apresentação das notı́cias é feita de acordo com os formatos apresentados na secção
3.7. A composição dos mails para o formato 1 obtém-se a partir da concatenação dos
templates:
header, report , report , . . . footer
E o formato 2 obtém-se a partir de: header, topicheader, report , report , . . . , topic-
44
header, report , report , . . . footer
em que os topicheader templates são:
Plain-text
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
Topico: {themtopic}
Onomastico: {onomtopic} Geografico: {geotopic}
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
HTML
O grau de alerta em relação à classificação da notı́cia, apresentado pela string {hitruler},
é um valor em percentagem obtido a partir do valor médio do conjunto dos descritores que
classificam a notı́cia e constituı́ram o alerta. Concretizando com o exemplo apresentado
anteriormente:
{ Construção Urbana (0.90); Urbanismo (0.80); Habitação (0.70); Impacto Ambiental
(0.60); Ordenamento Paisagı́stico (0.30); Ecologia (0.15); Ambiente e Energia (0.20);
Conselho de Ministros (0.80); Governo (0.70); Organização Polı́tica (0.30) José Sócrates
(0.90); Tróia de Setúbal (0.85)}
os tópicos que constituı́ram alerta formam:
T3 = { { Ambiente e Energia ; Tróia de Setúbal } }
T4 = { {Governo ; José Sócrates } ; { Lobbie ; José Sócrates } }
viria para grau de alerta:
(0.20 + 0.85 + 0.70 + 0.90) / 4 = 0.6625
e a string {hitruler} seria: I*******
I 66%
Também aqui se optou por uma solução simples obtida directamente a partir de um
query fazendo uso do operador AVG de SQL. No apêndice D apresentam-se exemplos de
alertas enviados pelo sistema.
Configuração
A configuração do Matching Service é feita através da edição de propriedades nos
seguintes ficheiros:
45
• configuração de instalação:
– dbms.cfg - acesso à base de dados
driverClass - driver jdbc
sourceURL - url para acesso à base de dados, sintaxe:
jdbc:dbms://ip-address:port/dbname username e password de acesso à
base de dados
– mailserver.cfg - acesso ao servidor de e-mail logfilename - nome do ficheiro
de registo das operações a nı́vel de e-mail
mail.smtp.host - endereço do servidor de e-mail
definiç~
oes do James - no caso de utilização do servidor de e-mail local
James
– streamer.cfg - acesso do servidor de streaming media clipBaseURL - URL
de acesso aos vı́deos das notı́cias
videoFormat - extensão dos ficheiros de vı́deo
• configuração de implementação:
– matcher.cfg - queries do processo de Matching, são dependentes do alvo
da pesquisa (pesquisa directa website/ perfil para recepção de alertas) e da
estrutura da base de dados.
– mailer.cfg - definições do processo de envio de mail :
useJamesMailServer - usar ou não o servidor de e-mail local James
fromAddress - endereço remetente do e-mail a enviar
subjectText - texto do assunto do e-mail
maxReportsMail - limita para o número de notı́cias recebidas num e-mail
#PlainText Email files - ficheiros de template para e-mail em plain-text
#HTML Email files - ficheiros de template para e-mail em HTML
#queries do módulo AlertMailer dependentes da estrutura da base de dados
Limitações
A aplicação de sucessivos queries para simular nested-queries torna o matching mais
lento pelo que se justificaria, numa implementação real, a utilização de um sistema de
gestão de base de dados (SGBD) com suporte para nested-queries para um relativo ganho
de performance. Da mesma forma se reduziria a necessidade de informação redundante
na base de dados, reduzindo-se a dimensão em disco da base de dados.
46
Também se justificaria a utilização de outro SGBD, com suporte para triggers e
stored-procedures, pois evitar-se-ia o processamento acrescido pelo processo de pooling
do Matching Service.
A estrutura do AlertMailer permite a substituição do processo de envio de alertas
no entanto, uma abordagem mais abrangente seria o suporte para diferentes processos
de envio simultaneamente. Deveria ter sido estabelecido um interface para o módulo
Sender com um método público send.
4.5
Streaming
Uma vez escolhido o Real Server para efectuar o streaming dos conteúdos multimédia
(vı́deo e legendagem) que se pretendiam servir ao cliente SSNT. Houve então que realizar
várias tarefas quer a nı́vel da configuração deste servidor, quer ao nı́vel da aplicação
responsável pela geração dessas apresentações a disponibilizar.
Ao nı́vel da configuração do servidor Real Server, que aceita link s para o material
a servir, no formato protocolo://address:port/MountPoint/path/file, utiliza-se o
protocolo RTSP5 . RTSP é um protocolo cliente-servidor, open-standard, desenhado especificamente para servir e difundir em larga escala apresentações multimédia. O porto
utilizado foi o 554. Configurou-se o mountpoint "\" em ”C:\SSNTRM” que contém os
vı́deos em formato Real Video e o mountpoint /mountpoint1/ em ”C:\SSNTSMIL” com
subdivisão por programa através de path que contém os ficheiros das apresentações.
Para visualizar as apresentações das notı́cias no sistema SSNT, utiliza-se a linguagem
SMIL6 conjuntamente com o serviço RTSP efectuado pelo Real Server. Trata-se duma
linguagem baseada em XML, dotada da simplicidade do HTML, que possibilita controlo
sobre o quê, onde e quando ocorrem elementos multimédia (áudio, vı́deo, imagens e
texto) numa apresentação multimédia. Numa apresentação SMIL, todos os elementos
multimédia são referenciados a partir do ficheiro SMIL(.smi ) o que a torna particularmente útil para integrar estes elementos em ambientes multimédia distribuı́dos.
Deste modo, inclui-se na apresentação SMIL, o vı́deo da notı́cia em formato Real
Video e a legendagem é feita recorrendo à inclusão duma apresentação Real Text. Os
ficheiros Real Text (.rt) são em tudo muito semelhantes ao HTML, indicando como e
quando o texto é apresentado. Teve-se pois que proceder à geração de dois ficheiros (o
ficheiro SMIL da apresentação, e o ficheiro Real Text para a legendagem) quando uma
notı́cia dá entrada na BD-SSNT.
Desenvolveu-se uma aplicação em PHP, denominada SMILGenerator que, dado o
ficheiro XML de saı́da na máquina PROCESS gera os ficheiros SMIL e Real Text
necessários ao streaming, criando sub-directorias abaixo do mountpoint /mountpoint1/
para conter os pares de ficheiros SMIL/Real Text de cada uma das notı́cias do XML.
5
6
Real Time Streaming Protocol
Synchronized Multimedia Integration Language
47
Relativamente ao basename descrito em 4.2, adicionou-se um novo campo para o nome
destes ficheiros, que especifica o ı́ndice N da notı́cia dentro do XML. Temos assim:
{aaaa mm dd}−{hh mm ss}−{Nome do Programa}−{ID do Programa}−{N}
O SMILGenerator é executado na máquina SERVICE e pode ser configurado no
ficheiro DBLoaderTriggerConf.inc em C:\DBLoaderTrigger. O SMILGenerator é chamado
aquando do carregamento do XML de saı́da na máquina PROCESS na BD-SSNT, e
todos os ficheiros SMIL e Real Text gerados se encontram disponı́veis a partir desse momento, para serem servidos através dos seus links pelo website ou via e-mail. No caso
do website, tal como se revelou necessário configurar em DBLoaderTriggerConf.inc
aquando da colocação em funcionamento da máquina SERVICE nas instalações da
RTP, o acesso ao serviço HTTP através de SSH7 , implicou dotar o website da possibilidade de gerar ficheiros SMIL temporários adaptados ao nó SSH em uso no INESC,
através dos ficheiros estáticos gerados inicialmente pelo SMILGenerator.8
4.6
4.6.1
Administração
Website
Um módulo adicional que se revelou necessário e de grande utilidade à avaliação
do desempenho do processamento efectuado a montante da máquina SERVICE, foi o
website de administração, cuja estrutura se apresenta no esquema da figura 4.3 na secção
4.3. Esta ferramenta, tal como se apresenta na figura 4.8 (ver também as figuras C.13
e C.14 no apêndice C), permite navegar directamente sobre a estrutura de programas
armazenados na BD-SSNT e visualizar a transcrição total de cada notı́cia, indicando
informação diversa sobre os seus oradores. Adicionalmente permite avaliar os resultados
da transcrição, da segmentação, da classificação e da sumarização.
A página de administração pode ser configurada no ficheiro config.inc.php na directoria htdocs, do servidor Apache. Dotou-se a página de administração duma conta de
acesso, que deve ser inicialmente registada no sistema SSNT, com o username igual ao
indicado em $ADMIN USERNAME no ficheiro de configuração (ex: ”root”). Este utilizador
passa a dispor de acesso directo aos conteúdos disponibilizados pela página de administração. De igual modo, é possı́vel aceder ao website de administração uma vez na conta
pessoal de utilizador, desde que se introduza a password de administração.
Este website, (ver figura 4.8) permite ao administrador, consultar directamente as
notı́cias armazenadas na BD-SSNT, por ordem cronológica e por programa. As transcrições encontram-se agrupadas por orador, reunindo alternadamente por orador, o
7
Secure Shell
esta geração tornou-se necessária em fase de testes devido a não haver URL fixo estabelecido para
o servidor SSNT, acedendo-se a ele através da rede interna da RTP, via SSH.
8
48
Figura 4.8: Página de Administração: Visualização do vı́deo com a apresentação
SMIL/RT.
texto dos TranscriptSegments consecutivos que lhe estão associados. Adicionalmente,
no mesmo bloco, além de indicar o nome do orador caso este pertença à lista de oradores
conhecidos indicada no apêndice B.7, indica-se o seu género e a sua lingua.
Este website revela-se bastante útil para consultar directamente o resultado do processamento da máquina PROCESS duma forma simples, levando à rápida detecção de
erros de processamento, e dotando o sistema ALERT duma ferramenta de análise directa
do desempenho dos algoritmos que implementa na máquina PROCESS.
4.6.2
Parser s
Após a definição da estrutura da base de dados BD-SSNT, houve necessidade de
preencher as tabelas referentes a dados permanentes no sistema, tais como as tabelas:
Category, Descriptor, Speaker, Program, Keyword e Word. Para isso (e para criar um
interface mais simples com o administrador), implementaram-se estes parsers na secção
Back-Office Descritores SSNT da página de administração. No apêndice C apresentamos
nas figuras C.15 e C.16 o interface para carregamento da base de dados. Em todos os
parsers descritos uniformizou-se em XML o formato em que os dados eram fornecidos,
de forma a poder estabelecer uma referência para evoluções futuras. Exemplos desses
formatos podem ser consultados no apêndice B. Estes parsers foram implementados em
PHP através dos handlers EXPAT para XML.
49
4.7
Controlo do Sistema ALERT
O controlo dos blocos finais do sistema ALERT, foi conseguido através da aplicação
DBLoaderTrigger na máquina SERVICE. Esta aplicação foi desenvolvida em PHP, e
é executada por outra aplicação efectuada em C, que periodicamente executa o script
PHP. A figura 4.9, representa esquematicamente as operações envolvidas e a troca de
dados efectuada entre as 3 máquinas.
Figura 4.9: Controlo do sistema efectuado pelo DBLoaderTrigger.
Deste modo as acções desencadeadas pelo DBLoaderTrigger são as seguintes:
• Averigua com intervalos de 60 segundos a existência ou não na máquina CAPTURE, de ficheiros com o mesmo basename e extensões ”.rm”e ”.final ”.
• Caso encontre estes ficheiros
– Copia o ficheiro com extensão .rm para a directoria definida em DBLoaderTriggerConf.inc (directoria esta da máquina SSNT, ver apêndice E).
– Carrega o ficheiro XML presente na directoria PROCESS (I:/) com o DBLoader.
– Envia o XML da máquina PROCESS por e-mail 9 .
– Apaga todos os ficheiros com o basename em uso, da directoria CAPTURE
(H:/).
– Gera as apresentações SMI/RT dentro duma directoria com nome igual ao
basename corrente, localizada em C:/SSNTSMIL (a respectiva configuração é
feita no ficheiro DBLoaderTriggerConf.inc, ver apêndice E).
9
apenas em fase de testes (opcional)
Capı́tulo 5
Considerações Finais
5.1
Análise de Resultados
A estreita colaboração com a RTP através da disponibilização dos meios técnicos
necessários, permitiu colocar o sistema em funcionamento, processando diariamente os
noticiários da noite deste canal. Atendendo aos resultados obtidos durante o tempo
de avaliação, consideram-se atingidos todos os objectivos deste projecto. À data da
elaboração deste relatório uma primeira versão do sistema tinha sido instalada num
ambiente real de teste, há cerca de 2 meses, tendo-se mostrado uma ferramenta efectiva
para o desenvolvimento, análise e avaliação de resultados de todo o sistema ALERT.
Uma segunda versão foi já instalada, adicionando novas funcionalidades e conferindo-lhe
estabilidade acrescida.
5.2
Compromissos do Projecto
Na figura 5.1 apresentam-se os principais trabalhos efectuados ao longo do projecto,
onde é perceptı́vel a evolução temporal de cada um dos blocos. Como se depreende da
análise dos gráficos apresentados, a definição do XML/DTD de transporte de dados entre
as máquinas PROCESS e SERVICE, e a concepção da estrutura da base de dados a
usar para a BD-SSNT, foi o grande passo para basear as aplicações desenvolvidas numa
estrutura de dados fixa. O trabalho de depuração e correcção do DBLoader desenvolvido
pela 4VDO, também ele esteve sujeito a diversas iterações que o levaram a convergir
sucessivamente para a estabilidade, reflectindo as alterações na estrutura da base de
dados inicialmente definida no documento [6].
De referir o trabalho manual que necessitou de ser efectuado às 117 notı́cias que
compunham o conjunto de treino piloto (Pilot Corpus), que consistiu na morosa tarefa
de ultimar a geração manual dos ficheiros XML correspondentes aos 11 programas de
50
51
que era composto. As sucessivas alterações da base de dados BD-SSNT repercutiram-se
ao nı́vel do desenvolvimento de todo o projecto.
A necessidade da criação duma árvore temática padrão, proveitosa na estruturação
temática a apresentar no website foi uma das primeiras tarefas realizadas para criar uma
referência na catalogação das notı́cias do Pilot Corpus, e envolveu o processamento do
thesaurus temático Europeu fornecido pela RTP.
Figura 5.1: Duração do projecto.
Depreende-se da figura 5.1 que de todas as fases do projecto, foram o Desenvolvimento
do Website e do Matching/envio de e-mail as tarefas fundamentais. Para além de terem
sido das que mais tempo de projecto necessitaram, também se prolongaram até ao final
do projecto dada a sua grande dependência de todas as outras tarefas.
5.3
Nota do Autores
O facto de curricularmente a nossa formação não ser especificamente orientada a
tecnologias web, criou alguns obstáculos à implementação deste projecto. No entanto, e
atendendo ao cenário actual de franca expansão deste tipo de tecnologias, consideramos
ter sido uma experiência enriquecedora a vários nı́veis, e um bom complemento à nossa
formação académica.
52
Apêndices
Apêndice A
Estudo de Tecnologias de
Desenvolvimento
53
INSTITUTO SUPERIOR TÉCNICO
DEPARTAMENTO DE ENGENHARIA
ELECTROTÉCNICA E DE COMPUTADORES
SUMARIZAÇÃO DE SERVIÇOS NOTICIOSOS TELEVISIVOS
Trabalho n.º: 608/2001
TECNOLOGIAS DE DESENVOLVIMENTO
Realizado por:
Vitor João Cardoso Pereira n.º 43797 (vpereira)
João Miguel Duarte Gaspar n.º 42358 (jgaspar)
Orientado por:
Prof. João Paulo Neto
Eng. David Matos
Realizado no:
L2F – Laboratório de Sistemas de Lingua Falada, INESC ID Lisboa
Licenciatura em Engenharia Electrotécnica e de Computadores
Instituto Superior Técnico
Novembro de 2001
2001/2002
54
1. Objectivos
Este documento pretende apresentar as ferramentas de software disponíveis no mercado
para a implementação do projecto. Começamos por clarificar as necessidades e depois
apresentamos as diferentes ferramentas identificadas, de tal forma a que se possa fazer uma
escolha adequada. Abordam-se diferentes critérios para facilitar a sua escolha. São exemplos
desses critérios:
1.
2.
3.
4.
5.
6.
7.
Facilidade de implementação
Portabilidade
Custos de implementação no projecto
Adequação à plataforma alvo
Documentação
Ferramentas de desenvolvimento
know-how
2. Introdução
Como vimos anteriormente, necessitaremos de um WebServer, de um DataBase
Server e de acesso a um MailServer, bem como ferramentas de desenvolvimento de acordo
com as diferentes linguagens a usar. Este software pode dividir-se em 2 grandes grupos, de
acordo com a plataforma de desenvolvimento: Linux e Microsoft. Embora, de um modo geral,
todas as linguagens de programação sejam compatíveis com os diferentes pacotes de software
de implementação, reduziremos a nossa abordagem às combinações mais usadas no mercado.
No presente documento, identifica-se a necessidade da utilização dum servidor de Streaming
Media para prestar o serviço do RealVideo1 .
A tabela seguinte apresenta o software abordado paras as plataformas Windows e Linux:
Microsoft
Linux
WebServer/MailServer
MS IIS – Microsoft Internet Information System
Apache
Zope
Apache
Zope
DataBase Servers
MS SQL Server
MS Access
MySQL
DB2
Oracle
MySQL
DB2
Oracle
SQL Anywhere
SQL Anywhere
Dynamic WebSites Development
ASP – Active Server Pages (Linguagens: VBScript; Jscript; JavaScript)
PHP (descende da linguagem Perl)
JSP – JavaServer Pages (Linguagem: Java)
Tabela 1) Software analisado: Microsoft vs Linux
1
Nesta fase de projecto encontra-se por clarificar, a necessidade do uso local dum servidor de Streaming Media.
55
3. xServer ? Porquê?
A necessidade de implemetar um sistema servidor no nosso PC surge do simples facto
de desenvolver um sistema que presta um serviço Cliente/Servidor. O servidor será então
responsável pela implementação do serviço.
3.1 Web Server
Todas os websites estão armazenadas num WebServer, sendo este responsável por
responder a pedidos de páginas via browser2 numa máquina cliente presente ou com acesso à
rede do WebServer. Para instalar, configurar e inicializar um website orientado a conteúdos,
há necessidade de permissões de administração do servidor, pelo que se tornará complexo
fazê-lo sem ser o administrador desse servidor.
Para efeitos de desenvolvimento recomenda-se que o WebServer esteja off-line, e para
que não se interfira em eventuais websites já existentes a solução será tê-lo no nosso PC,
inacessível além da LAN do INESC.
3.2 Dynamic WebSite
A capacidade de um website prestar um serviço reflecte-se na sua capacidade de ter um
comportamento dinâmico. Um simples website em plain-HTML não apresenta capacidade de
implementar uma aplicação/serviço. Assim, o website a implementar será dinâmico desde a
simples necessidade de recolher dados introduzidos na página pelos clientes, até à
necessidade de apresentar resultados de query’s às bases de dados (vídeos, resumos, etc.).
3.3 DataBase Server
A necessidade de uma base de dados foi plenamente justificada anteriormente.
Atendendo ao sistema real, que pretendemos simular, verificamos a necessidade de gestão de
grandes quantidades de informação. O modo de gerir toda esta informação de uma forma
rápida e eficaz será implementar um database management system (DBMS). Ter uma
aplicação de servidor (DataBase Server) surge da necessidade de processar pedidos de
“clientes” da rede e de gerir o acesso à base de dados. Como vantagens da implementação de
um servidor de base de dados temos: segurança de dados, aumento da velocidade no acesso
concorrente a dados e diminuição do tráfego de rede.
3.4 Mail Server
Dado que o sistema terá de ser capaz de fazer distribuição de informação por e-mail
necessita de recorrer a este tipo de serviço. Normalmente o serviço de envio de e-mail está
incluído nos serviços de um WebServer e portanto garantido na medida em que este exista.
3.5 Streaming Media Server
Para efectuar o streaming dos ficheiros de vídeo das Peças, dispomos de 3 possíveis
soluções:
2
Não exclusivamente
56
§ Sistema de partilha de ficheiros – dando acesso por rede local a uma directoria
partilhada
§ HTTP streaming
§ RTSP – Real Time Streaming Protocol
Destas a última solução será implementada no sistema real (adoptada actualmente pela
RTP).
4. Comparação de Plataformas
4.1 WebServers
Considerando que uma grande percentagem (estima-se que em Portugal sejam 98%) dos
potenciais clientes deste sistema usam o browser Internet Explorer da Microsoft podíamos ser
levados a pensar que estaríamos limitados a um sistema servidor implementado em tecnologia
Microsoft. Tal não corresponde à realidade, o sistema servidor e o sistema cliente funcionam
de forma independente, apenas se tem de garantir a compatibilidade do browser.
4.1.1 MS IIS
Apresenta-se com uma documentação de qualidade. Suporta ASP (active server pages) e
PHP para a criação de websites dinâmicos (também suporta JSP mas necessita de um plugin).
Permite o acesso via browser clients a dados em várias bases de dados (entre as quais as
apresentadas neste documento). Inclui uma Mail API (MAPI) que permite implementar envio
de e-mail.
O desenvolvimento de websites para o IIS é plenamente suportado pelo MS Visual
InterDev, que apresenta todas as ferramentas necessárias ao desenvolvimento de websites
dinâmicos com ASPs. O IIS 5.0 está directamente disponível na distribuição do MS
Windows2000 (apenas permite um website na versão Professsional, o que é suficiente para o
desenvolvimento do projecto).
4.1.2 Apache
Concebido originalmente para plataforma Unix está também disponível para a
plataforma Microsoft. Relativamente ao IIS estima-se para o Apache um tempo de downtime
aproximadamente metade. [12] Trata-se da alternativa mais sonante ao MS IIS, amplamente
utilizada pela sua robustez e fiabilidade, fornecendo documentação detalhada para todos os
seus módulos. O Apache é gratuito (open source) e estima-se que seja este o utilizado em
cerca de 65% dos WebServers. [18]
4.1.3 MS IIS vs Apache on Windows
O Apache é mais fiável no que toca a segurança, relativamente ao IIS 5.0.
A manutenção de servidores IIS é um processo pesado e tedioso. Devido a problemas de
segurança, o custo humano para manutenção do website é mais elevado.[1]
57
A última versão do IIS (5.0) contém notáveis melhorias de performance e segurança, o
que denota o esforço da Microsoft para resolução dos problemas do IIS. As suas ferramentas
de administração estão bem integradas o que lhe confere grande facilidade de instalação e
configuração.[2]
4.1.4 Zope
O pacote Zope disponível para MS Windows/Linux, popularizado pela sua facilidade de
utilização na gestão de conteúdos, bem como pelo facto de ser gratuito (open source), é
fornecido com um webserver, o que constitui uma alternativa ao Apache e ao Microsoft
IIS.[6]
O uso desta ferramenta integrada de desenvolvimento de aplicações de conteúdos web é
dissuadido pelo facto de todo o pacote carecer de documentação. Comparativamente ao
Apache, é criticamente mais lento na satisfação dos pedidos.[7][8][17].
4.2 DataBase Servers
4.2.1 MS Access
A sua documentação é escassa, no que toca a sua utilização como servidor via Web.
O MS Access é limitado em desempenho quando trata grandes quantidades de
informação e quando está sujeito a acessos concorrentes.
É uma solução barata mas em termos de portabilidade bastante limitada. A sua
portabilidade só é possível para MS SQL Server e ainda assim o processo não é simples. Isto
porque o Access, ao contrário da maioria das bases de dados, não é uma base de dados
relacional mas sim uma base de dados de ficheiros ISAM (Indexed Sequential Access
Method). Este facto justifica também o baixo desempenho do Access em termos de
velocidade, pois em modo Servidor, quando responde a um query retorna todo o ficheiro no
qual se encontram os dados do resultado da pesquisa. Também aqui se comporta de forma
diferente da generalidade dos servidores de bases de dados que retornam apenas os dados do
resultado da pesquisa.
A sua conectividade a outras bases de dados só é possível se essas outras tiverem um
ODBC driver.
Por todas estas questões consideramos desaconselhável a escolha do MS Access para o
nosso projecto.
4.2.2 MS SQL Server 2000
Para aplicações orientadas ao modo servidor a funcionar via web a Microsoft
disponibiliza o MS SQL Server. [14]
Em termos de requisitos de instalação será suficiente o S.O. Windows 2000
Professional que temos instalado no nosso PC, em termos de hardware este está além do
58
mínimo recomendado. A Microsoft disponibiliza uma versão de avaliação por um período de
120 dias.
O MS SQL Server é uma base de dados relacional e como tal comporta todas as
vantagens de uma base de dados deste tipo. Ao contrário do Access o MS SQL Server contém
mecanismos de segurança no que toca a acesso concorrente para escrita de dados.
Somos levados a considerar esta uma boa opção relativamente ao MS Access, pois o
custo da portabilidade em Access é de tal forma elevado que teria que se repensar toda esta
parte do projecto.
4.2.3 MS SQL Server vs Oracle
Existe uma versão de base de dados Oracle gratuita limitada para efeitos de
desenvolvimento que, ao contrário do MS SQL Server, não é uma versão de avaliação não
estando limitada no tempo. [15]
Trata-se de software para aplicações profissionais complexas e tem um tempo de
aprendizagem elevado. Apresenta melhor desempenho que o MS SQL Server para acesso a
dados concorrente de um elevado número de clientes. Desempenho esse apenas superável
com um n.º de servidores MS SQL maior. [3]
Em termos de documentação, a existente em bases de dados Oracle parece suficiente
mas em menor quantidade que a de MS SQL Server. À semelhança do MS Interdev, existe
também uma ferramenta de desenvolvimento para bases de dados Oracle (Oracle Internet
Developer Suite).[21]
A grande desvantagem do MS SQL Server é o facto de ser apenas suportado em S.O.
Microsoft e hardware Intel ou Alpha.
4.2.4 DB2
Disponível para ambas as plataformas é uma base de dados relacional da IBM. Está
disponível uma versão de avaliação de 90 dias. O acesso a uma base de dados deste tipo é
feita por um driver, exemplo: ODBC (para C/C++) ou JDBC (para Java). Trata-se de um
software para aplicações profissionais complexas e tem um tempo de aprendizagem elevado.
A documentação disponível parece suficiente. Em termos das ferramentas de
desenvolvimento existe um plug-in para MS Visual C++, e um pacote de ferramentas da IBM
para Java (para ambas as plataformas).[16]
4.2.5 MySQL
O MySQL é bastante rápido, devendo ser tido em conta caso seja a rapidez o factor de
que se dependa. [4]
O MySQL será apenas comparável a outras bases de dados de maiores dimensões se
considerarmos aplicações em que se disponibilizem essencialmente conteúdos já existentes
(SELECT). Caso se pretendam efectuar inserções (INSERT) ou alterações (UPDATE), o
MySQL revela-se desvantajoso, dada a quebra de performance a servir estas querys. [9]
59
Comparativamente ao SQL Server 2000, para o qual temos disponível uma versão de
avaliação por 120 dias, o MySQL é gratuito para efeitos de desenvolvimento de projectos
académicos, e relativamente à documentação disponível, os recursos parecem ser menores,
ainda assim suficientes.
4.2.5 SQL Anywhere
O SQL Anywhere é uma base de dados relacional (RDBMS) da Sybase. Trata-se de um
produto comercial para aplicações profissionais, sendo disponibilizada uma versão de
avaliação de 60 dias (SQL Anywhere Studio).
Salientam-se as seguintes características, de acordo com a Sybase[23]:
§ RDMS full SQL, isto é, possui as capacidades de um RDMS completo;
§ económico do ponto de vista de hardware quando comparado com outros RDMS,
considerado portanto de alta performance;
§ é escalável, isto é, pode gerir uma mesma base de dados em vários CPUs;
§ tem suporte para ODBC e JDBC;
§ corre em múltiplas plataformas (incluindo Microsoft e Linux).
Comparativamente às outras bases de dados aqui apresentadas trata-se de um produto
simultaneamente profissional e de fácil aprendizagem. De notar também que, em termos de
know-how, esta é a base de dados recomendada na disciplina de Bases de Dados, da LEIC,
frequentada este semestre por Vitor Pereira.
Em termos de documentação, a existente parece ser escassa, mas os manuais dos
produtos Sybase estão bastante completos.
4.3 Streaming Media Server
Se se utilizar o webserver para servir o RealVideo, o link na página web aponta
directamente para o ficheiro que se pretende servir, pelo que quando o cliente “clica” nesse
link o webserver responde com um cabeçalho (MultiPurpose Internet Mail Extensions)
MIME-type, que lança o video player, procedendo em seguida ao envio de todo o ficheiro de
vídeo ao cliente via HTTP. Apesar do HTTP streaming ser uma forma simples e não
dispendiosa de servir vídeo (possibilitando a visualização do ficheiro antes do downlink estar
terminado, bem como a possibilidade de facultar ao cliente uma cópia local da Peça), revelase desapropriado para os objectivos da SSNT, dado se pretender servir as peças (já
previamente delimitadas temporalmente), constantes no ficheiro de vídeo relativo a toda a
emissão do programa.
Através do uso de protocolos como o Real Time Streaming Protocol (RTSP), os
servidores de Streaming Media, oferecem outras funcionalidades. Entre várias vantagens do
uso dum Streaming Media Server, tais como a capacidade de temporização de toda a
apresentação, multicasting, etc, salienta-se a possibilidade de poder controlar os tempos de
início e fim da visualização da peça, sem a necessidade de proceder ao envio de todo o
ficheiro. Em RTSP quando o pedido chega ao webserver, este responde com um cabeçalho
MIME-type que inicia o video player, seguido por um curto ficheiro de texto (meta-ficheiro),
60
que o direcciona para o Streaming Media Server. Controla-se deste modo o acesso e
visualização exclusiva da Peça pretendida no interior do programa.
Para o streaming, identificam-se 3 diferentes formatos de meta-ficheiros, ( “linkados” a
partir da página web e servidos pelo webserver, que lança o streaming-media player e o
direcciona para o ficheiro específico no streaming-media server ), cada um deles com sintaxe
e capacidade únicas:
§ RealNetworks - Formato .ram que consiste dum simples URL, ou SMIL
(Synchronized Multimedia Integration Language), lido pelo RealPlayer (com
suporte para Windows e Linux).
§ Microsoft – Formato .asx, lido pelo Windows Media Player (suportado apenas em
Windows).
§ Apple – Formato .mov , lido pelo QuickTime 4.0 (com suporte para Windows e
Linux).
Considerando o formato de vídeo disponível da RTP, é recomendável a solução da
RealNetworks: RealServer/RealPlayer. As versões disponíveis para o RealServer são as
seguintes:
§ RealSystem Server está limitada a 25 stream counts (ou 12 meses ),
§ RealSystem Server Intranet limitado a 30 dias.
5. Dynamic WebSite Development
5.1 ASP com MS VBScript
O ASP consiste uma forma eficiente de retornar conteúdos dinâmicos, apesar de limitar
o seu uso essencialmente a plataformas Microsoft e o mais pequeno erro no script pode levar
o servidor ao crash ou ao stall, colocando em baixo o website [10].
O ASP integra automaticamente linguagens Microsoft, limitadas ao monopólio a que se
assiste em todo o software e plataformas de desenvolvimento deste fabricante (webserver:
Microsoft IIS ou Personal Web Server; plataformas: Microsoft Windows – aceder a outras
plataformas requer produtos adicionais para portar o ASP ). [13]
Qualquer que seja a linguagem de scripting a usar para o lado cliente, temos que nos
certificar que o browser cliente a suporta. O MS Visual InterDev é a ferramenta de
desenvolvimento por excelência para esta combinação (ASPs com MS VBScript).
5.2 PHP (vs ASP)
Em alternativa à combinação anterior (ASP/MS VBScript) temos o PHP, desenhado
para integrar no WebServer Apache, mas também funciona no IIS. È gratuito, o seu source
code está disponível, e existe uma grande quantidade de documentação disponível.
O PHP é a alternativa opensource ao ASP que corre em múltiplos S.O.s incluindo MS
Windows e Linux. Face ao ASP, o PHP revela algumas vantagens: consideravelmente mais
61
rápido, linguagem semelhante ao C++/Java (mais fácil de aprender que o VBScript) e gestão
de memória melhorada, embora o IIS 5.0 resolva este problema em Windows 2000. [9]
Em termos de compatibilidade e portabilidade é superior à combinação anterior pois está
desenvolvido de uma forma modular que permite a utilização de diferentes interfaces. Entre
os quais temos módulos para as bases de dados que aqui apresentamos. Contém também
ODBC drivers e ferramentas de parsing de XML3 .
Em termos de portabilidade e compatibilidade esta seria a opção certa mas, como não
encontramos qualquer ferramenta de desenvolvimento, o que constitui uma limitação
importante, consideramos a combinação anterior preferível. De notar que, ambas as
alternativas não acarretam quaisquer encargos. [5]
5.3 JSP (vs ASP)
Como alternativa ao ASP ou ao PHP temos a tecnologia JavaServer Pages (JSP) da Sun
Microsystems, baseada na linguagem Java, herdando a sua hierarquia de classes. O JSPs
suporta a mesma modularidade, independência de plataformas (característica "Write Once,
Run AnywhereTM" da tecnologia Java), separando os conteúdos gráficos, dos conteúdos
dinâmicos. O facto de o JSP suportar Java no seu código (e possuir maior número de
distribuições), consiste uma vantagem relativamente ao ASP que cria duas novas linguagens
de script para esse efeito: JScript e VBScript. [10]
O JSP revela-se similar ao ASP na geração dinâmica de páginas web do lado do
servidor, é-lhe permitida programação modular (e.g. Active X, JavaBeans) e centram as suas
atenções na conectividade a bases de dados. Em contrapartida, ASP é um produto enquanto
que JSP é uma especificação. [11]
As aplicações com JSPs são mais fáceis de manter e mais rápidas que as baseadas em
ASPs. As JSPs primam pela portabilidade através de JavaBeans/Enterprise JavaBeans/custom
JSP tags, estão dotadas de segurança contra crashes de sistema, tem protecção contra memory
leaking, características que não são contempladas na tecnologia ASP.
A tecnologia JSP aplica-se a qualquer webserver, incluindo Apache e IIS. Para além das
plataformas mais populares as JSPs podem ser implementadas sobre MS Windows e Linux.
[13][19]
Relativamente à ferramenta de desenvolvimento para JSP dispomos do VisualAge (IDE4
da IBM para Windows), do qual existe uma versão gratuita. [20], e do Forte for Java (IDE da
Sun para várias plataformas) O uso de ASPs no scripting do website, está contemplada no
ambiente integrado MS Interdev.
6. Combinações a ponderar
Do estudo realizado às tecnologias descritas, somos levados a isolar algumas
combinações possíveis que nos pareceram, de acordo com o acima exposto, as mais
adequadas ao sistema a desenvolver. A escolha da combinação especifica do software a usar,
3
4
A MS disponibiliza XMLSDK para programação com ASP’s
IDE – Integrated Development Environment
62
tentará ser condicionada por esta análise, cientes de que outra opção pudesse levar a
resultados semelhantes.
figura 1) Espaço da Solução (Windows2000 /Linux)
Esquematicamente apresenta-se na figura 2 um diagrama UML dos componentes do
sistema a implementar explorando o posicionamento de tecnologias.
São combinações mais frequentes os seguintes conjuntos de plataformas/ webservers/
bases de dados/ linguagens de scripting:
1.
2.
3.
4.
5.
MS Windows2000 + MS IIS5.0 + MS SQL Server + ASP
MS Windows2000 + MS IIS5.0 + Oracle + ASP
MS Windows2000 + Apache + MySQL+ PHP
Linux + Apache + MySQL+ PHP
Linux + Apache + MySQL+ JSP
A combinação de ferramentas a escolher irá reflectir os critérios de selecção
apresentados nos objectivos.
7. Outras Aplicações
Referimos por fim as linguagens a utilizar nas aplicações que implementam as
componentes de processamento para introdução das Peças em BD-PEÇAS, e de serviço
(aplicação dedicada ao envio de email).
As linguagens mais difundidas para o efeito são o C/C++ e o Java. Dada a
disponibilidade no INESC e a possibilidade de acesso gratuito (através de versões freeware) a
ambientes de desenvolvimento/compiladores/debuggers para ambas as linguagens, tais como:
§ MS Visual C++;
§ Forte for C++/Java (Sun);
§ VisualAge (IBM);
63
§ CodeWarrior (MetroWerks);
Optar-se-á pelo IDE (Integrated Development Environment), que mais se ajuste à
plataforma escolhida.
64
8 Referências
MS IIS vs Apache
[1] http://dgl.com/itinfo/2001/it010723.html
[2] http://serverwatch.internet.com/reviews/web-msiisv5.html#whatsnew
MS SQL Server vs Oracle
[3]http://databases.about.com/gi/dynamic/offsite.htm?site=http%3A%2F%2Fwww.inf
oworld.com%2Farticles%2Fop%2Fxml%2F00%2F06%2F19%2F000619oprx.xml
MySQL
[4]http://openacs.org/philosophy/why-not-mysql.html
PHP
[5]Core PHP Programming – Leon Hatkinson
Zope
[6] http://www.zope.org/Members/michel/ZB/IntroducingZope.dtml
[7] http://www.zope.org/Members/BwanaZulia/benchmarks.html
[8] http://groups.yahoo.com/group/zope-pt/message/82
ASP
[9] http://php.weblogs.com/php_asp_7_reasons
JSP
[10] http://daysite.net/programming/jsp.htm
[11] http://sern.ucalgary.ca/Courses/CPSC/547/W2000/slides/JSP.htm
[12] http://slashdot.org/apache/00/02/07/0611206.shtml
[13] http://java.sun.com/products/jsp/jsp-asp.html
Outros
[14] http://www.microsoft.com/
[15] http://www.oracle.com/
[16] http://www.ibm.com/
[17] http://www.zope.com/
[18] http://www.apache.org/
[19] http://java.sun.com
[20] www.borland.com
[20] www.metrowerks.com
[21] http://technet.oracle.com/products/ids/content.html
[22] http://www.php.net
[23] http://www.sybase.com
65
Apêndice B
XML
66
67
B.1
DTD Alert-pt
DTD definida para o Sistema SSNT/ALERT
<?xml version="1.0" encoding="UTF-8"?>
<!--Based on the DTD of the ECHO project-->
<!--Adapted by the ALERT project for additional data handling-->
<!--Portuguese Extension -->
<!ELEMENT Transcript (VersionGUID, StorySegment*)>
<!ELEMENT StorySegment (StoryType?, (TranscriptSegment | VideoClass)+, (UserProfileList? |
(ThematicDescriptorList?, GeographicDescriptorList?, OnomasticDescriptorList?, Title?, Abstract?,
StoryRepresentation?)))>
<!ELEMENT TranscriptSegment (TranscriptGUID, AudioType+, Speaker?, Bandwidth?, SpeakerLanguage?, Time,
TranscriptWordList?)>
<!--#################### Start GUID Declarations ###################-->
<!ELEMENT VersionGUID (#PCDATA)>
<!ELEMENT TranscriptGUID (#PCDATA)>
<!--#################### End GUID Declarations ####################-->
<!ELEMENT StoryType (#PCDATA)>
<!-- report, filler, nontrans -->
<!ELEMENT UserProfileList (UserProfile*)>
<!ELEMENT ThematicDescriptorList (Descriptor*)>
<!ELEMENT OnomasticDescriptorList (Descriptor*)>
<!ELEMENT GeographicDescriptorList (Descriptor*)>
<!ELEMENT TranscriptWordList (Word*)>
<!ELEMENT StoryRepresentation (RelevantWord*)>
<!ELEMENT Time EMPTY>
<!ATTLIST Time
start CDATA #REQUIRED
end CDATA #REQUIRED
reasons CDATA #REQUIRED
>
<!-- music, speech, noise, ... -->
<!ELEMENT AudioType (#PCDATA)>
<!ATTLIST AudioType
start CDATA #REQUIRED
end CDATA #REQUIRED
>
<!-- known: T | F -->
<!ELEMENT Speaker EMPTY>
<!ATTLIST Speaker
id CDATA #IMPLIED
name CDATA #IMPLIED
gender CDATA #IMPLIED
known CDA TA #IMPLIED
>
<!-- PT / EN / FR / ... -->
<!-- native: T | F -->
<!ELEMENT SpeakerLanguage (#PCDATA)>
<!ATTLIST SpeakerLanguage
native CDATA #IMPLIED
>
<!-- type: Report, Cut, PivotOn, ... -->
<!ELEMENT VideoClass EMPTY>
<!ATTLIST VideoClass
start CDATA #REQUIRED
end CDATA #REQUIRED
type CDATA #REQUIRED
>
<!ELEMENT UserProfile (#PCDATA)>
<!ATTLIST UserProfile
id CDATA #IMPLIED
>
<!ELEMENT Descriptor (#PCDATA)>
<!ATTLIST Descriptor
id CDATA #IMPLIED
conf CDATA #IMPLIED
>
68
<!ELEMENT Word (#PCDATA)>
<!ATTLIST Word
start CDATA #IMPLIED
end CDATA #IMPLIED
conf CDATA #IMPLIED
>
<!-- ocurrTranscList: string with list of transcriptsegments order number in story: "0,1,5" -->
<!ELEMENT RelevantWord (#PCDATA)>
<!ATTLIST RelevantWord
id CDATA #REQUIRED
ocurr CDATA #REQUIRED
ocurrTranscList CDATA #REQUIRED
>
<!ELEMENT Title (#PCDATA)>
<!ELEMENT Abstract (#PCDATA)>
<!ELEMENT Bandwidth (#PCDATA)>
<!-- Studio, Telephone -->
<!ELEMENT Gender (#PCDATA)>
<!-- M, F -->
69
70
B.2
XML Exemplo
1ª notícia do ficheiro 2000_04_06-20_15_24-Telejornal-1.xml do PilotCorpus
StorySegment completo
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE Transcript SYSTEM "alert-pt.dtd">
<Transcript>
<VersionGUID>2000_04_06-20_15_24-Telejornal-1</VersionGUID>
<StorySegment>
<StoryType>nontrans</StoryType>
<TranscriptSegment>
<TranscriptGUID>1</TranscriptGUID>
<AudioType end="3027.251" start="2117.851">clean</AudioType>
<Time end="3027.251" reasons="" start="2117.851"/>
</TranscriptSegment>
</StorySegment>
<StorySegment>
<StoryType>filler</StoryType>
<TranscriptSegment>
<TranscriptGUID>2</TranscriptGUID>
<AudioType end="3091.551" start="3027.251">clean</AudioType>
<Speaker gender="M" id="70" known="T" name ="José Rodrigues dos Santos"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="3091.551" reasons="" start="3027.251"/>
<TranscriptWordList>
<Word conf ="0.254203" end="3048.681" start="3027.251">boa</Word>
<Word conf ="0.468844" end="3091.551" start="3048.681">noite</Word>
</TranscriptWordList>
</TranscriptSegment>
</StorySegment>
<StorySegment>
<StoryType>report</StoryType>
<TranscriptSegment>
<TranscriptGUID>3</TranscriptGUID>
<AudioType end="3465.051" start="3091.551">shh</AudioType>
<Speaker gender="M" id="70" known="T" name ="José Rodrigues dos Santos"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="3465.051" reasons="" start="3091.551"/>
<TranscriptWordList>
<Word conf ="0.254203" end="3125.501" start="3091.551">a</Word>
<Word conf ="0.468844" end="3159.461" start="3125.501">psp</Word>
<Word conf ="0.195405" end="3193.411" start="3159.461">e</Word>
<Word conf ="0.288861" end="3227.371" start="3193.411">a</Word>
<Word conf ="0.864396" end="3261.321" start="3227.371">gnr</Word>
<Word conf ="0.062341" end="3295.281" start="3261.321">vão</Word>
<Word conf ="0.521473" end="3329.231" start="3295.281">investigar</Word>
<Word conf ="0.251169" end="3363.191" start="3329.231">os</Word>
<Word conf ="0.207294" end="3397.141" start="3363.191">pequenos</Word>
<Word conf ="0.131041" end="3465.051" start="3397.141">crimes</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>4</TranscriptGUID>
<AudioType end="3991.251" start="3465.051">shh</AudioType>
<Speaker gender="M" id="70" known="T" name ="José Rodrigues dos Santos"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="3991.251" reasons="" start="3465.051"/>
<TranscriptWordList>
<Word conf ="0.254203" end="3500.131" start="3465.051">são</Word>
<Word conf ="0.468844" end="3535.211" start="3500.131">novas</Word>
<Word conf ="0.195405" end="3570.291" start="3535.211">regras</Word>
<Word conf ="0.288861" end="3605.371" start="3570.291">para</Word>
<Word conf ="0.864396" end="3640.451" start="3605.371">libertar</Word>
<Word conf ="0.062341" end="3675.531" start="3640.451">a</Word>
<Word conf ="0.521473" end="3710.611" start="3675.531">judiciária</Word>
71
<Word conf ="0.251169" end="3745.691" start="3710.611">para</Word>
<Word conf ="0.207294" end="3780.771" start="3745.691">a</Word>
<Word conf ="0.131041" end="3815.851" start="3780.771">investigação</Word>
<Word conf ="0.731012" end="3850.931" start="3815.851">de</Word>
<Word conf ="0.444258" end="3886.011" start="3850.931">crimes</Word>
<Word conf ="0.243464" end="3921.091" start="3886.011">mais</Word>
<Word conf ="0.345592" end="3991.251" start="3921.091">complexos</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>5</TranscriptGUID>
<AudioType end="4661.651" start="3991.251">shh</AudioType>
<Speaker gender="M" id="70" known="T" name ="José Rodrigues dos Santos"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="4661.651" reasons="" start="3991.251"/>
<TranscriptWordList>
<Word conf ="0.254203" end="4019.181" start="3991.251">o</Word>
<Word conf ="0.468844" end="4047.121" start="4019.181">governo</Word>
<Word conf ="0.195405" end="4075.051" start="4047.121">diz</Word>
<Word conf ="0.288861" end="4102.981" start="4075.051">que</Word>
<Word conf ="0.864396" end="4130.921" start="4102.981">o</Word>
<Word conf ="0.062341" end="4158.851" start="4130.921">envolvimento</Word>
<Word conf ="0.521473" end="4186.781" start="4158.851">da</Word>
<Word conf ="0.251169" end="4214.721" start="4186.781">psp</Word>
<Word conf ="0.207294" end="4242.651" start="4214.721">e</Word>
<Word conf ="0.131041" end="4270.581" start="4242.651">da</Word>
<Word conf ="0.731012" end="4298.521" start="4270.581">gnr</Word>
<Word conf ="0.444258" end="4326.451" start="4298.521">vai</Word>
<Word conf ="0.243464" end="4354.381" start="4326.451">permitir</Word>
<Word conf ="0.345592" end="4382.321" start="4354.381">combater</Word>
<Word conf ="0.976728" end="4410.251" start="4382.321">os</Word>
<Word conf ="0.500296" end="4438.181" start="4410.251">crimes</Word>
<Word conf ="0.766026" end="4466.121" start="4438.181">de</Word>
<Word conf ="0.972840" end="4494.051" start="4466.121">uma</Word>
<Word conf ="0.900908" end="4521.981" start="4494.051">forma</Word>
<Word conf ="0.324886" end="4549.921" start="4521.981">mais</Word>
<Word conf ="0.647819" end="4577.851" start="4549.921">rápida</Word>
<Word conf ="0.219101" end="4605.781" start="4577.851">e</Word>
<Word conf ="0.466351" end="4661.651" start="4605.781">eficaz</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>6</TranscriptGUID>
<AudioType end="4946.951" start="4661.651">shh</AudioType>
<Speaker gender="M" id="70" known="T" name ="José Rodrigues dos Santos"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="4946.951" reasons="" start="4661.651"/>
<TranscriptWordList>
<Word conf ="0.254203" end="4690.181" start="4661.651">mas</Word>
<Word conf ="0.468844" end="4718.711" start="4690.181">o</Word>
<Word conf ="0.195405" end="4747.241" start="4718.711">parlamento</Word>
<Word conf ="0.288861" end="4775.771" start="4747.241">terá</Word>
<Word conf ="0.864396" end="4804.301" start="4775.771">ainda</Word>
<Word conf ="0.062341" end="4832.831" start="4804.301">que</Word>
<Word conf ="0.521473" end="4861.361" start="4832.831">aprovar</Word>
<Word conf ="0.251169" end="4889.891" start="4861.361">a</Word>
<Word conf ="0.207294" end="4946.951" start="4889.891">ideia</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>7</TranscriptGUID>
<AudioType end="5124.851" start="4946.951">other</AudioType>
<Speaker gender="F" id="41" known="T" name ="Elsa Marujo"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="5124.851" reasons="" start="4946.951"/>
</TranscriptSegment>
72
<TranscriptSegment>
<TranscriptGUID>8</TranscriptGUID>
<AudioType end="5259.351" start="5124.851">other</AudioType>
<AudioType end="5459.851" start="5259.351">speech other</AudioType>
<Speaker gender="F" id="41" known="T" name ="Elsa Marujo"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="5459.851" reasons="" start="5124.851"/>
<TranscriptWordList>
<Word conf ="0.254203" end="5158.351" start="5124.851">a</Word>
<Word conf ="0.468844" end="5191.851" start="5158.351">proposta</Word>
<Word conf ="0.195405" end="5225.351" start="5191.851">foi</Word>
<Word conf ="0.288861" end="5258.851" start="5225.351">aprovada</Word>
<Word conf ="0.864396" end="5292.351" start="5258.851">hoje</Word>
<Word conf ="0.062341" end="5325.851" start="5292.351">em</Word>
<Word conf ="0.521473" end="5359.351" start="5325.851">conselho</Word>
<Word conf ="0.251169" end="5392.851" start="5359.351">de</Word>
<Word conf ="0.207294" end="5459.851" start="5392.851">ministros</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>9</TranscriptGUID>
<AudioType end="5561.951" start="5459.851">other</AudioType>
<AudioType end="5831.051" start="5561.951">other</AudioType>
<Speaker gender="F" id="41" known="T" name ="Elsa Marujo"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="5831.051" reasons="" start="5459.851"/>
<TranscriptWordList>
<Word conf ="0.254203" end="5501.091" start="5459.851">polícia</Word>
<Word conf ="0.468844" end="5542.341" start="5501.091">de</Word>
<Word conf ="0.195405" end="5583.581" start="5542.341">segurança</Word>
<Word conf ="0.288861" end="5624.831" start="5583.581">pública</Word>
<Word conf ="0.864396" end="5666.071" start="5624.831">e</Word>
<Word conf ="0.062341" end="5707.321" start="5666.071">guarda</Word>
<Word conf ="0.521473" end="5748.561" start="5707.321">nacional</Word>
<Word conf ="0.251169" end="5831.051" start="5748.561">republicana</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>10</TranscriptGUID>
<AudioType end="6714.351" start="5831.051">other</AudioType>
<Speaker gender="F" id="41" known="T" name ="Elsa Marujo"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="6714.351" reasons="" start="5831.051"/>
<TranscriptWordList>
<Word conf ="0.254203" end="5869.451" start="5831.051">até</Word>
<Word conf ="0.468844" end="5907.861" start="5869.451">agora</Word>
<Word conf ="0.195405" end="5946.261" start="5907.861">as</Word>
<Word conf ="0.288861" end="5984.671" start="5946.261">duas</Word>
<Word conf ="0.864396" end="6023.071" start="5984.671">forças </Word>
<Word conf ="0.062341" end="6061.481" start="6023.071">policiais</Word>
<Word conf ="0.521473" end="6099.881" start="6061.481">eram</Word>
<Word conf ="0.251169" end="6138.281" start="6099.881">obrigadas</Word>
<Word conf ="0.207294" end="6176.691" start="6138.281">a</Word>
<Word conf ="0.131041" end="6215.091" start="6176.691">chamar</Word>
<Word conf ="0.731012" end="6253.501" start="6215.091">a</Word>
<Word conf ="0.444258" end="6291.901" start="6253.501">polícia</Word>
<Word conf ="0.243464" end="6330.311" start="6291.901">judiciária</Word>
<Word conf ="0.345592" end="6368.711" start="6330.311">sempre</Word>
<Word conf ="0.976728" end="6407.121" start="6368.711">que</Word>
<Word conf ="0.500296" end="6445.521" start="6407.121">um</Word>
<Word conf ="0.766026" end="6483.921" start="6445.521">problema </Word>
<Word conf ="0.972840" end="6522.331" start="6483.921">criminal</Word>
<Word conf ="0.900908" end="6560.731" start="6522.331">não</Word>
<Word conf ="0.324886" end="6599.141" start="6560.731">tinha</Word>
<Word conf="0.647819" end="6637.541" start="6599.141">solução</Word>
<Word conf ="0.219101" end="6714.351" start="6637.541">imediata</Word>
73
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>11</TranscriptGUID>
<AudioType end="7642.251" start="6714.351">other</AudioType>
<Speaker gender="F" id="41" known="T" name ="Elsa Marujo"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="7642.251" reasons="" start="6714.351"/>
<TranscriptWordList>
<Word conf="0.254203" end="6753.011" start="6714.351">mas</Word>
<Word conf ="0.468844" end="6791.681" start="6753.011">a</Word>
<Word conf ="0.195405" end="6830.341" start="6791.681">nova</Word>
<Word conf ="0.288861" end="6869.001" start="6830.341">lei</Word>
<Word conf ="0.864396" end="6907.661" start="6869.001">vem</Word>
<Word conf ="0.062341" end="6946.331" start="6907.661">introduzir</Word>
<Word conf ="0.521473" end="6984.991" start="6946.331">uma</Word>
<Word conf ="0.251169" end="7023.651" start="6984.991">alteração</Word>
<Word conf ="0.207294" end="7062.311" start="7023.651">psp</Word>
<Word conf ="0.131041" end="7100.971" start="7062.311">e</Word>
<Word conf ="0.731012" end="7139.641" start="7100.971">gnr</Word>
<Word conf="0.444258" end="7178.301" start="7139.641">passam</Word>
<Word conf ="0.243464" end="7216.961" start="7178.301">a</Word>
<Word conf ="0.345592" end="7255.631" start="7216.961">ter</Word>
<Word conf ="0.976728" end="7294.291" start="7255.631">autonomia</Word>
<Word conf ="0.500296" end="7332.951" start="7294.291">e</Word>
<Word conf ="0.766026" end="7371.611" start="7332.951">competência</Word>
<Word conf ="0.972840" end="7410.281" start="7371.611">para</Word>
<Word conf ="0.900908" end="7448.941" start="7410.281">investigarem</Word>
<Word conf ="0.324886" end="7487.601" start="7448.941">crimes</Word>
<Word conf ="0.647819" end="7526.261" start="7487.601">de</Word>
<Word conf ="0.219101" end="7564.921" start="7526.261">menor</Word>
<Word conf ="0.466351" end="7642.251" start="7564.921">gravidade</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>12</TranscriptGUID>
<AudioType end="7987.451" start="7642.251">other</AudioType>
<Speaker gender="F" id="41" known="T" name ="Elsa Marujo"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="7987.451" reasons="" start="7642.251"/>
<TranscriptWordList>
<Word conf ="0.254203" end="7676.771" start="7642.251">é</Word>
<Word conf ="0.468844" end="7711.291" start="7676.771">a</Word>
<Word conf ="0.195405" end="7745.811" start="7711.291">proposta</Word>
<Word conf ="0.288861" end="7780.331" start="7745.811">do</Word>
<Word conf ="0.864396" end="7814.851" start="7780.331">governo</Word>
<Word conf ="0.062341" end="7849.371" start="7814.851">que</Word>
<Word conf ="0.521473" end="7883.891" start="7849.371">apresenta</Word>
<Word conf ="0.251169" end="7918.411" start="7883.891">três</Word>
<Word conf ="0.207294" end="7987.451" start="7918.411">razões</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>13</TranscriptGUID>
<AudioType end="10213.851" start="7987.451">shh</AudioType>
<Speaker gender="M" id="3" known="F" name ="Fernando Gomes "/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="10213.851" reasons ="" start="7987.451"/>
<TranscriptWordList>
<Word conf ="0.254203" end="8038.051" start="7987.451">o</Word>
<Word conf ="0.468844" end="8088.651" start="8038.051">aumento</Word>
<Word conf ="0.195405" end="8139.251" start="8088.651">da</Word>
<Word conf ="0.288861" end="8189.851" start="8139.251">eficácia</Word>
<Word conf ="0.864396" end="8240.451" start="8189.851">na</Word>
<Word conf ="0.062341" end="8291.051" start="8240.451">investigação</Word>
<Word conf ="0.521473" end="8341.651" start="8291.051">criminal</Word>
74
<Word conf ="0.251169" end="8392.251" start="8341.651">por</Word>
<Word conf ="0.207294" end="8442.851" start="8392.251">um</Word>
<Word conf ="0.131041" end="8493.451" start="8442.851">lado</Word>
<Word conf ="0.731012" end="8544.051" start="8493.451">por</Word>
<Word conf ="0.444258" end="8594.651" start="8544.051">outro</Word>
<Word conf ="0.243464" end="8645.251" start="8594.651">lado</Word>
<Word conf ="0.345592" end="8695.851" start="8645.251">a</Word>
<Word conf ="0.976728" end="8746.451" start="8695.851">celeridade</Word>
<Word conf ="0.500296" end="8797.051" start="8746.451">dos</Word>
<Word conf ="0.766026" end="8847.651" start="8797.051">processos</Word>
<Word conf ="0.972840" end="8898.251" start="8847.651">e</Word>
<Word conf ="0.900908" end="8948.851" start="8898.251">uma</Word>
<Word conf ="0.324886" end="8999.451" start="8948.851">maior</Word>
<Word conf ="0.647819" end="9050.051" start="8999.451">aproximação</Word>
<Word conf ="0.219101" end="9100.651" start="9050.051">dos</Word>
<Word conf ="0.466351" end="9151.251" start="9100.651">cidadãos </Word>
<Word conf ="0.735220" end="9201.851" start="9151.251">e</Word>
<Word conf ="0.268696" end="9252.451" start="9201.851">finalmente</Word>
<Word conf ="0.006208" end="9303.051" start="9252.451">através</Word>
<Word conf ="0.960810" end="9353.651" start="9303.051">dessa</Word>
<Word conf ="0.066605" end="9404.251" start="9353.651">celeridade</Word>
<Word conf ="0.646861" end="9454.851" start="9404.251">procurar</Word>
<Word conf ="0.940632" end="9505.451" start="9454.851">chegar</Word>
<Word conf ="0.128864" end="9556.051" start="9505.451">mais</Word>
<Word conf ="0.601226" end="9606.651" start="9556.051">deper</Word>
<Word conf ="0.689979" end="9657.251" start="9606.651">mais</Word>
<Word conf ="0.653199" end="9707.851" start="9657.251">depressa</Word>
<Word conf ="0.216668" end="9758.451" start="9707.851">aos</Word>
<Word conf ="0.738295" end="9809.051" start="9758.451">criminosos</Word>
<Word conf ="0.418785" end="9859.651" start="9809.051">e</Word>
<Word conf ="0.273506" end="9910.251" start="9859.651">diminuir</Word>
<Word conf ="0.954241" end="9960.851" start="9910.251">a</Word>
<Word conf ="0.331332" end="10011.451" start="9960.851">criminalidade</Word>
<Word conf ="0.209572" end="10062.051" start="10011.451">no</Word>
<Word conf ="0.555366" end="10112.651" start="10062.051">nosso</Word>
<Word conf ="0.118243" end="10213.851" start="10112.651">país </Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>14</TranscriptGUID>
<AudioType end="11464.451" start="10213.851">other</AudioType>
<Speaker gender="F" id="41" known="T" name ="Elsa Marujo"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="11464.451" reasons ="" start="10213.851"/>
<TranscriptWordList>
<Word conf ="0.254203" end="10254.191" start="10213.851">de</Word>
<Word conf ="0.468844" end="10294.531" start="10254.191">acordo</Word>
<Word conf ="0.195405" end="10334.881" start="10294.531">com</Word>
<Word conf="0.288861" end="10375.221" start="10334.881">o</Word>
<Word conf ="0.864396" end="10415.561" start="10375.221">diploma </Word>
<Word conf ="0.062341" end="10455.901" start="10415.561">além</Word>
<Word conf ="0.521473" end="10496.241" start="10455.901">dos</Word>
<Word conf ="0.251169" end="10536.591" start="10496.241">crimes </Word>
<Word conf ="0.207294" end="10576.931" start="10536.591">cuja</Word>
<Word conf ="0.131041" end="10617.271" start="10576.931">competência</Word>
<Word conf="0.731012" end="10657.611" start="10617.271">lhes</Word>
<Word conf ="0.444258" end="10697.951" start="10657.611">está</Word>
<Word conf ="0.243464" end="10738.301" start="10697.951">reservada</Word>
<Word conf ="0.345592" end="10778.641" start="10738.301">a</Word>
<Word conf ="0.976728" end="10818.981" start="10778.641">pj</Word>
<Word conf ="0.500296" end="10859.321" start="10818.981">fica</Word>
<Word conf ="0.766026" end="10899.661" start="10859.321">especificamente</Word>
<Word conf ="0.972840" end="10940.001" start="10899.661">especializada</Word>
<Word conf ="0.900908" end="10980.351" start="10940.001">em</Word>
<Word conf ="0.324886" end="11020.691" start="10980.351">crimes </Word>
<Word conf ="0.647819" end="11061.031" start="11020.691">mais</Word>
75
<Word conf ="0.219101" end="11101.371" start="11061.031">complexos</Word>
<Word conf ="0.466351" end="11141.711" start="11101.371">que</Word>
<Word conf ="0.735220" end="11182.061" start="11141.711">exigem</Word>
<Word conf ="0.268696" end="11222.401" start="11182.061">a</Word>
<Word conf ="0.006208" end="11262.741" start="11222.401">intervenção</Word>
<Word conf ="0.960810" end="11303.081" start="11262.741">de</Word>
<Word conf ="0.066605" end="11343.421" start="11303.081">uma</Word>
<Word conf ="0.646861" end="11383.771" start="11343.421">polícia</Word>
<Word conf ="0.940632" end="11464.451" start="11383.771">científica</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>15</TranscriptGUID>
<AudioType end="11464.451" start="11464.451">other</AudioType>
<AudioType end="12176.351" start="11464.451">speech other</AudioType>
<Speaker gender="F" id="41" known="T" name ="Elsa Marujo"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="12176.351" reasons ="" start="11464.451"/>
<TranscriptWordList>
<Word conf ="0.254203" end="11500.051" start="11464.451">a</Word>
<Word conf ="0.468844" end="11535.641" start="11500.051">direcção</Word>
<Word conf ="0.195405" end="11571.231" start="11535.641">das</Word>
<Word conf ="0.288861" end="11606.831" start="11571.231">investigações </Word>
<Word conf ="0.864396" end="11642.431" start="11606.831">continua</Word>
<Word conf ="0.062341" end="11678.021" start="11642.431">a</Word>
<Word conf ="0.521473" end="11713.611" start="11678.021">cargo</Word>
<Word conf ="0.251169" end="11749.211" start="11713.611">do</Word>
<Word conf ="0.207294" end="11784.811" start="11749.211">ministério</Word>
<Word conf ="0.131041" end="11820.401" start="11784.811">público</Word>
<Word conf ="0.731012" end="11855.991" start="11820.401">ou</Word>
<Word conf ="0.444258" end="11891.591" start="11855.991">juiz</Word>
<Word conf ="0.243464" end="11927.191" start="11891.591">de</Word>
<Word conf ="0.345592" end="11962.781" start="11927.191">instrução</Word>
<Word conf ="0.976728" end="11998.371" start="11962.781">conforme</Word>
<Word conf ="0.500296" end="12033.971" start="11998.371">a</Word>
<Word conf ="0.766026" end="12069.571" start="12033.971">fase</Word>
<Word conf ="0.972840" end="12105.161" start="12069.571">do</Word>
<Word conf ="0.900908" end="12176.351" start="12105.161">processo</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>16</TranscriptGUID>
<AudioType end="13004.351" start="12176.351">other</AudioType>
<Speaker gender="F" id="41" known="T" name ="Elsa Marujo"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="13004.351" reasons ="" start="12176.351"/>
<TranscriptWordList>
<Word conf ="0.254203" end="12213.991" start="12176.351">mas</Word>
<Word conf ="0.468844" end="12251.621" start="12213.991">a</Word>
<Word conf ="0.195405" end="12289.261" start="12251.621">articulação</Word>
<Word conf ="0.288861" end="12326.901" start="12289.261">das</Word>
<Word conf ="0.864396" end="12364.531" start="12326.901">autoridades</Word>
<Word conf ="0.062341" end="12402.171" start="12364.531">judiciais</Word>
<Word conf ="0.521473" end="12439.801" start="12402.171">com</Word>
<Word conf ="0.251169" end="12477.441" start="12439.801">as</Word>
<Word conf ="0.207294" end="12515.081" start="12477.441">três</Word>
<Word conf ="0.131041" end="12552.711" start="12515.081">polícias</Word>
<Word conf ="0.731012" end="12590.351" start="12552.711">e</Word>
<Word conf ="0.444258" end="12627.991" start="12590.351">o</Word>
<Word conf ="0.243464" end="12665.621" start="12627.991">relacionamento</Word>
<Word conf ="0.345592" end="12703.261" start="12665.621">entre</Word>
<Word conf ="0.976728" end="12740.901" start="12703.261">estas</Word>
<Word conf ="0.500296" end="12778.531" start="12740.901">serão</Word>
<Word conf ="0.766026" end="12816.171" start="12778.531">assegurados </Word>
<Word conf ="0.972840" end="12853.801" start="12816.171">por</Word>
<Word conf ="0.900908" end="12891.441" start="12853.801">um</Word>
76
<Word conf ="0.324886" end="12929.081" start="12891.441">órgão</Word>
<Word conf ="0.647819" end="13004.351" start="12929.081">superior</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>17</TranscriptGUID>
<AudioType end="14014.851" start="13004.351">other</AudioType>
<Speaker gender="F" id="41" known="T" name ="Elsa Marujo"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="14014.851" reasons ="" start="13004.351"/>
<TranscriptWordList>
<Word conf ="0.254203" end="13046.451" start="13004.351">vai</Word>
<Word conf ="0.468844" end="13088.561" start="13046.451">chamar-se</Word>
<Word conf ="0.195405" end="13130.661" start="13088.561">conselho</Word>
<Word conf ="0.288861" end="13172.771" start="13130.661">coordenador</Word>
<Word conf ="0.864396" end="13214.871" start="13172.771">é</Word>
<Word conf ="0.062341" end="13256.971" start="13214.871">composto</Word>
<Word conf ="0.521473" end="13299.081" start="13256.971">pelos</Word>
<Word conf ="0.251169" end="13341.181" start="13299.081">três</Word>
<Word conf ="0.207294" end="13383.291" start="13341.181">chefes </Word>
<Word conf ="0.131041" end="13425.391" start="13383.291">máximos</Word>
<Word conf ="0.731012" end="13467.501" start="13425.391">de</Word>
<Word conf ="0.444258" end="13509.601" start="13467.501">cada</Word>
<Word conf ="0.243464" end="13551.701" start="13509.601">polícia</Word>
<Word conf ="0.345592" end="13593.811" start="13551.701">e</Word>
<Word conf ="0.976728" end="13635.911" start="13593.811">pelos</Word>
<Word conf ="0.500296" end="13678.021" start="13635.911">dois</Word>
<Word conf ="0.766026" end="13720.121" start="13678.021">ministros</Word>
<Word conf ="0.972840" end="13762.231" start="13720.121">directamente</Word>
<Word conf ="0.900908" end="13804.331" start="13762.231">responsáveis</Word>
<Word conf ="0.324886" end="13846.431" start="13804.331">administração</Word>
<Word conf ="0.647819" end="13888.541" start="13846.431">interna</Word>
<Word conf ="0.219101" end="13930.641" start="13888.541">e</Word>
<Word conf ="0.466351" end="14014.851" start="13930.641">justiça</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>18</TranscriptGUID>
<AudioType end="14130.751" start="14014.851">speech other</AudioType>
<Speaker gender="F" id="41" known="T" name ="Elsa Marujo"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="14130.751" reasons ="" start="14014.851"/>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>19</TranscriptGUID>
<AudioType end="14282.851" start="14130.751">clean</AudioType>
<Speaker gender="M" id="9" known="T" name ="António Costa"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="14282.851" reasons="" start="14130.751"/>
<TranscriptWordList>
<Word conf ="0.254203" end="14156.101" start="14130.751">um</Word>
<Word conf ="0.468844" end="14181.451" start="14156.101">estado</Word>
<Word conf ="0.195405" end="14206.801" start="14181.451">é</Word>
<Word conf ="0.288861" end="14232.151" start="14206.801">só</Word>
<Word conf ="0.864396" end="14282.851" start="14232.151">um</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>20</TranscriptGUID>
<AudioType end="14374.551" start="14282.851">clean</AudioType>
<Speaker gender="M" id="9" known="T" name ="António Costa"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="14374.551" reasons ="" start="14282.851"/>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>21</TranscriptGUID>
77
<AudioType end="15861.151" start="14374.551">clean</AudioType>
<Speaker gender="M" id="9" known="T" name ="António Costa"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="15861.151" reasons ="" start="14374.551"/>
<TranscriptWordList>
<Word conf ="0.254203" end="14414.731" start="14374.551">e</Word>
<Word conf ="0.468844" end="14454.911" start="14414.731">as</Word>
<Word conf ="0.195405" end="14495.091" start="14454.911">diferentes</Word>
<Word conf ="0.288861" end="14535.261" start="14495.091">organizações </Word>
<Word conf ="0.864396" end="14575.441" start="14535.261">do</Word>
<Word conf ="0.062341" end="14615.621" start="14575.441">estado</Word>
<Word conf ="0.521473" end="14655.801" start="14615.621">não</Word>
<Word conf ="0.251169" end="14695.981" start="14655.801">são</Word>
<Word conf ="0.207294" end="14736.161" start="14695.981">equipas</Word>
<Word conf ="0.131041" end="14776.331" start="14736.161">que</Word>
<Word conf ="0.731012" end="14816.511" start="14776.331">disputam</Word>
<Word conf ="0.444258" end="14856.691" start="14816.511">entre</Word>
<Word conf ="0.243464" end="14896.871" start="14856.691">si</Word>
<Word conf ="0.345592" end="14937.051" start="14896.871">um</Word>
<Word conf ="0.976728" end="14977.231" start="14937.051">campeonato</Word>
<Word conf ="0.500296" end="15017.401" start="14977.231">são</Word>
<Word conf ="0.766026" end="15057.581" start="15017.401">equipas</Word>
<Word conf ="0.972840" end="15097.761" start="15057.581">que</Word>
<Word conf ="0.900908" end="15137.941" start="15097.761">têm</Word>
<Word conf ="0.324886" end="15178.121" start="15137.941">que</Word>
<Word conf="0.647819" end="15218.301" start="15178.121">concorrer</Word>
<Word conf ="0.219101" end="15258.471" start="15218.301">para</Word>
<Word conf ="0.466351" end="15298.651" start="15258.471">o</Word>
<Word conf ="0.735220" end="15338.831" start="15298.651">mesmo </Word>
<Word conf ="0.268696" end="15379.011" start="15338.831">resultado</Word>
<Word conf ="0.006208" end="15419.191" start="15379.011">que</Word>
<Word conf ="0.960810" end="15459.371" start="15419.191">é</Word>
<Word conf ="0.066605" end="15499.541" start="15459.371">o</Word>
<Word conf ="0.646861" end="15539.721" start="15499.541">combate</Word>
<Word conf ="0.940632" end="15579.901" start="15539.721">à</Word>
<Word conf ="0.128864" end="15620.081" start="15579.901">criminalidade</Word>
<Word conf ="0.601226" end="15660.261" start="15620.081">e</Word>
<Word conf ="0.689979" end="15700.441" start="15660.261">a</Word>
<Word conf ="0.653199" end="15740.611" start="15700.441">defesa</Word>
<Word conf ="0.216668" end="15780.791" start="15740.611">da</Word>
<Word conf ="0.738295" end="15861.151" start="15780.791">legalidade</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>22</TranscriptGUID>
<AudioType end="16654.151" start="15861.151">speech other</AudioType>
<Speaker gender="F" id="41" known="T" name ="Elsa Marujo"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="16654.151" reasons ="" start="15861.151"/>
<TranscriptWordList>
<Word conf ="0.254203" end="15897.201" start="15861.151">em</Word>
<Word conf ="0.468844" end="15933.241" start="15897.201">nome</Word>
<Word conf ="0.195405" end="15969.291" start="15933.241">de</Word>
<Word conf ="0.288861" end="16005.331" start="15969.291">uma</Word>
<Word conf ="0.864396" end="16041.381" start="16005.331">melhor</Word>
<Word conf ="0.062341" end="16077.421" start="16041.381">ligação</Word>
<Word conf ="0.521473" end="16113.471" start="16077.421">entre</Word>
<Word conf ="0.251169" end="16149.511" start="16113.471">todos</Word>
<Word conf ="0.207294" end="16185.561" start="16149.511">e</Word>
<Word conf ="0.131041" end="16221.601" start="16185.561">para</Word>
<Word conf ="0.731012" end="16257.651" start="16221.601">evitar</Word>
<Word conf ="0.444258" end="16293.701" start="16257.651">sobreposição</Word>
<Word conf ="0.243464" end="16329.741" start="16293.701">de</Word>
<Word conf ="0.345592" end="16365.791" start="16329.741">funções </Word>
<Word conf ="0.976728" end="16401.831" start="16365.791">as</Word>
<Word conf ="0.500296" end="16437.881" start="16401.831">polícias</Word>
78
<Word conf ="0.766026" end="16473.921" start="16437.881">aplaudem</Word>
<Word conf ="0.972840" end="16509.971" start="16473.921">a</Word>
<Word conf ="0.900908" end="16546.011" start="16509.971">proposta</Word>
<Word conf ="0.324886" end="16582.061" start="16546.011">do</Word>
<Word conf ="0.647819" end="16654.151" start="16582.061">governo</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>23</TranscriptGUID>
<AudioType end="19127.851" start="16654.151">speech other</AudioType>
<Speaker gender="M" id="5" known="F" name ="Luís Bonina"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="19127.851" reasons ="" start="16654.151"/>
<TranscriptWordList>
<Word conf ="0.254203" end="16693.421" start="16654.151">esta</Word>
<Word conf ="0.468844" end="16732.681" start="16693.421">lei</Word>
<Word conf ="0.195405" end="16771.951" start="16732.681">da</Word>
<Word conf ="0.288861" end="16811.211" start="16771.951">organização</Word>
<Word conf ="0.864396" end="16850.481" start="16811.211">e</Word>
<Word conf ="0.062341" end="16889.741" start="16850.481">administração</Word>
<Word conf ="0.521473" end="16929.011" start="16889.741">criminal</Word>
<Word conf ="0.251169" end="16968.271" start="16929.011">aponta</Word>
<Word conf ="0.207294" end="17007.541" start="16968.271">para</Word>
<Word conf ="0.131041" end="17046.801" start="17007.541">uma</Word>
<Word conf ="0.731012" end="17086.071" start="17046.801">clarificação</Word>
<Word conf ="0.444258" end="17125.331" start="17086.071">e</Word>
<Word conf ="0.243464" end="17164.601" start="17125.331">nisso</Word>
<Word conf ="0.345592" end="17203.861" start="17164.601">nesse</Word>
<Word conf ="0.976728" end="17243.131" start="17203.861">aspecto</Word>
<Word conf ="0.500296" end="17282.391" start="17243.131">é</Word>
<Word conf ="0.766026" end="17321.661" start="17282.391">um</Word>
<Word conf ="0.972840" end="17360.921" start="17321.661">passo</Word>
<Word conf ="0.900908" end="17400.191" start="17360.921">positivo</Word>
<Word conf ="0.324886" end="17439.451" start="17400.191">relativamente</Word>
<Word conf ="0.647819" end="17478.721" start="17439.451">ao</Word>
<Word conf ="0.219101" end="17517.981" start="17478.721">sistema </Word>
<Word conf ="0.466351" end="17557.251" start="17517.981">que</Word>
<Word conf ="0.735220" end="17596.511" start="17557.251">existia</Word>
<Word conf ="0.268696" end="17635.781" start="17596.511">até</Word>
<Word conf ="0.006208" end="17675.041" start="17635.781">este</Word>
<Word conf ="0.960810" end="17714.311" start="17675.041">momento</Word>
<Word conf ="0.066605" end="17753.571" start="17714.311">esse</Word>
<Word conf ="0.646861" end="17792.841" start="17753.571">sim</Word>
<Word conf ="0.940632" end="17832.101" start="17792.841">em</Word>
<Word conf ="0.128864" end="17871.371" start="17832.101">que</Word>
<Word conf ="0.601226" end="17910.631" start="17871.371">podemos</Word>
<Word conf ="0.689979" end="17949.901" start="17910.631">dizer</Word>
<Word conf ="0.653199" end="17989.161" start="17949.901">que</Word>
<Word conf ="0.216668" end="18028.431" start="17989.161">no</Word>
<Word conf ="0.738295" end="18067.691" start="18028.431">fora</Word>
<Word conf ="0.418785" end="18106.961" start="18067.691">do</Word>
<Word conf ="0.273506" end="18146.221" start="18106.961">âmbito</Word>
<Word conf ="0.954241" end="18185.491" start="18146.221">das</Word>
<Word conf ="0.331332" end="18224.751" start="18185.491">competências </Word>
<Word conf ="0.209572" end="18264.021" start="18224.751">exclusivas </Word>
<Word conf ="0.555366" end="18303.281" start="18264.021">hav</Word>
<Word conf ="0.118243" end="18342.551" start="18303.281">ia</Word>
<Word conf ="0.164786" end="18381.811" start="18342.551">quase</Word>
<Word conf ="0.137982" end="18421.081" start="18381.811">que</Word>
<Word conf ="0.435315" end="18460.341" start="18421.081">uma</Word>
<Word conf ="0.356957" end="18499.611" start="18460.341">uma</Word>
<Word conf ="0.909370" end="18538.871" start="18499.611">concorrência</Word>
<Word conf ="0.766423" end="18578.141" start="18538.871">en</Word>
<Word conf ="0.204282" end="18617.401" start="18578.141">e</Word>
<Word conf ="0.854290" end="18656.671" start="18617.401">s</Word>
<Word conf ="0.622949" end="18695.931" start="18656.671">e</Word>
79
<Word conf ="0.217937" end="18735.201" start="18695.931">sim</Word>
<Word conf ="0.466830" end="18774.461" start="18735.201">alguma </Word>
<Word conf ="0.224237" end="18813.731" start="18774.461">sobreposição</Word>
<Word conf ="0.435390" end="18852.991" start="18813.731">relativamente</Word>
<Word conf ="0.015767" end="18892.261" start="18852.991">às</Word>
<Word conf ="0.066873" end="18931.521" start="18892.261">competências </Word>
<Word conf ="0.422328" end="18970.791" start="18931.521">da</Word>
<Word conf ="0.727689" end="19010.051" start="18970.791">das</Word>
<Word conf ="0.866070" end="19049.321" start="19010.051">várias </Word>
<Word conf ="0.993826" end="19127.851" start="19049.321">polícias</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>24</TranscriptGUID>
<AudioType end="19792.151" start="19127.851">speech</AudioType>
<AudioType end="20401.551" start="19792.151">other</AudioType>
<AudioType end="21296.751" start="20401.551">speech</AudioType>
<Speaker gender="M" id="6" known="F" name ="Gonçalves Amaro"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="21296.751" reasons ="" start="19127.851"/>
<TranscriptWordList>
<Word conf ="0.254203" end="19165.241" start="19127.851">há</Word>
<Word conf ="0.468844" end="19202.641" start="19165.241">sempre</Word>
<Word conf ="0.195405" end="19240.031" start="19202.641">pequenas</Word>
<Word conf ="0.288861" end="19277.431" start="19240.031">crispações </Word>
<Word conf ="0.864396" end="19314.821" start="19277.431">ou</Word>
<Word conf ="0.062341" end="19352.221" start="19314.821">pequenas</Word>
<Word conf ="0.521473" end="19389.611" start="19352.221">coisas </Word>
<Word conf ="0.251169" end="19427.011" start="19389.611">que</Word>
<Word conf ="0.207294" end="19464.401" start="19427.011">é</Word>
<Word conf ="0.131041" end="19501.801" start="19464.401">preciso</Word>
<Word conf ="0.731012" end="19539.191" start="19501.801">remover</Word>
<Word conf ="0.444258" end="19576.591" start="19539.191">mas</Word>
<Word conf ="0.243464" end="19613.981" start="19576.591">o</Word>
<Word conf ="0.345592" end="19651.381" start="19613.981">diálogo</Word>
<Word conf ="0.976728" end="19688.771" start="19651.381">foi</Word>
<Word conf ="0.500296" end="19726.171" start="19688.771">sempre</Word>
<Word conf ="0.766026" end="19763.561" start="19726.171">fácil</Word>
<Word conf ="0.972840" end="19800.961" start="19763.561">continuará</Word>
<Word conf ="0.900908" end="19838.351" start="19800.961">a</Word>
<Word conf ="0.324886" end="19875.751" start="19838.351">ser</Word>
<Word conf ="0.647819" end="19913.141" start="19875.751">fácil</Word>
<Word conf ="0.219101" end="19950.541" start="19913.141">quer</Word>
<Word conf ="0.466351" end="19987.931" start="19950.541">a</Word>
<Word conf ="0.735220" end="20025.331" start="19987.931">nível</Word>
<Word conf ="0.268696" end="20062.721" start="20025.331">de</Word>
<Word conf ="0.006208" end="20100.121" start="20062.721">direcções</Word>
<Word conf ="0.960810" end="20137.511" start="20100.121">quer</Word>
<Word conf ="0.066605" end="20174.911" start="20137.511">a</Word>
<Word conf ="0.646861" end="20212.301" start="20174.911">nível</Word>
<Word conf ="0.940632" end="20249.691" start="20212.301">dos</Word>
<Word conf ="0.128864" end="20287.091" start="20249.691">agentes</Word>
<Word conf ="0.601226" end="20324.481" start="20287.091">no</Word>
<Word conf ="0.689979" end="20361.881" start="20324.481">terreno</Word>
<Word conf ="0.653199" end="20399.271" start="20361.881">tem</Word>
<Word conf ="0.216668" end="20436.671" start="20399.271">havido</Word>
<Word conf ="0.738295" end="20474.061" start="20436.671">sempre</Word>
<Word conf ="0.418785" end="20511.461" start="20474.061">boa</Word>
<Word conf ="0.273506" end="20548.851" start="20511.461">cola</Word>
<Word conf ="0.954241" end="20586.251" start="20548.851">colaboração</Word>
<Word conf ="0.331332" end="20623.641" start="20586.251">embora</Word>
<Word conf ="0.209572" end="20661.041" start="20623.641">haja</Word>
<Word conf ="0.555366" end="20698.431" start="20661.041">sempre</Word>
<Word conf ="0.118243" end="20735.831" start="20698.431">uma</Word>
<Word conf ="0.164786" end="20773.221" start="20735.831">emulação</Word>
<Word conf ="0.137982" end="20810.621" start="20773.221">que</Word>
80
<Word conf ="0.435315" end="20848.011" start="20810.621">os</Word>
<Word conf ="0.356957" end="20885.411" start="20848.011">agentes</Word>
<Word conf ="0.909370" end="20922.801" start="20885.411">pretendem</Word>
<Word conf ="0.766423" end="20960.201" start="20922.801">desenvolver</Word>
<Word conf ="0.204282" end="20997.591" start="20960.201">em</Word>
<Word conf ="0.854290" end="21034.991" start="20997.591">função</Word>
<Word conf ="0.622949" end="21072.381" start="21034.991">da</Word>
<Word conf ="0.217937" end="21109.781" start="21072.381">investigação</Word>
<Word conf ="0.466830" end="21147.171" start="21109.781">que</Word>
<Word conf ="0.224237" end="21184.571" start="21147.171">tão</Word>
<Word conf ="0.435390" end="21221.961" start="21184.571">a</Word>
<Word conf ="0.015767" end="21296.751" start="21221.961">desenvolver</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>25</TranscriptGUID>
<AudioType end="22829.651" start="21296.751">speech</AudioType>
<Speaker gender="M" id="7" known="F" name ="Silva Viegas"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="22829.651" reasons ="" start="21296.751"/>
<TranscriptWordList>
<Word conf ="0.254203" end="21343.201" start="21296.751">nós</Word>
<Word conf ="0.468844" end="21389.651" start="21343.201">como</Word>
<Word conf ="0.195405" end="21436.101" start="21389.651">o</Word>
<Word conf ="0.288861" end="21482.561" start="21436.101">senhor</Word>
<Word conf ="0.864396" end="21529.011" start="21482.561">ministro</Word>
<Word conf ="0.062341" end="21575.461" start="21529.011">referiu</Word>
<Word conf ="0.521473" end="21621.911" start="21575.461">vamos </Word>
<Word conf ="0.251169" end="21668.361" start="21621.911">ter</Word>
<Word conf ="0.207294" end="21714.811" start="21668.361">que</Word>
<Word conf ="0.131041" end="21761.271" start="21714.811">adquirir</Word>
<Word conf ="0.731012" end="21807.721" start="21761.271">ter</Word>
<Word conf ="0.444258" end="21854.171" start="21807.721">mais</Word>
<Word conf ="0.243464" end="21900.621" start="21854.171">meios</Word>
<Word conf ="0.345592" end="21947.071" start="21900.621">técnicos</Word>
<Word conf ="0.976728" end="21993.521" start="21947.071">para</Word>
<Word conf ="0.500296" end="22039.971" start="21993.521">a</Word>
<Word conf ="0.766026" end="22086.431" start="22039.971">investigação</Word>
<Word conf ="0.972840" end="22132.881" start="22086.431">criminal</Word>
<Word conf ="0.900908" end="22179.331" start="22132.881">e</Word>
<Word conf ="0.324886" end="22225.781" start="22179.331">por</Word>
<Word conf ="0.647819" end="22272.231" start="22225.781">e</Word>
<Word conf ="0.219101" end="22318.681" start="22272.231">vamos </Word>
<Word conf ="0.466351" end="22365.131" start="22318.681">aperfeiçoar</Word>
<Word conf ="0.735220" end="22411.591" start="22365.131">a</Word>
<Word conf ="0.268696" end="22458.041" start="22411.591">nossa</Word>
<Word conf ="0.006208" end="22504.491" start="22458.041">formação</Word>
<Word conf ="0.960810" end="22550.941" start="22504.491">em</Word>
<Word conf ="0.066605" end="22597.391" start="22550.941">colaboração</Word>
<Word conf ="0.646861" end="22643.841" start="22597.391">com</Word>
<Word conf ="0.940632" end="22690.301" start="22643.841">a</Word>
<Word conf ="0.128864" end="22736.751" start="22690.301">polícia</Word>
<Word conf ="0.601226" end="22829.651" start="22736.751">judiciária</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>26</TranscriptGUID>
<AudioType end="22965.851" start="22829.651">speech</AudioType>
<AudioType end="23669.351" start="22965.851">speech other</AudioType>
<Speaker gender="F" id="41" known="T" name ="Elsa Marujo"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="23669.351" reasons ="" start="22829.651"/>
<TranscriptWordList>
<Word conf ="0.254203" end="22856.741" start="22829.651">consenso</Word>
<Word conf ="0.468844" end="22883.821" start="22856.741">é</Word>
<Word conf ="0.195405" end="22910.911" start="22883.821">também</Word>
81
<Word conf ="0.288861" end="22938.001" start="22910.911">o</Word>
<Word conf ="0.864396" end="22965.091" start="22938.001">que</Word>
<Word conf ="0.062341" end="22992.171" start="22965.091">o</Word>
<Word conf ="0.521473" end="23019.261" start="22992.171">governo</Word>
<Word conf ="0.251169" end="23046.351" start="23019.261">espera</Word>
<Word conf ="0.207294" end="23073.431" start="23046.351">da</Word>
<Word conf ="0.131041" end="23100.521" start="23073.431">assembleia</Word>
<Word conf ="0.731012" end="23127.611" start="23100.521">da</Word>
<Word conf ="0.444258" end="23154.701" start="23127.611">república</Word>
<Word conf ="0.243464" end="23181.781" start="23154.701">para</Word>
<Word conf ="0.345592" end="23208.871" start="23181.781">onde</Word>
<Word conf ="0.976728" end="23235.961" start="23208.871">segue</Word>
<Word conf ="0.500296" end="23263.041" start="23235.961">o</Word>
<Word conf ="0.766026" end="23290.131" start="23263.041">diploma;</Word>
<Word conf ="0.972840" end="23317.221" start="23290.131">se</Word>
<Word conf ="0.900908" end="23344.301" start="23317.221">for</Word>
<Word conf ="0.324886" end="23371.391" start="23344.301">aprovado</Word>
<Word conf ="0.647819" end="23398.481" start="23371.391">poderá</Word>
<Word conf ="0.219101" end="23425.571" start="23398.481">entrar</Word>
<Word conf ="0.466351" end="23452.651" start="23425.571">em</Word>
<Word conf ="0.735220" end="23479.741" start="23452.651">vigor</Word>
<Word conf ="0.268696" end="23506.831" start="23479.741">já</Word>
<Word conf ="0.006208" end="23533.911" start="23506.831">no</Word>
<Word conf ="0.960810" end="23561.001" start="23533.911">próximo</Word>
<Word conf ="0.066605" end="23588.091" start="23561.001">mês</Word>
<Word conf ="0.646861" end="23615.181" start="23588.091">de</Word>
<Word conf ="0.940632" end="23669.351" start="23615.181">julho</Word>
</TranscriptWordList>
</TranscriptSegment>
<TranscriptSegment>
<TranscriptGUID>27</TranscriptGUID>
<AudioType end="23784.751" start="23669.351">speech other</AudioType>
<Speaker gender="F" id="41" known="T" name ="Elsa Marujo"/>
<SpeakerLanguage native="T">PT</SpeakerLanguage>
<Time end="23784.751" reasons ="" start="23669.351"/>
</TranscriptSegment>
<ThematicDescriptorList>
<Descriptor conf ="0.254203" id="783">defesa nacional; forças armadas, policiais e
segurança</Descriptor>
<Descriptor conf ="0.468844" id="949">polícia criminal</Descriptor>
<Descriptor conf ="0.195405" id="950">polícia judiciária</Descriptor>
<Descriptor conf ="0.288861" id="961">psp</Descriptor>
<Descriptor conf ="0.864396" id="889">gnr</Descriptor>
<Descriptor conf ="0.062341" id="2165">organização política</Descriptor>
<Descriptor conf ="0.521473" id="2268">orgãos de soberania</Descriptor>
<Descriptor conf ="0.251169" id="2289">parlamento</Descriptor>
<Descriptor conf ="0.207294" id="2190">governo</Descriptor>
<Descriptor conf ="0.131041" id="2193">conselho de ministros</Descriptor>
<Descriptor conf ="0.731012" id="1930">justiça e direito</Descriptor>
<Descriptor conf ="0.444258" id="1948">criminalidade</Descriptor>
<Descriptor conf ="0.243464" id="2273">ministério da administração interna</Descriptor>
<Descriptor conf ="0.345592" id="2280">ministério da justiça</Descriptor>
<Descriptor conf ="0.976728" id="2092">ministerio publico</Descriptor>
<Descriptor conf ="0.500296" id="2303">processo legislativo</Descriptor>
<Descriptor conf ="0.766026" id="2309">votacao da lei</Descriptor>
</ThematicDescriptorList>
<GeographicDescriptorList>
<Descriptor conf ="0.972840" id="4688">PORTUGAL</Descriptor>
</GeographicDescriptorList>
<OnomasticDescriptorList>
<Descriptor conf ="0.900908" id="6608">PORTUGAL. Ministro da Administração Interna,1999-2000
(Fernando Gomes)</Descriptor>
<Descriptor conf ="0.324886" id="6623">PORTUGAL. Ministro da Justiça, 1999(AntónioCosta)</Descriptor>
</OnomasticDescriptorList>
<Title>PSP e GNR vão investigar os pequenos crimes</Title>
82
<Abstract>A psp e a gnr vão investigar os pequenos crimes. São novas regras para libertar a judiciária
para a investigação de crimes mais complexos. O governo diz que o envolvimento da psp e da gnr vai permitir
combater os crimes de uma forma mais rápida e eficaz. Mas o parlamento terá ainda que aprovar a ideia. A
proposta foi aprovada hoje em conselho de ministros.</Abstract>
<StoryRepresentation>
<RelevantWord id="28470" ocurr="2" ocurrTranscList="13">processo</RelevantWord>
<RelevantWord id="13727" ocurr="1" ocurrTranscList="23">exclusivo</RelevantWord>
<RelevantWord id="22994" ocurr="1" ocurrTranscList="11">menor</RelevantWord>
<RelevantWord id="26409" ocurr="1" ocurrTranscList="23">passo</RelevantWord>
<RelevantWord id="23746" ocurr="1" ocurrTranscList="23">momento</RelevantWord>
<RelevantWord id="25621" ocurr="1" ocurrTranscList="16">órgão</RelevantWord>
<RelevantWord id="10333" ocurr="2" ocurrTranscList="24">desenvolver</RelevantWord>
<RelevantWord id="7523" ocurr="1" ocurrTranscList="24">cola</RelevantWord>
<RelevantWord id="2322" ocurr="1" ocurrTranscList="12">apresentar</RelevantWord>
<Relev antWord id="15156" ocurr="1" ocurrTranscList="5">forma</RelevantWord>
<RelevantWord id="21029" ocurr="1" ocurrTranscList="4">libertar</RelevantWord>
<RelevantWord id="34184" ocurr="1" ocurrTranscList="25">técnico</RelevantWord>
<RelevantWord id="9152" ocurr="6" ocurrTranscList="4,5,11,14">crime</RelevantWord>
<RelevantWord id="8001" ocurr="1" ocurrTranscList="23">concorrência</RelevantWord>
<RelevantWord id="13806" ocurr="1" ocurrTranscList="14">exigir</RelevantWord>
<RelevantWord id="13209" ocurr="1" ocurrTranscList="14">estar</RelevantWord>
<RelevantWord id="9155" ocurr="4" ocurrTranscList="10,13,23,25">criminal</RelevantWord>
<RelevantWord id="28082" ocurr="1" ocurrTranscList="24">preciso</RelevantWord>
<RelevantWord id="31955" ocurr="1" ocurrTranscList="26">segar</RelevantWord>
<RelevantWord id="36514" ocurr="1" ocurrTranscList="26">vigor</RelevantWord>
<RelevantWord id="9163" ocurr="1" ocurrTranscList="13">criminoso</RelevantWord>
<RelevantWord id="22868" ocurr="1" ocurrTranscList="25">meio</RelevantWord>
<RelevantWord id="20479" ocurr="2" ocurrTranscList="13">lado</RelevantWord>
<RelevantWord id="21932" ocurr="1" ocurrTranscList="13">maior</RelevantWord>
<RelevantWord id="11827" ocurr="1" ocurrTranscList="13">eficácia</RelevantWord>
<RelevantWord id="19281" ocurr="2" ocurrTranscList="3,11">investigar</RelevantWord>
<RelevantWord id="14689" ocurr="1" ocurrTranscList="14">ficar</RelevantWord>
<RelevantWord id="2822" ocurr="1" ocurrTranscList="23">aspecto</RelevantWord>
<RelevantWord id="2355" ocurr="1" ocurrTranscList="13">aproximação</RelevantWord>
<RelevantWord id="28858" ocurr="3" ocurrTranscList="3,5,11">psp</RelevantWord>
<RelevantWord id="7812" ocurr="4" ocurrTranscList="11,14,23">competência</RelevantWord>
<RelevantWord id="32099" ocurr="1" ocurrTranscList="25">senhor</RelevantWord>
<RelevantWord id="12584" ocurr="1" ocurrTranscList="5">envolvimento</RelevantWord>
<RelevantWord id="8713" ocurr="1" ocurrTranscList="17">coordenador</RelevantWord>
<RelevantWord id="515" ocurr="2" ocurrTranscList="17,23">administração</RelevantWord>
<RelevantWord id="22672" ocurr="1" ocurrTranscList="17">máximo</RelevantWord>
<RelevantWord id="34497" ocurr="3" ocurrTranscList="11,25">ter se</RelevantWord>
<RelevantWord id="24351" ocurr="1" ocurrTranscList="9">nacional</RelevantWord>
<RelevantWord id="7839" ocurr="2" ocurrTranscList="14">complexo</RelevantWord>
<RelevantWord id="31983" ocurr="1" ocurrTranscList="9">segurança</RelevantWord>
<RelevantWord id="31624" ocurr="3" ocurrTranscList="21">são</RelevantWord>
<RelevantWord id="32203" ocurr="12"
ocurrTranscList="8,10,16,17,19,21,23,24,26">ser</RelevantWord>
<RelevantWord id="13004" ocurr="1" ocurrTranscList="14">especializar</RelevantWord>
<RelevantWord id="30470" ocurr="1" ocurrTranscList="14">reservar</RelevantWord>
<RelevantWord id="10935" ocurr="1" ocurrTranscList="13">diminuir</RelevantWord>
<RelevantWord id="26941" ocurr="1" ocurrTranscList="5">permitir</RelevantWord>
<RelevantWord id="1545" ocurr="1" ocurrTranscList="23">âmbito</RelevantWord>
<RelevantWord id="34409" ocurr="4" ocurrTranscList="6,10,21,24">ter</RelevantWord>
<RelevantWord id="23445" ocurr="3" ocurrTranscList="17,25">ministro</RelevantWord>
<RelevantWord id="32851" ocurr="2" ocurrTranscList="22,23">sobreposição</RelevantWord>
<RelevantWord id="5995" ocurr="1" ocurrTranscList="15">cargo</RelevantWord>
<RelevantWord id="338" ocurr="1" ocurrTranscList="14">acordo</RelevantWord>
<RelevantWord id="10995" ocurr="2" ocurrTranscList="15,24">direcção</RelevantWord>
<RelevantWord id="29954" ocurr="1" ocurrTranscList="25">referir</RelevantWord>
<RelevantWord id="30526" ocurr="1" ocurrTranscList="17">responsar</RelevantWord>
<RelevantWord id="28687" ocurr="3" ocurrTranscList="8,12,22">proposta</RelevantWord>
<RelevantWord id="30071" ocurr="1" ocurrTranscList="4">regra</RelevantWord>
<RelevantWord id="3312" ocurr="1" ocurrTranscList="16">autoridade</RelevantWord>
<RelevantWord id="12229" ocurr="1" ocurrTranscList="24">emulação</RelevantWord>
<RelevantWord id="8256" ocurr="2" ocurrTranscList="8,17">conselho</RelevantWord>
83
<RelevantWord id="30167" ocurr="2" ocurrTranscList="23">relativamente</RelevantWord>
<RelevantWord id="28885" ocurr="2" ocurrTranscList="9,15">público</RelevantWord>
<RelevantWord id="20805" ocurr="2" ocurrTranscList="11,23">lei</RelevantWord>
<RelevantWord id="3162" ocurr="1" ocurrTranscList="13">aumento</RelevantWord>
<RelevantWord id="23093" ocurr="1" ocurrTranscList="26">mês</RelevantWord>
<RelevantWord id="25605" ocurr="2" ocurrTranscList="21,23">organização</RelevantWord>
<RelevantWord id="19085" ocurr="1" ocurrTranscList="17">interno</RelevantWord>
<RelevantWord id="7666" ocurr="1" ocurrTranscList="5">combater</RelevantWord>
<RelevantWord id="35273" ocurr="3" ocurrTranscList="12,16,17">três</RelevantWord>
<RelevantWord id="12509" ocurr="1" ocurrTranscList="26">entrar</RelevantWord>
<RelevantWord id="27557" ocurr="8" ocurrTranscList="10,14,16,17,22,25">polícia</RelevantWord>
<RelevantWord id="6866" ocurr="1" ocurrTranscList="17">chefe</RelevantWord>
<RelevantWord id="10999" ocurr="1" ocurrTranscList="17">directamente</RelevantWord>
<RelevantWord id="2858" ocurr="1" ocurrTranscList="26">assembleia</RelevantWord>
<RelevantWord id="27560" ocurr="1" ocurrTranscList="10">policiar</RelevantWord>
<RelevantWord id="34480" ocurr="1" ocurrTranscList="24">terreno</RelevantWord>
<RelevantWord id="12645" ocurr="2" ocurrTranscList="21">equipa</RelevantWord>
<RelevantWord id="2348" ocurr="3" ocurrTranscList="6,8,26">aprovar</RelevantWord>
<RelevantWord id="18872" ocurr="1" ocurrTranscList="15">instrução</RelevantWord>
<RelevantWord id="13626" ocurr="1" ocurrTranscList="22">evitar</RelevantWord>
<RelevantWord id="30156" ocurr="1" ocurrTranscList="16">relacionamento</RelevantWord>
<RelevantWord id="26281" ocurr="1" ocurrTranscList="6">parlamento</RelevantWord>
<RelevantWord id="754" ocurr="2" ocurrTranscList="24">agente</RelevantWord>
<RelevantWord id="21087" ocurr="1" ocurrTranscList="22">ligação</RelevantWord>
<RelevantWord id="32713" ocurr="1" ocurrTranscList="23">sistema</RelevantWord>
<RelevantWord id="2233" ocurr="1" ocurrTranscList="22">aplaudir</RelevantWord>
<RelevantWord id="36632" ocurr="1" ocurrTranscList="11">vir</RelevantWord>
<RelevantWord id="19198" ocurr="1" ocurrTranscList="11">introduzir</RelevantWord>
<RelevantWord id="2203" ocurr="1" ocurrTranscList="25">aperfeiçoar</RelevantWord>
<RelevantWord id="19911" ocurr="3" ocurrTranscList="4,10">judiciária</RelevantWord>
<RelevantWord id="15157" ocurr="1" ocurrTranscList="25">formação</RelevantWord>
<RelevantWord id="11243" ocurr="2" ocurrTranscList="5,23">dizer</RelevantWord>
<RelevantWord id="29451" ocurr="1" ocurrTranscList="5">rápido</RelevantWord>
<RelevantWord id="25020" ocurr="1" ocurrTranscList="11">novo</RelevantWord>
<RelevantWord id="7664" ocurr="1" ocurrTranscList="21">combate</RelevantWord>
<Relev antWord id="27885" ocurr="1" ocurrTranscList="23">positivo</RelevantWord>
<RelevantWord id="25134" ocurr="1" ocurrTranscList="10">obrigar</RelevantWord>
<RelevantWord id="24863" ocurr="1" ocurrTranscList="22">nome </RelevantWord>
<RelevantWord id="6871" ocurr="1" ocurrTranscList="13">chegar</RelevantWord>
<RelevantWord id="36007" ocurr="1" ocurrTranscList="3">vão</RelevantWord>
<RelevantWord id="10878" ocurr="1" ocurrTranscList="21">diferente</RelevantWord>
<RelevantWord id="23442" ocurr="1" ocurrTranscList="15">ministério</RelevantWord>
<RelevantWord id="24995" ocurr="1" ocurrTranscList="4">novar</RelevantWord>
<RelevantWord id="27371" ocurr="1" ocurrTranscList="14">pj</RelevantWord>
<RelevantWord id="15136" ocurr="1" ocurrTranscList="10">força</RelevantWord>
<RelevantWord id="27507" ocurr="2" ocurrTranscList="23,26">poder</RelevantWord>
<RelevantWord id="14351" ocurr="1" ocurrTranscList="15">fase</RelevantWord>
<RelevantWord id="17030" ocurr="3" ocurrTranscList="24">haver</RelevantWord>
<RelevantWord id="2856" ocurr="1" ocurrTranscList="16">assegurar</RelevantWord>
<RelevantWord id="8483" ocurr="2" ocurrTranscList="15,24">continuar</RelevantWord>
<RelevantWord id="6529" ocurr="2" ocurrTranscList="13">celeridade</RelevantWord>
<RelevantWord id="8005" ocurr="1" ocurrTranscList="21">concorrer</RelevantWord>
<RelevantWord id="10813" ocurr="1" ocurrTranscList="24">diálogo</RelevantWord>
<RelevantWord id="14831" ocurr="1" ocurrTranscList="13">finalmente</RelevantWord>
<RelevantWord id="5669" ocurr="1" ocurrTranscList="21">campeonato</RelevantWord>
<RelevantWord id="26796" ocurr="3" ocurrTranscList="3,24">pequeno</RelevantWord>
<RelevantWord id="16443" ocurr="4" ocurrTranscList="5,12,26">governo</RelevantWord>
<RelevantWord id="13030" ocurr="1" ocurrTranscList="26">espera</RelevantWord>
<RelevantWord id="16291" ocurr="3" ocurrTranscList="3,5,11">gnr</RelevantWord>
<RelevantWord id="19279" ocurr="5" ocurrTranscList="4,13,15,24,25">investigação</RelevantWord>
<RelevantWord id="16687" ocurr="1" ocurrTranscList="9">guarda</RelevantWord>
<RelevantWord id="13824" ocurr="1" ocurrTranscList="23">existir</RelevantWord>
<RelevantWord id="30429" ocurr="1" ocurrTranscList="26">república</RelevantWord>
<RelevantWord id="26377" ocurr="1" ocurrTranscList="11">passar</RelevantWord>
<RelevantWord id="13010" ocurr="1" ocurrTranscList="14">especificamente</RelevantWord>
<RelevantWord id="6754" ocurr="1" ocurrTranscList="10">chamar</RelevantWord>
84
<RelevantWord id="19910" ocurr="1" ocurrTranscList="16">judiciar</RelevantWord>
<RelevantWord id="7524" ocurr="2" ocurrTranscList="24,25">colaboração</RelevantWord>
<RelevantWord id="560" ocurr="1" ocurrTranscList="25">adquirir </RelevantWord>
<Relev antWord id="11534" ocurr="1" ocurrTranscList="10">duas</RelevantWord>
<RelevantWord id="15547" ocurr="2" ocurrTranscList="22,24">função</RelevantWord>
<RelevantWord id="19331" ocurr="3" ocurrTranscList="5,23,25">ir</RelevantWord>
<RelevantWord id="9156" ocurr="2" ocurrTranscList="13,21">criminalidade</RelevantWord>
<RelevantWord id="14132" ocurr="2" ocurrTranscList="24">fácil</RelevantWord>
<RelevantWord id="7513" ocurr="1" ocurrTranscList="24">coisa</RelevantWord>
<RelevantWord id="2747" ocurr="1" ocurrTranscList="16">articulação</RelevantWord>
<RelevantWord id="19926" ocurr="1" ocurrTranscList="15">juiz</RelevantWord>
<RelevantWord id="9740" ocurr="1" ocurrTranscList="21">defesa</RelevantWord>
<RelevantWord id="6759" ocurr="1" ocurrTranscList="17">chamar-se</RelevantWord>
<RelevantWord id="24814" ocurr="2" ocurrTranscList="24">nível</RelevantWord>
<RelevantWord id="15128" ocurr="1" ocurrTranscList="26">for</RelevantWord>
<RelevantWord id="7263" ocurr="1" ocurrTranscList="23">clarificação</RelevantWord>
<RelevantWord id="7869" ocurr="1" ocurrTranscList="17">composto</RelevantWord>
<RelevantWord id="3288" ocurr="1" ocurrTranscList="11">autonomia</RelevantWord>
<RelevantWord id="7056" ocurr="1" ocurrTranscList="13">cidadãos</RelevantWord>
<RelevantWord id="9175" ocurr="1" ocurrTranscList="24">crispações </RelevantWord>
<RelevantWord id="10983" ocurr="1" ocurrTranscList="14,26">diploma</RelevantWord>
<RelevantWord id="11127" ocurr="1" ocurrTranscList="21">disputar</RelevantWord>
<RelevantWord id="30253" ocurr="1" ocurrTranscList="24">remover</RelevantWord>
<RelevantWord id="11322" ocurr="1" ocurrTranscList="17">dois</RelevantWord>
<RelevantWord id="28309" ocurr="1" ocurrTranscList="24">pretender</RelevantWord>
<RelevantWord id="33035" ocurr="1" ocurrTranscList="10">solução</RelevantWord>
<RelevantWord id="13168" ocurr="2" ocurrTranscList="19,21">estado</RelevantWord>
<RelevantWord id="28448" ocurr="1" ocurrTranscList="10">problema</RelevantWord>
<RelevantWord id="30576" ocurr="1" ocurrTranscList="21">resultado</RelevantWord>
<RelevantWord id="1380" ocurr="1" ocurrTranscList="11">alteração</RelevantWord>
<RelevantWord id="2266" ocurr="1" ocurrTranscList="23">apontar</RelevantWord>
<RelevantWord id="19125" ocurr="1" ocurrTranscList="14">intervenção</RelevantWord>
<RelevantWord id="28497" ocurr="1" ocurrTranscList="13">procurar</RelevantWord>
</StoryRepresentation>
</StorySegment>
85
86
B.3
Thesaurus Temático
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE THEM_THESAURUS_BD SYSTEM "them_thesaurus_bd.dtd">
<THEM_THESAURUS_BD>
<DOMAIN>
<NAME ID="1">Agricultura, Pecuária, Pescas e Silvicultura</NAME>
<LEVEL1>
<NAME1 ID="2">Abate de animais</NAME1>
<LEVEL2>
<NAME2 ID="3">Abate de aves</NAME2>
</LEVEL2>
<LEVEL2>
<NAME2 ID="4">Abate de gado</NAME2>
</LEVEL2>
</LEVEL1>
<LEVEL1>
<NAME1 ID="5">Alimentação animal</NAME1>
<LEVEL2>
<NAME2 ID="6">Alimento composto para animais </NAME2>
</LEVEL2>
</LEVEL1>
<LEVEL1>
<NAME1 ID="7">Animal de exploração agrícola</NAME1>
<LEVEL2>
<NAME2 ID="8">Ave de capoeira</NAME2>
</LEVEL2>
<LEVEL2>
<NAME2 ID="9">Efectivo pecuario</NAME2>
</LEVEL2>
<LEVEL2>
<NAME2 ID="10">Espécie cinegética</NAME2>
</LEVEL2>
<LEVEL2>
<NAME2 ID="11">Gado</NAME2>
</LEVEL2>
</LEVEL1>
<LEVEL1>
<NAME1 ID="12">Doença vegetal</NAME1>
<LEVEL2>
<NAME2 ID="13">Doença da videira</NAME2>
</LEVEL2>
<LEVEL2>
<NAME2 ID="14">Doença do tomateiro</NAME2>
</LEVEL2>
</LEVEL1>
<LEVEL1>
<NAME1 ID="15">Economia agrícola</NAME1>
<LEVEL2>
<NAME2 ID="16">Abandono da agricultura</NAME2>
</LEVEL2>
<LEVEL2>
<NAME2 ID="17">Aprovisionamento agrícola</NAME2>
</LEVEL2>
<LEVEL2>
<NAME2 ID="18">Crise na agricultura</NAME2>
</LEVEL2>
<LEVEL2>
<NAME2 ID="19">Custo agrícola</NAME2>
</LEVEL2>
<LEVEL2>
<NAME2 ID="20">Endividamento agrícola</NAME2>
</LEVEL2>
<LEVEL2>
<NA ME2 ID="21">Estatística agrícola</NAME2>
</LEVEL2>
<LEVEL2>
<NAME2 ID="22">Financiamento agrícola</NAME2>
87
88
B.4
Thesaurus Geográfico
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE GEO_THESAURUS_BD SYSTEM "geo_thesaurus_bd.dtd">
<GEO_THESAURUS_BD>
<DOMAIN>
<NAME ID="3424">9446</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3425">9448</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3426">ABIDJA N</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3427">ABRANTES </NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3428">ABU DHABI</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3429">ABUJA</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3430">ACAPULCO</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3431">AÇORES</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3432">ACRA </NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3433">ADELAIDE</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3434">ADIS ABEBA</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3435">AFEGANISTÃO</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3436">ÁFRICA </NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3437">ÁFRICA ANGLÓFONA </NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3438">ÁFRICA CENTRAL</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3439">ÁFRICA DO NORTE</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3440">ÁFRICA DO SUL</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3441">ÁFRICA FRANCÓFONA</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3442">ÁFRICA LUSÓFONA </NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3443">ÁFRICA MERIDIONAL</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="3444">ÁFRICA OCIDENTAL</NAME>
</DOMAIN>
89
90
B.5
Thesaurus Onomástico
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE ONO_THESAURUS_BD SYSTEM "ono_thesaurus_bd.dtd">
<ONO_THESAURUS_BD>
<DOMAIN>
<NAME ID="5189">A.J.Auxerre</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5190">AC DE MILÃO</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5191">AC Fiorentina</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5192">AC Milan</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5193">AC Milão</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5194">AC Parma</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5195">ACADÉMICA FUTEBOL CLUBE</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5196">AEP</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5197">Agência espacial norte-americana</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5198">AIPORTUENSE</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5199">AIR LUXOR</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5200">AJAuxerre</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5201">ALAVÉS</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5202">aliança atlântica</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5203">ALTA AUTORIDADE PARA A COMUNICAÇÃO SOCIAL</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5204">AMI</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5205">AMNISTIA INTERNACIONAL</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5206">ANDC</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5207">ANF</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5208">ANRT</NAME>
</DOMAIN>
<DOMAIN>
<NAME ID="5209">APAF</NAME>
</DOMAIN>
91
92
B.6
Programas
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE AlertProgram SYSTEM "AlertProgram.dtd">
<AlertProgram>
<Program ProgramID="1">Telejornal</Program>
<Program ProgramID="2">Jornal2</Program>
<Program ProgramID="3">RTPEconomia</Program>
<Program ProgramID="4">Remate</Program>
<Program ProgramID="5">PaisRegioesLx</Program>
<Program ProgramID="6">PaisRegioes</Program>
<Program ProgramID="7">Noticias</Program>
<Program ProgramID="8">JornaldaTarde</Program>
<Program ProgramID="9">GrandeEntrevista</Program>
<Program ProgramID="10">Acontece</Program>
<Program ProgramID="11">24Horas</Program>
</AlertProgram>
93
94
B.7
Oradores
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE KNOWN_SPEAKER_BD SYSTEM "known_speaker_bd.dtd">
<KNOWN_SPEAKER_BD>
<Speaker SpeakerID="1" Gender="F">Adília Godinho</Speaker>
<Speaker SpeakerID="2" Gender="M">Alberto João Jardim</Speaker>
<Speaker SpeakerID="3" Gender="M">Almeida Santos</Speaker>
<Speaker SpeakerID="4" Gender="F">Ana Candeias</Speaker>
<Speaker SpeakerID="5" Gender="F">Ana Romeu</Speaker>
<Speaker SpeakerID="6" Gender="F">Anabela Santos</Speaker>
<Speaker SpeakerID="7" Gender="F">Andreia Neves</Speaker>
<Speaker SpeakerID="8" Gender="M">António Abreu</Speaker>
<Speaker SpeakerID="9" Gender="M">António Costa</Speaker>
<Speaker SpeakerID="10" Gender="M">António Esteves Martins</Speaker>
<Speaker SpeakerID="11" Gender="M">António Guterres</Speaker>
<Speaker SpeakerID="12" Gender="M">António Oliveira</Speaker>
<Speaker SpeakerID="13" Gender="M">Augusto Inácio</Speaker>
<Speaker SpeakerID="14" Gender="M">Basílio Horta</Speaker>
<Speaker SpeakerID="15" Gender="M">Belmiro de Azevedo</Speaker>
<Speaker SpeakerID="16" Gender="F">Berta de Freitas </Speaker>
<Speaker SpeakerID="17" Gender="M">Beto</Speaker>
<Speaker SpeakerID="18" Gender="M">Capoulas Santos</Speaker>
<Speaker SpeakerID="19" Gender="F">Carla Trafaria</Speaker>
<Speaker SpeakerID="20" Gender="M">Carlos Carvalhas</Speaker>
<Speaker SpeakerID="21" Gender="M">Carlos Cymerman</Speaker>
<Speaker SpeakerID="22" Gender="M">Carlos César</Speaker>
<Speaker SpeakerID="23" Gender="M">Carlos Fino</Speaker>
<Speaker SpeakerID="24" Gender="M">Carlos Pinto Coelho</Speaker>
<Speaker SpeakerID="25" Gender="M">Castro Caldas</Speaker>
<Speaker SpeakerID="26" Gender="M">Cavaco Silva</Speaker>
<Speaker SpeakerID="27" Gender="F">Cecília Carmo</Speaker>
<Speaker SpeakerID="28" Gender="M">Cesário Borga</Speaker>
<Speaker SpeakerID="29" Gender="F">Cláudia Lopes</Speaker>
<Speaker SpeakerID="30" Gender="M">Cristiano Miguel</Speaker>
<Speaker SpeakerID="31" Gender="F">Cristina Esteves</Speaker>
<Speaker SpeakerID="32" Gender="M">Cunha Rodrigues</Speaker>
<Speaker SpeakerID="33" Gender="M">Daniel Campelo</Speaker>
<Speaker SpeakerID="34" Gender="F">Daniela Santiago</Speaker>
<Speaker SpeakerID="35" Gender="M">Dias da Cunha</Speaker>
<Speaker SpeakerID="36" Gender="F">Dina Aguiar</Speaker>
<Speaker SpeakerID="37" Gender="M">Duarte Valente</Speaker>
<Speaker SpeakerID="38" Gender="M">Durão Barroso</Speaker>
<Speaker SpeakerID="39" Gender="F">Edite Estrela</Speaker>
<Speaker SpeakerID="40" Gender="F">Elisa Ferreira</Speaker>
<Speaker SpeakerID="41" Gender="F">Elsa Marujo</Speaker>
<Speaker SpeakerID="42" Gender="M">Eládio Clímaco</Speaker>
<Speaker SpeakerID="43" Gender="M">Eusébio</Speaker>
<Speaker SpeakerID="44" Gender="M">Evgueni Mouravitch</Speaker>
<Speaker SpeakerID="45" Gender="M">Fernando Rosas</Speaker>
<Speaker SpeakerID="46" Gender="M">Ferraz da Costa</Speaker>
<Speaker SpeakerID="47" Gender="M">Ferreira do Amaral</Speaker>
<Speaker SpeakerID="48" Gender="M">Ferro Rodrigues</Speaker>
<Speaker SpeakerID="49" Gender="F">Filipa Costa</Speaker>
<Speaker SpeakerID="50" Gender="M">Francisco Louçã</Speaker>
<Speaker SpeakerID="51" Gender="M">Freitas do Amaral</Speaker>
<Speaker SpeakerID="52" Gender="F">Fátima Campos Ferreira</Speaker>
<Speaker SpeakerID="53" Gender="F">Fátima Silva</Speaker>
<Speaker SpeakerID="54" Gender="M">Garcia Pereira</Speaker>
<Speaker SpeakerID="55" Gender="M">Gilberto Madaíl</Speaker>
<Speaker SpeakerID="56" Gender="M">Hélder Marques de Sousa</Speaker>
<Speaker SpeakerID="57" Gender="M">Hélder Silva</Speaker>
<Speaker SpeakerID="58" Gender="F">Helena Sousa e Silva</Speaker>
<Speaker SpeakerID="59" Gender="F">Isabel Damásio</Speaker>
<Speaker SpeakerID="60" Gender="F">Isabel Magalhães</Speaker>
<Speaker SpeakerID="61" Gender="F">Isabel Pereira Santos</Speaker>
<Speaker SpeakerID="62" Gender="F">Isabel Silva Costa</Speaker>
<Speaker SpeakerID="63" Gender="M">Jaime Gama</Speaker>
95
<Speaker SpeakerID="64" Gender="M">Jaime Pacheco</Speaker>
<Speaker SpeakerID="65" Gender="M">Joaquim Fernandes </Speaker>
<Speaker SpeakerID="66" Gender="M">Jorge Coelho</Speaker>
<Speaker SpeakerID="67" Gender="M">Jorge Pereira</Speaker>
<Speaker SpeakerID="68" Gender="M">Jorge Sampaio</Speaker>
<Speaker SpeakerID="69" Gender="M">José Mourinho</Speaker>
<Speaker SpeakerID="70" Gender="M">José Rodrigues dos Santos</Speaker>
<Speaker SpeakerID="71" Gender="M">José Saramago</Speaker>
<Speaker SpeakerID="72" Gender="M">José Socrates </Speaker>
<Speaker SpeakerID="73" Gender="M">João Carlos Silva</Speaker>
<Speaker SpeakerID="74" Gender="M">João Cravinho</Speaker>
<Speaker SpeakerID="75" Gender="M">João Fernando Ramos</Speaker>
<Speaker SpeakerID="76" Gender="M">João Mira Godinho</Speaker>
<Speaker SpeakerID="77" Gender="M">João Pedro Mendonça</Speaker>
<Speaker SpeakerID="78" Gender="M">João Pinto</Speaker>
<Speaker SpeakerID="79" Gender="M">João Tomé de Carvalho</Speaker>
<Speaker SpeakerID="80" Gender="M">João Vale e Azevedo</Speaker>
<Speaker SpeakerID="81" Gender="F">Judite de Sousa</Speaker>
<Speaker SpeakerID="82" Gender="F">Laura Santos</Speaker>
<Speaker SpeakerID="83" Gender="F">Leonor Elias</Speaker>
<Speaker SpeakerID="84" Gender="M">Ludgero Marques</Speaker>
<Speaker SpeakerID="85" Gender="M">Luís Baila</Speaker>
<Speaker SpeakerID="86" Gender="M">Luís Figo</Speaker>
<Speaker SpeakerID="87" Gender="M">Luís Miguel Loureiro</Speaker>
<Speaker SpeakerID="88" Gender="F">Luísa Bastos</Speaker>
<Speaker SpeakerID="89" Gender="F">Mafalda Gameiro</Speaker>
<Speaker SpeakerID="90" Gender="F">Magda Rocha</Speaker>
<Speaker SpeakerID="91" Gender="M">Manuel Alegre</Speaker>
<Speaker SpeakerID="92" Gender="M">Manuel Menezes</Speaker>
<Speaker SpeakerID="93" Gender="M">Manuel Monteiro</Speaker>
<Speaker SpeakerID="94" Gender="M">Manuel Vilarinho</Speaker>
<Speaker SpeakerID="95" Gender="F">Manuela Arcanjo</Speaker>
<Speaker SpeakerID="96" Gender="M">Marcelo Rebelo de Sousa</Speaker>
<Speaker SpeakerID="97" Gender="F">Maria João Figueiredo</Speaker>
<Speaker SpeakerID="98" Gender="M">Mariano Gago</Speaker>
<Speaker SpeakerID="99" Gender="M">Marques Mendes</Speaker>
<Speaker SpeakerID="100" Gender="M">Miguel Portas </Speaker>
<Speaker SpeakerID="101" Gender="M">Mota Amaral</Speaker>
<Speaker SpeakerID="102" Gender="F">Márcia Rodrigues</Speaker>
<Speaker SpeakerID="103" Gender="M">Mário Jardel</Speaker>
<Speaker SpeakerID="104" Gender="M">Mário Soares </Speaker>
<Speaker SpeakerID="105" Gender="M">Narana Coisoró</Speaker>
<Speaker SpeakerID="106" Gender="M">Nelo Vingada</Speaker>
<Speaker SpeakerID="107" Gender="M">Nelson Maltez </Speaker>
<Speaker SpeakerID="108" Gender="M">Noé Monteiro</Speaker>
<Speaker SpeakerID="109" Gender="M">Nuno Cardoso</Speaker>
<Speaker SpeakerID="110" Gender="M">Octávio Teixeira</Speaker>
<Speaker SpeakerID="111" Gender="F">Odete Santos </Speaker>
<Speaker SpeakerID="112" Gender="M">Onofre Costa</Speaker>
<Speaker SpeakerID="113" Gender="F">Patrícia Gallo</Speaker>
<Speaker SpeakerID="114" Gender="F">Patrícia Pedrosa</Speaker>
<Speaker SpeakerID="115" Gender="M">Paulo Catarro</Speaker>
<Speaker SpeakerID="116" Gender="M">Paulo Dentinho</Speaker>
<Speaker SpeakerID="117" Gender="M">Paulo José Martins</Speaker>
<Speaker SpeakerID="118" Gender="M">Paulo Lavadinho</Speaker>
<Speaker SpeakerID="119" Gender="M">Paulo Portas</Speaker>
<Speaker SpeakerID="120" Gender="M">Pedro Bicudo</Speaker>
<Speaker SpeakerID="121" Gender="M">Pedro Mariano</Speaker>
<Speaker SpeakerID="122" Gender="M">Pina Moura</Speaker>
<Speaker SpeakerID="123" Gender="M">Pinto da Costa</Speaker>
<Speaker SpeakerID="124" Gender="M">Ramos Horta</Speaker>
<Speaker SpeakerID="125" Gender="M">Ricardo Sá Fernandes</Speaker>
<Speaker SpeakerID="126" Gender="F">Rita Ramos</Speaker>
<Speaker SpeakerID="127" Gender="F">Rosa Veloso</Speaker>
<Speaker SpeakerID="128" Gender="M">Rui Alves Veloso</Speaker>
<Speaker SpeakerID="129" Gender="M">Rui Cerqueira</Speaker>
96
<Speaker SpeakerID="130"
<Speaker SpeakerID="131"
<Speaker SpeakerID="132"
<Speaker SpeakerID="133"
<Speaker SpeakerID="134"
<Speaker SpeakerID="135"
<Speaker SpeakerID="136"
<Speaker SpeakerID="137"
<Speaker SpeakerID="138"
<Speaker SpeakerID="139"
<Speaker SpeakerID="140"
<Speaker SpeakerID="141"
<Speaker SpeakerID="142"
<Speaker SpeakerID="143"
<Speaker SpeakerID="144"
<Speaker SpeakerID="145"
<Speaker SpeakerID="146"
<Speaker SpeakerID="147"
<Speaker SpeakerID="148"
<Speaker SpeakerID="149"
</KNOWN_SPEAKER_BD>
Gender="M">Rui Martins</Speaker>
Gender="M">Rui Rio</Speaker>
Gender="M">Rui Sá</Speaker>
Gender="M">Rui Veloso</Speaker>
Gender="F">Sandra Duarte</Speaker>
Gender="F">Sandra Felgueiras</Speaker>
Gender="F">Sandra Videirinho</Speaker>
Gender="M">Santana Lopes</Speaker>
Gender="M">Simão Sabrosa</Speaker>
Gender="M">Sousa Franco</Speaker>
Gender="F">Susana Santos</Speaker>
Gender="M">Sá Pinto</Speaker>
Gender="M">Sérgio Godinho</Speaker>
Gender="F">Teresa Lago</Speaker>
Gender="F">Teresa Marques</Speaker>
Gender="F">Teresa Pereira</Speaker>
Gender="M">Toni</Speaker>
Gender="M">Valentim Loureiro</Speaker>
Gender="F">Vanda Freire</Speaker>
Gender="M">Vitor Gonçalves</Speaker>
97
98
B.8
Léxico Lematizado - excerto
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE LEXICON_LEMMA_BD SYSTEM "lexicon_lemma_bd.dtd">
<LEXICON_LEMMA_BD>
<NAME id="1" weight="1.0">a</NAME>
<NAME id="2" weight="1.0">aachen</NAME>
<NAME id="3" weight="1.0">aacs</NAME>
<NAME id="4" weight="1.0">aalto</NAME>
<NAME id="5" weight="1.0">aarão</NAME>
<NAME id="6" weight="1.0">aarau</NAME>
<NAME id="7" weight="1.0">aardman</NAME>
<NAME id="8" weight="1.0">aarhus</NAME>
<NAME id="9" weight="1.0">aaron</NAME>
<NAME id="10" weight="1.0">aaum</NAME>
<NAME id="11" weight="1.0">aba</NAME>
<NAME id="12" weight="1.0">abacate</NAME>
<NAME id="13" weight="1.0">abacha</NAME>
<NAME id="14" weight="1.0">abade</NAME>
<NAME id="15" weight="1.0">abadia</NAME>
<NAME id="16" weight="1.0">abafar</NAME>
<NAME id="17" weight="1.0">abaixamento</NAME>
<NAME id="18" weight="1.0">abaixo</NAME>
<NAME id="19" weight="1.0">abaixo-assinado</NAME>
<NAME id="20" weight="1.0">abalar</NAME>
<NAME id="21" weight="1.0">ábalo</NAME>
<NAME id="22" weight="1.0">abalroamento</NAME>
<NAME id="23" weight="1.0">abalroar</NAME>
<NAME id="24" weight="1.0">abanada</NAME>
<NAME id="25" weight="1.0">abanão</NAME>
<NAME id="26" weight="1.0">abanar</NAME>
<NAME id="27" weight="1.0">abandonar</NAME>
<NAME id="28" weight="1.0">abandono</NAME>
<NAME id="29" weight="1.0">abarcar</NAME>
<NAME id="30" weight="1.0">abarrotar</NAME>
<NAME id="31" weight="1.0">abastança</NAME>
<NAME id="32" weight="1.0">abastar</NAME>
<NAME id="33" weight="1.0">abastardamento</NAME>
<NAME id="34" weight="1.0">abastecedor</NAME>
<NAME id="35" weight="1.0">abastecedores</NAME>
<NAME id="36" weight="1.0">abastecer</NAME>
<NAME id="37" weight="1.0">abasteceu</NAME>
<NAME id="38" weight="1.0">abastecimento</NAME>
<NAME id="39" weight="1.0">abate</NAME>
<NAME id="40" weight="1.0">abater</NAME>
<NAME id="41" weight="1.0">abater se</NAME>
<NAME id="42" weight="1.0">abatimento</NAME>
<NAME id="43" weight="1.0">abatimentos </NAME>
<NAME id="44" weight="1.0">abbado</NAME>
<NAME id="45" weight="1.0">abbondanza</NAME>
<NAME id="46" weight="1.0">abc</NAME>
<NAME id="47" weight="1.0">abcesso</NAME>
<NAME id="48" weight="1.0">abdala</NAME>
…
99
Apêndice C
Imagens do website
Figura C.1: A página de entrada do website SSNT.
100
101
Figura C.2: A página de pesquisa directa do website SSNT.
Figura C.3: A página de pesquisa directa do website SSNT: alteração dum tópico de
pesquisa.
102
Figura C.4: A página de registo de utilizador do website SSNT: Exemplo de registo.
Figura C.5: Confirmação de registo de utilizador.
103
Figura C.6: Email de Registo SSNT com link de autenticação.
Figura C.7: Autenticação de registo de utilizador.
104
Figura C.8: Página de alteração do perfil pessoal: Definição de tópicos.
Figura C.9: Controlo de topicos com entradas manuais demasiado genéricas.
105
Figura C.10: Página de alteração da informação pessoal.
Figura C.11: Página de apresentação de resultados com visualização da apresentação
SMIL/Real Text.
106
Figura C.12: Entrada na página de Administração (A conta de administrador dispensa
este passo).
Figura C.13: Página de Administração e navegação directa sobre os programas na BDSSNT.
107
Figura C.14: Página de Administração: Agrupamento de TranscriptSegments por
SpeakerSegment.
Figura C.15: Página de Administração: Parsers auxiliares 1.
108
Figura C.16: Página de Administração: Parsers auxiliares 2.
Apêndice D
Imagens do e-mail
Figura D.1: exemplo de um e-mail de alerta em formato HTML, ordenação cronológica.
109
110
Figura D.2: exemplo de um e-mail de alerta em formato HTML, ordenação por tópico.
Figura D.3:
cronológica.
exemplo de um e-mail de alerta em formato plain-text, ordenação
Apêndice E
Guia de Instalação
111
Guia de Instalação do Servidor SSNT
Notas:
• durante o processo de instalação deve reiniciar-se o computador sempre que
sugerido pelo sistema operativo.
• A edição de ficheiros copiados directamente a partir do cd deve ser precedida
da desactivação da respectiva protecção contra escrita.
Os passos de instalação tomam como exemplo para o nome do computador ssnt e a
letra correspondente à drive de cd é substituída por CDROM.
1. Instalar o sistema operativo MS Windows 2000
1.1 Se necessário, alterar o nome ao computador:
Start->Settings->Control Panel->System:
Network Identification->Properties: ComputerName
2. Instalar o software em CDROM:\install_me_first
.\w2ksp2
.\ie5.5update
.\Winzip
.\windows installer
3. Instale o JRE da Sun
executar j2____.exe
em CDROM:\impl_ssnt\j2re___\
3.1 Altere a variável de ambiente PATH adicionando-lhe:
;C:\j2sdk1.4.0\bin
4. Instalar o SGBD-MySQL
4.1 descomprimir o ficheiro:
CDROM:\impl_ssnt\MySQLServers_Clients\mysql-3.23.45-win.zip
4.2 executar o programa de instalação
setup.exe
4.3 instalar o mysql como serviço:
4.3.1 criar um ficheiro my.ini em \winnt\ com os seguintes dados:
[mysqld]
basedir=E:/installation-path/
datadir=E:/data-path/
exemplo (supondo que a instalação do mysql foi feita em C:/mysql/):
[mysqld]
basedir=C:/mysql/
datadir=C:/mysql/data
4.3.2 estabelecer a configuração do mysql:
editar my-example.conf na directoria de instalação do mysql
112
4.3.3 executar sob a directoria de instalação:
bin\mysqld-nt --install
4.4 verificação da instalação do mysql:
executar winmysqladmin.exe,
dar user e pass,
retirar o programa do Startup menu
repetir o passo 4.3.3
5. (opcional) Instalar um front para o MySQL:
5.1 descomprimir o ficheiro
CDROM:\dev_soft\MYSQLFront1.22\mysqlfront.zip
para, p.e., C:\Program Files\MySQLFront1.22
5.2 crie um atalho para o ficheiro mysqlfront.exe onde achar mais conveniente
p.e., Desktop
5.3 inicie o mysqlfront para verificar a ligação ao MySQL
(caso a ligação não seja bem sucedida repita o passo 4.4)
6. Criar e instalar a BD-SSNT:
em CDROM:\impl_ssnt\bdssnt estão dois ficheiros da base de dados SSNT:
bdssnt_noepisodes.sql (contém dados de inicialização)
bdssnt_pilotcorpus.sql (contém o ficheiro anterior e os xml do pilot-corpus)
6.1 criar a base de dados ssntdb
em:
\mysql\bin\
executar:
\mysql\bin>mysql
mysql> create database ssntdb;
mysql> quit;
6.2 escolher e copiar um dos dois ficheiros acima bdssnt_*.sql para \mysql\
6.3 carregar a base de dados, executar:
\mysql\bin\mysql ssntdb < bdssnt_*.sql
6.4 (opcional) verificar no mysqlfront o correcto carregamento da ssntdb
7. Instalar o PHP, exemplo para a directoria de instalação c:\php4\
7.1 descomprimir o ficheiro
CDROM:\impl_ssnt\php-4.0.6-Win32\php-4.0.6-Win32.zip
p.e., para:
c:\php4
7.2 copiar o ficheiro c:\php4\php.ini-dist
php.ini
7.3 editar este ficheiro e alterar:
-
session.save_path = /tmp
113
para C:\WINNT e renomeá-lo para
+ session.save_path = c:/php4/sessiondata
+
doc_root =
doc_root = "c:\Program Files\Apache Group\Apache\htdocs"
(directoria dos de instalação do site)
+
extension_dir
extension_dir = c:\php4\extensions
+
;extension=php_java.dll
extension=php_java.dll
+
;include_path =
include_path = ".;c:\php4\includes"
sob [Java] colocar:
; This must point to the location of php_java.dll.
java.library.path = D:\php4\extensions
; This points to the directory where your Java
; classes will be stored. You can designate multiple
; paths, each path separated by a semicolon.
; It must also include the location of php_java.jar
java.class.path =
"C:\php4\java\php_java.jar;C:\php4\java;C:\;C:\jservice\lib\mysqldrv\
mm.mysql-2.0.11-bin.jar"
; This points to the bin directory of the JDK.
java.home = "C:\j2sdk1.4.0\bin"
; This must point to the Java Virtual Machine (jvm.dll) file.
java.library = "C:\j2sdk1.4.0\jre\bin\client\jvm.dll"
7.4 criar a directoria sessiondata, c:\php4\sessiondata
7.5 copiar os ficheiros CDROM:\impl_ssnt\php\java\*.* para c:\php4\java\
7.6 copiar a directoria CDROM:\impl_ssnt\php\config para c:\php4\
7.7 criar a directoria C:\php4\log\
7.8 editar os ficheiros de configuração e verificar as propriedades
C:\php4\config\*.cfg
8. Instalar o Apache WebServer
exemplo para a directoria de instalação (se não for este o caso rever o ponto 7.3)
C:\Program Files\Apache Group\Apache\
8.1 executar:
CDROM:\impl_ssnt\apache1.3.22_win32\apache_1.3.22-win32-x86.exe
8.2 editar:
C:\Program Files\Apache Group\Apache\conf\httpd.conf
Adicionar as linhas seguintes:
ScriptAlias /php4/ "c:/php4/"
Action application/x-httpd-php4 "/php4/php.exe"
AddType application/x-httpd-php4 .php
114
AddType application/x-httpd-php4 .php3
8.3 reiniciar o Apache:
executar na Linha de Comandos
NET STOP APACHE
seguido de
NET START APACHE
ou através de Start->Programs->Apache
9. Instalar o James Mail Server
(necessário se não houver ligação a uma rede ou se na rede não estivar acessível
nenhum servidor de SMTP).
9.1 descomprimir o ficheiro:
CDROM:\dev\JavaJames20a2MailEngine\james-2.0a2.zip
para, p.e.,
C:\james\
9.2 executar bin\run.bat após o arranque terminar fechar a aplicação
9.3 editar o ficheiro C:\james\apps\james\conf\config.xml
-
-
alterar o postmaster email address:
[email protected] (para o domínio de rede local.net)
ou
postmaster@ssnt (se não houver domínio de rede)
descomentar e alterar servername:
-
endereço IP do servidor de DNS da rede local em:
-
<dnsserver><server>#.#.#.#</server>
alterar a password de administrador, default: root
ssnt
9.4 editar o ficheiro c:\php4\php.ini e alterar [mail function] para:
SMTP = ssnt.local.net
(para o domínio de rede local.net)
ou
SMTP = ssnt
(se não houver domínio de rede)
9.5 criar um atalho para o ficheiro C:\james\bin\run.bat
para onde for mais conveniente, p.e., Desktop
9.6 Lançar o James pelo atalho, criar a conta postmaster
telnet <IP-address> 4555
e testar usando um programa cliente de e-mail
10. Instalar o RealPlayer 8, executar
CDROM:\impl_ssnt\RealPlayer8Basic_Standard\rp8-standard-u1-setup.exe
11. Instalar o RealServer 8
11.1 executar
CDROM:\impl_ssnt\realserver8.02\rs802-win32.exe
pnm:// 7070
rtsp:// 5554
http:// 8080
115
realserver admin: ....
NtService:install
(registar o porto de configuração)
11.2 Criar a directoria ssnt_media_clips\
em, p.e.
C:\SSNTRM\
- no caso de se ter carregado a BD-SSNT com o PilotCorpus:
copiar os vídeos
CDROM:\impl_ssnt\PilotCorpus\ssnt_media_clips\*.rm
para C:\SSNTRM\ssnt_media_clips\
11.3 Criar a directoria SSNTSMIL\
em, p.e.
C:\
- no caso de se ter carregado a BD-SSNT com o PilotCorpus:
copiar os ficheiros smil e realtext
CDROM:\impl_ssnt\PilotCorpus\SSNTSMIL\*.* /s
para C:\SSNTSMIL\
11.4 Configurar 2 mountpoints na ferramenta de administração do RealServer
/
para C:\SSNTRM
e
/mountpoint1/
para C:\SSNTSMIL\
12. Instalar o MatchingService
copiar
CDROM:\impl_ssnt\ssntjsrv2
para p.e.
C:\jservice
12.1 editar os ficheiros de configuração e verificar as propriedades
C:\jservice\*.cfg
12.2 instalar como serviço, executar na Linha de Comandos:
C:\jservice\installService "-d" "-logH" "match" "-logL" "mail" "-mt" "600"
12.3 configurar o comportamento do Serviço:
em
Start->Settings->Control Panel->Administrative Tools->Services
aceder às Properties de
Service SSNT Matching
definir em General:
Startup Type: Automatic – arranca quando o sistema operativo
e em Log On marcar:
Allow service to interact with desktop – permite ver a aplicação em
funcionamento
12.4 iniciar o serviço, executar na Linha de Comandos:
C:\jservice\startService
116
13. Instalar o site (htdocs)
13.1 copiar a directoria
CDROM:\impl_ssnt\htdocs
para C:\Program Files\Apache Group\Apache\
13.2 editar o ficheiro de configuração config.inc.php e verificar as
propriedades
14. DBLoader
14.1 Instalar MS XML 4.0 Parser SDK
CDROM:\impl_ssnt\msXML4\msxml4.msi
14.2 Copiar
CDROM:\impl_ssnt\DBLoaderTrigger\*.*
para p.e.
C:\DBLoaderTrigger\
14.3 Colocar o ficheiro dbloader.ini em C:\winnt\, editar para configuração
117
Apêndice F
Ficheiros Template para o e-mail
118
HTML
header template
<html>
<head>
<title>SSNTemail</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">
<hr>
report template
<p>
<font face="Arial, Helvetica, sans-serif" size="1"><b><i>{program} + {date} +
{duration} + </i></b></font><font face="Verdana, Arial, Helvetica, sans-serif"
color="#BA2C2C" size="1">{hitruler}</font><br>
<font face="Arial, Helvetica, sans-serif" size="3"
color="#999999"><b>T&Iacute;TULO:</b></font>
<font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>{title}</b></font>
<font face="Courier New, Courier, mono" size="1" color="#3333FF"><a
href="{baseurl}{videofile}?start={startoff}&end={endoff}">VIDEO</a></font><br>
<font color="#999999" face="Arial, Helvetica, sans-serif"
size="3"><b>Sum&aacute;rio:</b></font><font face="Verdana, Arial, Helvetica, sansserif" size="2">{summary}</font><br>
<font size="1"><br></font><font face="Arial, Helvetica, sans-serif" color="#666666"
size="1"><b><i>Dom&iacute;nios Tem&aacute;ticos: </i></b></font><font face="Verdana,
Arial, Helvetica, sans-serif" size="1">{themdom}</font><br>
<font face="Arial, Helvetica, sans-serif" color="#666666" size="1"><b><i>Ref.
Onom&aacute;stica: </i></b></font><font face="Verdana, Arial, Helvetica, sans-serif"
size="1">{onom}</font><br>
<font size="1" color="#666666" face="Arial, Helvetica, sans-serif"><b><i>Ref.
Geogr&aacute;fica: </i></b></font><font face="Verdana, Arial, Helvetica, sans-serif"
size="1">{geog}</font><br>
</p>
<p>
<br>
</p>
topic template
<hr color="#003366">
<font face="Verdana, Arial, Helvetica, sans-serif" color="#003366" size="1"><b>Tópico:
</b></font>
<font face="sans-serif, Arial" color="#707030" size="2">{themtopic}<br><br></font>
<font face="Verdana, Arial, Helvetica, sans-serif" color="#003366"
size="1"><b>Onomástico: </b></font>
<font face="sans-serif, Arial" color="#707030" size="2">{onomtopic}<br></font>
<font face="Verdana, Arial, Helvetica, sans-serif" color="#003366"
size="1"><b>Geográfico: </b></font>
<font face="Arial" color="#6f6f6f" color="#707030" size="2">{geotopic}<br></font>
footer template
<p>&nbsp; </p>
</body>
</html>
119
Plain-Text
header template
<ficheiro vazio>
report template
TITULO : {title}
Sumario: {summary}
{program} + {date} + {duration} + {hitruler}
URL: {baseurl}{videofile}?start={startoff}&end={endoff}
Dominios Tematicos: {themdom}
Ref. Onomastica : {onom}
Ref. Geografica : {geog}
topic template
**************************************************************************
Topico: {themtopic}
Onomastico: {onomtopic}
Geografico: {geotopic}
--------------------------------------------------------------------------
footer template
<ficheiro vazio>
120
Referências
[1] Edmundson, New methods in automatic abstracting, Journal of the Association for
Computing Machinery 16 (2) (1969).
[2] U. Hann and I. Mani, The challenges of automatic summarization, IEEE Computer
33(11) (2000), 29–36.
[3] E. Hovy, Automated Text Sumarisation. in handbook of computational linguistics, r.
mitkov (ed.), Oxford University Press, Oxford, 2001.
[4] Inderjeet Mani, Automatic Summarization - Natural Language Processing, John Benjamins Publishing Company, Cambridge Massachusetts, 2001.
[5] K. Sparck-Jones, Automatic Sumarizing: Factors and Directions in advances in automatic text summarization, MIT Press, Cambridge Massachusetts, 1999.
[6] António Vaz, Alert system for selective dissemination of multimedia information,
Draft Deliverable - 4VDO. D5.1 (2002).
121