C # 용으로 작성된 퍼지 검색 또는 문자열 유사성 함수 라이브러리가 있습니까?
비슷한 질문이 있지만 소스 코드에서 사용할 수있는 C # 라이브러리와 관련이 없습니다.
도와 주셔서 감사합니다.
나는 이미 lucene을 보았지만 인덱싱 부분의 오버 헤드없이 유사한 문자열을 검색하기 더 쉬운 것이 필요합니다.
내가 표시 한 대답에는 두 가지 매우 쉬운 알고리즘이 있으며 하나는 LINQ도 사용하므로 완벽합니다.
Levenshtein 거리 구현 :
- LINQ 사용 (실제로는 주석 참조)
- LINQ를 사용하지 않음
후자를 사용하는 .NET 1.1 프로젝트가 있습니다. 단순하지만 내가 필요한 것에 완벽하게 작동합니다. 내가 기억하는 바에 따르면 약간의 조정이 필요했지만 분명하지 않은 것은 없습니다.
Sam 's String Metrics http://sourceforge.net/projects/simmetrics/files/ 라는 매우 인상적인 라이브러리를 볼 수도 있습니다 . 여기에는 다양한 알고리즘이 포함됩니다.
- 해밍 거리
- Levenshtein 거리
- Needleman-Wunch 거리 또는 판매자 알고리즘
- Smith-Waterman 거리
- Gotoh 거리 또는 Smith-Waterman-Gotoh 거리
- 블록 거리 또는 L1 거리 또는 도시 블록 거리
- 몽지 엘칸 거리
- Jaro 거리 측정법
- 자로 윙클러
- SoundEx 거리 측정법
- 일치 계수
- 주사위 계수
- Jaccard 유사성 또는 Jaccard 계수 또는 Tanimoto 계수
- 중첩 계수
- 유클리드 거리 또는 L2 거리
- 코사인 유사성
- 가변 거리
- Hellinger 거리 또는 Bhattacharyya 거리
- 정보 반경 (Jensen-Shannon 발산)
- 고조파 평균
- 스큐 발산
- 혼동 확률
- 타우
- Fellegi and Sunters (SFS) 측정 항목
- TFIDF 또는 TF / IDF
- FastA
- BlastP
- 최대 일치
- q- 그램
- Ukkonen 알고리즘
그것들은 내 발명품은 아니지만 내가 가장 좋아하는 것입니다. 그리고 방금 블로그에 게시하고 퍼지 문자열 찾기를위한 Four Functions 라는 블로그 게시물에 Dice Coefficient, Levenshtein Distance, Longest Common Subsequence 및 Double Metaphone의 수정 된 버전을 게시했습니다. C # Extensions에서 일치합니다 .
Lucene.net 을 보셨습니까 ? .Net 플랫폼에 대한 Java Lucene 검색 엔진 API의 포트입니다. 이 라이브러리는 많은 검색 기능을 제공합니다. 나는 1 년 정도 전에 그것을 가지고 놀았으므로 수많은 경험을 바탕으로 내 제안을 받아들이지 마십시오. Windows Developer Power Tools 책에서보고 테스트 드라이브에 사용했습니다. API 문서 를 통해 찾고있는 퍼지 검색과 같은 것을 제공하는지 확인할 수 있습니다.
이 코드 프로젝트 문서 에는 Levenshtein distance를 사용하는 문자열 유사성 함수가 있습니다 .
다음과 같은 Levenshtein Distance Algorithm은 두 문자열의 유사성 (실제로는 차이점)에 값을 할당하며이를 기반으로 구축 할 수 있습니다. http://www.merriampark.com/ldcsharp.htm
비글 프로젝트 Linux 용 C #을 (모노)에 기록되고 검색 도구와 같은 구글 데스크톱이다. 이러한 종류의 문자열 일치를위한 코드가있을 수 있습니다.
올바르게 기억하면 Lucene 라이브러리를 사용하여 데이터를 검색하고 검색합니다. 프로젝트에도 유용 할 수 있습니다.
비슷한 문자열을 검색하기 위해 "Ternary Search Tree Dictionary in C #"( http://www.codeproject.com/KB/recipes/tst.aspx )을 사용했습니다.
감사합니다, Patricio
'programing tip' 카테고리의 다른 글
C ++ 14 자리 구분자에 공백 문자가 선택되지 않은 이유는 무엇입니까? (0) | 2020.11.21 |
---|---|
Google 크롬 개발자 도구는 매우 느리게 작동합니다. (0) | 2020.11.21 |
svn cp 또는 svn mv를 사용할 때 패치가 적용되는 svn diff 생성 파일을 만드는 방법은 무엇입니까? (0) | 2020.11.21 |
Android 프레임 워크? (0) | 2020.11.21 |
거의 정렬 된 배열 정렬 (k 이하로 잘못 배치 된 요소) (0) | 2020.11.21 |