Contents
Mẹo về Hàm so sánh chuỗi java 2022
You đang tìm kiếm từ khóa Hàm so sánh chuỗi java được Update vào lúc : 2022-11-04 15:04:00 . Với phương châm chia sẻ Kinh Nghiệm về trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi đọc nội dung bài viết vẫn ko hiểu thì hoàn toàn có thể lại phản hồi ở cuối bài để Ad lý giải và hướng dẫn lại nha.
Vâng, có nhiều thuật toán được ghi chép tốt như:
- Tương tự cosinTương tự JaccardHệ số xúc xắcPhù hợp tương tựSự giống nhau chồng chéovân vân
Hoặc bạn hoàn toàn có thể kiểm tra điều này
Kiểm tra những dự án công trình bất Động sản này:
- ://.dcs.shef.ac.uk/~sam/simmetrics.htmlhttp://jtmt.sourceforge/
Cách phổ cập của tính toán độ tương tự giữa hai chuỗi theo phong cách 0% -100% , như được sử dụng trong nhiều thư viện, là để đo mức độ (trong %) bạn sẽ phải thay đổi chuỗi dài hơn thế nữa để biến nó thành chuỗi ngắn lại:
/**
* Calculates the similarity (a number within 0 and 1) between two strings.
*/
public static double similarity(String s1, String s2)
String longer = s1, shorter = s2;
if (s1.length()
Tính toán editDistance():
Hàm editDistance() ở trên dự kiến sẽ tính khoảng chừng cách sửa đổi giữa hai chuỗi. Có một số trong những triển khai cho bước này, từng bước hoàn toàn có thể phù phù thích hợp với một ngữ cảnh rõ ràng tốt hơn. Phổ biến nhất là Thuật toán khoảng chừng cách Levenshtein và chúng tôi sẽ sử dụng trong ví dụ của chúng tôi dưới đây (riêng với những chuỗi rất rộng, những thuật toán khác hoàn toàn có thể hoạt động và sinh hoạt giải trí tốt hơn).
Đây là hai tùy chọn để tính khoảng chừng cách sửa đổi:
- Bạn hoàn toàn có thể sử dụng Văn bản Apache Commons của khoảng chừng cách Levenshtein: apply(CharSequence left, CharSequence rightt)Thực hiện nó trong của riêng bạn. Dưới đây bạn sẽ tìm thấy một ví dụ thực thi.
Ví dụ thao tác:
Xem bản demo trực tuyến tại đây.
public class StringSimilarity
/**
* Calculates the similarity (a number within 0 and 1) between two strings.
*/
public static double similarity(String s1, String s2)
String longer = s1, shorter = s2;
if (s1.length() 0)
int newValue = costs[j – 1];
if (s1.charAt(i – 1) != s2.charAt(j – 1))
newValue = Math.min(Math.min(newValue, lastValue),
costs[j]) + 1;
costs[j – 1] = lastValue;
lastValue = newValue;
if (i > 0)
costs[s2.length()] = lastValue;
return costs[s2.length()];
}
public static void printSimilarity(String s, String t)
System.out.println(String.format(
“%.3f is the similarity between “%s” and “%s””, similarity(s, t), s, t));
public static void main(String[] args)
printSimilarity(“”, “”);
printSimilarity(“1234567890”, “1”);
printSimilarity(“1234567890”, “123”);
printSimilarity(“1234567890”, “1234567”);
printSimilarity(“1234567890”, “1234567890”);
printSimilarity(“1234567890”, “1234567980”);
printSimilarity(“47/2010”, “472010”);
printSimilarity(“47/2010”, “472011”);
printSimilarity(“47/2010”, “AB.CDEF”);
printSimilarity(“47/2010”, “4B.CDEFG”);
printSimilarity(“47/2010”, “AB.CDEFG”);
printSimilarity(“The quick fox jumped”, “The fox jumped”);
printSimilarity(“The quick fox jumped”, “The fox”);
printSimilarity(“kitten”, “sitting”);
}
Đầu ra:
1.000 is the similarity between “” and “”
0.100 is the similarity between “1234567890” and “1”
0.300 is the similarity between “1234567890” and “123”
0.700 is the similarity between “1234567890” and “1234567”
1.000 is the similarity between “1234567890” and “1234567890”
0.800 is the similarity between “1234567890” and “1234567980”
0.857 is the similarity between “47/2010” and “472010”
0.714 is the similarity between “47/2010” and “472011”
0.000 is the similarity between “47/2010” and “AB.CDEF”
0.125 is the similarity between “47/2010” and “4B.CDEFG”
0.000 is the similarity between “47/2010” and “AB.CDEFG”
0.700 is the similarity between “The quick fox jumped” and “The fox jumped”
0.350 is the similarity between “The quick fox jumped” and “The fox”
0.571 is the similarity between “kitten” and “sitting”
Tôi đã dịch thuật toán khoảng chừng cách Levenshtein sang JavaScript:
String.prototype.LevenshteinDistance = function (s2) {
var array = new Array(this.length + 1);
for (var i = 0; i
Bạn hoàn toàn có thể sử dụng khoảng chừng cách Levenshtein để tính chênh lệch giữa hai chuỗi. ://en.wikipedia.org/wiki/Levenshtein_distance
Thực sự có thật nhiều giải pháp tương tự chuỗi ngoài kia:
- Levenshtein sửa đổi khoảng chừng cách;Khoảng cách Damerau-Levenshtein;Sự tương đương của Jaro-Winkler;Khoảng cách sửa đổi hậu quả chung dài nhất;Q.-Gram (Ukkonen);khoảng chừng cách n-Gram (Kondrak);Chỉ số Jaccard;Hệ số Sorensen-Dice;Tương tự cosin;…
Bạn hoàn toàn có thể tìm thấy lời lý giải và Java thực thi những điều này tại đây: ://github/tdebatty/Java-opes-similarity
Bạn hoàn toàn có thể đạt được điều này bằng phương pháp sử dụng thư viện Apache commons Java . Hãy xem hai hiệu suất cao bên trong nó:
[.__.] – getLevenshteinDistance
[.__.] – getFuzzyDistance
Cảm ơn người vấn đáp thứ nhất, tôi nghĩ có 2 phép tính computeEditDistance (s1, s2). Do tiêu pha thời hạn cao của nó, đã quyết định hành động cải tổ hiệu suất của mã. Vì thế:
public class LevenshteinDistance
public static int computeEditDistance(String s1, String s2)
s1 = s1.toLowerCase();
s2 = s2.toLowerCase();
int[] costs = new int[s2.length() + 1];
for (int i = 0; i 0)
int newValue = costs[j – 1];
if (s1.charAt(i – 1) != s2.charAt(j – 1))
newValue = Math.min(Math.min(newValue, lastValue),
costs[j]) + 1;
costs[j – 1] = lastValue;
lastValue = newValue;
if (i > 0)
costs[s2.length()] = lastValue;
}
return costs[s2.length()];
}
public static void printDistance(String s1, String s2)
double similarityOfStrings = 0.0;
int editDistance = 0;
if (s1.length() ” + s2 + “: ” +
// editDistance + ” (” + similarityOfStrings + “)”);
System.out.println(editDistance + ” (” + similarityOfStrings + “)”);
public static void main(String[] args) {
printDistance(“”, “”);
printDistance(“1234567890”, “1”);
printDistance(“1234567890”, “12”);
printDistance(“1234567890”, “123”);
printDistance(“1234567890”, “1234”);
printDistance(“1234567890”, “12345”);
printDistance(“1234567890”, “123456”);
printDistance(“1234567890”, “1234567”);
printDistance(“1234567890”, “12345678”);
printDistance(“1234567890”, “123456789”);
printDistance(“1234567890”, “1234567890”);
printDistance(“1234567890”, “1234567980”);
printDistance(“47/2010”, “472010”);
printDistance(“47/2010”, “472011”);
printDistance(“47/2010”, “AB.CDEF”);
printDistance(“47/2010”, “4B.CDEFG”);
printDistance(“47/2010”, “AB.CDEFG”);
printDistance(“The quick fox jumped”, “The fox jumped”);
printDistance(“The quick fox jumped”, “The fox”);
printDistance(“The quick fox jumped”,
“The quick fox jumped off the balcany”);
printDistance(“kitten”, “sitting”);
printDistance(“rosettacode”, “raisethysword”);
printDistance(new StringBuilder(“rosettacode”).reverse().toString(),
new StringBuilder(“raisethysword”).reverse().toString());
for (int i = 1; i
Về mặt lý thuyết, bạn hoàn toàn có thể so sánh sửa đổi khoảng chừng cách .
Điều này thường được thực thi bằng phương pháp sử dụng một sửa đổi khoảng chừng cách . Tìm kiếm “sửa đổi khoảng chừng cách Java” sẽ xuất hiện một số trong những thư viện, như cái này .
Âm thanh in như một Trình tìm đạo văn với tôi nếu chuỗi của bạn trở thành tài liệu. Có lẽ tìm kiếm với thuật ngữ này sẽ bật lên một chiếc gì đó tốt.
“Lập trình trí tuệ tập thể” có một chương về việc xác lập xem hai tài liệu có giống nhau không. Mã này bằng Python, nhưng nó sạch và dễ chuyển.
://.youtube/watch?v=C1p1DMBb3X4
Clip Hàm so sánh chuỗi java ?
Bạn vừa đọc Post Với Một số hướng dẫn một cách rõ ràng hơn về Clip Hàm so sánh chuỗi java tiên tiến và phát triển nhất
Chia Sẻ Link Tải Hàm so sánh chuỗi java miễn phí
Heros đang tìm một số trong những ShareLink Download Hàm so sánh chuỗi java Free.
Hỏi đáp vướng mắc về Hàm so sánh chuỗi java
Nếu sau khi đọc nội dung bài viết Hàm so sánh chuỗi java vẫn chưa hiểu thì hoàn toàn có thể lại phản hồi ở cuối bài để Mình lý giải và hướng dẫn lại nha
#Hàm #sánh #chuỗi #java