Искусственный интеллект. Строки, контекст и волны на Паскале - страница 27

Шрифт
Интервал


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

Шаблоны поиска

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

Предположим, перед нами – достаточно монотонный текст, состоящий из букв, пунктуации и пробелов. Это может быть html -страница текста, полная рекламы, модулей и ссылок; но небольшая часть этого текста носит важный для нас смысл. Мы хотели бы разметить этот фрагмент текста какими-либо жесткими правилами, однако это невозможно. На начало нужного фрагмента в тексте указывают лишь косвенные признаки, – например, наличие даты, времени публикации и имени автора в следующем формате: «12.08.2018 01:20, АНАТОЛИЙ ИВАНОВ». Строка перед ним – содержит только название статьи, а после и до него – ряды случайных символов.

Эти данные – всегда разные, но формат их записи всегда один. Как нам прочитать их в случайном месте текста?

В этом случае мы используем технологию шаблона. Под шаблоном здесь понимается последовательное использование какого-либо ряда символов (точек, букв, чисел, дефисов и т.п.), которое заранее может быть известно, однако его расположение в строке может быть различным: этот ряд символов может находиться где угодно.

В чем состоит идея:

1. «Прочитать» строку текста, размечая встреченные группы символов одной из нескольких меток. Например, все буквы русского алфавита мы можем пометить «0», пунктуацию – «1», числа – «2», английские буквы – «3», символьные команды и псевдографику «4» и «5», а пробелы – «6». (Согласно этой схеме, упомянутый выше шаблон без имени автора мы могли бы записать как последовательность «22122122226221221»).

2. В «клоне» строки, размеченной полученным кодом мы находим искомый шаблон.

3. Поскольку длина клонированной строки и исходной не отличается, указание на позицию шаблона укажет на позицию первого нужного нам символа в исходной строке и общее количество символов.


Илл. 38. Функция Shablon – определяет наличие в строке шаблона поиска, и возвращает подстроку s2 с указанным в шаблоне фрагментом текста.