Sohbet robotu inişi ve gelişmiş gerçek savaş | Milyonlarca insan AI öğreniyor

Dingdong ~ Refah tarafından vuruldun! Şu andan itibaren, "2020 AI Developer Ten Thousands Conference" için 299 bilet ücretsiz olarak verilecek! Kayıt sayfasına girin [2020 AI Geliştirici On Bin Kişi Konferansı (Çevrimiçi Canlı Biletler) -IT Eğitimi Canlı-CSDN Akademisi], "Şimdi kaydolun" u tıklayın, ödeme sırasında "AIP1410" indirim kodunu kullanın ve fiyat "0" yuan olacaktır !

Son yıllarda sohbet robotu teknolojisi ve ürünleri hızla gelişti. Yapay zeka teknolojisinin katil bir uygulaması olarak, sohbet robotları tüm hızıyla gelişiyor ve çeşitli akıllı donanımlar sonsuza dek ortaya çıkıyor.

Bu açık sınıfta, AI Technology Base Camp United Electronic Industry Press Blog Viewpoint, Shanghai Wage Intelligent Technology Co., Ltd.'nin genel müdürü ve Setaria Technology Yapay Zeka Araştırma Enstitüsü dekanı Shao Hao'yu davet etti. 21 Mart'ta açık sınıfta olacak. Bu yazımda sohbet robotlarının inişini ve gelişmiş savaşını anlatacağım.

Bu ders, sohbet robotlarının teknik çerçevesini ve mühendislik uygulama detaylarını kapsamlı bir şekilde açıklayacak ve yeni nesil sohbet robotları paradigmasının ayrıntılı bir analizini yapacak: sanal yaşam.Aynı zamanda, bilişsel zekanın gerçekleştirilmesinde bilgi grafiklerinin önemli rolüne odaklanacaktır. Bilgi grafiklerinin uygulanması tanıtıldı.

Bu kurs mühendisliğin ön saflarında yer alan Ar-Ge personeli için uygundur.Bu kurs sayesinde chatbotların uygulama detaylarını öğrenebilirsiniz. Üniversite öğrencileri için uygun olan bu kursla teknik çerçeveyi ve sohbet robotlarının tipik algoritmalarını öğrenebilirsiniz.

Aşağıdaki açık sınıf için bir kısaltmadır

Shao Hao: Bugün sizinle "Robotların inişi ve ileri savaşı" üzerine sohbet edelim. Ben Shenzhen Setaria Intelligent Technology Co, Ltd'den Shao Hao'yum. Şu anda şirketin yapay zeka araştırma enstitüsünden sorumluyum, esas olarak sohbet robotu ile ilgili ürünler yapıyorum.

Bugün sizinle konuşmak istediğim şey, aşağıdaki bölümler de dahil olmak üzere şu yönleri içerir:

  • İlk bölüm, sohbet robotlarının genel üretiminin arka planı ve teknik mimarisinden bahsetmek;
  • İkinci bölümde, chatbotların mühendislikte uygulanmasının tüm yönlerinden sizlere bahsedeceğim.Burada, her modülün ve her fonksiyonun nasıl uygulandığını size açıklamak için bazı kodlarla işbirliği yapacağım.Umarım bu bölümü dinledikten sonra, Kendi kendinize bir sohbet robotu oluşturabilirsiniz;
  • Üçüncü bölümde sizlerle bilgi grafiklerinin sanal hayattaki uygulaması ve teknik yolundan bahsetmek istiyorum ve kısaca sanal yaşamı tanıtacağım yani sohbet robotları ile ilgili çeşitli sorunları keşfettikten sonra daha iyi bir yol var mı diye merak ediyoruz. Chatbot'ların karşılaştığı birçok sorunu çözün;
  • Son bölümde, projenin uygulanmasıyla ilgili diğer konular hakkında sizinle konuşmak için 5-10 dakika ayırın.

Kısa tanıtım için bu kadar, hadi işe geri dönelim.

Chatbot'a genel bakış

Önce arka planı tanıtın. Şimdi yapay zeka hakkında ne düşünüyorsunuz? İster AlphaGo ister AlphaGo Zero, en iyi insan Go oyuncusunu mağlup ediyor; veya Project Debater, bu yılın Ocak ayında iyi sonuçlar yaratan bir insan tartışması yarışmasına katılan bir robot veya Boston Dynamics gibi bir robot ve makine. Dog, aynı zamanda çok iyi bir yapay zeka uygulaması ve OpenAI gibi geçen yılki DOTA2 yarışmasında da çok iyiydi. DeepMind şu anda "StarCraft 2" oyunuyla uğraşıyor, yapay zeka tek bir insanın hayal gücünü kırıyor, peki şimdi yapay zeka hakkındaki sezgisel izlenimimiz nedir? Yapay zeka gökten dünyaya kadar her şeye kadirdir, bu yüzden ister robotların uyanması, ister medyada bahsedilen insanların yok edilmesi olsun, çok doğal bir şey haline geldiğini hissedeceğiz.

Chatbot'a bu duyguyla bakarsak ne olur? Kullanmakla ilgili nasıl hissediyoruz? Siz de benim gibi olabilirsiniz Bu sohbet robotu ürününü yaklaşık 1 veya 2 gün kullandık. Tazelik geçtikten sonra, bu şeyin bir daha açılmayacağını veya onunla sohbet etmeyeceğini gördük. Bu fenomene ne sebep olur? Seslerin yanlış tanınmasına ve düşük doğruluğa ek olarak, bu sorunlara hala çok toleranslıyız. Ama en son medyada bir haber gördüğümüzde - yabancı kullanıcılar Amazon'un Echo hoparlörlerini kullandığında ne oldu? Gece aniden yandığında uyuyordu ve sonra iki kez alay etti! Bu çok korkutucu, çok korkutucu ve çok ürkütücü! Bu bana olsaydı, konuşmacı gecenin ortasında aniden kendi kendine güldü, fişini çekip parçalamak için aşağıya fırlatmanın dışında, kalbimi çözmenin iyi bir yolu yok. Nefret, yani bu chatbot ürününün gerçekten düşük performans gösterdiğini görebiliriz.

Chatbot ürünlerine gelince, neden bu kadar kötü gidiyorlar? Bir uygulayıcı olarak hala çok toleranslıyım, çünkü chatbotların sınırlarının nerede olduğunu biliyorum, bu yüzden chatbot ürünlerini sorduğumda şunu düşündüm: Bu chatbot ürününün bu yerde teknik sorunları olabilir, bu yüzden sormuyorum. Veya sormaktan kaçınmaya çalışın. Ama sıradan kullanıcılar sohbet robotu ürünlerine o kadar toleranslı değiller.Bu sohbet robotu konuşmacısına çok para harcadım.Umarım benimle doğal olarak konuşabilen bir robot ama bu başarısız olduktan sonra gelişmeden şikayet edecek. Tarafından.

Kullanıcılar genellikle ürünümüze karşı çok düşük bir toleransa sahiptirler. Teknolojinizin gerçekten zayıf olduğunu düşünüyorlar. Aslında, sektörümüzdeki uygulayıcılar çok haksızlık hissediyorlar. Bunun için bizi suçlayamayız. Teknolojinin mevcut gelişimine dayanır. Dereceye göre belirlenir. Örneğin Microsoft Asya Araştırma Dekan Yardımcısı Bay Zhou Ming bir keresinde dil zekasının yapay zekanın tacındaki mücevher olduğunu söylemişti.Bu güzelliği tüm teknolojilerimiz olarak kabul edersek, yapay zeka onun baş tacı ve dil Zeka, taçtaki mücevherdir. Ne demek istiyorsun? Doğal dil işlemenin kendisi çok zordur!

Size basit bir örnek vereyim, herkes anlayacaktır, mesela "Onu çok seviyorum ama o söylemiyor" dedim. Sınıf arkadaşlarıma sordum, kim kimi seviyor? Kim söylemiyor? Bu cümle zor. "Cüzdanını aldığını görmedim" gibi bir cümle daha söyleyeyim. Farklı tonda, farklı tonda ve aksandaysak bu cümlenin anlamı tamamen farklıdır. Örneğin, "Cüzdanınızı aldığını görmedim" (vurgu "bakın" üzerindedir). Bu, onun cüzdanınızı aldığını görmediğim anlamına gelir. Başkalarının cüzdanınızı aldığını söylediğini duyabilirim, ancak ben almadım Şahsen görmek veya "Cüzdanını aldığını görmedim" (vurgu "cüzdan" üzerindedir), diğer eşyalarını aldı ama cüzdanını almadı demektir.

Dolayısıyla, bir cümleyi anladığımızda, aslında bağlamla, konuşmacının dünya görüşüyle, konuşmacının duygularıyla, çevreyle ve dinleyicinin dünya görüşüyle çok ilgilidir. "Nasılsın?" Cümlesi veya "yemek" cümlesi Öyle mi? "Farklı karakterlerde diyalogun anlamı tamamen farklıdır, bu nedenle NLP teknolojisinin kendisi çok zordur.

Tabi yine de yapmak zorundayız, neden yapıyoruz?

Ayrıca Microsoft'un 2016'da "Diyalog bir platform" adı altında böyle bir slogan ortaya attığını diğer raporlarda da söyledim. Dilin insan etkileşimi için en doğal yol olduğuna inanıyor.Eski çağlardan beri insanlar dili avlamak için kullanıyor. İşbirliği yaparlar ve birbirlerini yankılarlar, hasat sırasında köydeki herkesle dedikodu yaparlar ve herkesin arkadaşlığını teşvik ederler, bu nedenle dil, insanlar için etkileşim kurmanın en doğal yoludur. Ancak donanım ve yazılımla sınırlı olduğundan, daha önce bilgisayarla etkileşimde bulunmak için temelde klavye ve fareyi kullandık, bu nedenle artık derin öğrenme, büyük veri ve GPU donanım yükseltmelerinden sonra makineyle etkileşimde bulunmak için dili doğrudan kullanabiliriz. Microsoft, 2016'da neden "platform olarak konuşma" kavramını ortaya attı?

Chatbot Ekolojik Teknoloji Sistemi

Şimdi sohbet robotlarının nasıl sınıflandırıldığına bir göz atalım, üç büyük ekosisteme ayrılabilir: biri çerçeve, diğeri ürün ve üçüncüsü platform.

Nasıl anlaşılır? Echo bir ürün, Apple'ın Siri'si bir ürün, Xiaobai bir ürün, IBM Watson bir ürün ve Xiaoice aynı zamanda bir sohbet robotu ürünü. Bu ürünlerin farklı görüntüleme biçimleri vardır.Örneğin, Siri'nin taşıyıcısı bir cep telefonu, WeChat veya Weibo'dur; bir hoparlörümüz var ve taşıyıcısı onun donanımıdır. Bu ürünlerin taşıyacak bir taşıyıcısı olmalıdır, bu taşıyıcıya sohbet robotu denir Bu platform WeChat, LINE, MSN vb. Platformları içerebilir. Bunu, bu ürünü oluşturmak için bu çerçeveyi kullanan bir platform olarak anlayabiliriz.Yabancı şirketler arasında Alexa, LUIS ve Wit vardır ve Ruyi ve UNIT gibi yerli şirketlerin tümü chatbot çerçeveleridir.

Ürünün yönüne bakalım. Ürünler esas olarak iki kategoriye ayrılır. İlk kategoriye Pasif etkileşim , İkinci kategori denir Aktif etkileşim . Sözde pasif etkileşim, cevaplamasını istediğimde, ona bir şey söylediğimde ve bana bir şey söylediğinde, buna pasif etkileşim denir. Az önce pasif etkileşimden bahsettik Aslında birkaç çeşit pasif etkileşim vardır.

Chatbot'ların mühendislik uygulaması (kod açıklaması)

Bir sonraki kod gerçek savaş bağlantısında, size küçük sohbetten, görev diyaloğuna, soru ve cevaba kadar tüm sohbet robotları kategorilerini anlatacağım. Birçok chatbot aktif etkileşim yapamaz, çünkü kötü bir ruh halindeyken size bir müzik parçası tavsiye etmek gibi bilgi grafiği ve sahne tasarımı hakkında güçlü bilgi gerektirir.Bu, aktif etkileşimin şu anda pek iyi olmayan yönüdür. Amway, "Chat Robot Teknolojisinin İlkeleri ve Uygulamaları" adlı bir kitap yayınladık ve ilgilenen öğrenciler okuyabilir.

Şimdi gerçek savaş bağlantısına giriyorum. Bir chatbot çerçevesi oluşturup bu chatbot'u uygulamak için Python'u kullanana kadar, herhangi bir bilgi rezervi olmadan en basitinden bir chatbot olmaya başlıyorum.

Hemen başlayın

İlk adım, bu "hızlı başlangıca" bir göz atmaktır. Bu örneği sizin için hazırladım.Web sayfama bir göz atabilirsiniz.Sizler için hazırladığım örnek ruyi adında bir platformdur. Web sitesi ruyi.ai'dir. Bu sayfayı açtıktan sonra "Yüzüklerin Efendisi" var. Beceri eklenti aracı Şu anda üzerinde "Robot üretmek istiyorum" adlı bir cümle var.Oturum açtıktan sonra platformunu robot yapmak için kullanabiliriz. Burada çok sayıda sohbet botu yaptığımı görüyorsunuz, yenisini oluşturabilirim, zamandan tasarruf etmek için mevcut sohbet botlarımı doğrudan yönetiyorum. Robotun sahip olamayacağınız becerilere sahip olmasını sağlayabilirsiniz. Beceri mağazasında, robotun Çince-İngilizce becerilerine, isteğe bağlı video becerilerine, meydan okuma kelime becerilerine ve çocukların sohbet becerilerine sahip olmasını sağlayabilirsiniz. "Beceri Al" ı tıklayın ve doğrudan konuşlandırılabilir. Dağıtımdan sonra, ben Onunla doğrudan sohbet edebilirsiniz, bu işlev onun içine yerleştirilmiştir. Bir diğeri, diyalog sahnesinde bazı yeni niyetler oluşturabileceğimizdir. Bu niyet, bazı külliyatları eşleştirmenize eşdeğerdir ve daha sonra belirli bir külliyatı yanıtlar. Örneğin, burada "selamlaşma" adında yeni bir niyet oluşturdum, bu Bu, kullanıcı "Merhaba" veya "Merhaba" veya "Merhaba" dediğinde, robotun "Merhaba" / "Merhaba" / "Merhaba, uzun zamandır görüşemediğini" yanıtladığı anlamına gelir. Bu ruyi robotunu kurmak için bu beceriyi kullanırsak , Deneyebiliriz.Örneğin, "Merhaba" dersem, "Merhaba, uzun zamandır görüşemiyorum" der, tekrar "Merhaba" derim ve cevaplamak için rastgele iki yanıttan birini seçer. Aslında, kendi sohbet robotunuzu oluşturmak için herhangi bir temel bilgiye ihtiyacınız yok. Bunu yapmak için ruyi.ai platformunu kullanıyoruz. Çalıştırmanın en kolay yolu budur.

Şimdi biraz daha zor bir platformdan bahsedelim. Bu platforma Baidu ÜNİTESİ deniyor. Baidu ÜNİTESİ şu anda çok iyi gidiyor. Bu Baidu BİRİMİ'nin nasıl kullanıldığına bir bakalım. Web sitesi unit.baidu.com. Bu çok güzel. Fare hareketinin bazı göz kamaştırıcı etkileri vardı. UNIT'e girdikten sonra, zamandan tasarruf etmek için doğrudan yeni bir robot oluşturmuyorum. Bu öğleden sonra yaptığım robot üzerinde doğrudan bir test yapacağım. Ruyi ile aynı olan "test" adlı bir robot yaptım. Bazı beceriler ekleyin, örneğin, telefon görüşmeleri, filmler, hava durumu, uçak biletleri, küçük konuşma vb. Gibi bazı beceriler ekleyebilirim ve daha iyi işlevi nedir? Bazı becerileri özelleştirebilirim. Örneğin, becerilerimde test adı verilen bir işlevi eşleştirebilirim. Bu testte, havanın niyetini ve diyaloğunu sormak için bir "hava durumu" kurarım.

Bu nasıl yapılır? Bu platform hakkında konuşurken neden şu anda ruyi'den biraz daha zor olduğunu söylüyorum? Slot anlayışımızı içermesi gerekiyor. Slotun ne olduğunu açıklamayalım, bu niyeti nasıl belirlediğime bir göz atalım. Bu niyeti "hava durumu" olarak belirledim ve takma adı "hava". Bunu nasıl yapıyor? "Şehir" adlı bir kelime slotu tasarladım, yani robota bir soru sorduğumda robota slot "şehir" kelimesini söylemem gerekiyor. Robota söylemezsem otomatik olarak "Hangi şehirdesin?" Bu sefer böyle kurarsak "Şangay'da bugün hava nasıl" dediğimde "Şimdi Şangay'da hava durumu yayınla" diyebilir, sohbette olacaktır. Zaten "ctiy" gibi bir yuvam olup olmadığını kontrol edin. Bu çok basit bahsettiğimiz iki platform.

Az önce UNIT'i kullanmak için bu yuvanın ne anlama geldiğini anlamamız gerektiğini söylemiştim. Slot ne anlama geliyor? Size ayrıntılı olarak açıklayayım. Böyle bir sohbete bir bakalım. Örneğin, ofisteyim ve herkesle bu konudan bahsediyorum. Çok uykum var. Bu sohbet botuna "Bana ofise bir fincan Starbucks kahve ısmarlayabilir misin?" Dedim. Sohbet botu cevap verebilir "Tamam, en sevdiğiniz Amerikan tarzı büyük fincan sipariş edebilir miyim?" Aslında, bilet rezervasyonu, kahve siparişi ve yemek siparişi gibi belirli görev göstergelerini karşılamak için tasarlanmış görev tabanlı bir diyalog. Görev tabanlı diyalogda, genellikle yuva çıkarma ve doldurma söz konusudur ve yuva, bu görevde ihtiyaç duyulan anahtar bilgidir.

İşlem akışına bir göz atalım. Bu cümle geldiğinde, ilk olarak NLU doğal dili anlama bölümünde niyet tanıma gerçekleştireceğiz. Kural tabanlı bir yöntemde, bir sınıflandırıcı yöntemde veya mevcut bir yöntemle yapılabilir. Derin öğrenme yöntemi sorun değil. Bu cümlenin niyetinin kahve siparişi olduğuna karar verirsek, bundan sonra ne yapmalıyız? Yapılması gereken bir sonraki şey, kahve için gereken yer, mağaza adı, tadı ve türü gibi boşlukları doldurmaktır.Bu yöntem birçok doğal dil işleme tekniğini içerir. Bu, sınıfımızın odak noktası değildir. Sadece bu bilgileri bu cümle içinde alabileceğimden endişeliyiz. Örneğin, konum Oriental Technology Building. GPS konumlandırmama göre konumuma Oriental Technology Building, mağaza adı Starbucks ve türü Takeaway. Çünkü "bana bir fincan ısmarla ve ofise gönder" dediğim için tadından bahsetmedim. Robot bu aşamada ne tür bir kahve istediğimi bilmiyordu. Şu anda bir sorun vardı. Size nasıl yardımcı olacağımı bilmiyorum. Nokta? Bu diyalog şimdi "Diyalog Yönetimi" modülüne girdiğimizde, diyalog yönetimi iki kısma ayrılmıştır, birinci kısım DST ve ikinci kısım DPO (önceden DPL olarak adlandırılırdı) olarak adlandırılır. DST, "diyalog durumu izleme" anlamına gelir ve DPO, "diyalog stratejisi optimizasyonu" anlamına gelir. DST'nin yaptığı şey, durumunu izlemek ve herhangi bir bağlam olup olmadığını görmek. Belki yukarıda doğrudan "Amerikan içmek istiyorum" dedi, bu nedenle kullanıcının zevklerini tahmin etmeye gerek yok. İçeriğin Değilse, zevkinin ne olduğunu tahmin etmem gerekiyor. Burada doğrudan yazdım. Kullanıcının daha önce sipariş ettiğim kahveyi tercihine bağlı olabilir. Doğrudan sıraladım. Amerikan birinci, latte ikinci ve Mocha. üç. Şu anda bir karar vermesi gerekiyor, bu sırada kullanıcıya hangi tadı içeceğini sormak gerekiyor. Yoksa kullanıcıya sadece cevap vermeli ve ona varsayılan bir kahve mi sipariş etmelisiniz? Burada ürün ayarlarıyla cevap vermeniz gerekiyor.

Sohbet robotlarının işlevsel görüşmelerde çok fazla etkileşim turuna sahip olmasını istemiyoruz. Ne demek istediğimi tek bir cümleyle anlayabilmek istiyoruz. Tıpkı imparator ve haremağası gibi, imparator da gözlerine baktı ve hadım yakında ne yapacağını biliyordu, bu en iyisiydi. Ancak sohbet robotları o kadar akıllı değil. Ürün tasarımını daha akıllı hale getirmek için elimizden gelenin en iyisini yapıyoruz. Nasıl tasarlanır? Örneğin, bu cümle bir tasarım senaryosudur. Kullanıcıların en çok Amerikan tarzı içmeyi sevdiğini biliyoruz. Bu cümle "O zaman en sevdiğin Amerikan tarzı büyük fincan sipariş edebilirim?" Diyebilir. Bu soru ise kullanıcının zevkini sordu. Ayrıca, göreve dayalı diyaloğun işleme akışı olan diyalog turlarının sayısını da kaydeder. Tabii ki, son doğal dil neslinin de bu cümleyi oluşturmak için boşlukları kullanması gerekiyor.Bu, görev temelli diyalog dediğimiz şeyin temel konseptidir. Bunu anlamak için UNIT'deki hava durumu aralığını doldurduğumuzu anlıyoruz.

Üç farklı sohbet robotunun gerçekleştirilmesi

Daha sonra, üç farklı sohbet botunun nasıl uygulandığını tanıtmaya başlıyoruz. Arama robotları yapmanın en kolay yolu nedir? Örneğin kullanıcı bu ürüne "giydiğiniz kıyafetler çok güzel" diyor. Robot "İltifatınız için teşekkür ederim" diye cevap verecektir Genelde nasıl oluyor? "Giydiğin giysiler güzel" dediğinizde, büyük bir külliyatta arama yapacak, şu anda sorduğum soruya en yakın cümleyi arayacak ve ardından en son cümleyi koyacaktır. Doğrudan kullanıcıya yanıt verin. Bu basit görünüyor mu? Aslında, geri alma yönteminde ustalaşırsanız, çok iyi bir robot olabilirsiniz. Yeterince külliyat yazdığınız ve daha iyi benzerlik algoritmaları kullandığınız sürece, bu chatbot çok iyi performans gösterecektir. Ancak bu durum sadece tek bir turda meydana gelir, eğer birden fazla raund varsa geri alma yöntemi kesinlikle başarısız olacaktır. Buradaki en önemli şey nedir? En önemli şey eşleşmektir.

Temel teknik sürecinin nasıl gittiğine bir göz atalım. Örneğin, az önce "Güzel giysiler giyiyorsun" dediğimde. Bu bir soru olarak kullanılıyor.Bir geri alma yapmamız gerekiyor.Bu geri çağırma bir araştırmadır.Çok sayıda belge külliyat çiftinden cümleye en yakın olan bazı cümleleri ararız ve bu aday kümeyi filtreleyerek çıkarırız. Aday setinden sonra, iki cümleden hangisinin cümleye en çok benzediğini bir sıralama yapacağız ve ardından kullanıcıya temel arayışı olan bu cümlenin cevabı ile cevap vereceğim. Bu, 2014 tarihli bir makalede bahsedilen klasik bir model, sadece doğrudan kullandım.

(1) Metin benzerliğine göre

Daha sonra, metin benzerliği, anlamsal benzerlik ve derin öğrenmeye dayalı geri getirme yöntemlerini tanıtacağız Yani, geri getirme yöntemleri için şimdi üç temel teknolojiden bahsedeceğiz.

İlk yöntem, metin benzerliğine dayanmaktadır. Metin benzerliği nedir? Örneğin "güzel kıyafetler giyiyorsun" ve "elbiselerin çok güzel" cümleleri herkese çok benziyor, nasıl benziyorlar? Karakterleri ve sözcükleri birçok örtüşme içerdiğinden, bu, sezgisel metin benzerliği hissidir. Marjinal mesafe, TF-IDF ve BM25 gibi klasik metin benzerlik algoritmaları olduğunu biliyoruz. Bunların hepsi çok klasik algoritmalar. Burada algoritmanın daha derinlemesine bir açıklamasını yapmayacağım. İlgileniyorsanız, Herkese CS 224N kursunu dinlemelerini tavsiye ederim. Bu kurs, Stanford Üniversitesi'nden Profesör Christopher Manning tarafından son yıllarda verilen bir derstir. NLP (Doğal Dil İşleme) olarak adlandırılmalıdır. Tüm klasik doğal dil işleme algoritmalarını yapar. Çok güzel bir açıklama.

Bu yüzden genel yaklaşımımız, bu benzerlik algoritmasının genellikle dizgi eşleştirmesi kullandığı yönündedir.Dize eşleştirme hızının genellikle çok yavaş olduğunu biliyoruz, ancak benzerlik arama motorlarını arama verimliliğini artırmak için kullanabiliriz. Burada iki tane var, biri ElasticSearch (ES) ve diğeri HNSW.İlgileniyorsanız, aşağıdaki kursların PDF ve PPT'sinde bu iki projeye bakabilirsiniz.

Sonra, gerçek savaşta, herkes için arama tarzı bir sohbet botu uygulamak için bu ES tabanlı benzerlik arama motorunu kullanacağım.Burada listelediğim temel kod çekirdek koddur, bu yüzden burada göstermeyeceğim. PPT onu daha net görebilir. ES nasıl kullanılır? Bu çok basit. Direkt olarak Import, ElasticSearch'e gidelim.İlk olarak, ES bilgilerini yapılandırın.Bilgi ne içerir? Örneğin ana bilgisayar IP'si, burada 172.27.1.203, bağlantı noktası numarası 9201 ve veritabanı adı nedir? Buna benzerlik_ sohbet adını verdik. Tablonun adı nedir? Örneğin buna "qa_corpus" diyelim.

Bir sonraki adım normal süreçtir.Örneğin, ilk olarak bir nesneyi, küçük harfli es nesnesini başlatmamız gerekir.Bu nesnedeki tüm bilgiler, yeni yapılandırdığımız, port numarası ve IP bilgisinden gelir. Sonra, bunlara veri eklemek istiyoruz, çünkü bu tür bir veri kümesini es'e eklemek istiyoruz, veriler sayfa 13'e nasıl eklenir? Burada bir yöntem tanımlıyoruz, bu yönteme insert_one_data deniyor, yani bir soru ve cevap külliyat ekliyoruz, nasıl eklenir? Bir soru ve cevap külliyatı iki bölümden oluşur; biri Sorgu, diğeri Cevap olarak adlandırılır, bu bir Q ve bir A'dır ve daha sonra, aslında doğrudan kapsüllenmiş külliyatın yerleştirilmesi için bir yöntem olan es indeks yöntemini çağıracağız. Bunu nasıl yapıyor? Bu veritabanı yoksa, doğrudan bu isimde yeni bir veritabanı oluşturacak ve "qa_corpus" adlı bir tablo oluşturacaktır. Daha sonra, iki veri sütunu olan Sorgu ve Cevap haricindeki her bir veri parçası için, bir Sorgu ve bir Cevap, otomatik olarak bir id de oluşturulur, bu bizim tarafımızdan üretilen son veriye eşdeğer üç veri sütunu, ilk sütun Sorgu, ikinci sütun Bu Cevap ve üçüncü sütun id. Bu, önceden kaydettiklerimizdir.

Sıradaki ne? Sonra, araştırmamız gerekiyor. Bir soruya geldikten sonra "benzerlik_ sohbet" adlı bir yöntem tanımladık. Şu anda veritabanımda cümleye en yakın olan bu soruyu aradık ve sonra yapay olarak% 90 belirledik Eşik. Benzerliği% 90'dan fazla olan cevaplar, en iyi aday cevaplar olarak döndürülür. Body biçimi, değerinin% 90'ı olan query ve minimum_should_match şeklindedir. Ardından, aday kümesini bulmak için es arama yöntemini kullanırız ve aday kümeyi bulduktan sonra eşiği karşılaştırırız.Tüm eşikler tasarımımızın% 90'ından düşükse, doğrudan başka bir cevap gibi bir alt yanıt verecektir. Bu bir alt cevap ve sonra bir geri dönüş cevabı Bu bizim tüm uygulama yöntemimizdir.

Yukarıdaki özel işleme bir göz atın. İlk olarak, soldaki resim eklediğimiz üç külliyatı gösterir. Üç külliyatı ekleyen Sorgu ve Cevap "Kıyafetleriniz çok güzel" ve "İltifatınız için teşekkür ederiz" ve sonra iki cümle var. Şimdi "Giysileriniz güzel" diyen bir query_sentimiz var. Bu query_sent'i doldurmak için az önce belirlediğimiz "benzerlik_ sohbet" yöntemini diyoruz ve sonra en iyi cümleyi ilk olarak alıyoruz. Başka bir deyişle, aslında ES'nin varsayılan benzerlik puanı hesaplama yöntemini doğrudan burada kullandık. Bu hesaplama yöntemi aslında burada size söyleyebilir, içeriden hesaplama yönteminizi değiştirebilirsiniz çünkü eşleştirme derecesini biliyoruz Puan kendiniz optimize edilebilir. Bu nedenle, puanın hesaplama yöntemini gerçek durumunuza göre ayarlayabilir ve ardından daha kişiselleştirilmiş bir arama motoru yapabilirsiniz. Son olarak, yanıt "İltifatınız için teşekkür ederiz" ve genel ES, arama formülü olarak kullanılır. Yöntem basitçe burada tanıtılmıştır.

Kısaca özetlemek gerekirse, ES benzerliğine dayalı arama motorlarının avantajları nelerdir? Metin benzerliğinin kendisi belirli bir genelleme desteğine sahiptir Örneğin, bir modal parçacık "ah" veya "oh" eklerseniz veya bir virgül eklerseniz, bir noktalama işareti eklerseniz, benzerlik elde etmede daha iyi bir genelleme yapabilir. Etki. Elbette bu genellemenin kendisi ayrı ayrı anlatılabilecek daha önemli bir modüldür. Örneğin, yaygın olarak kullanılan yöntemimiz makine çevirisi olarak adlandırılır. Makine çevirisini çok sayıda cümleyi genellemek için kullanabiliriz, böylece sohbet botumuz daha genelleştirilmiş cümleleri destekleyebilir. İkinci avantaj, ES ile birlikte gelen BM25 algoritmasının ayarlanabilen birçok ağırlığa sahip olmasıdır ki bu, kısa metin durumunda marjinal mesafeden çok daha makuldür.

Dezavantajları da belli Size iki örnek vereceğim ve herkes çok iyi anlayacak Örneğin, "Çok güzelsin" ve "Bence çok yakışıklısın" Bu metnin benzerliğine bir bak.Hangi kelimeler aynı? ? "Sen" aynı ve "iyi" aynı, diğer kelimeler farklı, anlambilim benzer ama metin karakterleri çok benzer değil, metin benzerlik algoritması o kadar iyi olmayabilir ama anlambilimine çok benziyor. İkinci durumda olumsuz sözlerle ne yapmalı? Örneğin, "Senden hoşlanıyorum" ve "Senden hoşlanmıyorum" ifadelerinin tamamen zıt anlamları vardır, ancak metin benzerliği elde etmede, olumsuz kelimeleri sınırlamazsak, iki puan çok yüksek "I "Senden hoşlanıyorum" ve "senden hoşlanmıyorum" puanları çok yüksek ve bu durumla baş etmek çok zor. Genel yaklaşımımız nedir? İlk yöntem kurallardır.Örneğin, olumsuz kelimeler için bazı filtreleme kuralları belirleyebilirim. "Hayır" durumunda, anlam orijinal cümlenin tersidir veya benzer yapmak için metin anlamsal benzerlik yönteminin nasıl kullanılacağı Derecelerin geri alınması için, semantik benzerliğe dayalı olarak nasıl yapılacağı ile ilgili ikinci kısımdan bahsedeceğiz.

(2) Anlamsal benzerliğe dayalı

İkincisi, anlamsal benzerliğe dayanmaktadır. Anlamsal benzerlik genellikle üç aşamalı bir yaklaşımdır.Burada listelenen üç adımlı bir yaklaşımdır.İlk adım, bir cümledeki kelimeleri vektörleştirilmiş bir gösterime dönüştürmektir.Çok fazla vektörleştirilmiş temsil yöntemi vardır. Ve birçok kişi özel konuşmalardan bahsetti, burada nasıl gömülü yapılacağından bahsetmeyeceğim, ilgileniyorsanız Word2vec gibi orijinal kağıtları okuyabilir veya ELMo, Transformer ve Bert gibi güncel dil modellerimizi inceleyebilirsiniz. Dinamik kelime vektörü nasıl Vektör kelimesini açıklamayacağım. Kelime vektörünün çıktısı, bir kelimeyi, kelimenin vektör temsili olan 200 boyutlu veya 300 boyutlu bir vektör gibi bir vektöre dönüştürmektir.

İkinci adım, cümlenin vektör temsilini yapmaktır.Örneğin, az önce verdiğim "Senden hoşlandım" örneğinde, bu üç kelimedir, ben, beğendim ve sen Bu üç kelimenin vektörlerini aldıktan sonra cümle vektörlerini nasıl yaparız? Ortaya çıkması için, bu, son zamanlarda kullanılan FastText, Skip-Thought ve Quick-Thoughts gibi vektör uçları gibi toplama ve ortalama alma gibi bazı yöntemler gerektirir. Bunların hepsi çok yararlı yöntemlerdir. Durum, cümlenin vektörünü ifade etmektir. Aslında, önceden eğitilmiş bazı vektörler kullanılabilir.Örneğin, Tencent'in kullanabileceğiniz büyük ölçekli bir külliyat üzerinde önceden eğitilmiş bir vektöre sahip olması gerekir.

Üçüncü adım, vektör mesafesini hesaplamaktır.İki cümlenin vektörünü elde ettikten sonraki adım, vektör mesafesi olan benzerliğini hesaplamaktır. Genel yaklaşım Öklid mesafesini veya kosinüs benzerliğini kullanabilir, bu da bir puan aldığımız anlamına gelir. Ya da derin öğrenmeye dayalı bazı yöntemler, şu anda PPT'mizdeki metin benzerliğinin anlamsal benzerliğini hesaplama yöntemine de devam ediyor. Eşleştirme algoritmaları açısından, yalnızca en eski veya en klasik algoritmalardan bazılarını listeliyorum.Eğer ilgileniyorsanız, bu alandaki birçok yeni makale de dahil olmak üzere hala okunacak çok sayıda makale var.

En başından beri, 2014 yılında Huawei'nin Noah's Ark Laboratuvarı'nda bu makalede iki algoritma ortaya koyduk. Bir algoritma ifadeye, diğer algoritma etkileşime dayanmaktadır. İkisi arasındaki en büyük fark, cümlelerin benzerliğini hesaplarken, ifade temelli algoritmanın sırasıyla iki cümleyi birleştirip bir araya getirmesi ve ardından vektörleştirmeden sonra çok katmanlı algılayıcı aracılığıyla eşleştirme derecesini elde etmesidir. MatchPyramid gibi algoritmalar etkileşime dayanır.Bu algoritma, baştan itibaren iki cümleyi ovuşturur. Ayrı hesaplamalara denkiz, önce iki kardeş ayrılır, sonra aile mülkü nihayet ayrılır; ayrıca bu tür iki kardeş önce birlikte yoğrulmuş, bir matris halinde yoğrulmuş, bazı benzerlikler var Operatörler, herkes Orijinal kağıda bakıldığında, iki tür Operatör vardır, biri nokta çarpma ve diğeri maksimizasyondur. Bu cümledeki 8 kelimeyi alıyoruz ve her kelime 8 × 8 matris haline gelen bir benzerlik işlemi gerçekleştiriyor ve ardından bunun üzerinde evrişim ve havuzlama işlemleri yapıyoruz. Son çok katmanlı algılayıcı nihai puanını alır. Dolayısıyla, temelde yalnızca bu iki yön vardır, biri ifade tabanlı Eşleştirme yöntemi, diğeri ise etkileşim tabanlı Eşleştirme yöntemi olarak adlandırılır. Eğer ilgileniyorsanız, makaleyi derinlemesine okuyabilirsiniz.

(3) Derin öğrenmeye dayalı

Üçüncü tür, derin öğrenmeye dayalı geri getirme yöntemidir. Bunun için daha klasik bir makale seçtim ve fikirlerinden kısaca bahsedeceğim. Microsoft Xiaoice ekibi, 2016 yılında yalnızca kelime düzeyini değil, aynı zamanda cümle düzeyinde benzerliği de dikkate alan bir yöntem önerdi. Bu ne anlama geliyor? Kısaca açıklamak gerekirse burada 4 cümle var: u (1), u (n-1), u (n), r, ortada birçok cümle var, 4 cümle olduğunu varsayıyoruz ve şimdi u saymak istiyor ve R benzerliği nasıl hesaplanır? Her bir kelimeyi gömecek, yani vektörleştirecek ve ardından kelimeyi doğrudan M2 matrisini elde etmek için r kelimesi ile çarpacak ve bu matris elde edildikten sonra cümle GRU olur ve sonunda Gizli durum için bir kosinüs benzerlik hesaplaması yapalım ve M1 matrisini alalım, böylece iki matris M1 ve M2 kelime ve cümle düzeyindeki benzerliği temsil eder ve ardından CNN aracılığıyla bir GRU vardır ve sonunda Bir skor. Derin öğrenmeye dayalı bazı arama yöntemlerimiz var ve bunları derinlemesine tanıtmayacağım. Metin benzerliği, anlamsal benzerlik ve derin öğrenmeye dayalı geri getirme yöntemleri hakkında konuşmayı yeni bitirdim.

(4) Üretkenliğe dayalı derin öğrenme yöntemi

Dördüncüsü, sizinle üretken temelli derin öğrenme yöntemi hakkında konuşalım. Bu en eski makale ve aynı zamanda Huawei tarafından yapılmış bir makale olmalıdır. O sırada yaptıkları şey, doğrudan doğruya x (1) 'den x (t)' ye y (1) 'i üretmek olan bir cümle içinde nihai cevabın nasıl doğrudan üretileceğiydi. ) Y (t) için, üç farklı yöntem önerirler. Biri, bağlamını doğrudan bu gizli durumdan elde etmek, diğeri ona dikkat çekmek ve bu dikkati son cümleyi elde etmek için ağırlıklı bir şekilde kullanmak, diğeri ise bir bağlam Dikkatine ve bir kelime seviyesine sahip olmaktır. Dikkat, buna iki Dikkat tarafından üretilen yanıt diyorlar, yerel ve küresel. Bunun arkasında da pek çok üretken yöntem var, çünkü bu konuşma gerçek savaşa dayanıyor, bu yüzden teorik açıdan çok fazla derinlemesine açıklama yapmıyoruz.

Mimari tasarım

Son olarak, en karmaşık kısma geliyoruz: 0'dan 1'e kadar bir chatbot oluşturmak için kendi Python kodumuzu kullanmak istiyorsak ne yapmalıyız? İlk adım, önce mimariyi tasarlamaktır. Bu chatbotun mimarisi birkaç bölüme ayrılmalıdır.Bir DM (Dialogue Management) modülü yazmak için Python kullanmalıyız.Daha sonra bu modül doğal dil anlama (NLU) hakkında bazı bilgiler alacak.Aynı zamanda cümleleri gerçekleştirecek Bir niyet analizi, aynı zamanda, niyet analizinin sonucuna göre bir görev diyaloğu, bir fonksiyon diyaloğu, bir soru-cevap veya küçük bir sohbet gibi bir fonksiyon seçecektir.Farklı işleme yöntemlerine sahiptir.Sonunda cevap verdiğimizde, bir NLG'ye de sahibiz. Modül, bu tüm sohbet botunun basit bir yapısıdır.

Bir sonraki seri numarası, tüm bu modülleri sizinle birlikte geçmek istediğim: birinci, NLU, ikinci, niyet analizi, üçüncü, DM, dördüncü, görev diyaloğu, beşinci, soru-cevap, altıncı, NLG. Neden özellikler ve küçük sohbetler hakkında konuşmuyorsunuz? Fonksiyon, ruyi ve UNIT beceri paketlerini doğrudan kullanabileceğinizi varsayar ve burada geliştirme yapmayacağız. Biraz önce küçük sohbetlerden de bahsetmiştim, doğrudan kısa sohbetler yapmak için arama yöntemini kullandık ve birçok corpora'yı doğrudan arama stilini küçük sohbet yapmak için kullandık ve bitti. Bahsettiğimiz mimari tasarım budur.

NLU

İlk nokta, NLU'nun bunu nasıl yaptığıdır. Herkesi hayal kırıklığına uğrattı, NLU'da kod yok, niye kod yok? Pek çok açık kaynak projesi NLU işi yaptığı için, NLU'nun aslında çok sayıda modülü var, en azından şu anda bir düzineden fazla veya 20 modülümüz var Burada neler var? Kelime segmentasyonu, konuşma parçası etiketleme, bağımlılık, duyarlılık analizi, varlık bağlama, varlık keşfi, anlamsal belirsizlik giderme, konu tanıma, cümle geçerliliği yargısı vb., Bu tamamlanabilecek bir ders değildir. Ama herkese tavsiye ederim, eğer bir chatbotu gerçekten basit bir şekilde uygulamak istiyorsanız, neden iyi şeylere sahip değiliz? JiebaNLPIRLTPCoreNLPNLTKHanLPAllenNLPNLUNLU

SVMCNNCNN+LSTMembeddingI510300RECALL

buildintent_recognitionquerycandidate_listrankingcandidate

fastText

fastText2018BertELMoTransformerStackingBertGPTfastText2018fastText

fastTextlabelweatherlabelmusiclabelnewsimport fasttexttrain_supervisedprecisionrecallF1modelpredictsentencelabelreturnlabelfasText

DM

DMDMDM12332182019317317

3213355322DSTlogDM

date|||||||intent-recognitonqueryintentweatherweatherdatelocationweather-infoweather-infoNLGanwser

.*TrieMatch

NLG

1015NLGAnswerslots_info10-1541015

Her şeyden önce, NLU JiebaLTP FastTextBert NLG DM Python

201419505530%trick1950

IPR2D2AI

RDF

PPT

2015101

Xyy?x?xSELECT DISTINCTXWHEREyxyNER

NLPKG

4979199299

Sonuç

2201882019520191210

GAVE

QA

1

2

3DMslotKeyword

4SQLnoSQL

JENAMongoDBDom4JMySQLMongoDBES

5

Stacking

top3top5

6

PPTfastText

7

8domainbot

botdomaintopKtopKKDMDM10DM500bot

9

10query

topK

11NLU

12

737737-800737max737max

13

14

15

27

16

17

PPT

18

log

Turing Ödülü açıklandı! Bilgisayar grafiklerinin öncüleri Hanrahan ve Catmull ödüller kazandılar, iki Hollywood 3D animasyon gişe rekorları kıran teknoloji gazisini tebrik etti
önceki
Sezgisel diyalogda bilgi yönetiminin ayrıntılı açıklaması | Bir milyon insan AI öğreniyor
Sonraki
Transformer'in yeni sinir ağının makine çevirisinde uygulanması | milyonlarca insan yapay zekayı öğreniyor
GitHub etkin noktalarına hızlı bir genel bakış: inanılmaz tarayıcı Browser-2020 Weekly, Star'ı 3000'in üzerine çıkarıyor
Bu makaleyi okuduktan sonra, Spring Security | The Force Project hakkında bir fikir edinebilirsiniz.
Taş çekiç! Python bu yıl zorlanacak mı? Programcı: Ben deliyim
Sayısız Java GC makalesi okudunuz, bu 5 soruyu bilmiyor olabilirsiniz
Veri analisti ve algoritma mühendisi, Python'da doğan programcılar nasıl seçim yapar?
Üç büyük operatör, yeni ve eski kullanıcı paketlerinde farklı haklar sorununu çözecek; Luo Yonghao, Douyin ile işbirliği yapıyor; Git 2.26 yayınlandı | Geek Headlines
İnsan-Bilgisayar Etkileşimi İnsan Hayatını Nasıl Değiştirir | Milyonlarca İnsan Yapay Zekayı Öğreniyor
Bir SIM kart nedeniyle Bitcoin Cash'te 30 milyon dolar mı kaybettiniz?
Zuckerberg tarafından yok edilen defter, Facebook'un tüm başarılarını ve başarısızlıklarını gizliyor
Sishui İlçesi Halk Kongresi Parti Şubesi "Bir Marka Şovu Stili Oluşturmak, Yoksulluğu Kalp ve Sevgiyle Azaltmaya Yardımcı Olmak"
"Şaheser" yalnızlık içinde gelişir
To Top