Belirli bir alan için anlamsal arama nasıl oluşturulur?


19

Veri kümemizde anlamsal bir arama yapmak istediğimiz yeri çözmeye çalıştığımız bir sorun var, yani alan adına özgü verilerimiz var (örnek: otomobiller hakkında konuşan cümleler)

Verilerimiz sadece bir grup cümle ve istediğimiz şey bir cümle vermek ve şu cümleleri geri almaktır:

  1. Bu ifadeye benzer
  2. Cümlenin ifadeye benzeyen bir kısmı vardır
  3. Bağlamsal olarak benzer anlamları olan bir cümle


Size bir örnek vermeye çalışayım, "Satın Alma Deneyimi" ifadesini aradığımı varsayalım, şu cümleleri almalıyım:

  • Araba alımının imzalanması ve satın alınması 30 dakikadan daha az zaman alabileceğini hiç düşünmemiştim.
  • Beğendiğim bir araba buldum ve satın alma işlemi
    basit ve kolaydı

  • Araba alışverişinden kesinlikle nefret ettim ama bugün yaptığım için memnunum


Sadece kaba kuvvetli bir kelime araştırması değil , bağlamsal benzerlik aradığımız gerçeğine vurgu yapmak istiyorum .

Eğer cümle farklı kelimeler kullanıyorsa, o zaman da onu bulabilmelidir.

Daha önce denediğimiz şeyler:

  1. Açık Semantik Arama Burada karşılaştığımız sorun, sahip olduğumuz verilerden ontoloji üretmektir veya bu uğruna ilgimiz olan farklı alanlardan mevcut ontoloji aramaktır.

  2. Elastik Arama (BM25 + Vektörler (tf-idf)), bunu birkaç cümle verdiğinde denedik, ancak hassasiyet o kadar da büyük değildi. Doğruluk da kötüydü. İnsan tarafından oluşturulmuş bir veri kümesine karşı denedik, sadece cümlelerin yaklaşık% 10'unu alabildi.

  3. Cümle transformatörlerinde bir zamanlar gibi farklı düğünleri denedik ve örneği gözden geçirdik ve insan tarafından oluşturulan setimize karşı değerlendirmeyi denedik ve bu da çok düşük bir doğruluğa sahipti.

  4. ELMO'yu denedik . Bu beklediğimizden daha iyi ama yine de daha düşük doğruluktu ve aşağıda kosinüs değerine karar vermemiz gereken bilişsel bir yük var. Bu, 3. maddeye bile uygulanır.

Herhangi bir yardım takdir edilecektir. Şimdiden yardım için çok teşekkürler


İyi yazılmış bir soru - 5 arama terimi örneği daha ekleyebilir misiniz? Her zaman bir ila üç kelime öbeği midir, yoksa arama terimleri daha uzun olabilir mi? Doğru yoldasınız
Adnan S

Merhaba Adnan, arama terimi her zaman bir ila üç kelimelik kelime öbekleri olacaktır. Örn: satın alma deneyimi, sürüş konforu, bilgi-eğlence sistemi, iç mekanlar, kilometre, performans, oturma konforu, personel davranışı.
Jickson

Bu makalede, duruma ilginç olabilir: elastic.co/blog/... (ipucu: kaldıraç word2vec)
Val

@Val Bu, bahsettiğiniz aynı makaleden bahsedeceğim ve daha sonra yorumunuzu gördüm. Bu yöntemin sizi istediğiniz şeye yaklaştıracağını düşünüyorum.
nima

kosinüs benzerliğine bakmak isteyebilirsiniz. Aşağıda açıklandığı gibi, dizeleri 2B alanda temsil edilebilen vektörlere dönüştürmeyi içerir. Bu 2 vektörün kosinüs açısı hesaplanır. Bu açı, 2 tel arasındaki "benzerliği" temsil eder. İşte güzel bir makale medium.com/swlh/playing-with-word-vectors-308ab2faa519
sagar1025

Yanıtlar:


5

Trey Grainger'in semantik bir arama sisteminin nasıl oluşturulacağı konusundaki dersini izlemenizi şiddetle tavsiye ediyorum => https://www.youtube.com/watch?v=4fMZnunTRF8 . Semantik bir arama sisteminin anatomisini ve son çözümü sunmak için kullanılan her parçayı anlatıyor.

Bağlamsal benzerliğin harika bir örneği Bing'in arama motorudur: resim açıklamasını buraya girin

Orijinal sorguda {konserve soda} terimleri vardı ve bing'in arama sonuçları {konserve diyet soda}, {alkolsüz içecekler}, {açılmamış oda sıcaklığı pop} veya {gazlı içecekler} anlamına gelebilir. Bing bunu nasıl yaptı ?:

Benzer anlamlara sahip kelimeler benzer vektörler elde eder ve daha sonra bu vektörler kolayca görselleştirilmek için 2 boyutlu bir grafiğe yansıtılabilir. Bu vektörler, benzer anlamlara sahip kelimelerin fiziksel olarak birbirine yakın olmasını sağlayarak eğitilir. GloVe modelini eğiterek kendi vektör tabanlı modelinizi eğitebilirsinizresim açıklamasını buraya girin

Vektörlerin mesafeleri ne kadar yakınsa, o kadar iyidir. Artık vektörlerinin mesafesine göre en yakın komşu sorguları arayabilirsiniz. Örneğin, {hayvanların bahçemi yok etmesini nasıl durduracağım} sorgusu için, en yakın komşu şu sonuçları verir:

resim açıklamasını buraya girin

Burada daha fazla bilgi edinebilirsiniz. Sizin durumunuz için, maksimum cümle için bir eşik bulabilirsiniz, cümlenin bir vektörü, bağlamsal olarak benzer bir cümleyi dikkate alması için orijinal arama sorgusundan olabilir.

Bağlamsal benzerlik muhtemelen LSI (Gizli Semantik İndeksleme) gibi bir şey kullanarak kelime boyutunu azaltarak da yapılabilir. Python'da bunu yapmak için python için genism kütüphanesine bakmanızı şiddetle tavsiye ederim: https://radimrehurek.com/gensim/about.html .


1

Bu sorunu çözmenize yardımcı olması için Weaviate'e bakmak isteyebilirsiniz . Veri nesnelerinin vektörleştirilmesine dayanan akıllı bir grafiktir .

Etki alanına özgü diliniz varsa (ör. Kısaltmalar) Weaviate'i özel kavramlarla genişletebilirsiniz .

Sorununuzu semantik arama özellikleri (yani Explore{}) veya otomatik sınıflandırma özellikleri ile çözebilirsiniz .

Keşif işlevi

Tüm veri nesneleri vectorized olsun olduğundan, aşağıdaki gibi bir anlamsal arama (bu örnek gelir yapabileceği dokümanlardan , bunu deneyebilirsiniz burada GraphQL kullanılarak):

{
  Get{
    Things{
      Publication(
        explore: {
          concepts: ["fashion"],
          certainty: 0.7,
          moveAwayFrom: {
            concepts: ["finance"],
            force: 0.45
          },
          moveTo: {
            concepts: ["haute couture"],
            force: 0.85
          }
        }
      ){
        name
      }
    }
  }
}

Grafik şemanızı -örnek- sınıf adı “Cümle” temel alınarak yapılandırırsanız , benzer bir sorgu şuna benzer:

{
  Get{
    Things{
      Sentence(
        # Explore (i.e., semantically) for "Buying Experience"
        explore: {
          concepts: ["Buying Experience"]
        }
        # Result must include the word "car" 
        where: {
          operator: Like
          path: ["content"]
          valueString: "*car*"
        }
      ){
        content
      }
    }
  }
}

Not: Grafiği semantik olarak bir bütün olarak
da keşfedebilirsiniz .

Otomatik sınıflandırma

Bir alternatif, bağlamsal veya KNN sınıflandırma özellikleriyle çalışıyor olabilir .

Sizin durumunuzda, Cümle sınıfını kullanabilir ve bunları şu özelliğe sahip olan Deneyim adlı bir sınıfla ilişkilendirebilirsiniz: buying(elbette aralarından seçim yapabileceğiniz birçok yapılandırma ve strateji vardır).

Not: İsterseniz
bu video biraz daha bağlam verir.


0

Bildiğim kadarıyla, anlamsal bir arama motoru oluşturmak için herhangi bir teorik modelin var olduğunu düşünmüyorum. Ancak, semantik bir arama motorunun eldeki özel gereksinimleri karşılamak üzere tasarlanması gerektiğine inanıyorum. Bununla birlikte, kullanıcının amacını ve arama teriminin bağlamını başarılı bir şekilde anlayabilen herhangi bir anlamsal arama motorunun, doğal dil işleme (NLP) ve makine öğrenimi ile yapı taşları olarak çalışması gerekir.

Arama motorları arama araçlarından farklı çalışsa da, çalışan bir anlamsal arama modeli hakkında fikir edinmek için kurumsal arama araçlarına başvurabilirsiniz. 3RDi Search gibi yeni yaş platformları semantik arama prensipleri üzerinde çalışır ve işletmelerin uğraşması gereken yapılandırılmamış veriler için ideal çözüm olduğunu kanıtlamıştır. Google büyük olasılıkla arama motorunda gelişmiş anlambilim sunmak için bir model üzerinde çalışmaktadır.

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.