EMNLP2017 Georgetown Üniversitesi NLTK Framework API: Zengin Dil Kaynakları için Keşif Tasarımı

EMNLP 2017 Sistem Gösterileri

NLTK FrameNet API'si:

Zengin Dil Kaynağına Sahip Keşfedilebilirlik İçin Tasarım

Georgetown Üniversitesi

Georgetown Üniversitesi

[Özet] NLTK paketine entegre edilmiş yeni bir Python API, FrameNet 1.7 kelime veritabanına erişim sağlar. Sözlük (çerçeve yapısı) ve açıklamalı cümleler program aracılığıyla işlenebilir veya etkileşimli bir Python komut istemiyle insan tarafından okunabilir bir ekranda göz atılabilir.

1. Giriş

Berkeley'in FrmeNet (bundan böyle FrameNet olarak anılacaktır) projesi (Baker ve diğerleri, 1998), on yıldan fazla bir süredir çağdaş İngilizcenin kelime dağarcığını çerçeve semantik teorisine kaydetmektedir (Fillmore, 1982). Ücretsiz olarak kullanılabilen ve bol miktarda dilbilimsel kaynak olarak FrameNet şu anda 1.000'den fazla anlamsal çerçeveyi, 10.000 sözcük anlamını ve külliyattan çıkarılan 100.000 sözcüksel açıklamayı kapsamaktadır. Bu kaynak, birçok doğal dil işleme araştırmasının temelini oluşturmuştur - en önemlisi, bu geleneksel anlamsal rol etiketi günümüzde de devam etmektedir (Gildea ve Jurafsky, 2002; Baker vd., 2007; Das vd., 2014; FitzGerald ve diğerleri, 2015; Roth ve Lapata, 2015, interalia).

Çerçeve ağlarının önemine rağmen, bilgi işlem kullanıcıları genellikle kendi özel XML formatlarının karmaşıklığından rahatsız olurlar. Kaynakların çoğunun web sitesinde (http: // framenet. İcsi.berkeley.edu/) taranabildiği göz önüne alındığında, bazı dil açıklamaları ve ek açıklamalar, gölgede kalan HTML veri görünümünde açıklanmaz. (Örneğin, bir FrameNet kullanıcısı kısa süre önce yazarlardan birine "Çerçeve-çerçeve ilişkisi bağımsız çerçeve öğeleri arasındaki eşlemeyi içeriyor mu" diye sordu. Bunlar doğrudur, ancak kullanıcının kafa karışıklığı anlaşılabilir çünkü bu eşlemeler değil Web sitesinin HTML çerçeve tanımı açıklanır. (Kullanıcılar bunu gördüklerini bilirlerse, görsel ilişkiyi bulmak için FrameGrapher aracını https://framenet.icsi.berkeley.edu/fndrupal/FrameGrapher kullanabilirler.) Alanla ilgilenmiyoruz, biz API'ler çerçevede gösterilmez, ancak ayrı bir çerçeve ilişki nesnesi veya fe_relation () yöntemi aracılığıyla erişilebilirler, bkz. Bölüm 4.4). Çerçeve verilerini okumak için kullanılan az sayıdaki açık kaynaklı API artık kullanılmıyor ve hiçbiri geniş çapta benimsenmiyor. [Not: Düşünüyoruz: github.com/dasmith/FrameNet-python (Python), nlp.stanford.edu/software/framenet.shtml (Java), github.com/FabianFriedrich/Text2Process/tree/master/src/de/ saar / coli / salsa / reiter / framenet (Java), github.com/GrammaticalFramework/gf-contrib/tree/master/framenet (Dilbilgisi Çerçevesi), son birkaç yılda güncellenmedi, bu nedenle son zamanlarda tamamen uyumlu olamayacakları görülüyor. Yayınlanan veriler]

FrameNet verilerini almak için yeni bir kullanıcı dostu Python API açıklıyoruz. Bu API, yakın zamanda piyasaya sürülen popüler NLTL paketine (Bird ve diğerleri, 2009) dahil edilmiştir ve FrameNet tarafından yayınlanan hemen hemen tüm bilgilere erişebilir.

2 Kurulum

NLTK için talimatları izleyin ntlk.org adresinde bulunabilir. NLTK çapraz platformdur ve Python2.7 ve Pyton3.x ortamlarını destekler.Anaconda ve EnthoughtCanopy'nin yayın sürümlerinde paketlenmiştir (https://www.continuum.io/downloads, https://store.enthought.com/downloads ) Veri bilimi teknolojisinin kullanımı için.

Çalışan bir NLTK kurulumunda (sürüm 3.2.2 veya üzeri), çerçeve ağ verilerini indirmek için yalnızca bir yöntem çağırmanız gerekir ( > > > Genellikle komut satırına Python yazarak çağrılan standart bir Python etkileşimli istemidir. Ardından, komut istemine Python kodunu girebilir ve değerlendirebilir / çalıştırabilirsiniz. Aşağıdaki örnekler, okuyucunun temel Python'a aşina olduğunu varsayar. Varsayılan olarak, 855MB veri sürümü kullanıcının ana dizinine kurulacaktır, ancak başka bir konum belirtebilirsiniz: ayrıntılar için bkz. Http://www.nltk.org/data.html. )

> > > ithalat nltk

> > > nltk.download ('framenet_v17')

Daha sonra, çerçeve modülü aşağıdaki şekilde yüklenir: (Kolaylık sağlamak için fn takma adı kullanılır)

> > > itibaren nltk.corpus ithalat framenet gibi fn

3 FrameNet'e Genel Bakış

FrameNet, çerçeve adı verilen kavramsal bir yapı etrafında düzenlenmiştir. Anlamsal çerçeve, genel, kültüre özgü, alana özgü veya alana özgü olabilen bir sahneyi, bir olayı, durumu veya başka bir sahneyi temsil eder. Çerçeve, katılımcı rollerini veya çerçeve unsurlarını (rolleri) tanımlar ve bunların ilişkileri, kelime girişlerini anlamak (bir miktar anlamıyla) için gereken kavramsal arka planı oluşturur. Fillmore tarafından sıklıkla alıntılanan örnekler şunları içerir:

  • Al, sat ve öde gibi fiiller ve alıcı, satıcı, fiyat ve satın alma gibi isimler ticari işlem senaryosunda (çerçeve) tanımlanır. Çerçevenin çekirdeği olarak çerçeve öğesi FE'ler - yukarıda bahsedilen sözlük girişinde açıkça belirtilmiş olabilir veya olmayabilir - alıcı, satıcı, satıcı tarafından satılan mallar ve alıcı tarafından ödenen ödemedir.
  • İntikam kavramı (İNTİKAM) - intikam, intikam, intikam, intikam, grev ve geri ödeme gibi kelime ögelerini içerir. Temelde, bir suçlunun mağdura zarar verdiğini varsayar. Bu nedenle bir intikamcı ( Mağdurdur ya da mağdur değildir) suçluya bir tür ceza vermeye çalışır.
  • Hipotenüs, bir dik üçgenin geometrik konsepti için bir ön koşuldur, yayalar ise caddede araç olduğunu ve trafik olmadığını varsayar (her iki çerçeve de şu anda FrameNet'te mevcut değildir)

Çerçevedeki çerçeve öğeleri, çerçevedeki işlevlerinin İngilizce açıklamalarını resmi olarak listeler. Çerçeve, bir miras hiyerarşisi (örneğin, intikam özel bir olaydır) ve diğer çerçeve ilişkileri türlerini içeren bir ağ içinde düzenlenir. Bir çerçevede listelenen sözcüksel öğelere sözcük birimleri (sözcük birimleri, LU'lar) denir. FrameNet mantıksal birimlerinin ayrıntılı kataloğu, içerik ve işlev sözcüklerini içerir. Resmi olarak, mantıksal bir birim LU bir çerçevenin lemalarına bağlıdır (lemmanın adı fonetik bir etiket içerir. Lemma, surrender.v gibi bir sözcükten veya giveup.v gibi birden çok sözcükten oluşabilir) .

4 API'ye genel bakış

4.1 Tasarım ilkeleri

API tarafından dikkate alınan tasarım hedefleri aşağıdaki gibidir:

basit. İster tüm girişleri tarıyor ister belirli bir veritabanında önemli nesneleri arıyor (esas olarak çerçeveler, kelime birimleri ve notlar), erişimi kolay olmalıdır. API'yi karıştırmak için çok fazla yöntem kullanmaktan kaçınmak için, veritabanındaki diğer bilgilere nesne özellikleri aracılığıyla erişilmelidir. API'nin help () yönteminin çağrılması, veritabanındaki bilgilere erişmek için kullanılan ana yöntemlerin bir özetini yazdıracaktır.

Keşfedilebilirlik. Veritabanının birçok detayı karmaşıktır. Bu API, Python etkileşimli komut istemiyle veritabanındaki nesnelerin içeriğine göz atmayı kolaylaştırır. Bunu başarmanın ana yolu, Şekil 1'deki çerçeve ekranı gibi basılı nesnelerin mükemmel bir şekilde sergilenmesidir (bkz. 4.3). Bu görüntü, acemi kullanıcıların bilinmeyen bir nesne özelliğine nasıl erişebileceğini açıkça göstermektedir.

Bize göre bu yaklaşım, bu API'yi diğer API'lerden ayırmaktadır. Karmaşık yapılandırılmış veriler için, belgeye başvurmadan diğer bazı NLTK API'lerinin yapısına göz atmak zordur.

Talep üzerine yükleyin. Veritabanı binlerce XML dosyasında depolanır.Bu dosyalar, çerçeve dosyası indeks listelerini, çerçeve ilişkilerini, kelime birimlerini ve tam metin belgelerini, ayrıca tüm çerçevelerin tek bir dosyasını, kelime birimlerini ve tam metin belgelerini içerir. Açıldıktan sonra FrameNet 1.7 sürümü 855M'dir. Tüm bu dosyaların, özellikle de bütünlük ek açıklamalarının yüklenmesi yavaştır, bellek yoğun ve birçok yönden gereksizdir. Bu nedenle, API, tembel veri yapıları kullanılarak dikkatlice tasarlanmıştır ve yalnızca gerekli XML dosyalarını yükler. Yüklemeden sonra, tüm veriler daha sonra hızlı erişim için bellekte önbelleğe alınacaktır.

Şekil 1 Revenge çerçevesinin metin görüntüsü. Köşeli parantez içindeki öznitelik adı çerçeve içeriğini elde etmek için kullanılır ve çerçeve kimliği, sözcük birimi LU ve çerçeve öğesi FE parantez içindedir.

4.2 Lexicon Erişim Yöntemleri sözlüğe erişim yöntemi

Sözlükteki bilgileri bulmanın ana yolları şunlardır:

Bileşik adı (solda) kullanma yöntemi, giriş adıyla eşleşecek normal bir ifade modeli kullanarak sözlüğü aramaktır. Ek olarak, lus () ve fes () sonuçları belirli bir çerçeveyle sınırlar. Sonuç, 0 veya daha fazla öğeden oluşan bir listedir. Hiçbir parametre sağlanmazsa, sözlükteki tüm girişler döndürülür. Çerçeve adı desenine göre aramaya bir örnek (burada (? İ) deseni büyük / küçük harf duyarlı hale getirir) aşağıdaki gibidir:

> > > fn.frames ('(? i) kreatif')

Benzer şekilde, LU adı kalıbına göre arama yapın - .v sonekinin tüm fiil kelime birimleri için kullanıldığını unutmayın:

> > > fn.lus (r '. + en \ .v')

Frame () ve lu () yöntemleri, bilinen bir öğeyi almak için adını veya kimliğini kullanır. Var olmayan bir girişi almaya çalışmak, FramenetError türünde bir istisnayı tetikleyecektir.

Çerçeve arama için iki ek yöntem vardır: frame_ids_and_names (name), çerçeve kimliğinden isme eşlemeyi almaktır, frames_by_lemma (ad), verilen ad kalıbına ait kelime birimiyle eşleşen tüm çerçeveleri almaktır.

Şekil 2 Alfabetik sırayla bir cümle görüntüsü. Birleştirilen bilgiler metin, hedef, çerçeve öğesi ve isim katmanına mükemmel bir şekilde yazdırılır ve görsel çerçeve etiketi alt kısma yerleştirilir. Görselleştirmedeki kısaltmalar, alt kısımda parantez içinde genişletilmiştir ("supp", "destek" kelimesinin kısaltmasıdır). "DNI", "kesin boş somutlaştırma" çerçeve net terimidir; GF, "gramer işlevi" anlamına gelir ve PT, "deyim türü" anlamına gelir.

4.3 Veritabanı nesneleri

Veritabanı çerçevesindeki tüm yapılandırılmış nesneler - çerçeveler, sözcük birimleri, çerçeve öğeleri, vb. - AttrDict veri yapıları olarak yüklenir. Her bir AttrDict örneği, dize anahtarlarından değerlere, dizeler, sayılar veya yapılandırılmış nesneler olabilen bir eşlemedir. Buna denir çünkü AttrDict anahtarlara nitelik olarak erişime izin verir:

> > > f = fn.frame ('İntikam')

> > > f.keys ()

dict_keys ()

> > > f.name

'İntikam'

> > > f.ID

En önemli yapılandırılmış nesneler için API, nesne içeriğini insan tarafından okunabilir bir şekilde düzenleyen bir metin görüntüsü sağlar. Şekil 1, etkileşimli bilgi isteminde fn.frame ("Revenge") yazarak elde edilebilen Revenge çerçevesinin görüntüsünü göstermektedir. Öznitelik adı, sözcük birimi LU'nun adından nesneye bir eşleme olan lexUnit gibi köşeli parantez içinde gösterilir. Bu nedenle, önceki kod listesinden sonra, f.lexUnit, çerçevede kendi özniteliklerine ve metin görüntüsüne sahip bir sözcüksel birim LU nesnesine erişecektir.

4.4 Gelişmiş kelime erişimi

Çerçeve ilişkisi Ayrıntılı çerçeve kataloğu, çeşitli çerçeveler arasındaki ilişki aracılığıyla anlamsal ağda düzenlenir. Örneğin, Revenge çerçevesi bir çerçeve ilişkisini içerir: kalıtım yoluyla, Şekil 1'de gösterildiği gibi, ödüller ve cezaların REWARDS_AND_PUNISHMENTS'in daha genel çerçevesiyle ilgilidir. Buna bağlı olarak, ödüller ve cezalar, diğer çerçevelerle birlikte mirası da içerir. Her çerçeve ilişkisi, iki çerçevenin çerçeve öğeleri arasında bağlayıcı bir ilişki kurar.

Çerçeve nesnesinin frameRelations özelliğine ek olarak, çerçeve ilişkilerine çerçeve ilişkileri ana yöntemi (çerçeve, çerçeve2, tür) aracılığıyla göz atılabilir, burada isteğe bağlı parametreler bir veya iki çerçeveyi ve bu ilişkiyi filtrelemeye izin verir. Çerçeve ilişkisi nesnesinde, eşleştirilmiş çerçeve elemanı ilişkisi ferelatnite niteliğinde saklanır. Ana yöntem fe_relations (), çerçeve elemanı bağlantılarına doğrudan erişim sağlar. Kalıtım, nedensellik, kaynak, alt çerçeve, perspektif_on ve diğer türler dahil olmak üzere ayrıntılı ilişki türleri kataloğu, ana yöntem frame_relation_types () aracılığıyla elde edilebilir.

Anlamsal tip Bunların tümü, çerçeve öğeleri, çerçeveler ve sözcüksel birimler LU için ek anlamsal kategoriler sağlar. Çerçeve elemanları için seçim kısıtlamasını işaretlerler (örneğin: f.FE.semType algısal tip sağlar). Ana yöntem propagate_semtypes (), çerçeve öğeleri arasındaki ilişkinin muhakeme kuralına göre çerçeve öğesinin anlamsal tür etiketini diğer çerçeve öğelerine açıkça işaretler. Çerçeve öğesinin semtiplerini kontrol etmeden önce çağrılmalıdır (çalıştırılması birkaç saniye sürdüğü için varsayılan olarak çağrılmaz).

Anlamsal türlerin kendileri veritabanı nesneleridir ve aralarındaki miras hiyerarşisine göre düzenlenirler. Ana yöntem semtypes (), tüm anlamsal türlerin bir listesini döndürür; ana yöntem semtype (), belirtilen türü ada, kimliğe veya kısaltmaya göre arar; ana yöntem semtype_inherits (), iki anlamsal türün bir alt tür-üst tür ilişkisine sahip olup olmadığını kontrol eder.

4.5 Derlem erişimi

Bir cümlenin çerçeve anlamsal ek açıklamasına, sözlü birim nesnesinin örnek ve alt kütüphane öznitelikleri aracılığıyla veya aşağıdaki ana yöntemlerle erişilebilir:

ek açıklamalar (luname, exemplars, full_text) sents () exemplars (luname) ft_sents (docname) doc (id) docs (name)

annotations (), çerçeve açıklama kümelerinin bir listesini döndürür. Her bir açıklama kümesi, hedef çerçeveyi çağrıştıran hedefi (kelime bölütleme), çağrıştırdığı çerçevedeki kelime birimini, cümle boyunca genel çerçeve unsurlarını ve boş anma durumundan (çerçeve içinde) oluşur. Anlambilimde, kamuya açık olmayan ancak kavramsal olarak gerekli olan temel çerçeve unsurlarına örtük veya boş örnekleme denir (Fillmore ve Baker, 2009)). Kullanıcılar diledikleri zaman kelime birimi adına göre açıklama türünü filtreleyebilir veya sınırlayabilir (lütfen sonraki paragrafa bakın): Örnekler ve tam metin varsayılan olarak doğrudur. XML'de, ek açıklamaların bileşen ayarları birkaç açıklama katmanında saklanır: bir katman (bazen birden fazla) çerçeve öğeleri ve diğer gramer bilgileri (gramer işlevleri ve her çerçeve öğesi, fiiller veya çerçeve uyandırmayla ilgili destekleyici ifade türleri dahil) Etiket).

Etiket kümesi cümlelere göre düzenlenmiştir. Corpus cümleleri iki ek açıklamada görünür: exemplars (), sözlük ek açıklamalarıyla cümleleri alır (hedeflerden biri sözcük birimi ek açıklaması örneği olarak seçilir); isteğe bağlı parametreler bir dizi sözcük birimini filtrelemeye izin verir. fts_sents () Tam metin ek açıklaması için seçilen belgelerden cümleleri alın (belgede mümkün olduğunca çok hedefi işaretleyin); isteğe bağlı parametreler belge adına göre filtrelemeye izin verir. sents () tüm cümleleri taramak için kullanılabilir. Teknik olarak konuşursak, her cümle nesnesi birden fazla açıklama kümesi içerir: ilki, bazı durumlarda varlık etiketleri olarak adlandırılan konuşma bölümü etiketleri de dahil olmak üzere cümle düzeyinde açıklamalardır; sonraki açıklama kümeleri çerçeve ek açıklaması için kullanılır. Sözlük ek açıklamasının yalnızca bir çerçeve açıklama kümesi olduğundan, cümlelerin görüntüsünde görülebilir: Şekil 2, f.lexUnit.exemplars'ın görüntüsünü gösterir. Tam metin açıklamaları yalnızca hedef bilgileri görüntüler ve kullanıcıların Şekil 3'te gösterildiği gibi her bir açıklama kümesini görüntülemek için ayrıntıya inmesine olanak tanır.

Şekil 3 Bir cümlenin tam metin açıklaması. Cümle nesnesi gönderilen değişkenin altında saklanıyorsa, Revenge ile ilgili ek açıklaması sent.annotationset aracılığıyla elde edilebilir (aşağıdaki soru işaretini arayın mı? Arama çerçevesinde karşılık gelen bir kelime birimi olmadığını gösterir; bazı durumlarda tam metin etiketleyici Mevcut çerçevelere uygun olarak işaretlenmiş ancak tanımlanmamış kelime birimleri.Ayrıca, bazı tam metin açıklama kümeleri, çerçeve öğeleri olmayan bir sözcük birimini işaretler - bunlar kullanılır! Ekran, UNANN açıklama kümesinin durum kodunu yansıtmak için)

Tam metin açıklamalı cümlelere göz atmak için doc () ve docs () yöntemlerini kullanabilirsiniz. Belge ekranı, cümleleri sayısal uzaklıklarla listeler.

Aşık mısın? Aşk duvarının altında, Wang Shuang elleriyle yeni yılı kutluyor
önceki
Bugünün temel sesi | ALS yavaş yavaş insanların müjdesini donduruyor! Yapay zekanın sizi nasıl şımarttığını görüyor musunuz?
Sonraki
Erkekler Basketbol Dünya Kupası'na odaklanıyor 2019 Basketbol Dünya Kupası Organizasyon Komitesi'nin Pekin'de İkinci Halk Toplantısı
OnePlus 6T McLaren özelleştirilmiş versiyonu kutudan çıkar çıkmaz: arkada bir ışık
Bugünün Temel Sesi | Yapay zeka neden insanlardan daha etik olmalıdır?
O zamanlar rötuş sonrası biriydi ve fotoğrafları güzelleştirmek için işçiliğine güvendi.
Snapdragon 835 ne kadar güçlü? Koşu skoru size ...
OnePlus 6T McLaren özelleştirilmiş sürümü yayınlandı: Çözgü flaş şarjı 30 / 10G bellek 4599 yuan
PLUS artı vücut! Ayakta kalmak için şok olan Honda Lingpai soğuk ter içinde
Yapay Zekanın geleceği - "beyin benzeri zeka" nerede?
Core Voice Today | AI + canlı yayın? Bu kombinasyon sizi her zaman şaşırtır!
Grip mevsimi burada! Pekin'deki 38 TCM tıp kurumu pediatrik influenza masaları kurdu (liste ektedir)
Sevimlilik, seksi karşısında değersizdir! Casus fotoğrafları olmayan yeni Volkswagen POLO
Karşılaşacağınız "Yapay Zeka Sınıfı" (kod makalesi) Makine öğrenimi "çukurlarında" özellik seçimi nasıl yapılır
To Top