Merhaba NLP-Word Vektör WhyHow

Bugünden itibaren word2vector kelimesini (kısaca w2v) öğrenelim. Her ne kadar NLP için w2v teknolojisi ve işlemleri zaten çürümüş olsa da. Herhangi bir NLP görevi için, temelde alt katmanda bir w2v gereklidir, ancak neden w2v'ye ihtiyacınız var, arkasındaki fikir nedir, nasıl eğitilir, belki birçok Sık sık w2v kullanan kişiler çok net olmayabilir. Bilmemek, w2v'nin çok yararlı ve harika olduğunu bilmemize yol açacaktır, ancak bir şeyler ters gittiğinde nerede geliştireceğimizi bilmiyoruz. Bu nedenle, Stanford cs224n NLP kursunun kelime vektör içeriğini inceleyeceğim, diğer materyallere bakacağım ve w2v hakkında bir dizi not yazmak için kendi pratik deneyimimi birleştireceğim.

Bu makale iki yönü açıklar:

1. Neden w2v'ye ihtiyacımız var NEDEN

2. w2v-HOW'u edinmenin genel fikri nedir

Bir, NEDEN

Kelimeler, NLP'nin uğraşması gereken temel bir dil birimidir. Büyük miktarda metni işlemek için bilgisayarları kullandığımızda, makinenin kelimelerdeki bilgileri olabildiğince anlamasına izin vermeyi umuyoruz, bu da metin sınıflandırmasını, metin kümelemesini, metin oluşturmayı ve diyaloğu büyük ölçüde geliştirebilir. , Çeviri ve diğer görevler. Bu nedenle, temel bir sorunu çözmemiz gerekiyor:

Bir kelime nasıl temsil edilir?

1. WordNet

İngilizce'de, bir kelimenin eşanlamlıları ve eşanlamlıları gibi çeşitli bilgileri türetmek için WordNet'i kullanabiliriz. WordNet, Princeton Üniversitesi'nden psikologlar, dilbilimciler ve bilgisayar mühendisleri tarafından ortaklaşa tasarlanmış bilişsel dilbilime dayalı bir İngilizce sözlüktür. Web sitesi: https://wordnet.princeton.edu/

Wordnet'i indirebilir veya NLTK ve diğer paketler aracılığıyla edinebiliriz ve ardından bilgisayar programında istediğimiz kelimeyi sorgulayabiliriz.

Çince için benzer bir wordnet vardır. Aşağıda gösterilen Çince kelime ağı, Ulusal Tayvan Üniversitesi'nden bilim adamları tarafından tasarlanmış ve oluşturulmuştur. Dahası, kelimeler arasındaki ilişkiyi daha sezgisel olarak ifade etmek için karşılık gelen bir bilgi haritası da yaptılar. Ama hepsi Geleneksel Çince'dir. Web sitesi:

Bu kaynaklar mükemmeldir ve hepsi araştırma kurumları tarafından yıllarca süren sıkı çalışmalardan sonra inşa edilmiş ve el yapımıdır, bu nedenle kalite de yüksektir ve çoğu durumda ihtiyaçlarımızı karşılayabilir.

Peki wordnet aracılığıyla kelime anlamının gösterilmesiyle ilgili sorun nedir? 1. Güncellenmesi zordur. Sonuçta, bu insan gücü tarafından oluşturulmuştur, yeni sözcüklerle veya sözcüklerin yeni anlamlarıyla başa çıkamaz 2. Farklı sözcükler arasındaki benzerliği nicel olarak hesaplamak zordur

Bu nedenle, wordnet, bir kelimenin anlamına bir referans veya tamamlayıcı nitelikte bir "sözlük" olarak daha çok kullanılır ve genellikle mevcut NLP'nin birçok göreviyle baş edemez.

Bu yüzden başka temsil yöntemlerine ihtiyacımız var.

2. Tek sıcak temsil

Bir problemi incelemek istediğimizi varsayalım, söz konusu derlemede toplam 10.000 farklı kelime var. Örneğin, ilk harfe göre sıralayın: Daha sonra her kelime 10.000 boyutlu bir vektör olarak temsil edilebilir. Örneğin: "A" bir vektör olarak ifade edilebilir: "Aşk" şu şekilde ifade edilebilir: Son kelime "meslek" şu şekilde ifade edilebilir: Her kelimeye karşılık gelen vektörün yalnızca bir konumu 1 olduğundan, buna "bir sıcak kodlama ( tek sıcak) ". Açıkça söylemek gerekirse, bu vektör, külliyatımızdaki kelimenin bir dizinini temsil eder.

Bu yöntem çok popülerdir ve birçok makine öğrenimi uygulamasında kelimeler bu şekilde işlenir.

Ancak bununla ilgili en büyük sorun, herhangi iki farklı kelimenin vektörlerinin "ortogonal" olması ve iç çarpımın 0 olmasıdır. Bu durumda, çok benzer anlamlara sahip kelimeler bile tek sıcak kelimelerden türetilemez. Vektördeki bağlantılarına bakın. Dolayısıyla bu temsil yöntemi ile iki kelimenin benzerliğini ölçemiyoruz. Benzerlik hesaplanamaz ve birçok NLP görevi gerçekleştirilemez.

3. Word2Vector kelime vektör modeli

Yukarıdaki tek sıcak ifade aslında bir tür "kelime vektörü" dür, ancak kelime vektörü kelimenin indeksi tarafından belirlenir ve yalnızca indeks tarafından belirlenir, bu da kelimenin anlamını ifade edememe sorununa yol açar.

Bu nedenle, vektör kelimesiyle temsil edilen bilgiyi neden daha zengin yapmayalım? Örneğin, bazı boyutları tanımlayabilir ve ardından her boyut için bir kelime puanlayabiliriz, böyle bir kelime anlam bakımından zengin değil mi? Örneğin, "erkek", "dişi", "meyve", "ürün", "adres", bu boyutları tanımlıyoruz ve projenin birkaç kelimesi için kelime vektörünü tanımlıyoruz:

Yukarıdakiler rastgele derlediğim birkaç boyuttur, sadece bir örnek vermek gerekirse, bir kelimenin birden çok boyutta ifade edilmesine izin verebiliriz, bu boyuttaki sayı ne kadar büyükse, belirli özellikler o kadar çok temsil edilir. Bu yöntem, benzer anlamlara sahip kelimelerin benzer öznitelik değerlerine sahip olmasına izin verir ve bunlar arasındaki benzerlik, vektörler arasındaki mesafeyi hesaplamak için kosinüs benzerliği kullanmak gibi kolayca ifade edilebilir.

Bu, bir kelimenin anlamını çeşitli boyutlarda iyi ifade edebilmesi ve bir kelimenin anlamını olabildiğince çok ifade edebilmesi için iyi bir fikirdir.

Ama boyutları nasıl tanımlamalı?

Aslında mükemmel bir boyut tanımlamamız neredeyse imkansızdır. Bu kadar çok kelimeyle boyut hiç tanımlanamaz. Dahası, bu tanım, iyilikseverin iyilikseveri görmesi ve bilgeliğin bilgeliği görmesi ve her kişinin bir kelimenin niteliklerinin farklı bir tanımına sahip olmasıdır.

Şu anda, doğal olarak "derin öğrenme" yi düşüneceğiz.

Çünkü bir kelimenin niteliği (yani bahsettiğim boyut) bir kelimenin "özelliği" ile eşdeğerdir.Bir kelimenin niteliğini tanımlama süreci aslında "özellik mühendisliğidir". Özellik mühendisliğinin uygulanması zor olduğunda derin öğrenmedir. Zamanı geldi. Derin öğrenme modeline büyük miktarda metin besliyoruz ve ardından kelime vektörlerini öğrenmek için otomatik olarak eğitiyoruz.

Kelime vektörlerini öğrenmek için derin öğrenme yöntemlerinin nasıl kullanılacağını açıklayalım.

2. NASIL

Kelime vektörlerini "öğrenmek" için nasıl bir model oluşturabiliriz? Makine öğrenimi veya derin öğrenme deneyiminiz varsa, bilmelisiniz, en önemli şey amaç işlevini netleştirmek, yani hangi hedefin en büyük / minimum olduğunu belirlemek için modelin parametrelerini ayarlamamız gerekir.

Kelimelerin ifadesi ile ilgili olarak, bazı dilbilimciler "bir kelimenin anlamının, onunla birlikte görünen çevreleyen kelimelerle ifade edilmesi gerektiğini" öne sürdüler. Bu nedenle, bir kelimenin anlamı, kelimenin çeşitli bağlamlarından inşa edilmelidir. Dolayısıyla bir model oluşturmak için iki fikrimiz var: - bağlamın kelimelerini girin ve merkezi kelimenin ne olduğunu tahmin edin - merkezi kelimeyi girin ve bağlamın neye benzediğini tahmin edin

Aslında, daha sonra bahsedeceğimiz gibi, bunlar kelime vektörü eğitimi için iki temel modeldir: İlki CBOW ve ikincisi Skip-Gram (SG). Burada geçici olarak ikincisini, yani SG inşa etme yöntemini kullanıyoruz.

Bu nedenle, bir cümleye bir kelime girebilen ve diğer tüm kelimelerin kelime etrafında görünme olasılığını çıkarabilen bir sinir ağı modeli oluşturuyoruz. Başka bir deyişle, hem kelimenin yanındaki bağlamda hem de kelimeyle tamamen alakasız olan kelimelerin çıktısını alır. Orijinal külliyatta merkezi kelimeyi çevreleyen kelimelerin olasılıklarının çarpımı ne kadar büyük olursa o kadar iyi olacağını umuyoruz, çünkü bu ürün bu kelimelerin aynı anda görünme olasılığıdır.Maksimum olasılık fikrini kullanarak, bu olasılığın mümkün olduğu kadar büyük olmasını umuyoruz. . Bu ağın parametre matrisi aslında almak istediğimiz kelime vektörü olan girdi metninin özellikleridir. Bu nedenle, kelime vektörünü gradyan iniş yöntemiyle sürekli olarak güncelliyoruz, bu da olasılığı daha da büyütebilir ve sonunda iyi bir kelime vektörü seti elde edebilir.

Aşağıda açıklamak ve göstermek için bir resim çizin:

Külliyatımızdan rastgele bir cümle seçtiğimizi varsayalım. Ana kelimenin doğal olup olmadığını tahmin etmek istiyoruz, o zaman etrafında hangi kelime görünmeli? Başka bir deyişle, doğal kelimelerde başka kelimelerin görünme olasılığı nedir? Olasılık ne kadar büyükse, yakınlarda görünme olasılığı o kadar yüksektir. Ayrıca, "etrafta, yakınlarda" ile ne kastedilmektedir? Tanımlamak için sadece pencere kullanıyoruz.

Yani sinir ağı modelimiz şuna benziyor:

Not: Çıktımız, tüm kelimelerin çıktısının alınması olasılığıdır.Örneğin, külliyatımızda 10.000 farklı kelime varsa, buradaki çıktı 10.000 olacaktır. Ama biz daha çok, şekildeki "penceredeki kelime" olan yakınımızdaki kelimelerin olasılığıyla ilgileniyoruz.

Penceredeki kelimeler başlangıçta doğal bir dil kombinasyonudur, bu nedenle bu kelimelerin bir arada görünme olasılığı yüksek olmalıdır, bu nedenle olasılık çarpımı yüksek olmalıdır.

Bu, kelime vektörlerinin nasıl türetildiğine dair temel fikirdir. Özetle bu resim:

Elbette bu şematik diyagram sadece bir kelimeyi göstermektedir. Aslında, külliyatımızdaki tüm kelimeleri bir kez taramamız, "penceredeki olasılığın ürününü" hesaplamamız ve sonra onları toplamamız ve son olarak tüm olasılıkların toplamını olabildiğince büyük yapmamız gerekir.

Cs224n sınıfındaki örneği kullanarak: Derlemedeki tümceler:

Tek kelimeyle, kelime vektörlerini bulmanın temel fikrini bir cümlede özetleyin:

Bir külliyat oluşturmak için büyük bir metin bulun, bir pencere boyutu seçin, her kelimeyi çaprazlayın ve her kelimeyi sırayla sinir ağına girin. Kelime vektörü ağın bir parametresi olarak kullanılır ve ağ, diğer kelimelerin olasılığını verir. Tüm kelimelerin karşılık gelen pencere kelimelerinin koşullu olasılıklarının çarpımı elde edilir ve kelime vektörü parametreleri, bu olasılığın ürününü maksimize etmek için sürekli olarak ayarlanır, böylece son kelime vektörü elde edilir.

Şu anda aklıma bir cümle geldi: "Yeter artık!" Böylece bu makale birden durdu. Bir sonraki makale, kelime vektörleri ve bazı gelişmiş eğitim yöntemleri hakkında çok önemli bazı ayrıntıları ayrıntılı olarak açıklayacaktır.

postscript:

Aslında bu makale çok uzun sürmemiş olmasına rağmen N defa tekrar tekrar gözden geçirildi ve yazılması uzun zaman aldı. Dahası, aslında yaz tatilinde ilgili içeriği zaten inceledim ve ancak son zamanlarda yazdım, çünkü esas olarak "kelime vektörü neden böyle tasarlandı, model neden bu şekilde tasarlandı ve neden amaç işlevi bu?" Diye düşünüyordum. Çünkü cs224n kursundaki ifade, insanlara ders verirken "bu doğal" hissi uyandırsa da beni ikna edemedi. Wu Enda'nın derin öğrenme kursunda söylediği word2vector yöntemi cs224n'den çok farklı, bu da beni daha da çelişkili hale getiriyor. Bu nedenle, ikisinin yöntemlerini koordine etmek ve maliyet metninin fikirlerini özetlemek için çok zaman harcadım. "Kendini ikna etmenin" tek yolu bu.

Transfer: https://zhuanlan.zhihu.com/p/51040131 iyi adam, iyi makale, herkesle paylaşın

Bu yerel güç kaynağının görünümü çok tuhaftır ve geleneği bozduğu söylenir, ancak artık üretilmemektedir.
önceki
Redmi Note 5 bilgileri açığa çıktı, netizenler aşırı yüksek maliyet performansının gittiğini söylüyor
Sonraki
Makineler öğrenmez: word2vec hakkında bilmek istediğiniz her şey elle elde edilir
Renkli CGU 2018 savaşa gidiyor! E-spor büyük kahve + güzellik yorumu Gizemli Kahuang ilk kez ortaya çıktı
Pekin Halk Sanat Yetkilisi 2019 performans planını açıkladı: Gizli bir durumda olan bu yeni dizilerin hepsi parlak!
Makine öğrenmez: işe alım eşleştirmede yetenek bilincine sahip sinir ağının uygulaması ve gerçek mücadelesi
Geçmişte müzik dinleme eseri çok pahalıydı ve şimdi yalnızca elektronik israfa indirgenebilir.
Makineler öğrenmiyor: e-ticaret bilişsel zeka çağının temel taşı - Alibaba e-ticaret bilişsel haritası ortaya çıktı
Ortadan kaldırılıp e-atık haline gelmesine rağmen, Çin'in artık bunu yapamayacağını düşünüyor.
Geely Elektrikli Arabalar İstenen İsimler ve Netizenler Güçlerini Gösteriyor
Deri, uzun yıllar kullanılabilir! Apple iPhone7/7Plus cep telefonu kılıfı
Sahte donanım satın almayın, 180 yuan yeni Chiming P67 anakart arızası süper garip
Beklenenden daha ucuz! Xiaomi, yıllık amiral gemisi Xiaomi MIX2'yi tam ekranla resmen yayınladı!
Pazarlık da pratiktir! Apple iPhone7 / 7Plus cep telefonu kılıfları farklı fiyatlarla görüntüleniyor
To Top