Sogou açık kaynak endüstrisinin en kapsamlı "okuduğunu anlama araç koleksiyonu", geliştiricilerin hızlı bir şekilde verimli modeller oluşturmasına yardımcı olur

Makine okuduğunu anlama şu anda akıllı soru cevaplama alanında popüler bir araştırma sorusudur.Amaç, belirli bir soru ve makaleye (paragraf) dayalı olarak soruya cevap olarak makaleden (paragraf) metin parçaları çıkarmak veya yeniden yazmaktır. Örneğin, mevcut arama motorlarının çoğu, kullanıcı tarafından girilen arama anahtar kelimesi bir soru olduğunda, cevabı arama sonucunun web sayfasından bulmaya çalışacak ve en yüksek önceliğe sahip kullanıcıya sunacaktır. Örneğin, "Sogou'nun maskotu nedir" diye arama yaparsanız, arama motoru şu şekilde yanıt verecektir:

Bunda kullanılan teknoloji "makine okumayı anlama" dır.

Son yıllarda, sinir ağlarının yeniden canlanması ve büyük ölçekli veri setlerinin erişilebilirliği nedeniyle, okuduğunu anlama konusundaki araştırmalar büyük ilerleme kaydetti ve birçok mükemmel makine okuma anlama modeli birbiri ardına ortaya çıktı. Örneğin, SQuAD 1.0 sıralama listesinde, önemli sayıda modelin performansı insan performansını geride bırakan 80'den fazla sunulan model vardır.

Burada bir sorun var. Bir araştırmacı veya geliştirici olarak bu modellerin avantaj ve dezavantajlarını karşılaştırmak ve kullanmak için bu modellerin yeniden üretilmesi gerekmektedir. Ancak, mevcut modellerin birçoğu resmi uygulamalar sağlamamaktadır ve derin öğrenme çerçevelerindeki farklılıklar ve kullandıkları uygulama fikirleri nedeniyle açık kaynaklı olan bazı modeller, birçok kişi için anlama, karşılaştırma ve iyileştirme Bu modellerin çoğaltılmasında büyük zorluklar var.

Bu soruna yanıt olarak, Sogou Search yakın zamanda "Sogou Makine Okuma Anlama" ((Sogou Makine Okuma Anlama, bundan sonra "SMRC" olarak anılacaktır) önerdi ve açık kaynaklı hale getirdi. Ön işleme, sinir ağı modeli temel yazılımı, eğitim ve değerlendirmenin eksiksiz çerçevesi.Aynı zamanda, düzinelerce yayınlanmış makine okuma anlama modeli, kullanıcıların mevcut modelleri hızlı ve verimli bir şekilde yeniden üretmelerine yardımcı olmak için yeniden üretilir ve entegre edilir. Kendi okuduğunu anlama modelinizi geliştirin.

Bu araç seti, aynı zamanda sektördeki okuduğunu anlama araç setinin en kapsamlı TensorFlow versiyonudur. Şu anda, SMRC'ye benzer araç seti, Allen AI'dan AllenNLP ve UCL Machine Reading Comprehension Group'tan Jack The Reader'ı içeriyor. Bununla birlikte, AllenNLP ve Jack The Reader, yalnızca az sayıda okuduğunu anlama modelini içeren birden fazla doğal dil işleme görevi için uygun daha fazla çerçeve sağlar (örneğin, AllenNLP'deki SQuAD veri seti modelleri yalnızca BiDAF ve QANet'tir). SMRC okuduğunu anlama görevlerine daha derinden girer.Bir model oluşturma ve eğitim çerçevesi oluştururken, 10'dan fazla modelin uygulanmasını sağlar.

Proje bağlantısı: (lütfen buraya tıklayın)

Kağıt bağlantısı: (lütfen buraya tıklayın)

SMRC'nin belirli içeriğine bir göz atalım

1. Araç toplama çerçevesi

Yukarıdaki şekilde gösterildiği gibi, araç seti, araç setini makine okumayı anlama sürecine göre dört modüle ayırır: veri seti okuyucu, veri ön işleme, model oluşturma ve model eğitimi. Bu dört modül, ardışık düzen süreçleri olarak tasarlanmıştır ve çoğu makine okuduğunu anlama görevi için kullanılabilir.

Veri seti okuyucu Makine okuduğunu anlamanın hızlı ilerlemesinin önemli bir nedeni, çeşitli büyük ölçekli, yüksek kaliteli soru ve yanıt veri kümelerinin yayınlanmasıdır. Veri seti kodlarının tekrar tekrar gelişimini önlemek için SMRC, SQuAD1.0, SQuAD2.0, CoQA okuma modülleri gibi bazı tipik veri setlerini sağlar; aynı zamanda dil çeşitliliğini artırmak için SMRC ayrıca Çince veri setlerine de destek sağlar CMRC2018 modülü. Öte yandan kullanıcılar, base_dataset'i miras alarak diğer veri kümeleri için özel okuyucular geliştirebilirler.

veri işleme Modeli eğitmeye yönelik verileri hazırlamak için, bir kelime dağarcığı oluşturmamız, dil özelliklerini çıkarmamız ve ayrık özellikleri dizine eşlememiz gerekir. Araç seti, şu gereksinimleri karşılayan modüller sağlar: Kelime Dağarcığı Oluşturucu, Özellik Çıkarıcı, Toplu İş Oluşturucu.

Model oluşturma Makine okuduğunu anlama görevinin temel kısmı, etkili ve verimli bir model oluşturmaktır. Yerleşik modele (daha sonra tanıtacağımız) ek olarak, SMRC ayrıca makine okuma anlama görevlerinde yaygın olarak kullanılan sinir ağı bileşenleri sağlar, böylece kullanıcılar özel modeller oluşturabilir. "İşlevsel API" fikrinin ardından SMRC, bunları Tensorflow katmanına MRC'ye özgü tamamlayıcılar olarak paketler:

  • Gömme: Vanilya Gömme, Kısmen Eğitilebilir Gömme, CoVe Gömme, Elmo Gömme ve Gömme vb.

  • Tekrarlayan: BiSTM ve BiGRU temel tekrarlayan katmanlardır ve SMRC ayrıca CUDNN sürümlerini (CudnnBiSTM ve CudnnBiGRU) sağlar.

  • Benzerlik işlevi: SMRC, DotProduct, TriLinear ve MLP gibi metinler arasındaki kelime düzeyinde benzerliği hesaplamak için bir dizi işlev sağlar.

  • Attendtion: Dikkat katmanı genellikle BiAttention, UniAttention ve SelfAttention gibi benzerlik fonksiyonlarıyla kullanılır.

  • Temel katman: VaritionDropout ve Highway, ReduceSequence gibi makine okumayı anlama modelleri için bazı temel katmanlar kullanılır.

  • Temel işlemler: Bunlar esas olarak maskeleme işlemleridir, örneğin, maskelenmiş softmax, maske günlükleri.

Temel model sınıflarını miras alarak ve yukarıdaki bileşenleri birleştirerek, geliştiriciler temel olarak en yaygın makine okuma anlama modellerini hızlı bir şekilde oluşturabilirler.

Model eğitimi Bir modeli eğitirken, genellikle tren / dev setiyle indeksin nasıl değiştiğini, erken durdurmanın ne zaman yapılacağını, modelin yakınsamasının ne kadar sürdüğünü vb. Önemsiyoruz. Çoğu model benzer eğitim stratejileri kullandığından, SMRC, temel işlevleri arasında eğitimin sürdürülmesi, değerlendirme ve çıkarım işleme, en iyi ağırlıkların korunması, üstel hareketli ortalamalarla işbirliği ve eğitim özetlerinin kaydedilmesi olan bir eğitim modülü sağlar. Her model ayrıca model ağırlıklarının kaydedilmesi ve yüklenmesi için bir arayüz sağlar.

2. Yerleşik model

Zengin yerleşik modellerin sağlanması, SMRC'nin önemli bir özelliğidir.Bu yerleşik modeller, mevcut mükemmel modellerin yeniden üretilmesidir. Bunlar şunları içerir:

BiDAF: Önceki çalışmadaki dikkat mekanizmasından farklı olarak, BiDAF'ın temel fikri, sorgudan bağlama ve bağlamdan sorguya dikkati simüle eden çift yönlü dikkattir. (Makineyi Anlama İçin İki Yönlü Dikkat Akışı (ICLR 2017))

DrQA: Açık alan problemlerini çözmeyi amaçladı. DrQA, karmaşık yapı tasarımına sahip olmayan basit modellerin makine okumayı anlamada da iyi sonuçlar elde edebileceğini kanıtlamak için metin yerleştirme, temel dil özellikleri ve basit dikkat mekanizmaları kullanır. (Açık Alanlı Soruları Yanıtlamak İçin Wikipedia Okuma (ACL 2017))

FusionNet: Huang ve arkadaşları, önceki çalışmadaki dikkat yöntemlerinin analizine dayanarak, dikkati üç yönden genişleten FusionNet'i önerdiler. Modelin farklı anlam katmanlarından gelen bilgi akışlarını birleştirmesine izin veren kelime geçmişi ve tamamen farkında olan dikkati kullanmayı önerirler. Ek olarak, bu fikir doğal dil muhakemesi için de geçerlidir. (Tamamen Bilinçli Dikkat ile Makineyi Anlama Uygulamasıyla Kaynaştırma (ICLR 2018))

R-Net: R-Net'in ana katkısı, kendi kendine eşleşen dikkat mekanizmasıdır. Bağlam ve soru geçişli eşleştirmeden sonra, paragrafın tamamının kanıtını özetlemek ve paragraf temsilini geliştirmek için kendi kendine paragraf eşleştirmesi yapılır. (Okuduğunu Anlama ve Soru Cevaplama için Geçitli Kendinden Eşleşen Ağlar (ACL 2017))

QANet: QANet'in mimarisi, yalnızca evrişim ve öz-dikkat içeren Transformer'dan uyarlanmıştır. Tekrarlayan katmanı kullanmadığı için, QANet eğitim süresinde 313 kat, çıkarım süresinde 49 kat daha hızlıdır. (Okuduğunu Anlamak için Yerel Evrişimi Küresel Öz-Dikkatle Birleştirme (ICLR 2018))

IARNN: SMRC'de cümle temsiline elverişli ve cevap seçimi görevlerinde etkili olan iki tür dahili dikkat tabanlı RNN'ler (IARNN'ler) uygulanmaktadır. IARNN kelimesi, RNN modeline girmeden önce soru bağlamının kelime temsilini ağırlıklandırır. Yalnızca giriş kelimesi yerleştirmeyi uygulayan IARNN-word'ün aksine, IARNN-hidden, hesaplanan dikkat ağırlığına ek bağlam bilgisi ekleyerek birden çok kelime arasındaki ilişkiyi yakalayabilir. (Yanıt Seçimi için İç Dikkat tabanlı Tekrarlayan Sinir Ağları (ACL 2017))

BiDAF ++: BiDAF temel alınarak, çok segmentli bir makine okuma anlama modeli tanıtıldı. BiDAF'a dayanan BiDAF ++, model kapasitesini artırmak için bir öz-dikkat katmanı ekler. (Basit ve Etkili Çok Paragraflı Okuduğunu Anlama (ACL 2018))

BERTELMo: BERT ve ELMo gibi önceden eğitilmiş modeller, birçok doğal dil işleme görevinde son derece iyi performans gösterir. SMRC'de, BERT, ELMo ve Cove, güçlü bağlamsal temsil sağlamak için gömme katmanları olarak kullanılır. Aynı zamanda, SMRC ayrıca makine okumayı anlama için bir BERT modeli ve değiştirilmiş bir versiyon içerir.

Üç, hızlı inşaat ve denetim

SMRC, kullanımı kolay ve kullanıcılar için genişletilebilir basit bir arayüz sağlar. Temel okuduğunu anlama modelleri için, yalnızca on satırdan fazla kod eğitilebilir ve test edilebilir. Hızlı bir şekilde yerleşik bir model (DrQA) oluşturmak ve eğitmek için SquAD1.0'ı örnek olarak alın:

1. Veri setini indirin

$ wget https://rajpurkar.github.io/SQuAD-explorer/dataset/train-v1.1.json

$ wget https://rajpurkar.github.io/SQuAD-explorer/dataset/dev-v1.1.json

$ wget https://nlp.stanford.edu/data/glove.840B.300d.zip # drQA'da kullanılmış

$ eldivenleri açın.840B.300d.zip

2. Veri seti okuyucusunu ve ayırıcıyı hazırlayın

train_file = data_folder + "train-v1.1.json"

dev_file = data_folder + "dev-v1.1.json"

reader = SquadReader

train_data = reader.read (tren_dosyası)

eval_data = reader.read (dev_file)

evaluator = SquadEvaluator (dev_file)

3. Kelime dağarcığını oluşturun ve önceden eğitilmiş yerleştirmeyi yükleyin

kelime = Kelime (do_lowercase = False)

vocab.build_vocab (train_data + eval_data, min_word_count = 3,

min_char_count = 10)

word_embedding =

vocab.make_word_embedding (embedding_folder + "glove.840B.300d.txt")

4. Özellik çıkarıcı kullanın. Özellik çıkarıcı yalnızca dil özelliklerini kullanırken gereklidir:

feature_transformer =

FeatureExtractor (özellikler =,

build_vocab_feature_names = set (), word_counter = vocab.get_word_counter)

train_data = feature_transformer.fit_transform (dataset = train_data)

eval_data = feature_transformer.transform (veri kümesi = eval_data)

5. Dil özelliklerini kullanırken ek özelliklerin ve özellik sözlüğünün gerekli olduğu eğitim ve değerlendirme için bir grup oluşturucu oluşturun.

train_batch_generator = BatchGenerator (kelime haznesi, train_data, eğitim = True, batch_size = 32, \

ek_alanlar =

feature_transformer.features, feature_vocab = feature_transformer.vocab) eval_batch_generator = BatchGenerator (sözcük, eval_data, batch_size = 32, \

additional_fields = feature_transformer.features,

feature_vocab = feature_transformer.vocab)

6. Yerleşik modeli içe aktarın ve eğitim operasyonunu derleyin, eğitim ve değerlendirme için train_and_evaluate gibi işlev çağırın.

model = DrQA (kelime, kelime_birleştirme, özellikler = özellik_transformer.features, \

feature_vocab = feature_transformer.vocab)

model.compile

model.train_and_evaluate (train_batch_generator, eval_batch_generator, evaluator, epochs = 40, eposides = 2)

Yukarıdaki kodlar, tüm yerleşik modeller ve örnekteki tüm veri kümeleri için geçerlidir. Nasıl çalıştığını görmek için yukarıdaki koda göre farklı veri setlerinde farklı modeller deneyebilirsiniz.

Github'da SMRC tarafından sağlanan karşılaştırma sonuçları aşağıdaki gibidir:

Tablo 1 SQuAD1.0 için model sonuçlarını göstermektedir Yinelenen modelin performansının temelde orijinal model ile aynı olduğu görülmektedir. Öte yandan, model BERT veya ELMo gibi ön eğitime eklendiğinde, sonuçlar büyük ölçüde gelişme eğilimindedir, bu nedenle bunlar aynı zamanda NLP'nin yeni bir eğilimi olur.

SQuAD 2.0 ve CoQA'nın görevleri SQuAD 1.0'ınkilerden farklıdır, bu nedenle bazı modeller bu iki veri setine doğrudan uygulanamaz. BiDAF, BiADF ++ ve diğer modellerin testine dayanarak, yerleşik modelin bazen orijinal modelden daha iyi olduğu görülebilir. Ayrıca BiDAF, CMRC veri setine de uygulanabilir.Sogou Search tarafından sağlanan test sonucu F1 / EM, yeni bir temel sağlayan 57.01 / 35.0'dır.

Dört, özet

Sogou Search'ün açık kaynaklı "Sogou Okuma Anlama Aracı Koleksiyonu", geliştiricilerin hızlı bir şekilde özel oluşturabilmeleri için veri seti okuma, ön işleme, sinir ağı modeli temel yazılımı, eğitim ve değerlendirme TensorFlow sürümü gibi eksiksiz bir okuduğunu anlama görev çerçevesi sağlar. Makine okuma modeli. Ek olarak, SMRC, geliştiricilerin mevcut modelleri yeniden üretmesini ve test etmesini kolaylaştıran birleşik bir çerçevede bir düzineden fazla makine okuma anlama modeli sağlar. Bu çalışmalar, ilgili akademik araştırmaları büyük ölçüde hızlandıracaktır. Aynı zamanda SMRC, makine okuma anlama teknolojisini değerlendirmek ve uygulamaya çalışmak isteyen tüm algoritma uygulayıcılarına, başlamak için bir kısayol ve ürünleştirme için başlangıç motivasyonu sağlar.

Sogou Search'ün ilgili teknolojileri ürünlere ve işletmelere uyguladığı anlaşılmaktadır. Hukuki alanda, Sogounun Soru-Cevap robotu mantıksal analiz ve muhakeme yeteneklerine sahiptir. Aşamalı sorgulama sürecinde, kullanıcıların meydana gelen gerçekleri netleştirmelerine ve kullanıcı yasasını tam ve doğru bir şekilde anlamalarına yardımcı olmak için karar sırasında yapılandırılmış verileri madenciliği yapar. İtirazlar temelinde, olası yargı sonuçları, hukuki tavsiye veya benzeri vakalar verilir; tıp alanında, Sogou Search'ün akıllı triyaj işlevi, doktorlar ve hastalar arasındaki diyaloğu simüle eden yapay zeka teknolojisine dayalı akıllı bir teşhis asistanının kullanılmasına öncülük etti. Kullanıcı, hastanın durumu ile iletişim kurar ve kullanıcının gerçek semptomlarına göre kullanıcının sahip olabileceği hastalığı belirlemeye yardımcı olur.

Referans malzemeleri:

SMRCToolkit

Sogou Makine Okuma Anlama Araç Seti

Orijinal belge "Açık Alan Soruları ve Cevapları Belge Geçidi Denetleyicisine Dayalı"

Sogou, en büyük uluslararası mücadele CoQA'da birinci oldu

CoQA: Karşılaşılan Zorluğu Cevaplayan Diyaloglu Bir Soru

SQuAD2.0: Stanford Soru Cevaplama Veri Kümesi

Otonom sürüş için 5 test yolu açık ve 6 tanesi Hangzhou'da insansız araçlar için lisans aldı
önceki
Kurt köpeği yeşil kuşağa bağlandı ve yaşlı adam geçip korkuyla kırıldı! "Küçük şeyler"?
Sonraki
Dünya çapında kahvaltı: Gelin ve farklı ülkelerin yeni bir güne nasıl başladığını görün
Demiryolu taşımacılığının yeni havalimanı hattının ilk aşamasının en son gelişmesi burada!
Çinli-Avustralyalı bir kadın babasını annesini öldürmekten, valizini koymaktan ve vücudunu fırlatmaktan saklıyor, hapishaneden çıktıktan sonra da miras olarak milyonlarca dolar alabiliyor.
Wu Jing, Zhang Ziyi, Jing Boran ve Hu Ge'nin Çin dağcılık ekibinin Everest Dağı zirvesinin 59. yıldönümünü anmasını izleyin
"Anne", her şey buna değer!
Apple ürünlerinin gerçek satış noktaları nelerdir?
Bu ne tür bir peri dersi? Apple Bilgisayar
OnePlus 7 Pro parmak izi tanıma sistemini 5 dakikada kırın
Optik dalga kılavuzlarının temel ilkelerini keşfedin ve AR gözlüklerin arkasındaki zorlukları anlayın (bölüm 1)
Çöp kamyonları damlıyor ve yol boyunca kırmızı ışıklar yakıyor ve yol boyunca sakinler kokuya dayanamıyor, kim kontrol edecek?
Yeni Zelandalı aşçı, Chongqing erişte yapmayı öğrenir, ancak yemeyi bırakamaz
CVPR 2019 Sözlü kağıt yorumlama | Baidu, ağ sıkıştırma ve hızlandırma için yeni bir budama algoritması önerdi
To Top