Прескочи до основното съдържание
  1. Blogs/

Под капака: Техническата реализация на NLP и RDF системата на NomNom

817 думи·4 мин.·
Техническа Реализация Изкуствен Интелект Обработка На Естествен Език RDF Графова База Данни SPARQL Разработка На Чатбот
Дипанкар Саркар
Автор
Дипанкар Саркар
Работя върху някои от най-добрите технологии в света.
Съдържание

Докато продължаваме да разработваме NomNom, нашия интелигентен чатбот за рецепти, ние сме развълнувани да споделим някои от техническите детайли зад неговата реализация. В основата си NomNom комбинира напреднали техники за Обработка на естествен език (NLP) с надежден RDF-базиран граф на знанието, за да предостави безпроблемно, разговорно изживяване при търсене на рецепти.

NLP конвейерът: От потребителски вход до структурирана заявка
#

Нашият NLP конвейер е проектиран да трансформира естествените езикови потребителски заявки в структурирани представяния, които могат да бъдат използвани за заявки към нашия RDF граф на знанието. Ето разбивка на ключовите компоненти:

  1. Токенизация: Използваме Natural Language Toolkit (NLTK) за Python, за да разбием потребителския вход на отделни токени. Тази стъпка е от решаващо значение за по-нататъшна обработка.

  2. Маркиране на частите на речта: Прилагаме маркера за части на речта на NLTK, за да идентифицираме граматическата роля на всяка дума в заявката. Това помага за разбирането на структурата на потребителската заявка.

  3. Разпознаване на именувани обекти (NER): Разработихме персонализиран NER модел, използвайки Stanford NER и допълнителни данни за обучение, специфични за кулинарната област. Това ни позволява да идентифицираме съставки, методи за готвене, кухни и други релевантни обекти в потребителската заявка.

  4. Анализ на зависимостите: Използваме Stanford Parser, за да разберем връзките между различните части на заявката, което е особено полезно за сложни заявки.

  5. Класификация на намеренията: Реализирахме модел за многокласова класификация, използвайки scikit-learn, за да категоризираме потребителските заявки в намерения като търсене на рецепти, хранителни запитвания или обяснение на техники за готвене.

  6. Генериране на заявки: Въз основа на извлечените обекти, идентифицираното намерение и анализираната структура, ние генерираме SPARQL заявка, която може да бъде изпълнена срещу нашия RDF граф на знанието.

RDF граф на знанието: Мозъкът на NomNom
#

Нашият RDF граф на знанието е изграден и управляван с помощта на рамката Apache Jena. Ето как сме структурирали и реализирали този ключов компонент:

  1. Дизайн на онтологията: Разработихме персонализирана OWL онтология, която дефинира класове и свойства за рецепти, съставки, методи за готвене, хранителна информация и др. Тази онтология служи като схема за нашия граф на знанието.

  2. Въвеждане на данни: Създадохме Python скриптове, които трансформират данни за рецепти от различни източници (уебсайтове, готварски книги, потребителски предложения) в RDF тройки, съответстващи на нашата онтология.

  3. Хранилище на тройки: Използваме Apache Jena TDB като наше хранилище на тройки, което осигурява ефективно съхранение и заявки на RDF данни.

  4. SPARQL крайна точка: Настроихме Fuseki сървър, за да осигурим SPARQL крайна точка, позволяваща на нашата NLP система да прави заявки към графа на знанието.

  5. Машина за извод: Използваме вградените възможности за извод на Jena, за да извлечем допълнителни факти и връзки, подобрявайки богатството на нашия граф на знанието.

Свързване на NLP и RDF: Изпълнение на заявки и генериране на отговори
#

След като имаме SPARQL заявка, генерирана от потребителския вход, процесът продължава както следва:

  1. Изпълнение на заявката: SPARQL заявката се изпраща към нашия Fuseki сървър и се изпълнява срещу RDF графа на знанието.

  2. Обработка на резултатите: Резултатите от заявката, върнати като RDF, се обработват и трансформират в по-използваем формат за нашата система за генериране на отговори.

  3. Генериране на отговори: Използваме система, базирана на шаблони, реализирана в Python, за да генерираме отговори на естествен език въз основа на резултатите от заявката и първоначалното намерение на потребителя.

  4. Управление на диалога: Проста машина на състоянията следи контекста на разговора, позволявайки последващи въпроси и уточнения.

Предизвикателства и решения
#

Разработването на NomNom не беше без предизвикателства. Ето няколко, с които се сблъскахме и как ги адресирахме:

  1. Сложност на заявките: Някои потребителски заявки могат да бъдат доста сложни. Реализирахме система за декомпозиция на заявки, която разбива сложните заявки на по-прости подзаявки.

  2. Разрешаване на двусмислености: Кулинарните термини често могат да бъдат двусмислени. Използваме комбинация от анализ на контекста и подкани за уточнение от потребителя, за да разрешим двусмислености.

  3. Оптимизация на производителността: С нарастването на нашия граф на знанието, производителността на заявките може да бъде засегната. Реализирахме механизми за кеширане и техники за оптимизация на заявки, за да поддържаме отзивчивост.

  4. Многоезична поддръжка: За да обслужваме глобална аудитория, работим върху разширяване на нашия NLP конвейер, за да поддържа множество езици, започвайки с испански и френски.

Бъдещи технически подобрения
#

Докато гледаме към бъдещето, ние сме развълнувани от няколко технически подобрения в нашата пътна карта:

  1. Дълбоко обучение за NLP: Изследваме използването на модели за дълбоко обучение, особено LSTM мрежи, за да подобрим нашите NLP възможности.

  2. Разпределен граф на знанието: За да се справим с нарастващите обеми данни, разглеждаме разпределени RDF решения за съхранение като Apache Rya.

  3. Интеграция на данни в реално време: Разработваме система за динамично актуализиране на нашия граф на знанието с нови рецепти и съдържание, генерирано от потребителите.

  4. Семантично разсъждение: Планираме да използваме по-напреднали възможности за семантично разсъждение, за да предоставим още по-интелигентни препоръки за рецепти и замени.

NomNom представлява вълнуващо пресичане на NLP, семантични уеб технологии и изкуствен интелект. Чрез комбиниране на тези авангардни технологии, ние създаваме чатбот, който не само разбира рецепти, но може да води смислени кулинарни разговори с потребителите.

Очаквайте още технически задълбочени анализи, докато продължаваме да подобряваме и разширяваме възможностите на NomNom!

Подобни

NomNom: Революционизиране на търсенето на рецепти с RDF и графи на знанието
674 думи·4 мин.
Изкуствен Интелект Семантична Мрежа Чатбот RDF Граф На Знанието Обработка На Естествен Език Търсене На Рецепти
AAHIT: Задълбочен поглед върху технологията и метриките за растеж
794 думи·4 мин.
Технология Бизнес Анализ AI Технология Метрики За Растеж Ангажираност На Потребителите Обработка На Естествен Език Машинно Обучение
NLPCaptcha: Революционизиране на уеб сигурността и рекламата
410 думи·2 мин.
Технология Иновации CAPTCHA Обработка На Естествен Език Уеб Сигурност Реклама Python Разработка
NLPCaptcha: Преодоляване на техническите предизвикателства в CAPTCHA с естествен език
549 думи·3 мин.
Технологии Разработка На Софтуер Обработка На Естествен Език Python Разработка CAPTCHA Машинно Обучение Уеб Сигурност
AAHIT: Предефиниране на потребителското изживяване и неговото бъдеще в мобилното търсене
805 думи·4 мин.
Технологии Потребителско Изживяване Потребителско Изживяване Мобилно Търсене AI Асистент Развиващи Се Пазари Бъдеще На Технологиите
NLPCaptcha: Първоначални резултати и бъдещи насоки
615 думи·3 мин.
Технологии Бизнес CAPTCHA Уеб Сигурност Дигитална Реклама Потребителско Изживяване Технологични Иновации