Jak przetwarzać zapytania w języku naturalnym?

11

Jestem ciekawy zapytań w języku naturalnym. Stanford ma coś, co wygląda na silny zestaw oprogramowania do przetwarzania języka naturalnego . Widziałem także bibliotekę Apache OpenNLP i architekturę ogólną dla inżynierii tekstu .

Istnieje ogromna liczba zastosowań przetwarzania języka naturalnego, co sprawia, że ​​dokumentacja tych projektów jest trudna do szybkiego przyswojenia.

Czy możesz dla mnie trochę uprościć i na wysokim poziomie przedstawić zadania niezbędne do wykonania podstawowego tłumaczenia prostych pytań na język SQL?

Pierwszy prostokąt na moim schemacie blokowym jest trochę tajemnicą.

wprowadź opis zdjęcia tutaj

Na przykład chciałbym wiedzieć:

How many books were sold last month?

I chciałbym, żeby to zostało przetłumaczone na

Select count(*) 
  from sales 
  where 
   item_type='book' and 
   sales_date >= '5/1/2014' and 
   sales_date <= '5/31/2014'
Steve Kallestad
źródło

Odpowiedzi:

6

Zapytania w języku naturalnym stanowią bardzo wiele zawiłości, które mogą być bardzo trudne do uogólnienia. Z wysokiego poziomu zacznę od próby myślenia o rzeczownikach i czasownikach.

Więc zdanie: ile książek sprzedano w zeszłym miesiącu?

Zacząłbyś od podzielenia zdania parserem, który zwróci format drzewa podobny do tego:

wprowadź opis zdjęcia tutaj

Możesz zobaczyć, że istnieją książki tematyczne, złożone zdanie słowne wskazujące na poprzednie działania sprzedaży, a następnie wyrażenie rzeczownikowe, w którym koncentrujesz się na czasie w ciągu miesiąca.

Możemy dalej podzielić temat modyfikatorów: „ile” dla książek i „ostatni” na miesiąc.

Po podzieleniu zdania należy zmapować te elementy na język SQL, np .: ile => liczba, książki => książka, sprzedana => sprzedaż, miesiąc => data_sprzedaży (interwał) i tak dalej.

Wreszcie, kiedy już będziesz mieć elementy języka, musisz po prostu wymyślić zestaw reguł interakcji między różnymi bytami, co pozostawia:

Wybierz liczbę (*) sprzedaży, w której item_type = „book” i sales_date> = „5/1/2014” oraz sales_date <= „5/31/2014”

To jest na wysokim poziomie, jak bym zaczął, podczas gdy prawie każdy krok, o którym wspomniałem, nie jest trywialny i naprawdę królicza nora może być nieskończona, to powinno dać ci wiele kropek do połączenia.

neone4373
źródło
1

Przekształcanie prostych pytań w odpowiedzi nie jest wcale proste .

Pierwsza technologia, która zrobi to tak szeroko i dokładnie, będzie wielkim zwycięzcą.

Istnieją jednak pewne, wypełniające luki „odpowiadaniem na pytania” za pomocą sztucznej inteligencji (np. IBM Watson i Amazon Alexa). Wymaga to rozwiązania złożoności językowej związanej z danymi danymi, co znajduje się w magazynach danych oraz czym są rzeczowniki, czasowniki i zaimki.

Microsoft zaryzykował tutaj z angielskim zapytaniem, ale potem przestał. Kueri.me to platforma oparta na języku Python, która robi to samo.

Strukturalne języki zapytań (SQL) i tym podobne, SOQL, MDX, Hive, Impala i nowsze przyjmują staroświecki SQL. Jeszcze niczego nie zastąpiłem, wszystkie te elementy są drobnymi poprawkami do większego „celu końcowego”, a to polega na sztucznej inteligencji (AI), a konkretnie na uczeniu maszynowym.

Pytanie brzmi:

„Czy komputer może dowiedzieć się, czego chcesz”.

Jeszcze nie. Lingwiści, matematycy, inżynierowie i inni wnoszą swój kawałek ciasta, abyśmy mogli cieszyć się tym słodkim sztucznym, sztucznym i uczonym maszynowo ciastem.

zapadkowy
źródło
0

Istnieje kilka podejść do tworzenia parsera, który analizowałby zwykłą wiadomość tekstową na SQL. Na przykład można utworzyć analizator składni oparty na gramatyce i użyć algorytmu NLP do zbudowania zapytania strukturalnego. Jeśli masz już wiele przeanalizowanych wiadomości z jednej domeny (np. E-commerce) - możesz wypróbować metodę uczenia maszynowego i wykorzystać ją do dalszej analizy.

Myślę jednak, że najlepszym podejściem jest połączenie parsera opartego na gramatyce do tłumaczenia tekstu na SQL oraz ML w celu uzupełnienia gramatyki opartej na regułach poprzez ustalenie składni, usunięcie literówek itp.

Dowiedz się więcej o różnych podejściach tutaj .

MicRum
źródło