2012-01-07 21 views
41

Arama motoru olarak elasticsearch deniyorum ve görevim "semantik" bir arama işlevi oluşturmaktır. "Bir patlama borusu var" gibi kısa bir metin ifadesinden sistem, kullanıcının bir tesisatçı aradığını ve elasticsearch'te indekslenen tüm tesisatçıları geri getirdiğini çıkarmalıdır.NLP ve elasticsearch ile Semantik arama

Doğrudan elasticsearch gibi bir arama sunucusunda yapılabilir veya doğal bir dil işleme (NLP) aracı kullanmak zorunda mıyım? Maui Indexer. Eldeki görevimin tam terminolojisi nedir, metin sınıflandırması? Verilen metin, bir arama ifadesi olduğu için çok kısa olmasına rağmen.

cevap

57

Farklı uygulama karmaşıklığına sahip çeşitli yaklaşımlar olabilir.

en kolayı, (sıhhi tesisat gibi) konuların listesini oluşturmak ("boru" gibi) kelimelerin ait torbayı takmak, anahtar kelimeler çoğunluğu tarafından arama isteği belirlemek ve sadece belirtilen konuya aramak içindir (ekleyebilir Elastik arama belgelerinize topic numaralı alanı girin ve arama sırasında + ile zorunlu olarak ayarlayın.

Tabii ki çok fazla dokümanınız varsa, konu listesi ve kelime paketlerinin manuel olarak oluşturulması çok zaman pahalıdır. Bazı görevlerin otomatikleştirilmesi için'un makine öğrenimini kullanabilirsiniz. Temel olarak, bu konulardan birine otomatik olarak konuları (örn. veri kümeleme ile) ve sınıflandırmasını sorgulamak için kelimeler ve/veya belgeler arasında mesafe ölçüsü olması yeterlidir. Bu tekniklerin karışımı da iyi bir seçim olabilir (örneğin, başlıkları elle oluşturabilir ve bunlara başlangıç ​​belgeleri atayabilir, ancak sorgu ataması için sınıflandırma kullanabilirsiniz). Fikri daha iyi anlamak için Wikipedia'nın latent semantic analysis'daki makalesine bir göz atın. Ayrıca, data clustering ve document classification adresindeki 2 bağlantılı makaleye de dikkat edin. Ve evet, Maui Indexer bu şekilde iyi bir yardımcı araç olabilir. Son olarak, deyimin anlamını "anlayan" (yalnızca terimlerin sıklığını kullanmaz) bir motoru oluşturmaya ve uygun konuları araştırmaya çalışabilirsiniz. Muhtemelen, bu doğal dil işleme ve ontoloji tabanlı bilgi tabanları içerecektir. Ama aslında, bu alan hala aktif bir araştırmada ve daha önceki deneyimler olmadan böyle bir şeyi uygulamanız çok zor olacak.

2

https://blog.conceptnet.io/2016/11/03/conceptnet-5-5-and-conceptnet-io/ ürününü keşfetmek isteyebilirsiniz.

semantic networks ve distributional semantics'u birleştirir. çoğu geliştirici kelime katıştırmalarını gerektiğinde

, onlar bakmak ilk ve muhtemelen tek yer bölüşüm semantik kelime katıştırmalarını hesaplar Google'dan bir sinirsel ağ algoritması, word2vec olduğunu. Yani, bir cümledeki kelimeleri çevrelerindeki diğer kelimelerden kestirmeyi öğrenir ve süslemeler en iyi tahminleri yapan kelimelerin temsilidir. Ancak terabaytlardan sonra bile, sadece anlamsal anlambilimden öğrenmeyeceğiniz kelime anlamlarının yanları vardır.

bazı sonuçlar

ConceptNet 5.5 yerleşik

ConceptNet Numberbatch kelime gömmeler, bu SAT önceki sistemlerden daha iyi benzetmeler çözmek. Soruların% 56.4'ü doğrudur. En iyi karşılaştırılabilir önceki sistem olan Turney’in SuperSim'i (2013)% 54,8’e ulaştı.Ve SAT analojilerinde “insan seviyesinde” performansa daha da yakınlaşıyoruz - özellikle akıllı insanlar çok daha fazla soru yöneltebilirken, ortalama üniversite başvurusu% 57.0.