Chomsky normal form yöntemi: CYK ayrıştırıcı performans sonuçları?


9

Grafik ayrıştırıcılar Chomsky normal formuna veya doğrudan üretim kurallarına dayalı olarak uygulanabilir. Şimdilik Chomsky normal formunu kullanan bir CYK grafik ayrıştırıcısı olduğunu varsayalım. İkilleştirme benzersiz olarak tanımlanmamıştır. Bu CYK grafik ayrıştırmasının performansını etkiler mi? Bu bir CYK grafik ayrıştırıcısının performansını artırmak için kullanılabilir mi?


Yaklaşımlar aynı boyutta gramerler yaratır, değil mi? CYK her zaman tüm tabloyu doldurur, böylece sadece "Montaj kuralı var mı?" Bu nedenle, sadece kural sayısının dilbilgisi yapısına değil, bir etkiye sahip olmasını beklerdim.
Raphael

İkilileştirme için kullanılan yöntem, CYK performansını etkileyen gramer boyutunu da etkiler: informatica-didactica.de/cmsmadesimple/… , CNF'ye bazı alternatifleri tartışıyor
Max

Yanıtlar:


6

Açık cevap, temel karmaşıklığın değişemeyeceği olsa da, gerçekten karşılaşacağınız dizeleri ayrıştırmak için daha iyi veya daha kötü algoritmalar olabilir. Bununla birlikte, mesele, bireysel dilbilgisi yapımlarının (söz konusu A, B ve C'ler) göreceli sıklığı ve bir ikilemenin diğerine karşı üretebileceği kullanılmayan çıkmaz ayrıştırmalarla ilgili bir sorun gibi görünmektedir .

I arama biraz buldum ile CKY Ayrıştırma için daha iyi Binarization kesin bunu sonuçlandırmak görünüyor (Song Ding ve Lin, 2008 EMNLP) olabilir aslında beklemek dizelerine "daha iyi" veya "kötü" ikili hale göreli almak ayrıştırmak zorunda. Pratikte en aza indirmeyi umduğu “çıkmaz ayrıştırmalar” için isimleri eksik bileşenler gibi görünüyor ve ilk sayfada iyi bir örnek var.


Yapımları içeren dilbilgisini düşünün (S -> ABC) (T -> ABD). "BC" her zaman "A" harfinden önce gelirse, ancak "AB" yi bazen "C" takip etmezse, B ve C'yi birleştirirseniz daha az çıkmaz olur ve göreceli frekans önemsizdir. Eğer "rastgele" ve "çok" hakkındaki düşünceniz kelimeler rastgele görünüyorsa mantıklıdır, ama bence Song, Ding ve Lin'in yaptığı şey ngram frekansından faydalanmaktır ki bu biraz daha karmaşıktır. Ayrıca benim örneğimde yine de paylaşımdan yararlanarak "AB" ikilemini kazanabileceğinizi gösteriyorlar!
Rob Simmons

4

Aslında, Chomsky normal formunun (CNF) CYK'yi çalıştırmasına gerek yoktur, sadece binarizasyon. Binarizasyon, ayrışmanın kübik karmaşıklığını korumak için gereklidir, ancak yalnızca terminal olmayanlar (NT) açısından gereklidir. Ancak, sadece 2 terminal olmayan ve bazı terminalleri içeren kurallarınız varsa, CYK algoritması programlamak ve açıklamak daha karmaşık hale gelir.

Söylediğiniz gibi, ikilik yapmanın birçok yolu var. Bazıları diğerlerinden daha küçük gramerler verecektir. Örneğin

X -> B C D
Y -> B C E 

olarak ikilileştirilebilir

X -> Z D
Y -> Z E
Z -> B C

böylece bir kuralı çarpanlara ayırma ile kaydetme, bu hesaplamadan ve sonuç büyüklüğünden tasarruf edebilir.

Ancak diğer kurallarla, kuralların başlangıcından ziyade sonunu çarpanlarına ayırmak isteyebilirsiniz.

Rob Simmons'ın cevabından alıntı yapılan Song, Ding ve Lin'in çalışmalarına aşina değilim . Fikir ilginç ama hesaplamayı optimize etmenin diğer yollarıyla ne kadar etkili olabileceğini merak ediyorum. Çok korkmuyorum.

Mesele şu ki, sorunların sadece saf bir CKY algoritması ile ilgili analizi biraz akademik ama maliyetli bir egzersiz gibi görünmektedir, çünkü çıkmaz çözümlerin ortadan kaldırılmasını önemli ölçüde artırabilecek başka optimizasyon türleri vardır.

CYK, görünüşe göre aynı dinamik programlama modeline dayanan bir algoritma ailesindeki daha basit varyasyonlardan sadece bir tanesidir. Ben söylüyorum görünüşte bu algoritmaların en basit versiyonu dinamik programlama olarak bilinmediği için, ancak çapraz ürün olarak. 1995 yılında Lang tarafından belirtildiği gibi Bar Hillel, Perles ve Shamir (1961) nedeniyle CF dilbilgisi F dilinin ve FSA A.'nın normal dilinin kesişimini oluşturan bir CF dilbilgisi G'nin eski yapımıdır .

Tüm grafik ayrıştırıcısı veya dinamik programlamaya dayalı genel CF ayrıştırıcıları, bu çapraz ürün yapısının "optimize edilmiş" varyantı olarak görülebilir; optimizasyon esas olarak ayrıştırıcının işe yaramaz hesaplamalarından kaçınmak için kullanılır. Ancak sorun, işe yaramaz hesaplamadan kaçınmak, daha kötü olabilecek yararlı kopyaların çoğaltılmasına neden olabileceğinden incedir.

Aşağıdan yukarıya doğru olan CKY algoritması, dilbilgisinin aksiyomundan türeyemeyen kısmi ayrıştırmaların işe yaramaz hesaplamaları üretir.

GLR ayrıştırıcısı gibi algoritmalar (kusurlu sürüm yayınlanmış olsa da, daha iyi bilinenlerden birini adlandırmak için), muhtemelen maliyetsiz, bu kadar işe yaramaz hesaplamayı önleyecek bazı yukarıdan aşağı bilgilere sahiptir. Ve işe yaramaz hesaplamalardan tasarruf etmek için farklı davranışlara sahip birçok varyant var.

Bu optimizasyon stratejileri ile ikililaştırma stratejisinin analiz edilmesi gerekmektedir. Neyin küçük bir sorun olabileceğini optimize etmenin ve daha güçlü teknikleri görmezden gelmenin anlamı nedir?

Ayrıştırma işleminin optimizasyonu aynı zamanda elde edilen ayrıştırma yapısının "tüm olasılıkları ayrıştırmalarını temsil eden" kalitesine "bağlıdır ve sıklıkla (paylaşımlı) ayrıştırma ormanı olarak adlandırılır. Bunu başka bir cevapta tartışıyorum .

Bu konuların bazıları literatürde tartışılmıştır. Örneğin, Billot ve Lang tarafından ayrıştırma stratejileri açısından ikilemenin bazı yönlerini analiz ederler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.