2016-04-08 7 views
1

Bot Çerçevesini kullanarak bir SSS uygulamak için kullanmam gereken yaklaşımla uğraşıyorum. LUIS kullanmayı düşündüm ama her soru için bir niyet yaratmak zorunda olduğumu keşfettim. Bunlardan çok sayıda olabileceği gibi (100 demek), daha iyi bir yaklaşım olup olmadığını merak ettim?Bot Framework hakkında SSS'yi nasıl uygularım?

cevap

1

Her soru için bir Niyet oluşturmanız gerektiğini düşünmüyorum, bu bilgi tasarımı kabul edilemez. Yapmanız gereken şey, sahip olduğunuz soru türlerini sınıflandırmak ve bu sınıflandırmaların sizin Amaçlarınız olması.

Neredeyse aynı şeyi yapıyoruz, bu yüzden benim durumumda, genellikle "What is .." ile başlayan sorular için "Tanım" adlı bir Niyet yarattım. Daha sonra, LUIS'i tanımı isteyen tüm olası soruları yanıtlamaya çalışıyorum.

Bir SSS üzerinde çalıştığınız için, bu sonlu bir bilgi kümesidir. Temel olarak tüm SSS'leri kullanabilir ve bunları sözlü olarak gönderebilir ve uygun Amaçlarda sınıflandırabilirsiniz.

+0

Evet, bu, niyet sayısını önemli ölçüde azaltmalıdır. –

+1

Romalıların cevabını temel olarak doğru bir şekilde düzelteceğim. Sadece "SSS" gibi tek bir amaç oluşturun ve ardından kullanıcı sorusunu çıkarmak için bir LUIS varlığını eğitin. Oradan en uygun tanımı bulmak için standart arama tekniklerini kullanın. Eğer bir ton SSS varsa, cevabı aramak için Lucene gibi bir arama motorunu kullanabilirsiniz. –

2

Yapmanız gereken tek şey SSS'leri döndürmekse, LUIS'e ihtiyacınız olduğu net değil. Sadece arama tekniklerini kullanın. Lucene gibi bir arama motorunu kullanabilir ya da sadece birkaç yüz SSS’e sahip olmanız durumunda, basitçe, kullanıcı sorgusundan gelen ve kullanıcıyla eşleşen, sorgunun sonucunu temel alan, kendi cevabınızı yazmanız yeterli olacaktır.

Oldukça basit bir sıralama algoritması, kullanıcı ifadelerini belirteçlere ayırmak ve daha sonra her belge için belge içindeki her belirteci aramaktır. Puanınız, belge içinde eşleşen ve kapsama puanını hesaplayan belirteçlerin sayısı sayılarak oluşturulur. Kapsam, temel olarak, kullanıcı sorgusundaki terimlerin yüzde dokümanıyla eşleşmesidir.

Kapsamı hesaplamanın birkaç yolu vardır ancak işte oldukça basit bir yaklaşım. Eşleşen simgelerin tüm uzunluklarını ekleyin ve ardından, üzerinde taranan belgenin/alanın toplam uzunluğuna bölün. Öyleyse, "Asya'dan köpekleri göster" sorgusuna sahip olduğumuzu ve "Asya Köpekleri" başlıklı bir belgemiz olduğunu söyleyelim. Kullanıcıların "köpekler" ve "asya" ile eşleşecek şekilde 2 jetonumuz olacaktır. Toplam uzunluğu 8 ve başlığı 10'dur. Yani (8/10) başlık alanı için 0,8'lik bir kapsama puanı verecektir.

Belgede arama yaparken aynı temel tekniği uygulayabilirsiniz, ancak bir terimin kaç kez eşleştiğini hesaba katmak istersiniz. Temel olarak "köpek" ve "asya" nın 10 oluşu olan bir belgenin, her birinin yalnızca 1 oluşuyla bir belgeyi sıralamak için bir belge istiyoruz.

Sıralama algoritmanıza, & TF-IDF desteğini eklemek gibi ekleyebileceğiniz birçok şey var ama bu noktada, yalnızca bir arama motoru kullanmalısınız.