Разбор возвращенного текста для определенного набора слов или фраз - PullRequest
0 голосов
/ 11 мая 2019

Мне нужно проанализировать текст, возвращенный сервером чата, и посмотреть, содержит ли оно определенное слово или фразу из 2-3 слов.

Эти конкретные слова или фразы, которые я называю ключами, будут иметь в общей сложности не более 20-30.

Какой самый эффективный способ сделать это?

Если я ищу только 20-30 словосочетаний, нормально ли это, если есть еще логический поток или есть лучший способ?

1 Ответ

0 голосов
/ 11 мая 2019

используйте LINQ - поместите все слова, которые вы хотите проверить, в List<string>, затем получите текст от чат-бота и list.Any(x=>chatBotString.IndexOf(x) > -1) - при условии, что вы ToLower() и Trim() все, это должно работать.

Допустим, ваша строка в чате чата s равна "the red fox jumped over the brown dog under the fence, I don't actually know what the sentence is", а ваш список терминов L равен

"red fox"
"brown dog"
"under the fence"
"actually know"

вы делаете

L.Any(x=>s.Trim().ToLower().IndexOf(x.Trim().ToLower())>-1)

Если вы получите true - тогда вы нашли хотя бы 1 строку.

Пример программы:

void Main()
{
    var l = new List<string> {
                        "red fox",
                        "brown dog",
                        "under the fence",
                        "actually know"
                        };

    var s = "the red fox jumped over the brown dog under the fence, I don't actually know what the sentence is";
    s = s.Trim().ToLower();
    l.Any(x => s.IndexOf(x.Trim().ToLower()) > -1); // true

    s = "this is a sentence with no matches";
    s = s.Trim().ToLower();
    l.Any(x => s.IndexOf(x.Trim().ToLower()) > -1); // false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...