it-swarm-pt.tech

Existem bibliotecas de Funções de similaridade de pesquisa difusa ou de seqüência de caracteres escritas para C #?

Há uma pergunta semelhante, mas não sobre as bibliotecas C # que posso usar no meu código-fonte.

Obrigado a todos por sua ajuda.

Já vi lucene, mas preciso de algo mais fácil para procurar por seqüências semelhantes e sem a sobrecarga da parte de indexação.

A resposta que marquei tem dois algoritmos muito fáceis, e um usa o LINQ também, por isso é perfeito.

63
Luca Molteni

Implementação à distância de Levenshtein:

Eu tenho um projeto .NET 1.1 no qual eu uso o último. É simplista, mas funciona perfeitamente para o que eu preciso. Pelo que me lembro, precisava de alguns ajustes, mas nada que não fosse óbvio.

31
George Mauer

você também pode ver a impressionante biblioteca intitulada Sam's String Metrics http://sourceforge.net/projects/simmetrics/files/ . isso inclui uma série de algoritmos.

  • Distância de Hamming
  • Distância Levenshtein
  • Distância Needleman-Wunch ou algoritmo de vendedores
  • Distância Smith-Waterman
  • Distância Gotoh ou distância Smith-Waterman-Gotoh
  • Distância do bloco ou distância L1 ou distância do bloco da cidade
  • Distância Monge Elkan
  • Métrica de distância do Jaro
  • Jaro Winkler
  • Métrica de distância SoundEx
  • Coeficiente de correspondência
  • Coeficiente dos dados
  • Semelhança de Jaccard ou coeficiente de Jaccard ou coeficiente de Tanimoto
  • Coeficiente de sobreposição
  • Distância euclidiana ou distância L2
  • Semelhança cosseno
  • Distância variacional
  • Distância Hellinger ou distância Bhattacharyya
  • Raio da informação (divergência de Jensen-Shannon)
  • Média Harmônica
  • Divergência de inclinação
  • Probabilidade de confusão
  • Tau
  • Métrica Fellegi e Sunters (SFS)
  • TFIDF ou TF/IDF
  • FastA
  • BlastP
  • Correspondências máximas
  • q-grama
  • Algoritmos de Ukkonen
28
Zaffiro

Eles não são minha própria invenção, mas são meus favoritos e eu acabei de escrever um blog sobre eles e publiquei minhas próprias versões aprimoradas de Coeficiente de Dados, Distância de Levenshtein, Maior Subseqüência Comum e Duplo Metafone em um post chamado Quatro funções para encontrar correspondências de seqüência difusa em extensões C # .

13
Tyler Jensen

Você já deu uma olhada em Lucene.net ? É uma porta da API do mecanismo de pesquisa Java Lucene para a plataforma .Net. Essa biblioteca oferece muitas funcionalidades de pesquisa. Eu brinquei com isso há mais ou menos um ano, então não tome minha sugestão com base em toneladas de experiência. Eu o vi no livro Windows Developer Power Tools e o levei para um test drive. Você pode consultar o documentação da API para ver se ele oferece algo como a Pesquisa Difusa pela qual você está procurando.

2
Jason Jackson

Este documento do projeto de código possui uma função de similaridade de string usando o distância de Levenshtein .

1
Ed Schwehm

Existe o seguinte algoritmo de distância de Levenshtein, que atribui um valor à semelhança de duas cadeias (bem, a diferença realmente), que pode ser usada para criar: http://www.merriampark.com/ldcsharp.htm

1
benefactual

Eu usei "Dicionário da Árvore de Pesquisa Ternária em C #" ( http://www.codeproject.com/KB/recipes/tst.aspx ) para procurar seqüências de caracteres semelhantes.

Atenciosamente, Patricio

0
patriciovidal

O Projeto Beagle para Linux é escrito em c # (mono) e é uma ferramenta de pesquisa semelhante ao google-desktop. Pode haver algum código para esse tipo de correspondência de string.

Se bem me lembro, ele usa a biblioteca Lucene para pesquisar e recuperar dados. Talvez isso possa ser útil para o seu projeto também.

0
Isak Savo