Yazarlar:
(1) Kexun Zhang, UC Santa Barbara ve Eşit katkı;
(2) Hongqiao Chen, Northwood Lisesi ve Eşit katkı;
(3) Lei Li, Carnegie Mellon Üniversitesi;
(4) William Yang Wang, UC Santa Barbara.
Sözdizimsel olarak doğru bir araç çağrısının mevcut bir araç adına başvurması ve türe uygun argümanları iletmesi gerekir. Sonlu durum makinesi (FSM) kullanarak bir araç çağrısının sözdizimini doğrulamanın kolay olduğu gerçeğinden hareketle, bir FSM tarafından yönlendirilen kısıtlı bir kod çözme algoritması olan TOOLDEC'i öneriyoruz. Her kod çözme adımı sırasında model, yalnızca sözdizimsel olarak doğru belirteçler içeren sözcük dağarcığının bir alt kümesinden örnekler alır. Belirteç alt kümelerini belirten FSM, araç belgelerinden oluşturulabilir. Örneğin Şekil 2'de add, exp, square ve sqrt fonksiyonları için bir FSM oluşturulmuştur. Tablo 2, TOOLDEC'in “karenin kenarı 5'tir, alanı nedir?” sorusuna nasıl cevap verdiğini göstermektedir. FSM'yi kullanıyor. TOOLDEC, FSM'nin rehberliğiyle aşağıdaki hedeflere ulaşır:
• Modları Değiştirme. Model herhangi bir metin oluşturmakta serbest olduğunda "metin modu" ve model yalnızca geçerli araç çağrıları oluşturabildiğinde "araç modu" arasında geçiş yapın.
• Araç Adlarının Oluşturulması. Bir takım çağrısının başlangıcında, önceden tanımlanmış bir takım listesinden yalnızca doğru mevcut takım adlarını oluşturun.
• Tartışmaları Aktarmak. Araca yalnızca türe uygun bağımsız değişkenleri iletin.
TOOLDEC, sonlu durum makinesi (FSM) tarafından yönlendirilir. Bir FSM, bir S sonlu durum kümesi, bir V alfabesi, bir g : S ×V → S geçiş fonksiyonu, bir s0 başlangıç durumu ve bir diziden oluşan 5'li bir gruptur (S, V, g, s0, R). R durumlarını kabul etmek. Bizim durumumuzda S ve g, araç imzasından oluşturulmuştur. V, dil modelinin belirteç sözlüğüdür. R, LM'nin görevi tamamladığını belirleyebilen '' gibi önceden tanımlanmış belirteçlere karşılık gelir.
Her kod çözme adımında (t), TOOLDEC mevcut durumu (s) korur. Yalnızca FSM tarafından izin verilen jetonları, yani g(s, ·)'nin tanımlandığı jetonları üretebilir. Bunlar
Trie oluşturmak için tüm dizeleri tek tek içine ekliyoruz. Bir diziyi bir trie'ye eklemek, kökten dize tarafından oluşturulan yola doğru gitmek ve yoldaki bir sonraki adım mevcut olmadığında yeni düğümler oluşturmak anlamına gelir. Örneğin, Şekil 3'te trie'ye exp10 ve genişletme gibi iki araç adının daha nasıl eklenebileceğini gösteriyoruz.
Trie yapısının tek bir varsayıma bağlı olduğunu unutmayın: hiçbir araç aynı ada sahip değildir. Bu makul bir varsayım olsa da gerçek uygulamalarda istisnalar olabilir. Bu durumda, araç adlarını, belirsizliği ortadan kaldırmak amacıyla daha fazla ayrıntı içerecek şekilde yeniden yazabiliriz. Soyut ve anlaşılması zor araç adlarının yeniden yazılması, dil modelinin bunları ada göre seçmesini de kolaylaştırabilir.
Sözdizimsel Olarak Geçerli Araç Bağımsız Değişkenleri Oluşturma. Araç argümanlarının belirli türleri vardır. Bir programdaki argümanlar gibi, belirli gramer kurallarına uymaları gerekir. Bu kurallar sonlu durum makineleri tarafından belirlenebilir. Örneğin, Şekil 2'deki "IntFSM" yalnızca tamsayı değişmezlerini kabul eden sonlu durumlu bir makineyi göstermektedir. Bir takımın tüm argümanları için, karşılık gelen FSM'lerini birlikte zincirleriz ve takım adına karşılık gelen son durumu, bu FSM zincirinin başlangıç durumu olarak kullanırız. Pratikte bu FSM'yi açıkça oluşturmanın gerekli olmadığını unutmayın. Geçerli sonraki belirteçler kümesini söyleyen herhangi bir dilbilgisi denetleyicisi yeterlidir.
Bu makale arxiv'de CC 4.0 DEED lisansı altında mevcuttur .