Как узнать, предшествуют ли слову какие-то определенные слова или за ними следуют

#java

#java

Вопрос:

Я новичок в Java. У меня есть требование проверить statement , и если оно содержит определенное ambguity word , то выполните некоторую операцию.

Итак, вот код:

 for (NlpAmbiguityWords nlpAmbiguityWord : nlpAmbiguityWordsList) {
 String ambiguityWord = nlpAmbiguityWord.getWord();
 if (statement.contains(ambiguityWord)) {
    findAmbiguityWords(statement, ambiguityWord, ambiguityPhrase);
 }
}
  

Теперь в POJO есть небольшое изменение, теперь, в дополнение к передаче ambguity word , мы должны передать еще два параметра, precededBy и followedBy .. и оба они могут содержать массив строк (поэтому они могут иметь значения, разделенные запятыми). Требование таково: слова неоднозначности с precedby и followedby не должны рассматриваться как слово неоднозначности для отображения в таблице.

Например: если неоднозначное слово — user, а предшествующие слова — admin, tester, superadmin (набор из 3 значений, разделенных запятыми), и если условие истинно в любом из 3 случаев, оно однозначно.. означает, что условие внутри if в этом случае не должно оцениваться. Та же логика применима и к followedBy, а также к комбинации PRECEDBY и followedBy.

Комментарии:

1. ваш вопрос неясен

Ответ №1:

Я не совсем понимаю, что вы хотите реализовать, но если вы хотите применить некоторую логику для каждой комбинации precedent (из списка слов, разделенных запятыми), followed (из списка слов, разделенных запятыми) и ambiguityWord, вы можете использовать следующую структуру:

 for (NlpAmbiguityWords nlpAmbiguityWord : nlpAmbiguityWordsList) {
    String ambiguityWord = nlpAmbiguityWord.getWord();
    String[] precededBys = new String[]{};
    if (nlpAmbiguityWord.getPrecededBy()!=null)
        precededBys =nlpAmbiguityWord.getPrecededBy().split(",");
    String[] followedBys = new String[]{};
    if (nlpAmbiguityWord.getFollowedBy()!=null)
        followedBys =nlpAmbiguityWord.getFollowedBy().split(",");
    for (String precedent:precededBys) {
        // TODO: apply your logic with just precedent and ambiguityWord
        for (String followed:folowedBys) {
            // TODO: apply your logic using precendent, ambiguityWord and followed
        }
    }
    for (String followed:folowedBys) {
        // TODO: apply your logic using just ambiguityWord and followed
    }
    if (statement.contains(ambiguityWord)) {
        findAmbiguityWords(statement, ambiguityWord, ambiguityPhrase);
    }
}