Skip to main content
  1. Blogs/

Under huven: Den tekniska implementeringen av NomNoms NLP- och RDF-system

4 mins·
Teknisk Implementering Artificiell Intelligens Naturlig Språkbehandling RDF Grafdatabas SPARQL Chatbotutveckling
Dipankar Sarkar
Author
Dipankar Sarkar
Arbetar med några av de bästa teknologierna i världen.
Table of Contents

När vi fortsätter att utveckla NomNom, vår intelligenta receptchatbot, är vi glada att dela några av de tekniska detaljerna bakom dess implementering. I grunden kombinerar NomNom avancerade tekniker för naturlig språkbehandling (NLP) med en robust RDF-baserad kunskapsgraf för att leverera en sömlös, konversationsbaserad receptsökupplevelse.

NLP-pipeline: Från användarinput till strukturerad förfrågan
#

Vår NLP-pipeline är designad för att omvandla naturliga språkförfrågningar från användare till strukturerade representationer som kan användas för att söka i vår RDF-kunskapsgraf. Här är en nedbrytning av nyckelkomponenterna:

  1. Tokenisering: Vi använder Natural Language Toolkit (NLTK) för Python för att bryta ner användarinput i enskilda tokens. Detta steg är avgörande för vidare bearbetning.

  2. Ordklasstaggning: Vi tillämpar NLTK:s ordklasstaggare för att identifiera den grammatiska rollen för varje ord i förfrågan. Detta hjälper till att förstå strukturen i användarens begäran.

  3. Namnigenkänning (NER): Vi har utvecklat en anpassad NER-modell med hjälp av Stanford NER och ytterligare träningsdata specifik för det kulinariska området. Detta gör det möjligt för oss att identifiera ingredienser, matlagningsmetoder, kök och andra relevanta enheter i användarens förfrågan.

  4. Beroendeanalys: Vi använder Stanford Parser för att förstå relationerna mellan olika delar av förfrågan, vilket är särskilt användbart för komplexa begäranden.

  5. Avsiktsklassificering: Vi har implementerat en flerklassklassificeringsmodell med hjälp av scikit-learn för att kategorisera användarförfrågningar i avsikter som receptsökning, näringsförfrågan eller förklaring av matlagningstekniker.

  6. Förfrågansgenerering: Baserat på de extraherade enheterna, identifierad avsikt och analyserad struktur genererar vi en SPARQL-förfrågan som kan köras mot vår RDF-kunskapsgraf.

RDF-kunskapsgraf: NomNoms hjärna
#

Vår RDF-kunskapsgraf är byggd och hanteras med hjälp av Apache Jena-ramverket. Så här har vi strukturerat och implementerat denna avgörande komponent:

  1. Ontologidesign: Vi har utvecklat en anpassad OWL-ontologi som definierar klasser och egenskaper för recept, ingredienser, matlagningsmetoder, näringsinformation och mer. Denna ontologi fungerar som schema för vår kunskapsgraf.

  2. Datainmatning: Vi har skapat Python-skript som omvandlar receptdata från olika källor (webbplatser, kokböcker, användarinlämningar) till RDF-tripletter som överensstämmer med vår ontologi.

  3. Trippellagring: Vi använder Apache Jena TDB som vår trippellagring, vilket ger effektiv lagring och sökning av RDF-data.

  4. SPARQL-slutpunkt: Vi har satt upp en Fuseki-server för att tillhandahålla en SPARQL-slutpunkt, vilket gör det möjligt för vårt NLP-system att söka i kunskapsgrafen.

  5. Inferensmotor: Vi utnyttjar Jenas inbyggda inferensmöjligheter för att härleda ytterligare fakta och relationer, vilket förbättrar rikedomen i vår kunskapsgraf.

Att överbrygga NLP och RDF: Förfråganskörning och svarsgenerering
#

När vi har en SPARQL-förfrågan genererad från användarens input fortsätter processen enligt följande:

  1. Förfråganskörning: SPARQL-förfrågan skickas till vår Fuseki-server och körs mot RDF-kunskapsgrafen.

  2. Resultatbearbetning: Förfrågningsresultaten, som returneras som RDF, bearbetas och omvandlas till ett mer användbart format för vårt svargenereringssystem.

  3. Svarsgenerering: Vi använder ett mallbaserat system, implementerat i Python, för att generera naturliga språksvar baserat på förfrågningsresultaten och användarens ursprungliga avsikt.

  4. Dialoghantering: En enkel tillståndsmaskin håller reda på konversationskontexten, vilket möjliggör uppföljningsfrågor och förtydliganden.

Utmaningar och lösningar
#

Att utveckla NomNom har inte varit utan utmaningar. Här är några vi har stött på och hur vi har hanterat dem:

  1. Förfrågningskomplexitet: Vissa användarförfrågningar kan vara ganska komplexa. Vi har implementerat ett system för förfrågningsdekomposition som bryter ner komplexa förfrågningar i enklare delförfrågningar.

  2. Tvetydighetsupplösning: Kulinariska termer kan ofta vara tvetydiga. Vi använder en kombination av kontextanalys och uppmaningar om användarförtydligande för att lösa tvetydigheter.

  3. Prestandaoptimering: När vår kunskapsgraf växer kan förfrågningsprestandan påverkas. Vi har implementerat cachningsmekanismer och förfrågningsoptimeringsteknik för att upprätthålla responsiviteten.

  4. Flerspråkigt stöd: För att tillgodose en global publik arbetar vi med att utöka vår NLP-pipeline för att stödja flera språk, med början på spanska och franska.

Framtida tekniska förbättringar
#

När vi blickar framåt är vi entusiastiska över flera tekniska förbättringar på vår färdplan:

  1. Djupinlärning för NLP: Vi utforskar användningen av djupinlärningsmodeller, särskilt LSTM-nätverk, för att förbättra våra NLP-förmågor.

  2. Distribuerad kunskapsgraf: För att hantera ökande datavolymer undersöker vi distribuerade RDF-lagringslösningar som Apache Rya.

  3. Realtidsdataintegration: Vi utvecklar ett system för att dynamiskt uppdatera vår kunskapsgraf med nya recept och användargenererat innehåll.

  4. Semantisk resonemang: Vi planerar att utnyttja mer avancerade semantiska resonemangsmöjligheter för att ge ännu mer intelligenta receptrekommendationer och substitutioner.

NomNom representerar en spännande skärningspunkt mellan NLP, semantiska webbteknologier och artificiell intelligens. Genom att kombinera dessa banbrytande teknologier skapar vi en chatbot som inte bara förstår recept utan kan engagera sig i meningsfulla kulinariska konversationer med användare.

Håll utkik efter fler tekniska djupdykningar när vi fortsätter att förbättra och utöka NomNoms förmågor!

Related

NomNom: Revolutionerar receptsökning med RDF och kunskapsgrafik
3 mins
Artificiell Intelligens Semantisk Webb Chatbot RDF Kunskapsgrafik Naturlig Språkbehandling Receptsökning
AAHIT: En djupdykning i teknik och tillväxtmätningar
4 mins
Teknik Affärsanalys AI-Teknik Tillväxtmätningar Användarengagemang Naturlig Språkbehandling Maskininlärning
NLPCaptcha: Revolutionerar webbsäkerhet och annonsering
2 mins
Teknik Innovation CAPTCHA Naturlig Språkbehandling Webbsäkerhet Annonsering Python-Utveckling
NLPCaptcha: Att övervinna tekniska utmaningar i naturliga språk-CAPTCHAs
3 mins
Teknik Mjukvaruutveckling Naturlig Språkbehandling Python-Utveckling CAPTCHA Maskininlärning Webbsäkerhet
AAHIT: Omdefinierar användarupplevelsen och dess framtid inom mobil sökning
4 mins
Teknik Användarupplevelse Användarupplevelse Mobil Sökning AI-Assistent Tillväxtmarknader Framtidens Teknik
NLPCaptcha: Initiala resultat och framtida riktningar
3 mins
Teknologi Affärsverksamhet CAPTCHA Webbsäkerhet Digital Annonsering Användarupplevelse Teknisk Innovation