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Í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á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ínios Temá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á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á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> </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