Как анализировать пользовательский ввод, игнорируя шумовые слова в C ++? - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь написать простую текстовую приключенческую игру на C ++. Я хочу позволить пользователю иметь возможность вводить фразы, такие как «GET THE DOG», где код игнорирует «THE», и просто дает мне важные вещи, такие как «GET» и «DOG». Я также хочу, чтобы игра поддерживала движение, поэтому другим примером фразы может быть что-то вроде «MOVE TO LEFT», где игра будет игнорировать «TO» и «THE» и обращать внимание только на «MOVE» и «LEFT».

У кого-нибудь есть советы, как написать функцию для этого? Сначала я думал, что смогу использовать getline, но думаю, что единственный способ заставить это работать - это если я уже знаю положение важных слов. Мой друг предложил использовать substr для помещения строк в вектор, а затем итерировать по нему. Но даже в этом случае я не слишком уверен, как бы я использовал substr для таких вещей.

Спасибо!

    char str[100];
    cin.getline(str,100);
    char* point;
    pint = strtok(str, " ");

    while(piont != NULL){
        cout<<point<<endl;
        point = strtok(NULL, " ");
    }
}

вот что я поделил, пытаясь понять, как это сделать. Я не совсем уверен, почему это работает, но он делает что-то правильно. Он указывает на полное слово, потому что всякий раз, когда я печатаю указатель, он печатает слово перед пробелом.

1 Ответ

0 голосов
/ 05 мая 2018

Обычный подход заключается в разделении ввода на слова (вероятно, в std::vector<std::string>) и фильтрации (std::remove_if) слов с использованием набора (вероятно, std:: unordered_set<std::string>) из «стоп-слов» . Тогда вы можете попытаться разобраться в том, что осталось.

Технически, стоп-слово - это слово настолько распространенное, что бессмысленно использовать его в поиске. Я не знаю, почему их называют «стоп-словами», но это определенно обычный термин, и вы можете использовать его для поиска некоторых общих списков. Не все из них являются «шумом», в вашем смысле, но я думаю, что все ваши шумовые слова будут в общих списках стоп-слов.

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