UNIVERSIDADE CATÓLICA DE PELOTAS ESCOLA DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM INFORMÁTICA Adaptação do Algoritmo Levenshtein Distance para o Cálculo de Similaridade entre Frases por Taís da Veiga Oliveira Trabalho Individual I TI-2009/2-007 Orientador Prof. Dr. Stanley Loh Pelotas, fevereiro de 2010 SUMÁRIO 1. INTRODUÇÃO .....................................................................................................6 1.1. OBJETIVOS..................................................................................................7 1.2. ORGANIZAÇÃO DO TEXTO ........................................................................7 2. SIMILARIDADE ENTRE STRINGS/TEXTOS.......................................................8 2.1. BUSCA APROXIMADA POR STRINGS........................................................8 2.2. REUSO DE TEXTOS E PLÁGIO ..................................................................9 3. ESTADO DA ARTE............................................................................................. 11 3.1. CONCEITOS............................................................................................... 11 3.2. TRABALHOS RELACIONADOS.....................................................................15 4. ALGORITMO LEVENSHTEIN DISTANCE .........................................................20 4.1. COMPARAÇÃO DE DIALETOS......................................................................20 4.2. CORREÇÃO ORTOGRÁFICA ........................................................................20 4.3. RECONHECIMENTO DA FALA ......................................................................21 4.4. ANÁLISE DE DNA ..........................................................................................21 4.5. VINCULAÇÃO DE REGISTROS ....................................................................21 4.6. AUTENTICAÇÃO DE ASSINATURAS ON-LINE.............................................22 5. METODOLOGIA PROPOSTA ............................................................................23 5.1. ALGORITMO ..................................................................................................23 5.2. REMOÇÃO DE STOPWORDS .......................................................................23 5.3. STEMMING ....................................................................................................23 5.4. PERCENTUAL DE SIMILARIDADE................................................................23 6. EXPERIMENTOS...............................................................................................25 7. CONCLUSÃO E TRABALHOS FUTUROS ........................................................29 8. REFERÊNCIAS..................................................................................................30 LISTA DE FIGURAS FIGURA 1 - NÍVEIS DE REUSO DE TEXTOS (BENDERSKY, CROFT, 2009)............7 FIGURA 2 - EXEMPLO DE ÍNDICE INVERTIDO (MATOS ET AL., 2008 )................12 FIGURA 3 - FORMAÇÃO DE LRS (PITKOW, PIROLLI, 1999) .................................13 FIGURA 4 - HIPERNIMIA DA PALAVRA “AUTOMOBILE” - WORDNET (NAVEGA, 2004) .........................................................................................................................15 FIGURA 5 - RANKING PARA A STRING “ABCD” COM K = 2...................................19 FIGURA 6 - EXPERIMENTO 1..................................................................................25 FIGURA 7 - EXPERIMENTO 2..................................................................................25 FIGURA 8 - EXPERIMENTO 3..................................................................................26 FIGURA 9 - EXPERIMENTO 4..................................................................................27 FIGURA 10 - EXPERIMENTO 5................................................................................27 RESUMO Este trabalho sugere a aplicação do algoritmo Levenshtein Distance para a identificação de similaridade entre frases. Na literatura, este algoritmo tem sido aplicado considerando caracteres como unidade básica para o cálculo da distancia entre duas strings. Este artigo sugere a aplicação desta técnica para o cálculo da distância entre frases, tomando como unidade básica de comparação base as próprias palavras. Palavras-chave: Algoritmo Levenshtein Distance, Similaridade, String TITLE: “Proposal Adaptation Algorithm Levenshtein Distance for the calculation of similarity between phrases” ABSTRACT This work suggests an adaptation of the Levenshtein Distance algorithm for the identification of similarity between sentences. In literature, this algorithm has been applied considering characters as the basic unit for calculating the distance between two strings. This article suggests the application of this technique to calculate the distance between sentences, taking as the basic unit of comparison own words. Keywords: Algorithm Levenshtein Distance, Similarity, String. 6 1. INTRODUÇÃO Com o acesso cada vez mais facilitado às mídias digitais, tem ocorrido também um grande acúmulo de informações, muitas vezes, semelhantes ou até mesmo idênticas, estando as mesmas armazenadas localmente ou disponíveis na Web. O reuso de textos pode ter diversas abordagens. Na Internet, é bastante comum que sejam encontradas informações semelhantes, um exemplo disso são os portais de notícias, que costumam disponibilizar as mesmas informações escritas de formas diferentes. Documentos idênticos também podem ser facilmente encontrados na Web, devido ao fato de terem sido armazenados por diversas fontes diferentes. Outra abordagem do reuso ocorre no ambiente corporativo, principalmente no que se trata de grandes organizações. Muitas vezes, em um ambiente distribuído, onde equipes distintas contribuem com o mesmo repositório de informações, o número de duplicações pode ocasionar um volume bastante extenso de conteúdo, dificultando o posterior gerenciamento destas informações. Atualmente, na Internet, um grande número de textos com conteúdos semelhantes ou relacionados estão sendo produzidos todos os dias, muitas vezes, através do reuso de outros textos. Sentenças, frases ou fatos são copiados de outros documentos e alterados, ou, muitas vezes, nem chegam a ser modificados. Enquanto que copiar um texto e reutilizá-lo pode ser considerado por alguns como uma forma de plágio, é freqüentemente uma prática completamente legal (PIAO; MCENERY, 2003, p. 637). O reuso de textos pode indicar até mesmo a qualidade de uma informação, considerando que, uma vez que a mesma foi afirmada por mais de um autor, existem maiores probabilidades de que esteja correta. Bendersky e Croft (2009) sugerem três níveis do reuso de textos. O primeiro nível é a duplicação da sentença, ou seja, um fragmento do texto é escrito de forma exatamente igual ao encontrado no texto original. O segundo nível representa uma reafirmação do mesmo fato, porém reformulações e adição de outras informações. Por último, o terceiro nível caracteriza apenas uma semelhança tópica com a frase original. A Figura 1, mostra uma tabela, disponível neste mesmo trabalho, que exemplifica a diferença entre estes 3 níveis. Na imagem, a sentença original é mostrada em negrito e as categorias C1, C2 e C3 representam os três tipos de reuso descritos. 7 Figura 1 - Níveis de Reuso de Textos (BENDERSKY, CROFT, 2009) 1.1. Objetivos Este trabalho tem como objetivo principal realizar um estudo sobre o Estado da Arte da comparação entre textos, sentenças e strings. Seus objetivos específicos consistem em: • Estudar as técnicas utilizadas atualmente, considerando a finalidade descrita anteriormente; • Propor uma adaptação do algoritmo Levenshtein Distance, utilizando as próprias palavras como unidade básica para a comparação; • Identificar, nas técnicas estudadas, possíveis aperfeiçoamentos para o algoritmo proposto. 1.2. Organização do texto O texto está organizado da seguinte forma. No capítulo 2, são abordados o reuso de textos e o plágio, descrevendo algumas das técnicas utilizadas atualmente com a finalidade de identificar estes tipos de similaridade. O capítulo 3 descreve o algoritmo Levenshtein Distance, em sua forma original, bem como algumas de suas aplicações. No capítulo 4, é proposta uma adaptação deste algoritmo. Por último, no capítulo 5, são mostrados os resultados de alguns testes realizados com base no algoritmo proposto. 8 2. SIMILARIDADE ENTRE STRINGS/TEXTOS Dados texto são ubíquos. A gestão de dados texto em bancos de dados e sistemas de informação tem recebido uma particular importância recentemente (HADJIELEFTHERIOU, LI, 2009). Atualmente, têm sido estudados diversos temas relacionados à identificação de similaridade entre strings ou textos. Dentre eles pode-se citar: busca aproximada por strings e a detecção de plágios e reuso de textos. 2.1. Busca aproximada por strings Dada uma coleção de strings, a busca aproximada por strings tem o objetivo de identificar, de forma eficiente, strings similares àquelas informadas em uma dada consulta. Abaixo, são listadas algumas de suas aplicações. Flexibilização de consultas (Query Relaxation) – Muitas vezes, ao serem executadas consultas, os termos de busca não coincidem com os dados existentes no banco de dados. Estas divergências podem ter diversas causas, dentre elas erros nos termos utilizados na consulta ou conhecimento limitado do usuário sobre o assunto pesquisado, inconsistências nos dados da base de dados, entre outros motivos. A partir da Query Relaxation, é possível retornar dados potencialmente interessantes ao usuário, com base na similaridade destes com os especificados na consulta. Limpeza de dados (Data Cleaning) – Informações provenientes de diversas fontes podem acarretar em dados inconsistentes, ou seja, um mesmo objeto do mundo real pode ter diversas representações. Estas inconsistências podem ser geradas por inúmeros motivos, como erros no processo de coleta de dados ou falhas humanas. A limpeza de dados tem o objetivo o de detectar, e, então, corrigir ou remover os registros incorretos ou imprecisos. Por estas razões, uma das principais metas do Data Cleaning é encontrar entidades similares em uma coleção, ou todos os pares de entidades similares em várias coleções (HADJIELEFTHERIOU, LI, 2009). 9 Verificação ortográfica (Spell Checking) – Neste processo, com base em uma determinada entrada, um corretor ortográfico identifica possíveis candidatos para uma palavra digitada incorretamente. Busca interativa (Interactive Search) – uma importante muito importante aplicação recente é fornecer respostas para os resultados da consulta em tempo real, como os usuários estão digitando a sua consulta. Essas caixas de pesquisa interativa são ubíquas e têm se mostrado muito importantes na prática, porque limitam o número de erros cometidos pelos usuários e também reduzem o número de reformulações consulta enviada a fim de encontrar o que trará resultados satisfatórios (HADJIELEFTHERIOU, LI, 2009). 2.2. Reuso de Textos e Plágio Na literatura, existem diversos trabalhos cujo foco é a identificação de similaridade entre textos. Muitos destes trabalhos abordam esta similaridade como identificação do reuso das informações, outros, porém, tratam como forma de detecção de plágios. Conforme Uzuner, Katz e Nahnsen (2005), Plagiar é "roubar e passar as idéias ou palavras de outro, como o próprio; para utilizar a produção de outro, sem creditar a fonte, ou para cometer roubo literário pela apresentação de uma nova e original idéia ou produto derivado de uma fonte existente. O plágio tem se tornado um fato bastante comum, principalmente, entre a comunidade acadêmica, o que acaba por ocasionar uma diminuição na qualidade do ensino, sobretudo nos ambientes de EAD. O reuso de textos também tem sua contribuição negativa. No ambiente corporativo, principalmente, em grandes organizações, é comum que a duplicação das informações acabe por gerar um repositório bastante grande, aumentando a dificuldade para o gerenciamento deste conteúdo. Os motores de busca, da Internet, também sofrem a influência negativa desta duplicação, pois, geralmente, seus usuários não desejam encontrar informações repetidas. Por outro lado, o reuso de textos pode representar uma característica da qualidade da informação, partindo-se do princípio de que, quanto mais autores afirmarem o mesmo fato, maior é a probabilidade de que a mesmo seja verídico. Independentemente da abordagem adotada, os métodos utilizados para identificação de 10 similaridade entre textos são bastante semelhantes, podendo serem aplicados em ambas as abordagens, dependendo apenas da aplicação que se deseja dar a eles. A seguir, são descritos alguns temas, encontrados na literatura, referentes à identificação de similaridade entre textos. Para comparar dois ou mais documentos e raciocinar sobre o grau de similaridade entre eles, é necessário atribuir valor numérico, chamados escore de similaridade, para cada documento. Este escore pode ser baseado em diferentes métricas. Há muitos parâmetros e aspectos do documento que podem ser utilizados como métricas (LUKASHENKO, GRAUDINA, GRUNDSPENKIS, 2007). Existem diversos métodos para a comparação de textos, podendo ser classificados em métodos estatísticos ou semânticos. Os métodos estatísticos não consideram o significado dos documentos. Geralmente, são baseados em vetores que contém termos selecionados a partir de características como, por exemplo, a freqüência com que estes termos ocorrem no documento. Quanto aos métodos semânticos, normalmente, costumam possuir uma maior complexidade, devido à análise mais aprofundada do relacionamento entre as palavras do texto, considerando aspectos como a morfologia das palavras, a estrutura sintática e semântica das frases. 11 3. ESTADO DA ARTE Nesta seção, serão comentados alguns dos trabalhos realizados recentemente, que estão relacionados com a identificação de similaridade entre strings ou textos. Para uma melhor compreensão, primeiramente, são especificados os principais conceitos abordados nestes trabalhos, em seguida, é apresentada um resumo dos mesmos. 3.1. Conceitos A seguir são apresentados alguns conceitos que serão abordados ao longo do presente trabalho. Stopwords - Em um documento, existem muitos tokens que não possuem nenhum valor semântico, sendo úteis apenas para o entendimento e compreensão geral do texto. Estes tokens são palavras classificadas como stopwords e fazem parte do que é chamado de stoplist de um sistema de Mineração de Textos (BASTOS, 2006, apud JUNIOR, 2007, p. 46). Uma stoplist bem elaborada permite a eliminação de muitos termos irrelevantes, tornando mais eficiente o resultado obtido pelo processo de Mineração de Textos. Normalmente, 40 a 50% do total de palavras de um texto são removidas com uma stoplist (SILVA, 2007, apud JUNIOR, 2007, p. 46). Stemming ou lematização - Qualquer documento textual apresenta muitas palavras flexionadas nas mais diversas formas. Na Língua Portuguesa, um substantivo pode ser flexionado em gênero, número e grau, e apresentar o mesmo valor semântico. O processo de formação de palavras é, na maior parte das vezes, realizado pela derivação de radicais, resultando na criação de palavras que também exprimem o mesmo significado (CEGALLA, 2005, apud JUNIOR, 2007, p. 49). O processo de lematização consiste em reduzir uma palavra ao seu radical. Fingerprints - Fingerprints são pequenas unidades de texto, que podem se tratar de substrings ou mesmo subsequências de palavras são convertidas para a sua forma numérica através de algoritmos de hashing, como, por exemplo, o MD5 e o Rabin fingerprinting. 12 Modelo de Índice Invertido – Um banco de dados textual é uma coleção de documentos, que pode ser representada por um conjunto de registros. Cada registro contém uma lista de palavras. Uma estratégia de recuperação textual é comparar a lista de palavras de uma consulta com a lista de palavras dos registros. Entretanto, em grandes coleções a comparação direta da consulta com todos os registros é computacionalmente cara. Com o objetivo de acelerar este cálculo, limitando a comparação a um subconjunto de registros, utiliza-se o índice invertido (MATOS et al. apud ZOBEL, 1998). Esta técnica baseia-se na utilização de vetores. O índice invertido possui duas partes principais: uma estrutura de busca, chamada de vocabulário, contendo todos os termos distintos existentes nos textos indexados e, para cada termo, uma lista invertida que armazena os identificadores dos registros contendo o termo (MATOS et al. apud BAEZA-YATES, 1999). Figura 2 - Exemplo de Índice Invertido (MATOS et al., 2008 ) Modelo de Representação Vetorial - No Modelo de Representação Vetorial, o processamento de uma consulta é realizado através de um cálculo de similaridade entre cada documento da coleção e a própria consulta, ou seja, toda consulta é também representada de forma vetorial, e através de um cálculo de similaridade entre cada documento da coleção e a consulta, obtém-se uma lista dos documentos relevantes para aquela necessidade de informação (SOARES, 2008). Latent Semantic Indexing - O processo denominado Latent Semantic Indexing (LSI) é uma técnica que permite encontrar uma estrutura semântica associada a uma coleção de documentos indexados em uma matriz. Para isso, leva-se em conta não apenas a ocorrência dos termos em documentos, mas a co-ocorrência desses termos, isto é, conjuntos de termos 13 que freqüentemente são encontrados nos mesmos documentos. (OLIVEIRA, OLIVEIRA) Longest Repeating Sequences – A técnica LRS (Longest Repeating Sequences) tem o objetivo de identificar padrões significativos de navegação. A seguir é apresentado um exemplo retirado de (PITKOW, PIROLLI, 1999). Figura 3 - Formação de LRS (PITKOW, PIROLLI, 1999) Na ilustração 3, as setas mais grossas indicam mais de uma passagem, ao contrário das setas mais finas, que ilustram apenas uma passagem. Supondo a existência de um website que contém as páginas A, B, C e D, onde A contém um hiperlink para B e B contém hiperlinks para C e D. Se os usuários, repetidamente, navegarem de A para B, mas somente um usuário navegar para C e apenas um usuário navegar para D (caso 1), a LRS será AB. Se, no entanto, mais de um usuário clicar em D através de D (caso 2), então AB e ABD serão as LRSs. Neste caso, AB é uma LRS, desde que, em outra ocasião, AB não tenha sido seguido por ABD. No terceiro caso, ABC e ABD são LRSs, uma vez que ambas ocorrem mais de uma vez. No quarto caso, AB não é uma LRS, uma vez que nunca é a longest repeating subsequence. Algoritmo Smith-Waterman - Baseado em programação dinâmica, o algoritmo SmithWaterman é um método utilizado para o alinhamento de seqüências local, ou seja, o mesmo identifica as regiões comuns em seqüências que compartilham características locais de similaridade. É considerado o algoritmo mais preciso de alinhamento de seqüência disponível, mas a sua complexidade computacional o torna bastante lento. Processamento de Liguagem Natural - O PLN (Processamento de Liguagem Natural) é uma 14 área da Inteligência Artificial, que lida com problemas relacionados à automação da interpretação e da geração da língua humana em diversas aplicações. Este processo, geralmente, pode ser constituído por 4 diferentes etapas de análise. Na análise morfológica, são identificadas palavras ou expressões isoladas em uma sentença, sendo através de delimitadores (pontuação e espaços em branco). Estas palavras, são, então, classificadas de acordo com a sua categoria gramatical. A análise sintática tem como objetivo a construção de árvores de derivação para cada sentença, mostrando o relacionamento das palavras entre si. Porém, esta análise não tem nenhuma relação com a semântica das palavras, uma vez que uma frase pode ser, gramaticamente, correta, mas não ser compreensível. O objetivo da análise semântica, então, é identificar os conceitos semânticos da frase, com base na árvore gerada pela análise sintática. Geralmente, o conteúdo das frases estão relacionados com as propriedades de um evento como "onde", "quando", "o que", "quem", "como", etc. Na análise pragmática, é realizada a interpretação do todo, não mais o significado apenas de suas partes. Wordnet - WordNet é uma Base de Dados Léxica que contém informações sobre palavras, palavras compostas, verbos, frases idiomáticas, relações hierárquicas entre palavras e outras propriedades. Essa base de dados possui, por exemplo, informações sobre sinônimos (palavras diferentes que significam a mesma coisa), hiperônimos/hipônimos (a derivação hierárquica das palavras), merônimos (as “partes” associadas ao sentido de uma palavra), etc. Com o WordNet diversas aplicações tornam-se possíveis, não apenas na recuperação de informação mas também na análise do significado de frases (NAVEGA, 2004). 15 Figura 4 - Hipernimia da palavra “automobile” - Wordnet (NAVEGA, 2004) Escores de Similaridade - Funções de comparação retornam escores de similaridade entre segmentos de texto. A partir destes escores, é considerado um limiar, geralmente, estabelecido pelo usuário, para determinar se um determinado segmento de texto é ou não similar a outro. 3.2. Trabalhos Relacionados Em Seo e Croft (2008), a quantidade de conteúdo compartilhado entre dois documentos se dá pelo número de fingerprints compartilhados entre os mesmos pelo total de fingerprints do documento base da comparação. Se o total de fingerprints compartilhados forem superiores a 80%, 50% ou 10%, considera-se, respectivamente, que o texto de um documento A foi muito, consideravelmente, ou parcialmente reutilizado em um documento B. Para encontrar os documentos com relação de reuso, é gerado um índice invertido com os fingerprints extraídos dos documentos e, então, feito o merge destes documentos. O tamanho 16 da lista invertida é o total de fingerprints mais frequentes nos documentos, porém, para uma comparação mais eficiente, podem ser definidas uma lista de “stop-fingerprints”, cuja função é idêntica às stopwords. Segundo os autores, boas técnicas de fingerprinting devem gerar fingerprints que representem fielmente os documentos (precisão) e gerar o menor número possível de fingerprints (eficiência). Com base nestes princípios, existem dois tipos de métodos: métodos de sobreposição e métodos de não-sobreposição. Os métodos de sobreposição utilizam o conceito de janela deslizante. Basicamente, a janela é deslocada por uma palavra, e uma seqüência de palavras na janela ou o seu valor hash é tratado como um bloco (SEO, CROFT, 2008). Como alguns dos métodos que utilizam esta técnica estão kgram, 0 mod p e Winnowing. A técnica de não-sobreposição consiste em dividir o texto em segmentos significativos, ao invés de gerar muitas subsequências de palavras, não havendo, portanto, a sobreposição de blocos. A posição em que uma quebra de palavra ocorre é referido como um ponto de interrupção (SEO, CROFT, 2008). Oliveira e Oliveira (2008) apresentam uma abordagem para a detecção de plágio em ambientes de EAD (Ensino à Distância). A metodologia proposta sugere a aplicação do Modelo de Representação Vetorial, como forma de representar os documentos a serem comparados, posteriormente a esta representação é aplicado o processo de Latent Semantic Indexing (LSI). Neste trabalho, os pesos dos termos são representados pelas freqüências com que eles ocorrem nos documentos a que pertencem. O cálculo do produto vetorial dos vetores de pesos indica o grau de similaridade entre dois documentos. O resultado do produto vetorial entre dois vetores é o cosseno do ângulo, formado entre esses vetores. Quanto mais próximo de 1 for o resultado, mais semelhantes podem ser considerados os documentos utilizados como base para a comparação. Sendo assim, o valor 0 indica dissimilaridade total e 1 indica que os documentos são idênticos. De acordo com Leung e Chan (2007), o plágio, no ambiente acadêmico, pode ocorrer em 3 situações: cópia de uma fonte sem versão eletrônica, cópia direta de uma fonte com versão eletrônica e cópia de uma fonte com versão eletrônica e modificação intencional do conteúdo. Neste trabalho, o processamento de linguagem natural é aplicado como forma de detecção de plágios, visando a identificação da terceira situação citada. A estrutura sintática básica e o significado semântico de duas sentenças podem ser comparados a fim de revelar sua similaridade (LEUNG, CHAN, 2007). Esta abordagem, primeiramente, adota a utilização de um thesaurus, como forma de identificação de sinônimos, termos mais amplos ou específicos, relacionados aos termos existentes no documento analisado. O Wordnet é um exemplo típico de thesaurus que pode ser usado para esta finalidade. Pontuações diferentes 17 são atribuídas aos diferentes tipos de palavras relacionadas. Com base no resultado do cálculo obtido a partir destas pontuações, se o valor de similaridade encontrado for maior que um determinado limiar, a frase é suspeita de ser plágio, sendo, então, analisada sintática e semanticamente. No trabalho de Metzler (2007), foram utilizados resultados da web para expandir a representação de textos curtos. Para cada um destes segmentos de texto, foram executadas consultas em uma ferramenta de busca, recuperando os primeiros 200 resultados. Os títulos e snippets associados com estes resultados foram então concatenados e utilizados para expandir a representação. No trabalho de Tsatsou (2009), também foi utilizada uma fonte externa, mais especificamente, a Wikipedia, com a finalidade de encontrar variações nos utilizados para designar determinadas entidades nomeadas. Esta abordagem também pode ser bastante interessante no sentido de encontrar palavras relacionadas, auxiliando assim na diminuição do efeito negativo dos sinônimos na comparação entre frases. Segundo Uzuner, Katz e Nahnsen (2005), informações lingüísticas pode ser uma poderosa fonte para medir a similaridade entre trabalhos com base na expressão de seu conteúdo. Neste trabalho, são abordados os aspectos criativos da escrita como forma de reconhecer ocorrências de plágio. Neste trabalho, é identificado um conjunto de características relacionadas com as escolhas lingüísticas dos autores, utilizando, para isso, diferentes expressões sintáticas do mesmo conteúdo. Após terem sido identificadas as características relevantes, são analisados os padrões de utilização desses recursos, possibilitando, assim, o reconhecimento de paráfrases. Para identificar esses aspectos criativos, foram utilizadas diferentes traduções de obras literárias. Estas traduções têm a característica de serem escritas de formas diferentes, transmitindo, porém, o mesmo conteúdo. Ota e Masuyama (2009) também propõe uma abordagem baseada no algoritmo SmithWaterman, porém, com foco em papers escritos na língua japonesa. O método proposto identifica partes plagiadas dispersas no texto, através da repetida aplicação do algoritmo em questão. Irving (2004) propõe a aplicação do algoritmo Smith-Waterman considerando, como unidade básica para o cálculo da distância, palavras ou sentenças. No entanto, no trabalho de (OTA; MASUYAMA, 2009), não foi considerada adequada a utilização das palavras como unidade básica de processamento, dada a facilidade de alteração da ordem das palavras em japonês. Em Su et al., é apresentado um método de detecção de plágio híbrido. Este trabalho analisa a utilização do algoritmo Levenshtein Distance e o algoritmo Smith-Waterman simplificado, como forma de detecção de plágio. Esta abordagem evita a comparação de 18 strings envolvidas globalmente e considera também fatores psicológicos. Uma outra aplicação interessante do algoritmo Levenshtein Distance é abordada no trabalho de Ruddle (2006), que propõe um método que utiliza matching de strings com a finalidade de analisar o log de navegação do website. O método divide-se em duas abordagens. Na primeira, é utilizado o matching exato de strings para identificar as subseqüências de links que foram repetidas em diferentes sessões de navegação, identificando, assim os caminhos comuns através do site. Nesta abordagem é utilizado o conceito de LRSs. Na segunda, é realizado o matching inexato para encontrar sessões similares, identificando, por exemplo, comunidades de usuários com interesses semelhantes. Para o matching inexato, foi utilizado o algoritmo Levenshtein Distance, considerando 4 parâmetros, sendo eles bônus por pares de elementos correspondentes ou penalizações por substituição e inserções. O número de matchings, inserções ou substituições é multiplicado pelos valores atribuídos a estes parâmetros. No que diz respeito à definição de limiares de similaridade, Nunes (2009) apresenta uma padronização para escores de similaridade, mapeando estes escores para valores de precisão. Permitindo, assim, que o usuário possa informar, não um limiar como base de comparação, ma a precisão esperada para os resultados considerados relevantes. A técnica resume-se na construção de uma tabela de mapeamento, considerando um determinado domínio, bem como uma determinada função de similaridade. Tal tabela é obtida a partir do treinamento dos dados, utiliza um conjunto de valores representativos. Cada consulta, então, é comparada com o conjunto de atributos do domínio, gerando, então, um ranking com os valores originais de similaridade resultantes da função. A precisão é calculada para cada posição destes rankings. Para cada ranking, é realizado o cálculo da precisão interpolada em cada um dos pontos estabelecidos, que, no caso deste trabalho, inicialmente, eram 11 pontos ([0, 0.1, . . . , 0.9, 1.0]). Então, a média de todos valores de precisão interpolada é calculada para cada um desses pontos sobre todos os rankings, obtendo-se, desta forma, a tabela de mapeamento de escores. Considerando os experimentos realizados no trabalho citado, um dos algoritmos que obteve respostas mais significativas à técnica aplicada foi o Levenshtein Distance. Em Vernica e Li (2009), o limiar pode variar de acordo com o número de resultados obtidos. Este trabalho propõe uma forma de flexibilizar consultas, encontrando as strings mais relevantes, considerando a similaridade com a string original e a importância das possíveis candidatas. Neste trabalho, são apresentados três algoritmos. O primeiro algoritmo calcula a similaridade entre a string da consulta e a coleção de strings, com base em um limiar pré- 19 estabelecido. Este limiar pode ser diminuído, dependendo do número de resultados obtidos. Após a obtenção do resultado, são calculados os escores para cada elemento retornado, sendo ordenados pelo seu escore de similaridade. Então, é realizado o cálculo considerando o escore de similaridade e a importância da string candidata. Na Figura 5, é mostrado um exemplo onde são mostrados os resultados a partir da string “abcd”, utilizando o algoritmo Jaccard Similarity, e considerando k = 2. Figura 5 - Ranking para a string “abcd” com k = 2. No segundo algoritmo, então, é apresentado o conceito de índice invertido, utilizando q-grams. Q-grams podem ser descritas como pequenas substrings de tamanho fixo q. Para cada gram, tem-se uma lista invertida das strings que contém este gram. O terceiro algoritmo é baseia-se na junção dos dois primeiros algoritmos. 20 4. ALGORITMO LEVENSHTEIN DISTANCE O algoritmo Levenshtein Distance foi criado pelo cientista russo Vladimir Levenshtein, em 1965. O foco desta técnica é a avaliação da similaridade entre duas strings com base no número de operações necessárias para transformar uma string em outra, sendo que as operações possíveis são a inserção, a exclusão e a substituição. A distância zero indica que as strings são idênticas. A partir do tamanho de cada string é montada uma matriz, onde serão setados os custos de cada operação, geralmente, cada uma delas possui custo 1. Ao final das comparações, a distância é dada pela última posição da matriz. Apesar de ser um algoritmo relativamente antigo, o Levenshtein Distance ainda é bastante utilizado atualmente. Na literatura, é comum encontrar a sua aplicação em tarefas como comparação de dialetos, correção ortográfica, reconhecimento da fala, análise de DNA, detecção de plágios, autenticação de assinaturas e vinculação de registros. A seguir, são descritos alguns trabalhos que abordam o estudo da sua aplicação. 4.1. Comparação de dialetos O trabalho de Freeman (2006) apresenta uma solução para o problema do matching de nomes pessoais em Inglês para a representação dos mesmos nomes em códigos Árabes. Neste estudo são realizadas uma série de etapas como, por exemplo, a transliteração dos nomes, a aplicação do algoritmo Levenshtein, com posterior normalização de seu resultado. Esta normalização considera o tamanho das strings sobre as quais será realizado o matching, ou seja, o valor retornado pelo algoritmo LD é dividido pela soma do número de caracteres das strings. Este valor, então, é diminuído de 1, tendo assim, o valor normalizado. A intenção da divisão pelo tamanho de ambos os nomes é minimizar o peso de caracteres incompatíveis em strings longas (FREEMAN, 2006). A normalização também é aplicada às próprias strings. 4.2. Correção ortográfica Segundo estudo de Damerau (1964), aproximadamente 80% das palavras digitadas incorretamente, possuíam pelo menos um erro relacionado à inserção, remoção, substituição ou transposição. Tais descobertas passaram, então, a serem largamente aplicadas em técnicas para correção ortográfica. No trabalho de Piltcher et al. (2005), o algoritmo Levenshtein foi 21 utilizado em conjunto com os algoritmos Metaphone e Soundex, para a análise de um corretor ortográfico para ambientes de chat. 4.3. Reconhecimento da Fala No estudo de Fiscus (2006), o algoritmo de distância de edição é utilizado para realizar a comparação entre dois gráficos lineares, onde os nodos são palavras ao invés de strings de caracteres. 4.4. Análise de DNA Atualmente, até mesmo os melhores métodos de seqüenciamento de DNA apresentam imperfeições. Segundo Troncoso-Pastoriza (2007), devido às imperfeições de seqüenciamento químico, pode ocorrer 3 tipos de erros: substituição de símbolos (um símbolo errado é gravado), inserções (um símbolo que não está presente no genoma é relatada no registro digital) e a exclusão (o processo de seqüenciamento falha ao representar bases que estão presentes no genoma). Na literatura, o algoritmo LD é bastante utilizado para a comparação destas seqüências de símbolos. 4.5. Vinculação de Registros A vinculação de registros é um campo em crescente expansão com aplicações em muitas áreas da saúde e pesquisa biomédica (Bell and Sethi 2001 apud Kelman et al 2002). Ela pode ser vista como a metodologia para identificar em dois ou mais arquivos registros que pertencem à mesma entidade ou encontrar duplicatas dentro de um mesmo arquivo (Freire et al., 2009). O algoritmo de Levenshtein, bem como os algoritmos Levenshtein, Subsequência Comum mais Longa (SCL), Monge-Elkan, e uma combinação de SCL com Levenshtein, e também o algoritmo Jaro, e algumas de suas variantes, como, por exemplo, Winkler, Lynch, McClaughlin foram estudados quanto à sua aplicação na área. O algoritmo Levenshtein mostrou-se bastante veloz em comparação aos demais. O estudo conclui que o algoritmo Levensthein pode não ser o mais adequado à vinculação de registros, porém os próprios autores reconhecem que a amostra estudada foi bastante pequena. Em contrapartida, existe um software, denominado Reclink, o qual utiliza o algoritmo de Levenshtein para a comparação 22 de registros e o algoritmo soundex para a blocagem, sendo bastante utilizado no Brasil para realizar vinculação de registros na área de saúde, sugerindo, portanto, a eficácia destes algoritmos na área. 4.6. Autenticação de Assinaturas On-line O algoritmo LD também tem sido estudado no reconhecimento de assinaturas on-line. No trabalho de Schimke et al. (2004), as assinaturas são convertidas para uma sequência de códigos, que considera fatores como a posição da escrita e a pressão da mesma. Uma vez definidas estas sequências, as mesmas são, então, analisadas pelo Levenshtein. Após a comparação das assinaturas, a classificação das mesmas é realizada pelo classificador Nearest Neighbor. Foi analisado um conjunto de 1376 assinaturas referentes à 41 pessoas. Segundo o estudo, os resultados são bastante animadores, com 96% de identificações corretas contra nenhuma classificação falsa. 23 5. METODOLOGIA PROPOSTA Na metodologia proposta, além do algoritmo, foram utilizadas algumas técnicas de pré-processamento de textos, como a remoção de stopwords e o Stemming, conforme descrito a seguir. 5.1. Algoritmo A única alteração no comportamento do algoritmo foi quanto à sua unidade básica de comparação. Normalmente, esta técnica é utilizada para comparar todos os caracteres de duas strings. Neste trabalho, o algoritmo compara todas as palavras de duas frases. 5.2. Remoção de stopwords Considerando que as stopwords podem influenciar de forma negativa no resultado da comparação, uma vez estas palavras não são relevantes e podem se repetir diversas vezes ao longo de um texto, optou-se por removê-las. A stoplist é informada no momento em que o algoritmo é executado. 5.3. Stemming As diversas possibilidades de flexão das palavras também podem influenciar no resultado final da comparação, pois qualquer diferença morfológica entre duas palavras, ainda que o significado semântico permaneça idêntico, é considerada pelo algoritmo, aumentando a distância entre as frases. Tendo em vista o exposto, é notória a importância do processo de lematização para a metodologia proposta. 5.4. Percentual de Similaridade 24 Para o cálculo percentual de similaridade, são considerados o total de palavras entre a frase original e a frase comparada e a distância encontrada pelo algoritmo. Desta forma, supondo que temos um total de 10 palavras, e distância encontrada fosse 2, teríamos o seguinte cálculo: Percentual de Distância = ( 2 * 100 ) / 10 = 20 % Similaridade = 100 % - 20 % = 80 % 25 6. EXPERIMENTOS No exemplo mostrado na Figura 6, foi realizado o cálculo da distância entre as frases “Muitos consideram Maradona como o melhor jogador de futebol na história do futebol” e “Maradona é um dos melhores jogadores de futebol”. De acordo com a stoplist, foram removidas palavras como: muitos, como, o, na, é, um, dos. As palavras restantes foram reduzidas ao seu radical. Após a execução do algoritmo, pode-se observar que a distância calculada foi equivalente a 2. Esta distância deve-se aos custos de exclusão dos radicais das palavras “consideram” e “história”. Figura 6 - Experimento 1 No segundo experimento, mostrado pela Figura 7, pode-se observar a influência da localização da palavra “Brasil” na distância resultante da comparação entre a frase original e as 3 primeiras frases, sendo que, semanticamente, estas frases são idênticas. Na comparação entre a frase original e a última frase comparada a distância foi 3, diferindo muito pouco da distância das duas frases anteriores, sendo que esta última frase é bastante diferente da frase original, ao contrário das demais. Figura 7 - Experimento 2 26 Para resolver o problema ilustrado pela Figura 7, bastaria que fossem ordenadas, automaticamente, as três primeiras frases, tornando-as, portanto, idênticas à frase original. Sendo assim, a distância resultante seria equivalente a zero, o que seria mais correto. Porém, a ordenação das frases somente seria válida em casos onde ocorressem pequenas diferenças entre as frases. A seguir são mostrados alguns exemplos comparando duas descrições do curso de Tecnologia em Análise e Desenvolvimento de Sistemas, extraídas de diferentes universidades. Figura 8 - Experimento 3 Na figura 8, é possível identificar a importância da identificação de sinônimos para a implementação proposta. Neste caso, os termos “visa” e “objetiva” possuem o mesmo significado, portanto, para comparação, um termo poderia ser substituído pelo outro. Esta substituição ocasionaria o aumento da similaridade entre as frases, passando de 57% para 61%. 27 Figura 9 - Experimento 4 Na Figura 9, pode-se notar que a parte inicial destas frases é bastante semelhante (“Visa a formação de profissionais para atuação” e “Objetiva formar profissionais para atuar”). Com a ordenação das frases, foi perdida completamente a relação sintática destas estruturas e ocorreu redução da similaridade entre as duas frases. Figura 10 - Experimento 5 No exemplo mostrado na figura 10, pode-se observar que a distância retornada pelo 28 algoritmo aumentou consideravelmente, ao contrário do percentual de similaridade, que variou relativamente pouco. Isto ocorre devido ao fato de que o percentual de similaridade, no cálculo utilizado, está intimamente relacionado ao tamanho do texto, de forma que, quanto menor for o tamanho dos textos comparados, maior será o impacto da distância retornada pelo algoritmo. Este é um fator importante para determinar se a melhor alternativa é comparar textos inteiros ou segmentos menores, como é o caso das frases. Para a continuação do testes, foi considerando a divisão do texto em frases, sendo elas representadas por f1, f2, f3, f4, conforme mostrado a seguir: Primeira descrição: Visa a formação de profissionais para atuação em pesquisa, gestão, desenvolvimento, uso e avaliação de tecnologias da informação aplicadas nas organizações (f1). A finalidade principal é preparar profissionais para os setores que necessitem lançar mão da tecnologia da informação, dotando-os de uma formação básica, prática e humanística (f2). Segunda descrição: Objetiva formar profissionais para atuar na área de Informática com visão global e multidisciplinar do setor, instrumentalizados com embasamento teórico, prático e tecnológico (f3). Estes profissionais estarão habilitados a identificar, planejar e executar atividades de desenvolvimento, implementação e gerenciamento de sistemas de informação, dando ênfase a conhecimentos práticos em TI e suas áreas de conhecimento, como Análise de Sistemas, Desenvolvimento de Software, Programação Web, entre outras (f4). Primeiramente, foi estabelecido um limiar para o percentual de similaridade a ser retornado. O limiar utilizado foi 60%. Neste caso, foi retornada apenas a comparação das frases f1 e f3, considerando que o percentual de similaridade entre elas é de exatamente 60%. Reduzindo este limiar para 50%, foi retornada também a comparação entre as frases f2 e f3, tendo sido obtido um percentual de 55% de similaridade. Um fator interessante a ser considerado neste teste é o fato de ambas as frases da descrição tomada como base (f1 e f2) são mais semelhantes à mesma frase da segunda descrição (f3). As comparações das frases f1 e f2 com a frase f4, obtiveram, respectivamente, 43% e 44% de similaridade. 29 7. CONCLUSÃO E TRABALHOS FUTUROS Tendo em vista o exposto, pode-se concluir que o algoritmo tradicional possui potencial para a avaliação de similaridade entre textos, porém ainda é necessário aperfeiçoá-lo para esta finalidade. A seguir são apresentados alguns possíveis problemas desta abordagem, sugerindo para cada problema uma solução a ser implementada futuramente. A existência de diversos sinônimos para uma mesma palavra pode interferir bastante no resultado final, pois qualquer diferença entre duas palavras, ainda que sejam semanticamente iguais, resulta no aumento da distância retornada pelo algoritmo. Para resolver este problema, poderiam ser utilizadas ferramentas como, por exemplo, o WordNet. Embora o Stemming ajude a superar o problema de incompatibilidade de vocabulário de certa forma, ele não resolve o problema contextual (METZLER et al., 2007). Para amenizar este problema, pode ser utilizada a expansão de representações com base em fontes externas, como as abordadas nos trabalhos de Metzler et al. (2007) e Tsatsou (2009). 30 8. REFERÊNCIAS BATU, T.; ERGÜN, F.; KILIAN, J.; MAGEN, A.; RASKHODNIKOVA, S.; RUBINFELD, R.; SAMI, R. A sublinear algorithm for weakly approximating edit distance In: Proceedings of the thirty-fifth annual ACM symposium on Theory of computing, San Diego, 2003, pp. 316 -324. BENDERSKY, M.; CROFT W. B. Finding Text Reuse on the Web In: Proceedings of the Second ACM International Conference on Web Search and Data Mining, Barcelona, 2009, pp. 262-271. BUENO, R.; TRAINA, A.; TRAINA, C. Accelerating approximate similarity queries using genetic algorithms In: Proceedings of the 2005 ACM symposium on Applied computing, Santa Fe, 2005, pp. 617-622. CELIKIK, M.; BAST, H. Fast error-tolerant search on very large texts In: Proceedings of the ACM symposium on Applied Computing, Honolulu, 2009, pp. 1724-1731. FREEMAN, A. T.; CONDON, S. L.; ACKERMAN, C. M. Cross linguistic name matching in English and Arabic: a "one to many mapping" extension of the Levenshtein edit distance algorithm In: Proceedings of the main conference on Human Language Technology Conference of the North American Chapter of the Association of Computational Linguistics, New York, 2006, pp. 471-478. HADJIELEFTHERIOU, M.; LI, C. Efficient Approximate Search on String Collections IRVING, R. Plagiarism and collusion detection using the smith-waterman algorithm In: International Conference on Computer Systems and Technologies, 2004, pp. 1-24. JUNIOR, J.R.C. Desenvolvimento de uma Metodologia para Mineração de Textos. Rio de Janeiro: PUC-Rio, 2007, 113 f. Dissertação (Mestrado em Engenharia Elétrica) - Programa de Pós-graduação em Engenharia Elétrica, Departamento de Engenharia Elétrica, Pontifícia Universidade Católica do Rio de Janeiro, Rio de Janeiro, 2007. LUKASHENKO, R.; GRAUDINA, V.; GRUNDSPENKIS, J. Computer-Based Plagiarism Detection Methods and Tools: An Overview In: Proceedings of the 2007 International Conference on Computer Systems and Technologies, Rousse, 2007. LEUNG, C.; CHAN, Y. A Natural Language Processing Approach to Automatic Plagiarism Detection In: Proceedings of the 8th ACM SIGITE conference on Information technology education Destin, 2007, pp. 213-218. LU, J.; HAN, J.; MENG, X. Efficient algorithms for approximate member extraction using signature-based inverted lists In: Proceeding of the 18th ACM conference on Information and knowledge management, Hong Kong, 2009, pp. 315-324. MATOS, T.; SILVA, I.; BARCELOS, C.; PROENÇA, P. Índice Invertido para Recuperaçãao de Imagens Baseada em Conteúdo In: 31. Congresso Nacional de Matemática Aplicada e Computacional, Belém, 2008, pp. 20-25. 31 METZLER, D.; DUMAIS, S.; MEEK, C. Similarity Measures for Short Segments of Text In: Proceedings of the European Conference on Information Retrieval, Amherst, 2007. NAVEGA, S. Manipulação Semântica de Textos: Os Projetos WordNet e LSA. In: Infoimagem 2004, 2004, São Paulo. Anais Infoimagem 2004. OLIVEIRA, M.. ; OLIVEIRA, E. Uma Metodologia para Detecção Automática de Plágios em Ambientes de Educação a Distância. In: Congresso Brasileiro de Ensino Superior a Distância - ESuD, 2008, Gramado, no Rio Grande do Sul. Anais do ESuD, 2008. p. 1-20. OTA, T.; MASUYAMA, S. Automatic Plagiarism Detection among Term Papers In: Proceedings of the 3rd International Universal Communication Symposium, Tokyo, 2009, pp. 395-399. PIAO, S. S. L.; MCENERY, A. M. A tool for text comparison. In: Proceedings of the corpus linguistics 2003 conference, Lancaster, pp. 637-646. PIROLLI, P.; PITKOW, J. Mining Longest Repeating Subsequences Predict World Wide Web Surfing In: Proceedings of USITS' 99: The 2nd USENIX Symposium on Internet Technologies & Systems, Boulder, 1999. RUDDLE, R. Using string-matching to analyze hypertext navigation In: Proceedings of the seventeenth conference on Hypertext and hypermedia, Odense, 2006, pp. 49-52. SEO, J.; CROFT, W. Local Text Reuse Detection In: Proceedings of the 31st annual international ACM SIGIR conference on Research and development in information retrieval, Singapore, 2008, pp. 571-578. SOARES, F. A. Mineração de Textos na Coleta Inteligente de Dados na Web. Rio de Janeiro: PUCRio, 2008, 113 f. Dissertação (Mestrado em Engenharia Elétrica) - Programa de Pósgraduação em Engenharia Elétrica, Departamento de Engenharia Elétrica, Pontifícia Universidade Católica do Rio de Janeiro, Rio de Janeiro, 2008. SU, Z.; AHN, B.; EOM, K.; KANG, M.; KIM, J.; KIM, M. Plagiarism Detection Using the Levenshtein Distance and Smith-Waterman Algorithm In: Proceedings of the 3rd International Conference on Innovative Computing Information and Control, 2008. TSATSOU, D.; MENEMENIS, F.; KOMPATSIARIS, I.; DAVIS, P.C. A Semantic Framework for Personalized Ad Recommendation based on Advanced Textual Analysis. In: Proceedings of the 3. ACM Conference on Recommender Systems, Nova York, 2009. VERNICA, R.; LI, C. Efficient top-k algorithms for fuzzy search in string collections In: Proceedings of the First International Workshop on Keyword Search on Structured Data Providence, 2009, pp. 9-14