Levenshtein 알고리즘을 사용하여 편집 거리를 계산하고 Java에서 두 문자열 간의 유사성을 결정하는 방법은 무엇입니까?
Nov 18, 2024 am 06:28 AMJava의 유사성 문자열 비교
여러 문자열을 비교하여 가장 유사한 문자열을 식별할 때는 적절한 기술과 알고리즘을 활용하는 것이 중요합니다. 이 기사에서는 두 문자열 간의 유사성을 계산하기 위해 "편집 거리"라고 알려진 널리 사용되는 접근 방식을 자세히 설명합니다.
Levenshtein 알고리즘을 사용하여 편집 거리 계산
편집 계산 거리는 한 문자열을 다른 문자열로 변환하는 데 필요한 최소 문자 삽입, 삭제 및 대체 수를 결정하는 것과 관련됩니다. Levenshtein 알고리즘은 편집 거리를 계산하기 위한 고전적인 접근 방식으로, 종종 프로그래밍 라이브러리에 통합됩니다. Levenshtein 알고리즘을 사용하여 계산하려면:
// Levenshtein's Edit Distance Function public static int editDistance(String s1, String s2) { // Convert to lower case for case-insensitive comparison s1 = s1.toLowerCase(); s2 = s2.toLowerCase(); int[][] matrix = new int[s2.length() + 1][s1.length() + 1]; // Initialize first column to cost of insertion for (int i = 0; i <= s1.length(); i++) { matrix[0][i] = i; } // Initialize first row to cost of deletion for (int j = 0; j <= s2.length(); j++) { matrix[j][0] = j; } // Populate the matrix for (int j = 1; j <= s2.length(); j++) { for (int i = 1; i <= s1.length(); i++) { int cost = s1.charAt(i - 1) == s2.charAt(j - 1) ? 0 : 1; int min = Math.min(matrix[j - 1][i] + 1, // Deletion Math.min(matrix[j][i - 1] + 1, // Insertion matrix[j - 1][i - 1] + cost)); // Substitution matrix[j][i] = min; } } return matrix[s2.length()][s1.length()]; }
정규화된 유사성 지수
편집 거리가 계산되면 유사성 지수는 이를 길이로 정규화하여 계산할 수 있습니다. 긴 문자열:
// Similarity Index Function public static double similarityIndex(String s1, String s2) { int distance = editDistance(s1, s2); String longer = s1.length() > s2.length() ? s1 : s2; double similarity = 1.0 - (distance / (double) longer.length()); return similarity; }
사용 예:
이러한 방법을 활용하려면 다음과 같이 적용할 수 있습니다.
String str1 = "The quick fox jumped"; String str2 = "The fox"; double similarity = similarityIndex(str1, str2); System.out.println("Similarity Index: " + similarity);
출력:
Similarity Index: 0.70
이 예는 "The Quick fox Jumped"와 "The fox" 사이의 유사성 지수 0.7을 보여줍니다.
전체적으로, 이 문서는 문자열 유사성을 정량화하는 강력한 방법을 제공하므로 여러 문자열을 효율적이고 효과적으로 비교할 수 있습니다.
위 내용은 Levenshtein 알고리즘을 사용하여 편집 거리를 계산하고 Java에서 두 문자열 간의 유사성을 결정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











2025 년 상위 4 개의 JavaScript 프레임 워크 : React, Angular, Vue, Svelte

Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까?

고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까?

카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까?

Spring Boot Snakeyaml 2.0 CVE-2022-1471 문제 고정
