Sie können es sofort mit Apache Lucene tun. Sie können es in einer Zeile tun. Es gibt die Levenstein-Distanzmethode und die Jaro-Winkler-Distanzmethode (obwohl es andere gibt).
Wie oft sollte ich bearbeiten = Entfernung. Beim Ersetzen von "BitCoin Core" durch "BitCoin Cash"
Daher beträgt der Abstand "3".
In diesem Fall beträgt die Anzahl der Zeichen 12 Zeichen. 9 von 12 Zeichen müssen nicht bearbeitet werden Die Punktzahl beträgt 9/12 = 3/4 = 0,75, was 75 Punkten entspricht.
** Im Allgemeinen soll es für die Rechtschreib- und Diebstahlprüfung einfach zu verwenden sein. ** ** **
Ich messe auch die Ähnlichkeit Beispielsweise wird die Ähnlichkeit so berechnet, als ob es Zeichen gibt, die innerhalb eines bestimmten Bereichs ersetzt werden können.
Darüber hinaus wird bei der Berechnung der Ähnlichkeit auch berücksichtigt, wie gut die Präfixe übereinstimmen.
** Im Allgemeinen soll es zur Überprüfung von Rechtschreibfehlern wirksam sein **
Verlassen Sie sich nur auf Lucene. In Maven.
pom.xml
<dependency>
<artifactId>lucene-core</artifactId>
<groupId>org.apache.lucene</groupId>
<version>5.1.0</version>
</dependency>
<dependency>
<artifactId>lucene-analyzers</artifactId>
<groupId>org.apache.lucene</groupId>
<version>3.6.1</version>
</dependency>
<dependency>
<artifactId>lucene-spellchecker</artifactId>
<groupId>org.apache.lucene</groupId>
<version>3.6.1</version>
</dependency>
sample
import org.apache.lucene.search.spell.JaroWinklerDistance;
import org.apache.lucene.search.spell.LevensteinDistance;
/**
*Beispiel zur Berechnung der Ähnlichkeitsbewertung einer Zeichenfolge
* @author ryutaro_hakozaki
*/
public class ExecStringSimilaritySample {
public static void main(String argv[]){
System.out.println(
"Eine Punktzahl, die "BitCoin Core" und "BitCoin Cash" nach Levenstein-Entfernung vergleicht== "
+ getSimilarScoreByLevenshteinDistance("BitCoin Core", "BitCoin Cash"));
System.out.println(
"Jaro Winkler Score im Vergleich von "BitCoin Core" und "BitCoin Cash" aus der Ferne== "
+ getSimilarScoreByJaroWinklerDistance("BitCoin Core", "BitCoin Cash"));
}
/**
*Der Revenstein-Abstand bestimmt die Ähnlichkeit der Saiten
* @param s1
* @param s2
* @return
*/
private static int getSimilarScoreByLevenshteinDistance(String s1, String s2){
//Eingabeprüfung entfällt
LevensteinDistance dis = new LevensteinDistance();
return (int) (dis.getDistance(s1, s2) * 100);
}
/**
*Jaro Winkler Beurteilung der Ähnlichkeit von Zeichenketten nach Entfernung
* @param s1
* @param s2
* @return
*/
private static int getSimilarScoreByJaroWinklerDistance(String s1, String s2){
//Eingabeprüfung entfällt
JaroWinklerDistance dis = new JaroWinklerDistance();
return (int) (dis.getDistance(s1, s2) * 100);
}
}
Ausführungsergebnis
Eine Punktzahl, die "BitCoin Core" und "BitCoin Cash" nach Levenstein-Entfernung vergleicht== 75
Jaro Winkler Score im Vergleich von "BitCoin Core" und "BitCoin Cash" aus der Ferne== 95