Doğal dil sorguları nasıl işlenir?


11

Doğal dil sorgulamayı merak ediyorum. Stanford, doğal dili işlemek için güçlü bir yazılım seti gibi görünüyor . Ayrıca Apache OpenNLP kütüphanesini ve Metin Mühendisliği Genel Mimarisini gördüm .

Doğal dil işleme için inanılmaz miktarda kullanım vardır ve bu, bu projelerin belgelerinin hızla emilmesini zorlaştırır.

Benim için işleri biraz basitleştirebilir ve üst düzeyde basit soruların SQL'e temel bir çevirisini yapmak için gerekli görevleri özetleyebilir misiniz?

Akış şemamdaki ilk dikdörtgen biraz gizem.

resim açıklamasını buraya girin

Örneğin, bilmek isteyebilirsiniz:

How many books were sold last month?

Ve bunun

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

Yanıtlar:


6

Doğal dil sorgulaması, genelleştirilmesi çok zor olabilecek çok fazla karmaşıklık oluşturur. Yüksek bir seviyeden, isimleri ve fiiller açısından bir şeyler düşünmeye çalışmakla başlardım.

Yani cümle için: Geçen ay kaç kitap satıldı?

Buna benzer bir ağaç biçimi döndürecek bir ayrıştırıcı ile cümleyi parçalayarak başlıyorsunuz:

resim açıklamasını buraya girin

Bir konu kitabı, satışın geçmiş eylemini gösteren bileşik bir sözlü ifade ve daha sonra bir ay zaman odağına sahip olduğunuz bir isim ifadesi olduğunu görebilirsiniz.

Konuyu değiştiriciler için daha da bölebiliriz: kitaplar için "kaç" ve ay için "son".

Cümleyi bozduktan sonra, bu öğeleri sql diliyle eşlemeniz gerekir; örneğin: kaç tane => sayı, kitap => kitap, satılan => satış, ay => satış_tarihi (aralık), vb.

Son olarak, dilin unsurlarına sahip olduğunuzda, farklı varlıkların birbirleriyle nasıl etkileşime girdiğine dair bir dizi kural bulmanız gerekir, bu da sizi aşağıdakilerle terk eder:

İtem_type = 'book' ve sales_date> = '5/1/2014' ve sales_date <= '31.05.2014' olduğunda satışlardan sayı (*) seçin

Bahsettiğim hemen hemen her adım önemsizken ve gerçekten tavşan deliği sonsuz olabilirken, bu nasıl başlayacağım yüksek bir seviyede, bu size bağlanmak için birçok noktayı vermelidir.


1

Basit soruları cevaplara dönüştürmek hiç de kolay değildir .

Bunu teknoloji genelinde ve doğru bir şekilde yapan ilk teknoloji büyük bir kazanan olacaktır.

Bununla birlikte, yapay zeka (örneğin IBM Watson ve Amazon Alexa) ile "soruları cevaplama" ile boşlukları dolduranlar var. Bu, söz konusu verilerle ilgili veri karmaşıklıklarının, veri depolarında neler olduğu ve isimlerin, fiillerin ve zamirlerin çözülmesini gerektirir.

Microsoft burada English Query ile uğraştı ama sonra durdu. Kueri.me , aynı şeyi yapan Python tabanlı bir platformdur.

Yapısal Sorgulama Dilleri (SQL) ve benzerleri SOQL, MDX, Hive, Impala ve daha yenisi eski moda SQL'i alır. Henüz hiçbir şey değiştirmedik, tüm bu parçalar daha büyük "Son Hedef" için küçük düzeltmelerdir ve bu Yapay Zeka (AI), özellikle, Makine Öğrenme yatıyor.

Soru şu:

"Bilgisayar, ne istediğini çözebilir."

Henüz değil. Dilbilimciler, Matematikçiler, Mühendisler ve daha fazlasının pasta parçasına katkıda bulunması gerekir, böylece bu tatlı Yapay Zeka ve Makine Öğrenimli pastasından tadını çıkarabiliriz.


0

Düz metin iletisini SQL'e ayrıştıracak bir ayrıştırıcı oluşturmanın çeşitli yaklaşımları vardır. Örneğin, dilbilgisi tabanlı bir ayrıştırıcı oluşturabilir ve yapılandırılmış sorguyu oluşturmak için bir NLP algoritması kullanabilirsiniz. Bir alan adından (e-ticaret gibi) zaten çok sayıda ayrıştırılmış mesajınız varsa - Makine Öğrenmesi yaklaşımını deneyebilir ve daha fazla ayrıştırma işleminiz için kullanabilirsiniz.

Bununla birlikte, en iyi yaklaşımın metinden SQL'e çeviri için dilbilgisi tabanlı bir ayrıştırıcıyı ve sözdizimini düzelterek, yazım hatalarını ortadan kaldırarak vb.

Burada farklı yaklaşımlar hakkında daha fazla bilgi edinin .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.