Получить имя пользователя из полной строки текста - PullRequest
0 голосов
/ 13 июня 2018
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("BubbleBot: Hello! What's your name?");
Console.WriteLine("");
Console.ResetColor();

while (!shutdown)
{
    foundResponse = false;

    Console.Write("You: ");
    inputValue = Console.ReadLine().ToLower();
    Console.WriteLine("");

    Console.ForegroundColor = ConsoleColor.Blue;
    Console.Write("BubbleBot: ");
    switch(inputValue)
    {
        case "My name is ":
            foundResponse = true;
            outputValue = "Hello,";
            break;

Я пытаюсь создать чат-бота и хочу убедиться, что чат-бот видит текст в качестве имени пользователя только в том случае, если перед ним стоят слова «мое имя».Я не уверен, возможно ли это, и если да, то как я могу это сделать?(в основном я пытаюсь заявить, что любое слово (слова), которые идут после «Мое имя», должны быть заданы как строка «userName»)

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Короче, используйте инструмент Name Finder.

Если вы серьезно относитесь к разработке чат-робота, вычищающего текстовые ответы пользователей, вы сразу же возненавидите этот проект.Я бы порекомендовал использовать Natural Language Processing (NLP) и использовать библиотеку тегов Parts of Speech (POS), например SharpNLP.

Меня зовут Джон Доу

Будет разбит на части речи.Предмет и предикат.Далее он будет разделен на предметные существительные, глаголы, прилагательные и предикатные существительные, и даже правильные существительные, которые вам нужны.Вот список инструментов в SharpNLP.

  • разделитель предложений
  • токенизатор
  • тегер части речи
  • achunker (используется для «поиска нерекурсивных синтаксических аннотаций, таких как фрагменты имен существительных»)
  • синтаксический анализатор
  • средство поиска имен
  • инструмент coreference
  • интерфейс к лексической базе данных WordNet

Редкая черная белка стала постоянным посетителем пригородного сада A rare black squirrel has become a regular visitor to a suburban garden

https://archive.codeplex.com/?p=sharpnlp

Еще лучше, если бы это было учебное упражнение, я бы посмотрел, что уже сделали Microsoft, Google и Amazon AI, и научился бы использовать их API.

0 голосов
/ 13 июня 2018

Это поможет вам решить вашу непосредственную проблему.

var nameIndicator = "my name is ";
var index = inputValue.ToLower().IndexOf(nameIndicator);

if (index == -1)
{
    // Not found
}
else
{
    var name = inputValue.Substring(index + nameIndicator.Length);
}

Переменная name будет извлекать все, что следует после «Моего имени» в качестве имени.

Однако я настоятельно рекомендуюВы должны переосмыслить свой подход здесь, так как это очень подвержено ошибкам.Что делать, если пользователь сделал опечатку?Кроме того, с точки зрения UX, никто никогда не хочет вводить «Меня зовут XYZ», когда спрашивают имя, вы просто вводите свое имя.

Что вы можете сделать, это просто спросить имя и получитьпользовательский ввод в качестве имени.

ПРИМЕЧАНИЕ

Когда вы публикуете примеры кода, публикуйте полные образцы, где они могут быть запущены без правок.Если это слишком долго, посмотрите, как вы можете опубликовать Минимальный, Полный и Проверяемый пример .

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