У меня такое чувство, что вы делаете слишком много проверок для своей фразы, это сбивает с толку. У меня была бы база данных с типами ключей (VBD, IN, NNP, CD, TO ...) и связанными ключевыми словами, чтобы быть моим «словарем», тогда я бы оценил:
, если есть другие типы ключей, которые нежелательны, выполните проверки if для нужных,
, если есть еще желаемые типы клавиш, выполните проверки if для нежелательных.
Это сделает код короче. Тогда я бы go для пользовательского ввода текста, где они будут вводить что-то вроде:
Peter Griffin likes small white cats snoring on the couch
.
Это предложение будет затем проанализировано в вашем generatePhrases()
, где первый блок будет сортировать фразу в StringList, эта «сортировка» будет проверять каждое слово в словаре, чтобы определить его тип ключа и проверять этот тип ключа, если это необходимо, тогда я бы удалил из этого StringList ненужные фрагменты (NNP, CD, VBD, IN, PRP, TO), потому что у вас больше желаемых типов слов, поэтому нежелательная проверка выполняется быстрее.
String textinput = "Peter Griffin likes small white cats snoring on the couch";
String[] words = textinput.Split(" ");
StringList validwords = new StringList();
for (int i = 0; i < words.size(); i++){
//do the SQL prepare thing, sqlite checks and all the good stuff...
validword = "SELECT keytype FROM dictionary WHERE word = " + words[i] +
" AND keytype NOT IN ('NNP', 'CD', 'VBD', 'IN', 'PRP', 'TO')";
validwords.add(validword);
}
if (validwords.size() >= 4) && (validwords.size() <= 6){
system.out.println("Phrase: " + validwords.toString());
}
Так что у меня останется StringList с только нужными словами для моего ключевого предложения. , тогда я бы просто проверил, если длина StringList между 4 и 6, а затем просто конкатенировал слова из индексов с помощью метода StringList.toString()
.
Поскольку вы вводите текст в порядке это имеет смысл, вам не нужно проверять, имеет ли смысл Snoring couch cat Griffin small Peter
, потому что он уже был бы упорядочен как Peter Griffin likes small white cats
, так как это порядок вход.