Estou tentando detectar se uma postagem de artigo ou fórum é uma entrada duplicada no banco de dados. Pensei um pouco sobre isso, chegando à conclusão de que alguém que duplicou o conteúdo o faria usando um dos três (em descendente difícil de detectar):
- cópia simples cole o texto inteiro
- copiar e colar partes do texto, mesclando-o com seus próprios
- copie um artigo de um site externo e disfarce como seu
Preparando o texto para análise
Basicamente qualquer anomalia; o objetivo é tornar o texto o mais "puro" possível. Para resultados mais precisos, o texto é "padronizado" por:
- Retirar espaços em branco duplicados e aparar à esquerda e à direita.
- Novas linhas são padronizadas para \ n.
- Tags HTML são removidas.
- Usando um RegEx chamado Daring Fireball, os URLs são removidos.
- Eu uso o código BB no meu aplicativo para que vá para.
- (ä) cêntricos e estrangeiros (além do inglês) são convertidos para sua forma não estrangeira.
Eu armazeno informações sobre cada artigo na (1) tabela de estatísticas e na (2) tabela de palavras-chave.
(1) Tabela de estatísticas As estatísticas a seguir são armazenadas sobre o conteúdo textual (muito parecido com este post)
- comprimento do texto
- contagem de letras
- contagem de palavras
- contagem de sentenças
- média de palavras por frase
- índice de legibilidade automatizado
- pontuação de nevoeiro
Para os idiomas europeus, Coleman-Liau e o Índice de Legibilidade Automatizada devem ser usados, pois não usam contagem de sílabas; portanto, devem produzir uma pontuação razoavelmente precisa.
(2) Tabela de palavras-chave
As palavras-chave são geradas pela exclusão de uma lista enorme de palavras de parada (palavras comuns), por exemplo, 'the', 'a', 'of', 'to', etc., etc.
Dados de amostra
- text_length, 3963
- letter_count, 3052
- word_count, 684
- frase_contagem, 33
- word_per_sentence, 21
- gunning_fog, 11.5
- auto_read_index, 9.9
- palavra-chave 1, morta
- palavra-chave 2, oficiais
- palavra chave 3, polícia
Deve-se observar que, depois que um artigo é atualizado, todas as estatísticas acima são regeneradas e podem ter valores completamente diferentes.
Como eu poderia usar as informações acima para detectar se um artigo publicado pela primeira vez já existe no banco de dados?
Sei que tudo o que projetar não será perfeito, o maior risco é (1) O conteúdo que não é duplicado será sinalizado como duplicado (2) O sistema permite a passagem do conteúdo duplicado.
Portanto, o algoritmo deve gerar um número de avaliação de risco de 0, sem risco duplicado 5, sendo possível duplicado e 10 sendo duplicado. Qualquer coisa acima de 5, há uma boa possibilidade de o conteúdo ser duplicado. Nesse caso, o conteúdo pode ser sinalizado e vinculado às possíveis duplicatas do artigo, e um humano pode decidir se deseja excluir ou permitir.
Como eu disse antes, estou armazenando palavras-chave para todo o artigo, mas gostaria de saber se poderia fazer o mesmo com base em parágrafos; isso também significaria separar ainda mais meus dados no banco de dados, mas também facilitaria a detecção (2) no meu post inicial.
Estou pensando em média ponderada entre as estatísticas, mas em que ordem e quais seriam as consequências ...