Named Entity Recognition (Varlık İsmi Tanıma)

Source: Deep Learning on Medium


Varlık İsmi Tanıma kişi, yer, organizasyon gibi önceden tanımlanmış kategorilerin metin dokömünları üzerinden çıkarılma işlemidir. Bilgi çıkarımının(Information Extraction) bir alt dalı olup makine çevirlerinden tutun da duygu analizine kadar birçok Doğal Dil İşleme probleminde kullanılmaktadır.

Tanımı ilk olarak 1995 yılında MUC-6 (Message Understanding Conference) konferansında yapılmıştır. ENAMEX, TIMEX ve NUMEX olmak üzere 3 temel kategoride tanımlamalar yapılmaktadır.

  • Enamex: Kişi, yer, organizasyon gibi ifaedeleri
  • Numex: Parasal ve yüzdesel ifadeleri
  • Timex: Gün ve tarih gibi zamansal ifadeleri tanımlamak için kullanılmaktadır.

İngilizce dilini işlemek için geliştirilmiş olan spacy kütüphanesinde kategoriler daha detaylı olarak yer verilmektedir.

Varlık İsmi Kategorileri

Veri Etiketleme Formatı

Raw, IOB, IOB2, BILOU gibi farklı veri etiketleme formatları bulunmaktadır. Aşağıda sembollerin açıklaması verilmiştir.

B → Bir varlık isminin başladığının gösterir.
I → Varlık isminin devam ettiğini gösterir.
L → Varlık isminin son kelimesi olduğunu gösteriri.
O → Herhangibir kategoriye ait olmayan varlık isimleri için kullanılır.
U → Tek kelimelik varlık isimlerini tanımlamak için kullanılır.

Aşağıdaki tabloda örnek etiketli veri bulunmaktadır. Veriseti arayanlar için CoNLL-2003, OntoNote5 verisetlerini inceleyebilirler.

IOB Standartına Göre Örnek Etiketli Veri

Kullanım Alanları

  1. Haber İçeriklerinin Sınıflandırılması

Haberlerde geçen kişi, yer ve lokasyon gibi ifadeler otomatik olarak çıkartılarak belli bir bölge ya da kişilere ait haberlere ulaşılmasını kolaylaştırmaktadır. Haberler için ilgili etiketleri bilmek, tanımlanmış hiyerarşilerde otomatik olarak kategorilere ayırmada ve içerik keşfi için kullanılmaktadır.

2. Müşteri Hizmetleri

Örnek vermek gerekirse Samsung Note 7 batarya problemleri ile gündeme gelen bir üründü. Note 7’nin telefon bataryanın telefon modülü olduğu bilgisi otomatik olarak çıkartılırsa ilgili birime sorunlar doğrudan aktırılır. Bu bilginin ilgili birime aktarılmasında geçen süre oldukça kısalır. Twitter gibi sosyal medya üzerinden analizler yapılırsa hangi üründe hangi lokasyonda ne tür problem olduğu otomatik olarak çıkartılır. Firma elde ettiği verilerle gerekli analizleri yaparak ilgili konu için yatırımlar yapabilir.

3. Makine Çevirileri (Machine Translation)

Farklı Doğal Diller arasında çeviri yapılırken dikkat edilmesi gereken konulardan biri özel isimler gibi dile ait bilgilerin çeviri sisteminde değişmeden olduğu gibi kalmasıdır.

Örnek vermek gerekirse “Toprak bugün okula gelmedi” cümlesini incelersek burada Toprak özel isimdir eğer çeviri sistemi bunu madde olarak algılarsa çeviri hatalı yapılmış olur.

4. Duygu Analizi (Sentiment Analysis)

Kişi, yer ve organizasyon gibi ifadeler bir yorumun iyi ya da kötü olmasını genelde etkilemez. Bu yüzden varlık isimlerinin çıkartılması az da olsa başarımı artıracaktır.

Derin Öğrenmede Kullanılan Teknikler

Varlık ismi tanıma sequence labelling problemi olarak alınmaktadır. Genellikle Bi-Directional LSTM + CRF tabanlı çözümler kullanılmaktadır. İlk katman genellikle word embeddingler ile ilklendirilmekte daha sonrasınra Bi-LSTM katmanları yer almaktadır. Son katman genellikle CRF(Conditional Random Field) seçilmekte ve oldukça iyi sonuçlar vermektedir.

Sistemin başarısını artırmak için kelime vektörlerinin yanına karakterleri eklenmektedir. Yapılan diğer bir iyileştirme ise TimeDistributed Softmax yerine CRF kullanılmasıdır.

Varlık ismi tanıma için Derin Öğrenme çözümlerini içeren “Neural Architectures for Named Entity Recognition” adlı makaleyi inceleyebilirsiniz.

https://www.arxiv-vanity.com/papers/1707.06799/

Varlık İsmi Tanıma İçin State of Art Teknikler

Varlık ismi tanıma için en iyi çözümler incelendiğinde skip-gram, glove gibi klasik word embeddinglerin yer almadığını Flair, BERT, ELMO gibi yeni nesil word embedding tekniklerinin yer aldığını görmekteyiz. BLSTM+CRF tabanlı tekniklerin yerini de başka mimariler almaya başlamakta bu çözümler incelendiğinde çok fazla hesaplama gücü gerektirmektedir. BLSTM+CRF tabanlı çözümler computional-cost/accuracy olarak daha uygun gözükmektedir.

https://github.com/sebastianruder/NLP-progress/blob/master/english/named_entity_recognition.md