Wie verarbeite ich Anfragen in natürlicher Sprache?


11

Ich bin neugierig auf Fragen in natürlicher Sprache. Stanford verfügt über eine anscheinend starke Software zur Verarbeitung natürlicher Sprache . Ich habe auch die Apache OpenNLP-Bibliothek und die Allgemeine Architektur für Text Engineering gesehen .

Es gibt unglaublich viele Verwendungsmöglichkeiten für die Verarbeitung natürlicher Sprache, und das macht es schwierig, die Dokumentation dieser Projekte schnell zu erfassen.

Können Sie mir die Dinge ein wenig vereinfachen und auf hoher Ebene die Aufgaben skizzieren, die für die Durchführung einer grundlegenden Übersetzung einfacher Fragen in SQL erforderlich sind?

Das erste Rechteck in meinem Flussdiagramm ist ein Rätsel.

Geben Sie hier die Bildbeschreibung ein

Zum Beispiel möchte ich vielleicht wissen:

How many books were sold last month?

Und ich möchte, dass das übersetzt wird

Select count(*) 
  from sales 
  where 
   item_type='book' and 
   sales_date >= '5/1/2014' and 
   sales_date <= '5/31/2014'

Antworten:


6

Das Abfragen natürlicher Sprache wirft sehr viele Feinheiten auf, die sehr schwer zu verallgemeinern sein können. Von einem hohen Niveau aus würde ich versuchen, Dinge in Form von Substantiven und Verben zu denken.

Also zum Satz: Wie viele Bücher wurden letzten Monat verkauft?

Sie beginnen, indem Sie den Satz mit einem Parser aufschlüsseln, der ein ähnliches Baumformat zurückgibt:

Geben Sie hier die Bildbeschreibung ein

Sie können sehen, dass es ein Fachbuch gibt, eine zusammengesetzte verbale Phrase, die die vergangene Aktion des Verkaufs angibt, und dann eine Nominalphrase, in der Sie den Zeitfokus eines Monats haben.

Wir können das Thema für Modifikatoren weiter aufschlüsseln: "wie viele" für Bücher und "zuletzt" für einen Monat.

Sobald Sie den Satz aufgeschlüsselt haben, müssen Sie diese Elemente der SQL-Sprache zuordnen, z. B.: Wie viele => Anzahl, Bücher => Buch, Verkauf => Umsatz, Monat => Verkaufsdatum (Intervall) usw.

Sobald Sie die Elemente der Sprache haben, müssen Sie nur noch eine Reihe von Regeln für die Interaktion verschiedener Entitäten miteinander erstellen.

Wählen Sie count (*) aus dem Verkauf aus, wobei item_type = 'book' und sales_date> = '5/1/2014' und sales_date <= '5/31/2014'.

Dies ist auf einem hohen Niveau, wie ich anfangen würde, während fast jeder Schritt, den ich erwähnt habe, nicht trivial ist und wirklich das Kaninchenloch endlos sein kann, sollte dies Ihnen viele der Punkte geben, die Sie verbinden können.


1

Einfache Fragen in Antworten umzuwandeln ist überhaupt nicht einfach .

Die erste Technologie, die dies so breit wie möglich und genau tut, wird ein großer Gewinner sein.

Es gibt jedoch einige, die die Lücken mit "Beantwortung von Fragen" mit künstlicher Intelligenz füllen (z. B. IBM Watson und Amazon Alexa). Dies erfordert das Lösen der Sprachkomplexität in Bezug auf die fraglichen Daten, was sich in den Datenspeichern befindet und was Substantive, Verben und Pronomen sind.

Microsoft wagte sich hier mit English Query aber dann auf. Kueri.me ist eine Python-basierte Plattform, die ungefähr dasselbe tut.

Strukturierte Abfragesprachen (SQL) und dergleichen, SOQL, MDX, Hive, Impala und die neueren übernehmen altmodisches SQL. Haben noch nicht viel von irgendetwas ersetzt, sind all diese Teile kleine Korrekturen des größeren "Endziels" und das liegt in der künstlichen Intelligenz (KI), speziell im maschinellen Lernen.

Die Frage ist:

"Kann der Computer herausfinden, was Sie wollen?"

Noch nicht. Es braucht Linguisten, Mathematiker, Ingenieure und mehr, um ihren Beitrag zu leisten, damit wir etwas von diesem süßen künstlichen intelligenten und maschinell erlernten Kuchen genießen können.


0

Es gibt verschiedene Ansätze zum Erstellen eines Parsers, mit dem einfache Textnachrichten in SQL analysiert werden. Sie können beispielsweise einen grammatikalischen Parser erstellen und einen NLP-Algorithmus verwenden, um die strukturierte Abfrage zu erstellen. Wenn Sie bereits viele analysierte Nachrichten aus einer Domain haben (z. B. E-Commerce), können Sie einen Ansatz für maschinelles Lernen ausprobieren und ihn für die weitere Analyse verwenden.

Ich denke jedoch, dass der beste Ansatz darin besteht, einen grammatikaliebasierten Parser für die Übersetzung von Text in SQL und ML zu kombinieren, um die regelbasierte Grammatik durch Korrektur der Syntax, Beseitigung von Tippfehlern usw. zu ergänzen.

Erfahren Sie mehr über die verschiedenen Ansätze hier .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.