Entity – NLP


Saya lanjutkan catatan dari training AI102, masih tentang NLP, kali ini tentang Entity. Entity digunakan untuk menambahkan konteks khusus pada intents. Contohnya, kita mendefinisikan TurnOnDevice intent yang dapat diterapkan untuk banyak perangkat. Entity digunakan untuk menentukan perangkat yang berbeda. Berikut ini contoh pasangan utterance, intents dan entity:

  1. Utterance (what is the time?) ; Intent (GetTime); entity (-)
  2. U(What time is it in London) ; I (GetTime); E (Location: London)
  3. U( What’s the weather forecast for paris?); I(GetWeather); E(Location:Paris)
  4. U(Will I need an Umbrella tonight); I(GetWeather); E(Time:tonight)
  5. U(What’s the forecast for Seattle tomorrow); I(GetWeather); E(Location:Seattle ; Time: tomorrow)
  6. U(Turn the light on) ; I (TurnOnDevice); E(Device: light)
  7. U(Switch on the fan) ; I (TurnOnDevice): E(Device:fan)

Ada beberapa tipe entity, beberapa cara mendefinisikan entity adalah:

  1. Machine learned (dipelajari mesin) entity ini adalah yang paling fleksibel, dan paling banyak digunakan. Kita menentukan sebuah entity yang dipelajari mesin dengan sebuah nama yang sesuai, kemudian menghubungkan kata atau frase-nya dengan training utterances. Ketika kita melakukan training sebuah model, model akan mempelajari elemen yang sesuai pada utterance dengan entity
  2. List; entity dengan beberapa kemungkinan value, contohnya days of the week (hari-hari dalam minggu). Kita dapat memasukan sinonim dalam sebuah definisi entity list, sehingga kita bisa mendefinisikan entity DayOfWeek, yang memiliki value “sunday”, “Monday” dst dengan sinonim “sun”, “mon”, tue” dst
  3. Regular expression atau regex untuk entity yang memiliki format/string tertentu. Contohnya tanggal menggunakan format MM/DD/YYYY atau nomor penerbangan dengan format AB-1234
  4. Pattern.any() entity yang memiliki pola tertentu.

Bila model kita membutuhkan multiple intent dimana ada kemiripan dalam utterance, kita bisa menggunakan pattern untuk membedakan intents dengan beberapa sampel. Contohnya utterance2 berikut ini: “Turn the kitchen light on”, “Is the kitchen light on?”. “Turn the kitchen light off”

Contoh utterance diatas adalah mirip, dengan urutan kata yang berbeda. Namun ketiganya memiliki intents yang berbeda, yaitu TurnOnDevice,GetDeviceStatus dan TurnOffDevice. Intents dapat diterapkan pada berbagai nilai entity. Contohnya untuk “kitchen light” intent dapat diterapkan juga untuk “living room light”, “bedside lamp”, “fan”, “television” maupun perangkat lain yang digunakan model.

Untuk melakukan training model perlu memasukan kombinasi utterance untuk setiap kemungkinan entity dengan semua (ketiga) intents. Namun agar lebih efektif untuk menentukan patterns bisa memasukan template utterancce seperti berikut ini:

TurnOnDevice: “Turn the {DeviceName} on” ; “Switch the {DeviceName} on”; “Turn on the {DeviceName}”

GetDeviceStatus: “Is the {DeviceName} on [?]”

TurnOffDevice: “Turn the {DeviceName} off” ; “Switch the {DeviceName} off”; “Turn off the {DeviceName}”

Utterance diatas memiliki placeholder untuk sebuah entity Pattern.any() dengan nama DeviceName, mengurangi jumlah utterance yang dibutuhkan untuk melakukan training model. Pattern dapat menggunakan elemen opsional seperti punctuation (contohnya [?] untuk memberikan petunjuk tambahan tentang intent yang sesuai.

Pattern yang didefinisikan pada template utterance, termauk posisi dari entity Pattern.any() dan kata-kata atau punctuation, membantu model mengenali intents dan nilai entity dari sedikit contoh. Berikut ini contoh pasangan Utterence, Intent dan Entity:

  1. Utterance (Turn the kitchen light on); Intent (TurnOnDevice); Entity (DeviceName – kitchen light)
  2. U(Is the bedroom lamp on); I(GetDeviceStatus); E(DeviceName-bedroom lamp)
  3. U(Switch the TV off); I(TurnOffDevicE); E(DeviceName-TV)

Informasi lebih lanjut tentang pattern bisa dilihat disini:

https://docs.microsoft.com/id-id/azure/cognitive-services/LUIS/concepts/patterns-features

Semoga Bermanfaat!


Silahkan tuliskan tanggapan, kritik maupun saran