Я пытаюсь реализовать программу, которая будет вводить пользователя, разделять эту строку на токены, а затем искать словарь для слов в этой строке. Моя цель для проанализированной строки состоит в том, чтобы каждый отдельный токен был английским словом.
Пример:
Input:
aman
Split Method:
a man
a m an
a m a n
am an
am a n
ama n
Desired Output:
a man
В настоящее время у меня есть этот код, который делает все до желаемой выходной части:
import java.util.Scanner;
import java.io.*;
public class Words {
public static String[] dic = new String[80368];
public static void split(String head, String in) {
// head + " " + in is a segmentation
String segment = head + " " + in;
// count number of dictionary words
int count = 0;
Scanner phraseScan = new Scanner(segment);
while (phraseScan.hasNext()) {
String word = phraseScan.next();
for (int i=0; i<dic.length; i++) {
if (word.equalsIgnoreCase(dic[i])) count++;
}
}
System.out.println(segment + "\t" + count + " English words");
// recursive calls
for (int i=1; i<in.length(); i++) {
split(head+" "+in.substring(0,i), in.substring(i,in.length()));
}
}
public static void main (String[] args) throws IOException {
Scanner scan = new Scanner(System.in);
System.out.print("Enter a string: ");
String input = scan.next();
System.out.println();
Scanner filescan = new Scanner(new File("src:\\dictionary.txt"));
int wc = 0;
while (filescan.hasNext()) {
dic[wc] = filescan.nextLine();
wc++;
}
System.out.println(wc + " words stored");
split("", input);
}
}
Я знаю, что есть лучшие способы хранения словаря (например, двоичное дерево поиска или хеш-таблица), но я не знаю, как их реализовать.
Я зациклился на том, как реализовать метод, который будет проверять разделяемую строку, чтобы увидеть, был ли каждый сегмент словом в словаре.
Любая помощь будет отличной, Спасибо вам