Existe um método simples para classificar um conjunto de textos por semelhança com um determinado texto: pela distância euclidiana entre as frequências de palavras nos textos analisados. Em princípio, o algoritmo deve ser claro sobre isso, uma implementação simples pode ser
encontrada aqui .
Surpreendentemente, um método simples fornece bons resultados. Por exemplo, se estamos procurando o próximo livro para ler, você pode inserir o texto de um livro lido ou de vários livros lidos como um padrão de pesquisa e, em seguida, para este repositório de 10 livros, obteremos os seguintes resultados para o livro “FAIRY TALES By The Brothers Grimm”:
0.0320757 Repo\THE ADVENTURES OF TOM SAWYER.txt 0.0363329 Repo\A TALE OF TWO CITIES - A STORY OF THE FRENCH REVOLUTION.txt 0.0388528 Repo\ALICES ADVENTURES IN WONDERLAND.txt 0.0440605 Repo\MOBY-DICK or, THE WHALE.txt 0.046679 Repo\THE ADVENTURES OF SHERLOCK HOLMES.txt 0.0472574 Repo\The Iliad of Homer.txt 0.0511793 Repo\The Romance of Lust.txt 0.053746 Repo\PRIDE AND PREJUDICE.txt 0.0543531 Repo\BEOWULF - AN ANGLO-SAXON EPIC POEM.txt 0.0557194 Repo\Frankenstein; or, the Modern Prometheus.txt
Como pode ser visto nos resultados, os livros de contos de fadas foram os mais semelhantes, e o livro de terror foi o menos semelhante.
Para fins comerciais, é possível usar esse programa para encontrar o anúncio mais adequado para uma determinada página da web, comparando o texto da página lida pelo usuário com os textos das páginas onde os anúncios existentes levam.
Outra aplicação é encontrar um currículo a partir do banco de dados, seguindo o exemplo do currículo de um candidato adequado para essa posição, mas não deseja ingressar ou sair da empresa. Encontrar um substituto para um funcionário não é um caso de negócios tão raro. Você também pode classificar o banco de dados do currículo por semelhança com a descrição do trabalho.
PS A propósito, Habr na lista de artigos semelhantes produz algo não muito semelhante. Habru também pode aplicar esse método?