Wanzi Uzun Deneme Özeti: SuperScript Etkileşimli Konuşma Motoru (PPT ile) Nasıl Tasarlanır ve Uygulanır | Zor Oluşturma Açık Sınıfı

SuperScript, zayıf AI, doğal dil anlama, kullanımı kolay, esnek ve genişletilebilir özelliklere sahip açık kaynaklı bir etkileşimli konuşma motorudur. SuperScript aynı zamanda açık kaynak alanındaki en iyi chatbot motorlarından biridir.Topluluğun aktif tartışmaları ve makul modül yapısı vardır ve doğal dil işlemeyle ilgili birçok geliştirici tarafından aranır.

Son zamanlarda, Leifeng.com AI Araştırma Enstitüsü, kod uygulaması perspektifinden bize SuperScript sisteminin tasarımını ve uygulamasını ayrıntılı olarak tanıtan Lingling English AI'nın teknik lideri Hain'i davet etmekten onur duydu.

Misafir tanıtımı

Rockq geliştirici topluluğunun kurucusu, Lingling English AI teknolojisi başkanı Hain, IBM Çin Geliştirme Merkezi ve İnovasyon Merkezi'nde çalıştı.

Rockq topluluğu, Mayıs 2015'te Pekin'de kurulan, esas olarak JavaScript geliştiricileri için kurulan ve makine öğrenimi ve sanal gerçeklik alanlarına genişleyen bir paylaşım ve öğrenme topluluğudur. Rockq, "yalın yenilik ve paylaşım" ruhuyla 30'dan fazla farklı içerik paylaşım etkinliği gerçekleştirdi. Lingling English, çocuklar için uluslararası bir sosyal ağa ve yüksek mesleki eğitim almış yabancı öğretmenlerden oluşan bir ekibe sahip çevrimiçi bir çocuk İngilizce eğitim hizmet şirketidir. 2016'dan itibaren Hain, sohbet robotlarının iş fırsatlarını ve sohbet robotları geliştirmek için derin öğrenme ve NLP teknolojisinin nasıl kullanılacağını keşfetmeye başladı. Şu anda, çocukların İngilizce öğrenmelerine yardımcı olmak için iki sohbet robotu hizmeti başlatıldı.

Sınıf içeriğini aç

Aşağıdaki paylaşılan videonun tamamıdır (yaklaşık 40 dakika).

Aşağıdaki metin sürümüdür:

Herkese merhaba, benim adım Hain. Bugün etkileşimli etkileşim sistemi SuperScript'in tasarımını ve uygulamasını paylaşıyoruz.

Öncelikle kısaca kendimi tanıtmak istiyorum. IBM Çin Geliştirme Merkezi ve İnovasyon Merkezinde dört yıl çalıştım. Daha sonra bir geliştirici topluluğu olan Rockq kurdum. Şu anda bir İngilizce eğitim başlangıç şirketi olan Lingling Englishde AI teknolojisinden sorumluyum. Aynı zamanda bir açık kaynak meraklısı.

İşte Github adresimin ve ana sayfamın bir ekran görüntüsü. Gördüğünüz gibi, sol üst köşe derin öğrenme kullanılarak eğitilmiş bir konuşma modeli olan DeepQA2 ve sağ üst köşe, Node.js kullanan iFlytek'in ses tanıma API'sidir. Diğerleri yararlıdır Docker teknolojisi ELK'nin Hizmeti vb. Olarak kullanılır. Aynı zamanda, bazı soru ve cevap külliyatını da sıraladım, çünkü herkes bilir ki, bir soru cevaplama sistemini eğitmek için makine öğrenimini kullanmanın zorluğu özellik çıkarımıdır ve özellik çıkarmanın tavanının aslında doğru külliyat olduğunu bilir. Burada 100.000 soru ve cevap çiftini sıraladım ve 3000 doğru soru ve cevap külliyatına sahip oldum. Ek olarak, bazı chatbot platformları için Node.js örnekleri yazdım ve TensorFlow ile ilgili tanıtım eğitimleri yaptım.

Bugün esas olarak sohbet robotu diyalog motorundan bahsediyoruz, yani insan-makine diyalog sistemi NLP teknolojisi ile işleniyor.

Bir geliştirici olarak düşünmemiz gereken ilk soru, ne tür bir hizmet yapmamız gerektiğidir. Gözlemime göre, 1970'lerde ana bilgisayar sistemi, 1980'lerde Mac'in temsil ettiği kişisel bilgisayar dalgası ve 1990'larda Google aramasının temsil ettiği İnternet dönemi de dahil olmak üzere yaklaşık on yılda bir BT alanında büyük bir değişiklik olacak. 2000'lerde iPhone tarafından temsil edilen cep telefonu mobil İnternet'in gelişi ve 2010'larda WeChat'in piyasaya sürülmesi. Önümüzdeki on yıl içinde ne tür bir hizmetin ortaya çıkacağını ve insanların yaşamlarını daha rahat hale getirmek için ne tür değişiklikler olacağını tahmin edeceğiz. Yapay zeka olması gerektiğini düşünüyorum. Yapay zeka konusunda katil bir uygulama olmalı, bu uygulamanın bir chatbot olduğunu düşünüyorum.

Bu yüzden geçen yıl Mart ayının başından beri, sohbet robotlarının ilgili teknolojilerini, hangi sektörlerde kullanılabileceğini ve hangi sorunları çözebileceğini araştırmaya başladım. Şu anda bir İngilizce eğitim şirketinde çocuklar için İngilizce eğitim robotu olarak çalışıyorum. Aslında, son iki yılda çok sayıda chatbot şirketi veya kuruluşu ortaya çıktı. Büyük şirketler genellikle en alt katman olmayı tercih ederler ve bazı teorik araştırmalar ve platform tabanlı hizmetler verirken, diğer küçük şirketler ve startup'lar daha çok Uygulama seviyesinden başlayarak bazı pratik problemleri çözün. Burada, sohbet robotu geliştiricileri için üç tipik platform düzeyinde hizmet sunuyoruz.

Birincisi, Microsoft tarafından başlatılan Botframework'dür. Ana özelliği, çapraz platform bağlantı çözümü sağlamaktır. Çünkü chatbot hizmetlerini kendi OA sistemimizle kenetlemek, Telegram ile kenetlemek, facebook mesajlaşması ile bağlantı kurmak veya botunuzla kısa mesaj ve e-posta şeklinde konuşmak gibi birçok farklı platformda dağıtabiliriz. Botframework tarafından sağlanan çözüm budur.

İkincisi, geçtiğimiz yıl Google tarafından satın alınan bir Silikon Vadisi başlangıç şirketi olan API.AI. Satın alma işleminden sonra, şu anda ağırlıklı olarak oturum eğitimi ve oturum yönetimi yapıyor ve ayrıca Google'ın ses tanıma çözümüne de erişiyor. Aslında, makine öğrenimi eğitimi için kullanıcı verilerinin kullanımında çok lider bir platformdur, ancak bazı iyi bilinen nedenlerden dolayı, ona erişimin duvarı devirmesi gerekir. Aslında, API.AI kullanmanın avantajlarını ve dezavantajlarını da araştırdık ve daha çok bir bilgi asistanı platformuna benzediğini gördük, çünkü kendi bilgilerinizi yükledikten sonra, amacı manuel olarak işaretler ve ardından eylemi gönderirsiniz. Özellikle bazı yemek siparişi uygulamaları, taksi çağırma uygulamaları ve hava durumu soruları için uygundur. API.AI güncellemesinin son iki yıldaki en önemli kısmı, farklı bilgi alanlarının oturumlarıdır.Kendinizin yüklediği verilere ek olarak, kullanıcılara doğrudan platformunda bazı taksi hizmetleri gibi eğitimli dil modelleri sağlayabilir. Arayın.

Üçüncüsü, aslında iyi sohbet robotlarının dağıtımına adanmış bir yer olan Telegram Bot Mağazası.Bu platformda çok iyi sohbet robotları bulabilirsiniz, ancak maalesef yine de duvarı aşmanız gerekiyor. Aslında Telegram'da deneyimlediğim çok iyi bir sohbet botu bulundu ve bu bot da bana çok ilham verdi.

Bugün esas olarak yukarıdaki resmin Mantık kısmıyla ilgileniyoruz. Gördüğünüz gibi, şekilde soldaki STT'nin ana işlevi, konuşmayı metne dönüştürmek ve ardından metni Logic'in hizmeti aracılığıyla işlemektir.TTS kısmı, metni konuşmaya dönüştürmektir. Şu anda, Mantık aslında zayıf bir YZ'ye benziyor ve bununla herkesin hayal ettiği yapay zeka arasında hala belli bir boşluk var.

Bazı kamuya açık bilgilerden yola çıkarak, çoğu şirketin sesli asistan uygulama şemaları yukarıdaki şekilde gösterildiği gibidir. STT'den sonra, doğal dili anlamak için bir NLU modülünden geçecektir. Burada NLP genellikle bazı uygun isimleri ve yer adlarını tanımlama, özne, yüklem ve nesne gibi bazı basit dil yapılarını analiz etme, bazı yaygın dilbilgisi ve yazım hatalarını düzeltme ve bazı zamanla ilgili kökleri ayrıştırma gibi bazı standartlaştırılmış işlemleri gerçekleştirir. Bekle. NLU daha sonra DST'nin bir bölümünü girecektir. DST'nin tam adı, sohbet durumunun izlenmesi olan Dialog State Tracking'dir. Genel olarak sohbet botlarının kendi işleme kuralları olacaktır ve bu konuşma sisteme girdikten sonra, sağdaki Politika bir sonraki adımda nereye gideceğini belirlemek için etki katacaktır. DST işlendikten sonra, doğal dil üretimi olan NLG'ye girecek ve yeni gelen cümleye cevap olarak yeni bir cümle üretilecek ve karşılık gelen sesi oluşturmak için TTS'ye geçecektir.

Genel olarak konuşursak, mevcut STT ve TTS'nin bazı çok olgun çözümleri var. Microsoft, IBM ve Google hizmetleri dahil olmak üzere bazı STT hizmet sağlayıcılarını denedim.Çin'de iFlytek ve Cloud Voice hizmetlerini denedim. Bu karşılaştırmaya dayanarak, Google'ın en doğru olduğunu düşünüyorum, ancak aslında Mandarin, İngilizce veya Kantonca gibi belirli senaryolara bölünmesi gerekiyor, ancak genel olarak Google'ın teknolojisinin en gelişmiş olduğunu düşünüyorum. Ancak güvenlik duvarları ve diğer nedenlerden dolayı HKUST Xunfei'yi seçmek daha uygundur. TTS'ye gelince, bence daha iyi yapan IBM'in hizmeti.

Daha önce de belirtildiği gibi, bu sistem bir bütün olarak zayıf bir yapay zeka. Aslında buna "yapay zeka geriliği" de diyebilirsiniz. Uzun vadeli bir perspektiften, aslında daha akıllı hale getirmek için uzun vadeli bir gelişime ihtiyacı var. Microsoft'un Xiaobing'i ve Baidu'nun DuMi'si de dahil olmak üzere mevcut sohbet robotlarından bazılarını yaşarsak, birçok cevabın aslında arama motorları aracılığıyla elde edildiğini göreceksiniz ve bazen bize birçok Record, bu aslında çok akıllıca değil.

Şirkette, yukarıda bahsedilen NLU, DST ve NLG genellikle birçok modüle bölünmüştür ve her modülün bakımdan sorumlu özel bir ekibi vardır. Bizim gibi yeni başlayanlar için, genellikle bunu yapacak sadece birkaç küçük ekip var ve bu kadar çok modülü alt bölümlere ayırmak için yeterli kaynak yok, bu yüzden bazı açık kaynak projelerine güvenme eğilimindeyiz. Mevcut uygulama şemamız aşağıdaki resimdir.

Şekilden de görebileceğiniz gibi en üstte WeChat appletleri ve WeChat resmi hesapları gibi bazı anlık iletişim hizmetleri, ardından aşağıda kullanıcının chatbot'a gönderdiği mesaj olan Inbound Message ve ardından işlem modülü olan Bot Engine yer alıyor. Bugün konuşacağımız kilit nokta budur. Bu Bot Motoru, içindeki kavram ve adlandırma dahil olmak üzere bu cümleyi analiz etmekten sorumlu olacak ve ayrıca bir kural motoruna sahip olacak, bazı Tetikleyicileri ve yanıtları, açılış konuşmaları vb. Bunlar, Bot'un kullanıcılarla iletişim kurabileceği tema olan Konu içerisinde tanımlanacaktır.Taksiler, restoranlar vb. Birçok konu türü vardır. Bot Engine'in tamamı bir bilgi grafiği oluşturmak için Bilgi Grafiklerine de bağlanabilir ve gelecekte bilgi grafiğinde daha akıllı sorgular ve çıkarımlar yapabilir. Burada botların bilgisini üç türe ayırıyoruz, biri dış dünya bilgisi olan Dünya Bilgisi, diğeri kullanıcı Bot ile sohbet ettikten sonra biriken bilgi olan Kullanıcı Bilgisi ve sonuncusu Botun kendisi olan Bot Bilgisi. bilgi.

Genel olarak, Bot Engine geçmiş ile sonraki arasında bir bağlantıdır ve çok esnek bir çözüme ihtiyaç duyar. Sohbet robotu kapsamlı bir hizmet olduğu için, örneğin bu Bot Motorunun bilgi grafiği hizmetine, arama motoruna ve diğer hizmetlere bağlanması gerekebilir, bu nedenle merkezi kontrole benzer bir platformdur. Yazdığımız bazı konular kullanıcıların konuşmak isteyeceği bazı konulara girmediğinde yani bazı soruları cevaplamanın bir yolu yok, derin öğrenmeyi kullanabiliriz.

Derin öğrenme, Bot Modeli olarak adlandırılan bu şeklin altında yer almaktadır. Bot Modeli aslında bir dil modelidir.Bu derin öğrenme çerçevesine algoritmalar ve veriler enjekte ediyoruz.Çerçeve çalıştıktan sonra, sonuç bize bir model verecektir. Modele bazı sorular sorarız ve ardından model cevabın ne olabileceğini tahmin eder. Aslında burada TensorFlow'u seq2seq modelini kullanarak ve kendi külliyatımızı ekleyerek kullanmaya çalıştık ve etkinin hala iyi olduğunu gördük. Bu yüzden, bir sonraki dönemde, daha yüksek kalite ve daha fazla külliyat biriktirmeye çalışmanın bir sonraki çalışmanın odak noktası olması gerektiğini düşünüyorum, çünkü veriler, özellik çıkarmanın tavanı ve özellik çıkarma, derin öğrenme zekasının tavanıdır. .

Aslında derin öğrenme ile Bot Modelini eğitmek için pek çok algoritma vardır, bunlara pekiştirmeli öğrenme ve üretken düşmanca ağlar dahildir. Resmimizde, soldaki çizgi, Bot Motorunda bazı çok iyi yüksek kaliteli konuşmaları işaretleyebilirsek, eğitimli modelimize girip gelişmiş bir öğrenme yapabileceğimiz anlamına gelir.

Resmin tamamı aslında şu anda ulaşmaya çalıştığımız bir vizyon. Bu resme dayanarak, aslında Bot Engine üzerinde pek çok deneme yaptık, çünkü aslında bir merkezi kontrole eşdeğer bir yer. Şimdi bugünün konusuna, yani bir SuperScript konuşma sisteminin nasıl uygulanacağına giriyoruz.

SuperScript, 2014 ortalarında birkaç açık kaynak meraklısı tarafından yapılan açık kaynaklı bir projedir. O zamanlar, konuşmalı bir kullanıcı arayüzü konseptini önerdi. Aslında önceki iki proje RiveScript ve ChatScript'ten ve ana yazarından ödünç alındı Node.js'de NLP kullanan birçok pakete katkıda bulunmuştur. Son iki yılda yaptığım karşılaştırmaya göre, SuperScript, Node.js alanında veya araştırıp karşılaştırdığım 200'den fazla sohbet robotunun açık kaynaklı projelerinde en iyi platform olmalı. SuperScript kullanımı aslında çok basittir.Npm komutunu kullanarak Linux platformuna kurduktan sonra, aslında koda gömülebilir.

Burada vurgulanması gereken şey, SuperScript'in aslında çok fazla araştırma projesi olmadığı, bir uygulamayı uygulamaya daha yatkın olduğu, bir geliştirme teknolojisi olduğudur.

SuperScript aslında kullanıcılara açık olan çok basit bir arayüzdür.Servisini birkaç satır kodla kullandığımızda bir servis kurabiliriz. Örneğin, aşağıdaki şekildeki kodda, SuperScript'ten alıntı yapıyoruz ve birinci ila ikinci satırlarda bir Bot bildiriyoruz ve ardından üçüncü satırda SuperScript yapılandırıyoruz. Yedinci satırda bir botInstance elde ederiz.Bu botInstance iki çekirdek arabirim içerir, biri yanıt, diğeri de directReply. Bu botla konuşmak istediğimizde, önce kullanıcının kimliğini ve konuşmanın içeriğini iletmeliyiz, ardından Cevapla bir cevap alacağız. Ve konuşmak istediğimiz belirli bir konuya sahip olduğumuzda, örneğin, merhaba selamlar kategorisine aitse, doğrudan kategori bilgisine geçmek için directReply arayüzünü kullanabilir ve ardından bir cevap alabiliriz.

Aşağıda, önceki RiveScript ve ChatScript'e çok benzeyen, SuperScript'te Konu oluşturma işlemidir. Şekil, diyaloğun burada kişisel olarak tavsiye ettiğim senaryolar aracılığıyla oluşturulduğunu gösteriyor. Çünkü artık Botframework gibi birçok chatbot platformunun neredeyse tamamı belirli programlama becerileri gerektiriyor.Bir diyalog yeteneği elde etmek için, geliştiriciler dışındaki insanlar için çok fazla kod yazmalı ve hata ayıklamalısınız. Ancak SuperScript tarafından benimsenen bu yöntem çok basittir ve geliştiriciler veya işletmeyi bilen diğer kişiler için çok dostane bir yöntemdir.

Burada önce bir SS dosyası yazmalıyız, özel bir sözdizimi vardır, bir data.json dosyası oluşturmak için kullanmadan önce dosyayı derlemek için yerleşik ayrıştırma aracını kullanmanız gerekir. Ve bu data.json, sohbete hangi konuşmaların, açılış konuşmalarının ve yanıtların dahil edildiğini içerir. Bu yılın Ocak ayında piyasaya sürülen en son SuperScript sürüm V1'de, bu derleme aracı önceki kararlı sürümden yüzlerce kat daha hızlıdır. Bunun nedeni yepyeni bir gramer oluşturucu kullanmasıdır.

Basitçe ifade etmek gerekirse, SuperScript'i diyalog grameri yazmak için kullanmanın ana yolları yukarıdaki noktalardır. Birincisi, bir Gambit'i açılış olarak tanımlamaktır, yani aşağıdaki şekilde artı işaretinden sonraki kısım.Kullanıcı "otobüs / tren / araba ile gidiyorum" da herhangi bir cümle girerse, bu kurala uyulacaktır.

İkincisi, aşağıdaki "merhaba * 2" gibi bir normal ifade de yazabilir; bu, kullanıcı merhaba ve ardından iki kelimelik bir ad girerse, bu kurala da ulaşılacağı anlamına gelir.

Üçüncüsü, Gambit'te iki dizeyi tanımlamak ve ardından Yanıtla'da yanıtlamaktır. Örneğin, şekildeki "* 1, * 2'den uzun", iki dizeyi içeren Gambit'i tanımlar. Kullanıcının girdisi bu Gambit ile eşleşirse, sistem, cap1'in * 1 kullandığı eksi işaretinden sonra cümleyi yanıtlayacaktır. Bunun yerine cap2'yi * 2 ile değiştirin.

Ek olarak, SuperScript birden çok yanıtı da destekler ve sistem bunlardan birini kullanıcı ayarlarına göre seçecektir. Örneğin yukarıdaki şeklin dördüncü örneğinde, kullanıcı Merhaba normal ifadesine birden çok kez uyan bir cümle girdiğinde, sistem tuttuktan sonra cümleyi saklayacak ve diğer senaryolarda tekrar gönderecektir.

Bir sohbet botunun zekasına, esas olarak ilişkilerle bağlamı ve diyaloğu idare etme yeteneği açısından bakıyoruz. SuperScript de bu konuda birçok optimizasyon yapmıştır. Yukarıdaki şekilde görüldüğü gibi Bot adınız ile ilgili bir soru sorar ve kod aşağıdaki ikinci kısma geçecektir.Kullanıcının cevapladığı isme göre yukarıdaki soruyu kabul etmek için% sembolü ile yeni bir kural tanımlanır. , Kullanıcı cevapladıktan sonra aşağıdaki işleme girebilir yani cevaba göre adının ne olduğunu sormuştur. Sohbete devam etmek istiyorsanız, son cevaba göre daha fazla soru sorabilirsiniz. Örneğin, ilk ad şu anda yanıtsa, yanıt evetse, tamam olarak yanıtlayın. Cevap evet değilse, kodun dördüncü bölümüne girecek ve sohbeti yeniden başlatmak için ilgili cümleye dönecektir.

Görünüşe göre SuperScript tarafından desteklenen konuşma, karşılık gelen% aracılığıyla konuşmadaki bağlamın konumunu bulmak ve ardından buna göre yanıt vermek. Burada vurgulanması gereken şey, koddaki girintinin, sadece okuma kolaylığı için yürütmeyi etkilememesidir.

Biraz daha karmaşık içerikten bahsedelim. Cevap yazdığımızda aslında bazı karmaşık cümleler, yani işlevler ekleyebiliriz. Örneğin, hava durumu bilgilerini almak için harici bir sistemi çağırın, ardından aşağıdaki şekilde gösterildiği gibi alt simge artı işlev adı (getWeather işlevi) biçiminde ilgili işlevleri çağırabilirsiniz. Spesifik fonksiyonun tanımı şeklin alt kısmında gösterilmektedir, burada bazı JavaScript kodu bulunmaktadır. SuperScript başladığında, kullanıcılar önceden yazılmış bazı JavaScript kodunu yüklemeyi seçebilirler. Burada gösterilen hava durumu sorgusunun aslında işlev geri aramaları yoluyla işlendiğini de görebileceğinize inanıyorum.

Ayrıca, SuperScript'te birden çok işlev bir deyimle çağrılabilir. Örneğin, "+ It is ^ fun1 ve ^ fun2" ifadesinde, fun1 ve fun2 iki işlev aynı anda çağrılır.

Aynı zamanda, SuperScript, aşağıdaki şekilde gösterildiği gibi yuvalanmış işlevlerin çağrılmasını da destekler.

Bir Node.js ortamı olarak, SuperScript ayrıca çeşitli Node.js paketlerini ve modellerini içe aktarmayı da destekler. Ek olarak, bir eklenti yazarken, SuperScript ortamı, aşağıdaki şekilde gösterildiği gibi, işlevler için zengin işlevler sağlar. This.message'ı kullanıcının söylediklerini uygulamak için kullanabiliriz, this.user'ı kullanıcı mesajlarını sorgulamak veya kayıtları aramak için kullanabilir ve this.user.memory'yi SuperScript'in yerleşik bilgi grafiği veritabanına başvurmak için kullanabiliriz.

SuperScript, işlevleri kendiniz yazmanın yanı sıra, geliştiricilerin doğrudan çağırması için bazı yerleşik uygulamalı işlevlere de sahiptir. Örneğin, aşağıdaki şekilde gösterilen topicRedirect işlevi, farklı konular arasında esnek bir şekilde geçiş yapmak için kullanılır.

Bilgi grafiğinin bir kısmından bahsedelim. Burada bahsettiğimiz bilgi grafiği aslında kullanıcılar için oluşturduğumuz bir portre ve kullanıcılar ile kullanıcılar arasındaki ilişki olarak anlaşılabilir. Örneğin, kullanıcının üniversite ana dalını, doğum gününü, en sevdiği filmleri ve diğer kişisel bilgilerini kaydedebiliriz.Aslında, veri yapısı, analiz edilmesi ve sorgulanması nispeten kolay olduğu için sohbet robotlarında yaygın olarak kullanılan bir grafiğe çok benzer.

Aşağıdaki şeklin sağ kısmından, SuperScript'te bilgi grafiklerinin kullanımını görebiliriz. Sistem her kullanıcı için ayrı bir hafıza oluşturacak ve Bot motorunun da kendi hafızası var, ortak referansları yukarıda bahsedilen Dünya Bilgisi yani genel bilgi. Bu bilginin geçişi, oluşturulması, sorgulanması ve kullanılması sürecinde bazı eklentiler kullanılır.Örneğin, yukarıda belirtilen this.user.memory mevcut kullanıcının kendi hafıza alanına karşılık gelir ve this.botfacts Bot alanını temsil eder. Bu alanların yapısı kabaca üç bölümden oluşur: özne adı, tahmin ilişkisi ve nesne varlığı.

SuperScript'in belirli çalışma yöntemlerinden bahsettikten sonra, alt kısımda nasıl uygulandığından bahsedelim. Kaynak kodunu analiz ederek, sistemin betiği ayrıştırdıktan sonra bir data.jason dosyası oluşturacağını ve data.jason dosyasının aslında nesneye yönelik bir model olduğunu gördük. Çünkü senaryo yazarken, düşüncemiz aslında süreç odaklıdır, örneğin önce ne söylediğimiz, neye cevap vereceğimiz ve tekrar ne söylediğimiz gibi. Ancak SuperScript, yürütme sırasında aslında nesneye yöneliktir, bu nedenle önce data.jason olarak ayrıştırılması gerekir.

Aşağıdaki şekilde gösterildiği gibi, önce bir konu tanımlarız, konu birçok özelliğe karşılık gelir ve ardından açılış gambiti, bir konu da birkaç açılışı tanımlar, gambit ayrıca filtre ve tetikleyici gibi bazı özelliklere de sahiptir, filtre yukarıda belirtilmiştir. % Ve tetikleyiciden sonraki kısım, normal ifade gibi bir tetikleme koşuludur. Bir açılış gambiti vurulduktan sonra, içinde bulunan birkaç cevaptan en tatmin edici koşulu alır ve gönderir.Burada cevap, filtre ve sakla gibi özellikleri de içerir. Her yanıt, sırayla birkaç kumar içerir ve sistem sürekli olarak yanıtı ve bir sonraki açılışı bekler ve böylece bir konuşma oluşturur.

Bir diğer önemli içerik, aşağıdaki şekilde gösterildiği gibi ss-mesajıdır; burada ss-message, esas olarak normalleştirilmiş girdi, kök çıkarma, tarih ekleme, değerlendirme sorunları ve isimlendirme tanımlama gibi bazı işlemleri ele alır. Bunların tümü, açık kaynak topluluğundaki birçok geliştiricinin katkılarından kaynaklanırken, alt katman, WordNet ve ConceptNet gibi birçok akademik ve topluluk hizmetine dayanır.

Bu noktaya kadar, bot kullanıcının sorularını yanıtlayabilse de, botun yanıtı hala doğal dilden biraz farklıdır ve burada bir normalleştirme süreci gereklidir. Örneğin, kullanıcı bir emoji ifadesi girerse, sistem ifadenin gülümseyen mu yoksa kızgın mı olduğunu algılayabilmelidir.Bu işlevler Normalize gerektirir. SuperScript'in en son V1 sürümünde, aslında açık kaynak topluluğu tarafından desteklenen en yeni bot-lang modülü yayınlandı. Ana işlevi burada Normalize sürecini gerçekleştirmektir.

Diğeri ise bir bilgi spektrumunun nasıl oluşturulacağıdır.SuperScript, çok hızlı olan işlevin bu bölümünü desteklemek için yerleşik LevelDB'yi kullanır. Aşağıdaki şekilde gösterildiği gibi, esas olarak sfacts modülü aracılığıyla SuperScript'te uygulanır. Sfacts, DB oluşturmak ve yüklemek için yöntemler sağlar ve ayrıca kullanıcıların kendi konseptlerini oluşturmalarına, kendi DB'lerini ve bir dizi işlemi oluşturmalarına olanak tanır.

Bazen sohbet sistemimizde ürün türü gibi bir konsept oluşturmamız gerekir.Kullanıcının girdisi belirli bir ürünle eşleştikten sonra, süreci ilgili ürünleri tanıtma veya sipariş verme diyalog sürecine aktarmam gerekir. Bu işlevler araçta mevcut değildir ve bizim tarafımızdan uygulanmaları gerekir.

SuperScript'te kendinden tanımlı bir kavramın yüklenmesi, aşağıdaki şekilde gösterildiği gibi üç adıma bölünebilir.

İlk adım, adı ve hangi alt sınıfları içerdiğini bildiren bir kavram dosyası oluşturmaktır.

İkinci adım, ayrıştırma aracı aracılığıyla data.jason dosyasını oluştururken birinci adımda bildirilen kavram dosyasını kullanmaktır.

Üçüncü adım, SuperScript hizmetini başlatırken konsept dosyasını yüklemektir.

Bu, kendi tanımladığınız kavramı yükleme sürecidir.

SuperScript'in bir başka çekirdeği ve onunla RiveScript ve ChatScript gibi diğer araçlar arasındaki en büyük fark, bir algoritma uygulaması, yani konu yığınından nasıl yanıt alınacağıdır. Aşağıdaki şekilde gösterildiği gibi, algoritmanın özü, külliyatın soldan sağa doğru sırayla kontrol edilmesidir, en soldaki en yüksek önceliğe ve en sağdaki en düşük önceliğe sahiptir. Bir kullanıcının sorusunu alırken, sistem önce ön etiket konusunda cevabı arayacaktır.Eğer bulunamazsa, sistem mevcut sohbetten gelen cevabı, eğer bulunamazsa son cevapta elde edilen mevcut sohbet oturumu üzerinden arayacaktır. , Sistem, TF-IDF üzerinden geçmiş sohbet geçmişinde kelime frekansı sıralama araması yapacaktır. Hala bulamazsa, hakkında konuşulmayan bazı sistem dışı konulara atlayacaktır.Son olarak bunlar bulunmazsa, baştan başlayacaktır. Gönderi etiketi konusunda arayın. Buradaki ön ve son etiketlerin her ikisinin de sistem tarafından öngörüldüğü, ancak içeriğin kullanıcı tarafından uygulanması gerektiği unutulmamalıdır.

SuperScript'in en son V1 sürümünde, yanıt alma arayüzü önceki sürümden onlarca kat daha hızlıdır. Ek olarak, V1 sürümünde, aşağıdaki şekilde gösterildiği gibi bazı başka önemli değişiklikler de vardır.

Her şeyden önce, bu FactSystem geçmişte LevelDB kullanıyordu ve bu sistemde bazı disk dosyaları oluşturacaktı.Bu aslında uygulamaya elverişli değil çünkü dosya sistemi yazma işlemi için bir kilit içeriyor, bu da SuperScript'i sadece tek örnek yapıyor. Ancak V1 sürümünde, üst katman hala LevelDB arayüzünü kullanıyor, ancak alt katman tüm verileri MongoDB'de depoluyor. Bu süreç, SuperScript'in geçmişte olduğundan daha iyi ölçeklenebilirliğe sahip olmasını sağlayacaktır ve bu, bir üretim ortamında büyük önem taşır.

İkincisi, çok kiracılığını desteklemeye başlamaktır Geçmişte, SuperScript yalnızca tek bir örneğe ve yalnızca bir kişiliğe sahipti, bu nedenle yalnızca bir hizmet çalıştırılabiliyordu.

Üçüncüsü, yeni sürümün ES6 kullanması ve babel ile derlenmiş olmasıdır. Bu, SuperScript'i daha yeni dil özellikleriyle uyumlu hale getirir ve birçok arayüzün hızındaki önemli artışın nedeni de olabilir.

Yurtdışında açık kaynaklı bir proje olarak, SuperScript'in kendisi Çince'yi desteklemeyi düşünmeyecektir. Bu, ben ve SuperScript konusunda endişeli diğer yerli geliştiriciler için acil bir sorundur.

Aslında, SuperScript topluluk tartışma grubunda, birçok kişinin katıldığı, ilgili teknik tartışmaların hala çok aktif olduğunu görebilirsiniz. Yetkili hangi kullanıcıların SuperScript kullandığını açıklamamış olsa da, şu anda yüzlerce kullanıcının olduğu resmi tartışma grubu aracılığıyla görülebilir.

Sohbet robotları gelecekte giderek daha popüler hale geldikçe, SuperScript'in giderek daha popüler hale geleceğine ve giderek daha fazla dikkat çekeceğine inanıyorum.

Son olarak, burada yaptığım bir web sitesini paylaşacağım: Çalışmamın bazı özetlerini, SuperScript gibi çerçevelerin araştırma sonuçlarını ve derin öğrenme algoritmaları ile ilgili şeyleri kaydeder.

hepinize teşekkür ederim.

İzleyici sorusu cevaplanıyor

Soru 1: Yerli firmaların interaktif konuşma sistemi ile Google ve Microsoft gibi yabancı firmaların interaktif konuşma sistemi arasındaki fark ne kadar büyük?

Geçen yıl yapılan bazı araştırmalara göre, yurt içi sohbet robotları müşteri hizmetlerini, alışveriş rehberlerini, yaşlı ve çocukların arkadaşlığını denedi.Uygulama düzeyinin bir parçası. Örneğin asistanlar gelip ne zaman dışarı çıktıklarını sorduğunda, bazı sohbetlerin ardından manuel hizmetlere bile geçecekler. Ancak, büyük yerli şirketler son birkaç yılda herhangi bir çaba göstermedi ve Baidu çok iş yaptı. Ayrıca bu yıl Tencentin Yapay Zeka Laboratuarının da çok sayıda at işe almaya ve satın almaya başladığından endişe duyuyorum. Yabancı ülkelere göre başlangıç gecikti.

Ancak yerli açık kaynak sahaları ve araştırma kurumları yabancılardan daha aktif değildir. Silikon Vadisi'nde dashbot.io, kitt.ai, qnamarker.ai, api.ai gibi bazı yeni hizmetler ortaya çıktı ve Çin'de özellikle iyi bir kopya görmedik. Dahası, yabancı açık külliyat nispeten zengindir ve hükümet, dbpedia, wordnet, konsept ve imagenet dahil olmak üzere birçok veri açma kampanyası yapmıştır.

Chat botları geliştiren bir geliştirici olarak, pek çok yabancı araç olduğunu düşünüyorum ama yerli olanlar hala eksik, bu yüzden İngilizce eğitimi için ağırlıklı olarak chat botlarına odaklanıyorum.

Soru 2: Eşanlamlılar sözlüğünün tasarım fikirlerinden bahsedebilir misiniz?

Kendi eşanlamlılar sözlüğümüzü oluşturmadık. Şu anda, kelime bölütleme açık kaynak alanındaki kütüphaneleri kullanıyor. Yeni sözcükleri tanımamız hala orta düzeydedir, çünkü Amerikan ilkokul müfredatı tarafından oluşturulan konuşma içeriğine dayanmaktadır. Biz esas olarak chglish ile ilgileniyoruz ve şu anda bu aynı zamanda yaygın yazım hatası tanıma yöntemleri ve manuel listelerle de yapılmaktadır. Uzun vadeli bir perspektiften, büyük miktarda veri biriktirmeyi ve ardından bunu makine öğrenimi yoluyla çözmeyi umuyoruz.

Soru 3: SuperScript motorunun gelecekteki gelişimi nedir?

Facebook Messager, Slack, Amazon Echo, SuperScript gibi donanımların entegrasyonu dahil olmak üzere girişimler için çok cazip olacak, çok esnek ve avantajlı ve mevcut topluluk da diğer konuşma motorlarına göre aktif. Açık kaynak alanı olacağını düşünüyorum. En popüler sohbet robotu diyalog motoru.

Soru 4: İnsan-makine diyaloğunda kontrol edilebilirlik ve zeka nasıl dengelenir?

Robotların geliştirilmesinin artık temelde iki bölümden oluştuğunu düşünüyorum: kural tabanlı geri alma bölümü + makine öğrenimi tabanlı üretken bölüm. Kural tabanlı kısım, geliştirici tarafından oldukça kontrol edilebilirken, makine öğrenimi kısmı matematiksel rastgele özelliklerle insan yorumunun ötesinde yanıtlar alacaktır. Konuşmalarımızda bilgiyi sohbete dahil etme eğilimindeyiz çünkü eğitime yönelik olduğundan daha fazla arama tabanlı bölüm var ve aramaya dayalı sistemde iyi cevaplar alınamıyor.Cevaplar makine öğreniminin dil modelinde elde ediliyor. . Bu şekilde, bir bütün olarak, kullanıcının sahip olduğu herhangi bir soruyu cevaplayabilirsiniz ve etki iyi görünür.

Bu nedenle, kontrol edilebilirlik, kişisel bilgi asistanları gibi daha fazla iş fırsatı sağlarken, akıllı olanlar, can sıkıntısını gidermek için sohbet etme gibi daha fazla eğlence getirebilir. Api.ai gibi hizmetler manuel olarak etiketlenir- > Niyet tanıma > Dağıtım sistemi daha kontrol edilebilirdir ve kişisel bilgi asistanlarını geliştirmek için bir seçenek olarak kullanılabilir. Ve tuling123 gibi hizmetler daha akıllı efektlere sahiptir ve küçük sohbet robotları geliştirmek için bir seçenek olarak kullanılabilir. Üçüncü taraf hizmetleri ihtiyaçları karşılayamadığında veya kendi teknik ekibiniz harika olduğunda, kendi sohbet robotlarınızı geliştirmek için SuperScript + Dil Modeli gibi yöntemleri kullanabilirsiniz. Birçok üçüncü taraf hizmetini araştırdıktan sonra SuperScript, Botframework kullanmaktan vazgeçmemi sağladı ve TensorFlow api.ai'yi kullanmaktan vazgeçmemi sağladı.

Soru 5: Bu tür bir sohbet robotu genellikle küçük ve portatiftir.Dış mekanda kullanılabilir gibi bir his var mı? Çocuklar "arkadaşları" ile dışarı çıkmak isterlerse, ilgili uygulama senaryolarını analiz ettiler mi?

Bu türden birkaç akıllı donanım gördüm, dışa dönükler ve 700 ila 800 yuan civarında maliyetler. Yeni başlayanlar tarafından yapılıyorlar ve 360 da onları yapıyor. Hatta sesli konuşmaları kullanabilen ve hikayeler anlatabilen saatlere bile dönüştürülebilirler. Aslında, android sistemi artı uygulamaları çalıştırmaktır. Zekayı yansıtabilen diyalog dışında diğer bölümlere teknik engel yoktur. Pazar da çok kabul görüyor, bence iyi ama değerini nasıl artırabiliriz? Donanımı öylece satamaz mı? Birçok senaryo düşündüm ve burada birçok fırsat olduğunu düşünüyorum.

Örneğin otizmle, dul yaşlılarla ve çocuklarla yüzleşmek değer katacaktır. Ancak chatbotlar için en iyi giriş noktasının VR veya AR olduğunu düşünüyorum. Bu daha güçlü bir ikame duygusuna sahip olduğu için, kullanıcıların tercih ettiği ürünler olacaktır.

Ayrıca geçen yıl Hololens, Rift, Vive, aktif ve pasif VR cihazları gibi birçok cihaz deneyimledim, yarış ve şut gibi oyunlar oynadım. Sohbet robotlarıyla donatılmış HoloLens gibi cihazların çığır açan ürünler olacağını düşünüyorum ve giriş artık sohbet robotlarının zekası için endişelenmiyor.

Soru 6: Hangisinin robotların, sanal robotların veya fiziksel robotların ana akım trendi haline gelme olasılığı daha yüksektir? Avantajları nelerdir?

İkisinin doğası farklı: Fiziksel robotların fabrika üretim hatlarında çalışanların ve sanal robotların çağrı merkezlerinde müşteri hizmetlerinin yerini alacağına inanıyorum. Ne tür bir robot olursa olsun, doğal dil işleme, diyalog ve niyet tanıma, bu robotların insanların isteklerine göre daha fazla hareket etmesini sağlayacaktır.

Sanal robotların daha akıllı ve daha popüler olacağını düşünüyorum. Çünkü sanal robot ayar sahnesi, robotun karar vermesi için daha uygun olabilir.

Soru 7: Sohbet robotlarıyla ilgili mevcut bağlamsal Soru-Cevap düzeyi nedir?

Bağlam korelasyonu ile ilgili olarak, algoritma düzeyinde, dil modeli eğitimi sırasında aşağıdaki verileri enjekte etmeyi düşünün: P-Kişilik matrisi, Bot ve L-Lexicon ile U-Kullanıcı İlişkisi. İlgili belgeleri de araştırdım. Bu son teknoloji bir keşif aşaması ve bunları algoritma düzeyinde çözen başarılı vakaları hala bilmiyorum. 2015 yılında seq2seq modeli ortaya çıktı ve seq2seq, Seq2Seq dikkat / Seq2seqGAN işlemenin türev modeli aslında tek bir diyalogdur ve eğitim uzunluğu da sınırlıdır.Cümle uzunluğu ne kadar uzunsa, sistemin ayarlanması o kadar zor olur. Mühendislik açısından, teknolojinin gelişimi genellikle botların sistem portrelerinin ve kullanıcı portrelerinin oluşturulmasını dikkate alır ve diyaloğun bağlamının analizi de bir zaman penceresiyle sınırlı olacaktır.

Örneğin, SuperScript'in bağlam analizi geliştirici tarafından yapılandırılabilir. Varsayılan olarak, SuperScript, yanıtları alırken kullanıcının son 5 dakika içinde söylediği en son 10 cümleyi dikkate alır.

Bir bilgi grafiği ve arama motoru oluşturmak ve daha sonra üst simge bağlamında daha fazla sorgu yeteneğine sahip olmak gibi daha fazla teknolojinin buraya entegre edilmesi gerektiğini düşünüyorum. Ayrıca Microsoft'un Xiaobing'i, Google'ın allo ve Baidu Du Mi'yi deneyimleyebilirsiniz. Büyük bir üreticinin hizmeti olarak, bunların açıklayıcı önemi olmalıdır. Bağlamsal alaka düzeyi büyük bir zorluktur.

Leifeng.com'daki ilgili okumalar (herkese açık hesap: Leifeng.com):

Sohbet kayıtlarını anlayabilen WeChat botları (1)

Sohbet robotlarının ateşi (1): Microsoft, Facebook ve Amazon gibi devler neden büyük bahisler yapıyor?

İnsanlar nasıl bağımlı hale getirilir

"Dang Kou Fengyun" bugün şok edici bir şekilde piyasaya sürüldü, yıllık tarihi aksiyon coşkulu devin sırlarını izleyin
önceki
Düğün fotoğrafları mahvetmek, patronları mahvetmek, eski erkek arkadaşları parçalamak ... evdeki salıncağın ne kadar sıkıştırıcı olmadığını yormak Titanium Media Image "Online"
Sonraki
Japonya tarafından "bin yılda bir" olarak derecelendirilen güzel kız artık bir yetişkin...
"Dragon Ball Fighter Z" ilk DLC rolü: Broly ve Badak savaşa katılıyor
Netizenler resmi sanatçıları diri diri ağlatabilecek 100 milyon afiş "Gezen Dünya" yaptı
Üç Örnek Olay İncelemesi: Endüstriyel Zeka Oluşturmak için IoT Verileri Nasıl Kullanılır | Zor Yaratılış Açık Kursu
Microsoft, özel oyunların geliştirilmesinde hangi ayarlamaları yapacak?
Ya PS yoksa? Bu 4 çevrimiçi çizim eseri hafif, verimli ve ücretsizdir
Beden öldü ve can uyandı ... "Ölümünden" 13 yıl sonra yeniden dirildi, bir mucize bekliyor ...
ShadowBroker yakınlaştırma-çoklu Windows sıfır gün kullanım araçları duyuruldu
Fazla mesai gecesi ve Bose SleepBuds uyumam için bana eşlik ediyor
90'dan fazla ses mühendisi, dünyanın her yerinden doğal sesleri deneyimlemek için tek tıklamayla özenle hazırlanmış
Bitcoin gün içi ticarette% 14 düşüşle 4.100 doları kırdı, blok zinciri konsept hisse senetleri günde 35.1 milyar buharlaştı
Kawasaki Hiroto: Çin topraklarında ölmek üzere olan bir Japon
To Top