Проблема реализации алгоритма классификатора для слов, разделенных пробелами - PullRequest
2 голосов
/ 09 августа 2011

У меня есть текст и разбить его на слова, разделенные пробелами.

Я классифицирую единицы, и они работают, если это происходит в одном и том же слове (например: «100 м», «90 кг», «140 ° F», «500 долларов США»), но у меняпроблемы, если они появляются отдельно, каждая часть в слове (например: «100 ° C», «450 долларов США», «150 км»).

Алгоритм классификатора может понять, правильно ли выбрана единицаи значение отсутствует в левой или правой части.

Мой вопрос заключается в том, как я могу выполнить итерацию по всем словам в списке, предоставляя корректирующее слово классификатору.

Этотолько пример кода.Я пытался разными способами.

for(String word: words){
    String category = classifier.classify(word);
    if(classifier.needPreviousWord()){
      // ?
    }
    if(classifier.needNextWord()){
      // ?
    }
}

Другими словами, мне нужно перебрать список, классифицирующий все слова, и, если для проверки необходимо предыдущее слово, укажите последнее слово иБлок.Если необходимо следующее слово, укажите единицу и следующее слово.Кажется, все просто, но я не знаю, как это сделать.

Ответы [ 2 ]

1 голос
/ 09 августа 2011

Не используйте неявный итератор в вашем цикле for, но явный.Затем вы можете переходить туда-сюда по своему усмотрению.

Iterator<String> i = words.iterator();
while (i.hasNext()) {
    String category = classifier.classify(i.next());
    if(classifier.needPreviousWord()){
        i.previous();
    }
    if(classifier.needNextWord()){
        i.next();
    }
}

Это не завершено, потому что я не знаю, что именно делает ваш классификатор, но это должно дать вам представление о том, как поступить.

0 голосов
/ 09 августа 2011

Это может помочь.

  public static void main(String [] args)
  {
   List<String> words = new ArrayList<String>();

   String previousWord = "";
   String nextWord = "";

   for(int i=0; i < words.size(); i++) {
       if(i > 0) {
           previousWord = words.get(i-1);
       }
       String currentWord = words.get(i);

       if(i < words.size() - 1) {
           nextWord = words.get(i+1);
       } else {
           nextWord = "";
       }

        String category = classifier.classify(word);
        if(category.needPreviousWord()){
            if(previousWord.length() == 0) {
                System.out.println("ERROR: missing previous unit");
            } else {
                System.out.println(previousWord + currentWord);   
            }
        }
        if(category.needNextWord()){
            if(nextWord.length() == 0) {
                System.out.println("ERROR: missing next unit");
            } else {
                System.out.println(currentWord + nextWord);
            }

        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...