我正在为一个学校项目工作。程序的目的是通过输入查找“相同”和“相似”字词。 我不知道如何找到相似的单词数字或只是单词。
例如:
输入:汽车
输出:发现:相似的汽车字词:3(或类似“ carhood”的字词)。
boolean cnt = false;
while(!cnt){
// Variables
ArrayList<String> WordList =
new ArrayList<>(Arrays.asList("açık",...."zorunda"));
String Word = "";
int WordIndex = 0;
int WordListSize = WordList.size();
boolean result = false;
System.out.print("Kelime Giriniz: ");
String Input = new Scanner(System.in).nextLine();
// Search Loop
for (int i = 0; i < WordListSize; i++) {
// Temporary variables
Word = WordList.get(i);
WordIndex = WordList.indexOf(Word);
// If there is word in word list
if(Word.equalsIgnoreCase(Input)) {
System.out.println("Kelime bulundu.");
System.out.println("Kelime : "+Word);
System.out.println("Kayıt Numarası : "+WordIndex);
// Comparison number
System.out.println(WordIndex+" Kelime ile karşılaştırıldı.");
result = true;
break;
}
}
if(!result) {
System.out.print("Kelime tarandı:");
System.out.println((WordList.size()));
System.out.println("Kelime bulunamadı.");
}
System.out.println("--");
System.out.println("Devam etmek ister misiniz ?");
System.out.println("'1' Evet, '0' Hayır.");
System.out.println("--");
int answer = new Scanner(System.in).nextInt();
if(answer ==0){
System.out.println("Çıkış yapaılıyor..");
cnt= true;
}
}
它是土耳其语。
答案 0 :(得分:2)
您可以使用java-8轻松实现:
// Assuming this is your list
List<String> myList = Arrays.asList("Carhood", "Carlight", "Tree", "Red", "Carrom");
// using a filter and then collecting 'similar words' to a list
List<String> collect = myList.stream()
.filter(s -> s.contains("Car"))
.collect(Collectors.toList());
// to print it out
collect.forEach(System.out::println);
答案 1 :(得分:0)
实际上,有很多算法可以检查字符串的相似性。 您可以使用以下链接阅读其中的许多内容,并选择喜欢的一个:https://github.com/tdebatty/java-string-similarity
还有一个maven依赖项:
<dependency>
<groupId>info.debatty</groupId>
<artifactId>java-string-similarity</artifactId>
<version>RELEASE</version>
</dependency>
以及那里的一些使用示例。
简而言之,您应该设置某种similarity coefficient
,并根据该算法,根据https://en.wikipedia.org/wiki/Levenshtein_distance等指标来确定字符串是否足够相似