Meta verilere sahip metin belgelerine nasıl açıklama eklenir?


18

Çok sayıda metin belgesine sahip olmak (doğal dilde, yapılandırılmamış), bazı semantik meta verilerle açıklama eklemenin olası yolları nelerdir? Örneğin, kısa bir belge düşünün:

I saw the company's manager last day.

Ondan bilgi alabilmek için, daha az belirsiz olması için ek verilerle açıklanması gerekir. Bu tür meta verileri bulma süreci söz konusu değildir, bu yüzden manuel olarak yapıldığını varsayın. Soru, bu verilerin daha ileri analizlerin daha rahat / verimli yapılabileceği şekilde nasıl saklanacağıdır?

Olası bir yaklaşım XML etiketlerini kullanmaktır (aşağıya bakın), ancak çok ayrıntılı görünüyor ve belki de bu tür meta verileri metin belgelerinde depolamak için daha iyi yaklaşımlar / yönergeler var.

<Person name="John">I</Person> saw the <Organization name="ACME">company</Organization>'s
manager <Time value="2014-5-29">last day</Time>.

SGML'nin ana amaçlarından biri (aynı şey, yavruları için de geçerlidir, XML) metin belgelerini (POS ve semantik etiketler) etiketlemek için araçlar sağlamaktı .
Geyik Avcısı

Ne tür meta veriler eklemek istediğiniz konusunda daha spesifik / kısıtlayıcı olabilir misiniz? İki örneğinizle, XML etiketleriyle aynı genel ifadeye sahip daha az ayrıntılı bir yol olduğundan şüpheliyim.
ojdo

@ojdo Meta verilerin çoğu ya belirsizleştirme (göreceli zamanlar gibi) ya da özel varlıkları (yani FK'ler) belirtmektir.
Amir Ali Akbari

2
Geçmişte brat.nlplab.org kullanmıştım . Birçok farklı ek açıklama türü için hoş bir arayüz var. Ek açıklamalar, ayrılan kelimelerin ve bunların belgedeki konumlarının bir listesi olan ayrı bir .annot dosyasında saklanır.
user1893354

@ user1893354 Çok yardımcı! Özellikle tarafından kullanılan " velet standoff formatı " benim ihtiyaçlarına çok uygun görünüyor. İsterseniz bir cevap göndermenizi öneririm.
Amir Ali Akbari

Yanıtlar:


15

Şahsen, hem NLP alanına özgü olmayan hem de bu meta veri seviyesinin ötesine geçmeye başladığınızda bile hala bir araç olarak kullanılabilecek kadar genel bir şey kullanmayı savunacağım. Özellikle geliştirme ortamından bağımsız olarak kullanılabilecek bir format seçtim ve eğer alakalı olursa bazı temel yapıları koruyabilecek bir format seçmeliyim (tokenizasyon gibi)

Garip gelebilir, ama dürüstçe öneririm JSON. Son derece iyi desteklenir, birçok yapıyı destekler ve yeterince güçlü olmadığı için hareket etmeniz gerekmeyecek kadar esnektir. Örneğin, böyle bir şey:

{'text': 'I saw the company's manager last day.", {'Person': [{'name': 'John'}, {'indices': [0:1]}, etc...]}

Burada NLP'ye özgü biçimlere göre elde ettiğiniz en büyük avantaj JSON, herhangi bir ortamda ayrıştırılabilmesidir ve muhtemelen biçiminizi yine de düzenlemeniz gerekeceğinden, JSON size kısa bir mesafe sağlayan çok basit düzenlemelere katkıda bulunur. diğer biçimlere.

İsterseniz belirteç bilgilerini örtük olarak da saklayabilirsiniz:

{"text": ["I", "saw", "the", "company's", "manager", "last", "day."]}

DÜZENLEME: Meta verilerin eşleştirilmesini netleştirmek için oldukça açık, ancak işte bir örnek:

{'body': '<some_text>',
 'metadata': 
  {'<entity>':
    {'<attribute>': '<value>',
     'location': [<start_index>, <end_index>]
    }
  }
}

Umarım yardımcı olur, başka sorunuz varsa bize bildirin.


Bir web geliştiricisi olan JSON benim için tamamen makul görünüyor, ancak kelimelerin varlıkları tam olarak eşleme biçimini ayrıntılı olarak açıklayabilir misiniz?
Amir Ali Akbari

@AmirAliAkbari Daha fazla ayrıntı eklemek için cevabı güncellendi.
indico

7

Genel olarak, etiketleri bu şekilde etiketlemek için XML etiketlerini kullanmak istemezsiniz, çünkü etiketler çakışabilir.

UIMA , GATE ve benzeri NLP çerçeveleri etiketleri metinden ayrı gösterir. Gibi Her bir etiket, Person, ACME, Johnvb etiketi başlar o konumda ve biter o pozisyonu olarak saklanır. Dolayısıyla, etiket için ACME, bir konum 11'i başlatmak ve konum 17'de bitmek üzere saklanır.


7

Yumurcak açıklama aracı benim yorum başına olarak sizin için yararlı olabilir. Birçoğunu denedim ve bulduğum en iyisi bu. Güzel bir kullanıcı arayüzüne sahiptir ve farklı ek açıklama türlerini destekleyebilir. Ek açıklamalar, her ek açıklamayı ve orijinal belge içindeki konumunu içeren ayrı bir .annot dosyasında saklanır. Ancak bir uyarı kelimesi, eğer sonuçta Stanford NER aracı gibi bir sınıflandırıcıya ek açıklamaları beslemek istiyorsanız, verileri kabul edeceği bir biçime almak için bazı manipülasyonlar yapmanız gerekecektir.


1

Var olan tüm verileri tanımlamak çok zor bir iştir, ancak bir veri modeli kullanabiliriz: http://schema.org/ , burada bilginin yapısal türleri nelerdir. Önceki uygulama MarkUp teknolojisini uygulamak için hedeflenmişti, bu yüzden göreviniz için yararlı olabilir gibi görünüyor.

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.