Pergunta

Olá a todos em todo o mundo,

Fundo

Sou estudante do último ano de Ciência da Computação.Propus meu projeto final de módulo duplo, que é um analisador de plágio, usando Java e MySQL.

O Analisador de Plágio irá:

  1. Digitalize todos os parágrafos do documento carregado.Analise a porcentagem de cada parágrafo copiado de qual site.
  2. Destaque apenas as palavras copiadas exatamente de qual site em cada parágrafo.

Meu principal objetivo é desenvolver algo como o Turnitin, melhorado se possível.

Tenho menos de 6 meses para desenvolver o programa.Eu defini o seguinte:

  1. Implementação do rastreador da Web. Provavelmente utilizarei a API Lucene ou desenvolverei meu próprio Crawler (qual é o melhor em termos de tempo de desenvolvimento e também de usabilidade?).
  2. Hashing e indexação. Para melhorar a pesquisa e análise.

Questões

Aqui estão minhas perguntas:

  1. O MySQL pode armazenar tanta informação?
  2. Perdi algum tópico importante?
  3. Qual a sua opinião sobre este projeto?
  4. Alguma sugestão ou técnica para realizar a análise de similaridade?
  5. Um parágrafo pode ser hash, assim como palavras?

Agradecemos antecipadamente por qualquer ajuda e conselho.^^

Foi útil?

Solução

Você já pensou em outro projeto que não esteja fadado ao fracasso por falta de recursos disponíveis?

Se você realmente quer ir o "Ei, vamos rastejar a teia inteira!" Rota, você precisará quebrar coisas como HBase e Hadoop e muitas máquinas.MySQL será totalmente insuficiente.TurnItIn afirma ter rastreado e indexado 12 bilhões de páginas.O índice do Google é mais parecido com [redigido].O MySQL, ou qualquer RDBMS, não pode escalar para esse nível.

A única maneira realista de conseguir isso é fazer algo surpreendentemente inteligente e descobrir como construir consultas ao Google que revelarão plágio de documentos que já estão presentes no índice do Google.Eu recomendo usar uma fila de mensagens e acessar a API de pesquisa de forma síncrona.A fila de mensagens também permitirá que você reduza suas consultas a uma taxa razoável.Evite palavras irrelevantes, mas você ainda está procurando correspondências quase exatas, então as consultas devem ser como: "* quick brown fox jumped over * lazy dog" Não se preocupe em executar consultas que terminam como: "* * went * * *" E ignore os resultados que retornam com 94 milhões de acessos.Não serão plágio, serão citações famosas ou perguntas excessivamente gerais.Você está procurando menos de 10 resultados ou alguns milhares de resultados que tenham uma correspondência exata com sua frase original ou alguma métrica semelhante.E mesmo assim, isso deveria ser apenas uma heurística – não sinalize um documento a menos que haja muitos sinais de alerta.Por outro lado, se tudo voltar como zero acertos, eles estão sendo excepcionalmente originais.A pesquisa de livros normalmente precisa de consultas mais precisas.Coisas suficientemente suspeitas devem acionar solicitações HTTP para as páginas originais, e as decisões finais devem sempre ser da responsabilidade de um ser humano.Se um documento cita suas fontes, isso não é plágio, e você vai querer detectar isso.Os falsos positivos são inevitáveis ​​e provavelmente serão comuns, se não constantes.

Esteja ciente de que os TOS proíbem o armazenamento permanente de qualquer parte do índice do Google.

Independentemente disso, você escolheu fazer algo extremamente difícil, não importa como você o construiu, e provavelmente muito caro e demorado, a menos que envolva o Google.

Outras dicas

1) Faça seu próprio rastreador da web? Parece que você pode usar facilmente todo o seu tempo disponível apenas para esta tarefa. Tente usar uma solução padrão para isso: não é o coração do seu programa.

Você ainda terá a oportunidade de fazer o seu próprio ou tentar outro depois (se tiver tempo restante!). Seu programa deve funcionar apenas em arquivos locais para não estar vinculado a um rastreador/API específico.

Talvez você até tenha que usar rastreadores diferentes para sites diferentes

2) Parágrafos inteiros de hash é possível. Você pode apenas hash qualquer string. Mas é claro que isso significa que você só pode verificar exatamente os paragrpahs copiados. Talvez as frases sejam uma unidade melhor para testar. Você provavelmente deve "normalizar" (transportar) as frases/paragrapas antes de resolver pequenas diferenças como maiúsculas/minúsculas.

3) O MySQL pode armazenar muitos dados.

O conselho usual é: siga o SQL padrão. Se você descobrir que tem muitos dados demais, ainda terá a possibilidade de usar outra implementação do SQL.

Mas é claro que se você tiver muitos dados, comece procurando maneiras de reduzi -los ou pelo menos para reduzir o que está no MySQL. Por exemplo, você pode armazenar hashes no MySQL, mas páginas originais (se necessário) em arquivos simples.

O código online geralmente é distribuído pelas licenças do OpenSource. E a maior parte do código são apenas tutoriais. De acordo com sua lógica, copiar qualquer coisa de qualquer site é o plágio. O que significa que você não pode aceitar e usar qualquer resposta que obtenha aqui. Se você realmente deseja concluir seu projeto, basta escrever um sistema que compararia o código dos alunos da mesma turma e das aulas anteriores. É muito mais eficiente. Um exemplo desse sistema é MUSGO (Há também um artigo falando sobre como funciona). Essa coisa é realmente eficiente sem rastreadores da web.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top