Оглавление:

Как сделать A.I. Часть 4: 3 шага
Как сделать A.I. Часть 4: 3 шага

Видео: Как сделать A.I. Часть 4: 3 шага

Видео: Как сделать A.I. Часть 4: 3 шага
Видео: Урок 3 | Unreal Engine 4 Искусственный интеллект - Настройка ИИ / Nav Mesh 2024, Июль
Anonim
Как сделать A. I. Часть 4
Как сделать A. I. Часть 4

На днях я разговаривал со своим ИИ и сказал:

это: «Я иду наверх обедать, у нас СТЕЙК».

Однако программное обеспечение распознавания речи (SR) интерпретировало это как «… у нас есть СТАВКА».

Я столкнулся с похожей (но другой) проблемой раньше, когда говорил о фотографии, и сказал слово «ИЗОБРАЖЕНИЕ». Программное обеспечение SR интерпретировало это как «PITCHER».

Исправить это было простым переобучением программного обеспечения SR. (Или, может быть, мое произношение)

Но когда я говорю слова STEAK или STAKE, я произносю их точно так же, и переобучение программного обеспечения SR не поможет в таких случаях.

Шаг 1:

Одна идея решить «проблему омонимов».

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

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

Мой А. Программа анализирует предложение на массив отдельных слов с помощью функции «Разделить» Visual Basic (VB). [MyArray = Split (InputSentence, ««)]

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

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

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

Написание этих «Инструкций» помогает мне «продумать» решение проблемы программирования.

Шаг 2:

Изображение
Изображение

Структура таблицы HomonymContext

Моей первой идеей была таблица, содержащая слова, варианты написания и слова «Контекст». Идея заключалась в том, чтобы найти в предложении, содержащем омоним, другие слова, дающие «контекст», чтобы программа могла определить, какое написание использовать. Таблица также содержит столбец с именем «WordDef» для определения слова, которое больше подходит для человека, обслуживающего таблицу, чем для ИИ. код.

Для поиска каждого слова я могу использовать код VB и код SQL, например…

Для каждого слова в MyArray

Query = "Выберите слово из tblHomonynContext, где word = '" & word & "'"

если этот запрос возвращает результат, то слово является омонимом

Следующий

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

Шаг 3:

Изображение
Изображение

Если ваше входное предложение содержит омоним, теперь вы можете

выполнить код VB, который будет проверять другие слова в вашем предложении с контекстными словами в результатах запроса.

Вы также можете сделать все это в хранимой процедуре SQL, которая может выполняться быстрее.

Функция VB «InStr ()» вернет число больше нуля, если одна строка содержится в другой строке, или она вернет ноль, если строка НЕ содержится в другой строке.

Instr () фактически возвращает позицию содержащейся строки. Если вы просто хотите узнать, содержит ли String1 String2, вы можете использовать такой код, как «If InStr (String1, String2)> 0…»

Вам нужно будет создать этот код на вашем любимом языке программирования.

Таблица HomonymContext - не очень удачный дизайн. В нем много повторяющихся данных, и это считается «ненормализованным» разработчиками базы данных. Лучшим способом реализации этой функции было бы использование двух таблиц в отношениях родитель-потомок. Одна таблица (Родительская) будет содержать список омонимов, их определения, а также идентификатор строки. Этот идентификатор строки используется как ключ к «Дочерней таблице», которая будет содержать слова и их контекстные слова.

Это было бы легче запросить (и поддерживать), чем мой оригинальный дизайн.

Рекомендуемые: