Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 56998|Resposta: 2

[Fonte] Implemente o algoritmo de similaridade de strings em C#

[Copiar link]
Publicado em 23/04/2019 12:59:18 | | | |
Recentemente, há um problema que precisa ser resolvido, ou seja, comparar a cadeia inserida pelo usuário com a cadeia obtida pelo sistema; se o erro não for muito grande, o sistema considerará que ela atende aos requisitos, e é melhor estabelecer um limiar.
Ao realizar o reconhecimento CAPTCHA, é necessário comparar a similaridade dos códigos de caracteres e usar o "algoritmo de distância de edição" para registrar o princípio e a implementação em C#.

De acordo com a Enciclopédia Baidu:

A distância de edição, também conhecida como distância de Levenshtein (também chamada de distância de edição), é o número mínimo de edições necessárias para alternar entre duas cadeias, e quanto maior a distância, mais diferentes elas são. Operações de edição com permissão incluem substituir um caractere por outro, inserir um caractere e remover um caractere.

Por exemplo, converta a palavra gatinho para sentar:

Sentado (K→s)

Sittin (E→I)

sentado (→G)

O cientista russo Vladimir Levenshtein propôs esse conceito em 1965. Daí o nome Distância de Levenshtein.

Por exemplo

Se str1="ivan", str2="ivan", então é calculado como igual a 0. Não convertido. similaridade=1-0/Math.Max(str1.length,str2.length)=1
Se str1="ivan1", str2="ivan2", então ele é calculado como igual a 1. O "1" de str1 converte em "2", converte um caractere, então a distância é 1, similaridade = 1-1/Math.Max(str1.length, str2.length) = 0,8

Aplicação:

  • Análise de DNA
  • Corretor ortográfico
  • Reconhecimento de fala
  • Detecção de plágio



O algoritmo é implementado em C#:

Código de teste:






A partir dos resultados dos testes, conclui-se queespaçoouPontuaçãoPosição das cordasCidades diferentesResultados que afetam a similaridadePortanto, ao comparar o reconhecimento de strings, recomenda-se remover todos os espaços e símbolos especiais na string antes de chamar o algoritmo

Recursos:O login do hiperlink está visível.

No GitHub, também existe uma biblioteca para comparações de similaridade de strings em C#

FuzzyString é uma biblioteca desenvolvida para meu trabalho diário para coordenar convenções de nomenclatura entre diferentes modelos de grade. Retirei o código específico do sistema de energia e montei o que pode ser usado efetivamente como uma extensão de string para determinar a igualdade aproximada entre as duas strings. Todos os algoritmos usados aqui foram extraídos de fontes online, convertidos para C# e compilados nesta biblioteca. Encontrei várias outras implementações open source similares que não estão disponíveis para . NET / C#。 Adicionar *.dll ao seu projeto dará acesso a essa extensão e às extensões individuais sob a extensão ApproximatelyEquals().



Endereço:O login do hiperlink está visível.

Instalação Nuget:

Algoritmos incluídos neste projeto:

  • Distância de Hamming
  • Distância de Jaccard
  • Distância de Jaro
  • Distância Jaro-Winkler
  • Distância de Levenshtein
  • O público mais longo
  • A substring comum mais longa da subsequência
  • Coeficiente de sobreposição
  • Semelhança Ratcliff-Obershelp
  • Distância de Sorensen-Dice
  • Coeficiente de Tanimoto



Uso:


Resultado:



(Fim)




Anterior:A Arte de Testar Software 3ª Edição PDF
Próximo:"Oito Competências dos Analistas de Dados" não criptografa o curso completo
Publicado em 06/05/2019 13:11:34 |
O conhecimento está chegando
Publicado em 07/09/2021 15:01:05 |
É possível ver o código depois de responder?
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com