Grafik pencarian pengetahuan: membangun dari berbagai sumber



Saya ingin berbicara tentang apa itu grafik pengetahuan dan tentang salah satu cara untuk membangunnya dari beberapa sumber tematis.

Sejumlah besar kueri dalam pencarian berisi satu entitas - objek yang ditanyakan pengguna. Ini dapat berupa permintaan tentang beberapa orang, film, seri, objek musik atau geografis. Ketika pengguna membuat permintaan seperti itu, dalam mengeluarkannya, ia dapat ditunjukkan kartu informasi tambahan dengan harapan bahwa informasi dalam kartu tersebut akan menarik bagi pengguna. Kartu menghias masalah dan meningkatkan visibilitasnya. Dengan bantuan kartu informasi, kami menjelaskan kepada seseorang bahwa ia menggunakan layanan cerdas, karena mesin pencari menyadari bahwa ia memikirkan objek apa yang ia tanyakan. Selain itu, intelijen ini dapat diperluas dengan menanggapi permintaan pengguna secara langsung di halaman masalah. Misalnya, sebagai tanggapan atas "apa yang harus dilihat di Praha", kami dapat segera menunjukkan pemandangan kota ini.

Ada saat-saat ketika pengguna ingin tahu sesuatu tentang suatu objek, tetapi sama sekali tidak tahu apa-apa tentang itu, kecuali fakta keberadaannya. Atau pengguna ingin melanjutkan penelitian tentang suatu topik. Khusus untuk kasus ini, kartu menunjukkan benda yang dikenal untuk objek ini, serta opsi yang memungkinkan untuk melanjutkan penelitian di blok "Lihat Juga".

Grafik pengetahuan


Semua teknologi semantik ini didasarkan pada grafik pengetahuan - grafik yang simpulnya adalah objek dari dunia nyata, dan transisi yang diketikkan hubungan antar objek (misalnya, hubungan untuk tempat kelahiran berbeda dengan hubungan untuk tanggal lahir). Contoh grafik pengetahuan kecil ditunjukkan pada Gambar. 1.


Ara. 1. Contoh grafik pengetahuan

Ada grafik pengetahuan terbuka yang dapat diunduh dan digunakan. Contoh dan beberapa statistik pada grafik pengetahuan terbuka yang paling terkenal disajikan dalam tabel. 1.

Tabel. 1. Statistik pada grafik pengetahuan terbuka

Grafik pengetahuanJumlah catatanJumlah objekPerbarui frekuensi
FreebaseLebih dari 3 miliar49 jutaTidak diperbarui
Wikidata748 juta18 jutaSekali seminggu (inkremental - sekali sehari)
Dbpedia411 juta4 jutaPembaruan terakhir pada Agustus 2019

Masalah dengan grafik terbuka adalah bahwa tidak semua bidang pengetahuan tercakup cukup dalam. Misalnya, acara TV Rusia. Mereka tidak terlalu populer di seluruh dunia, tetapi mereka sangat disukai kami karena pengguna bertanya tentang mereka. Ini berarti bahwa kami perlu menemukan beberapa informasi tentang seri ini dan membawanya ke SERP (Halaman Hasil Mesin Pencari). Masalah kedua adalah pembaruan yang agak jarang. Tetapi ketika suatu peristiwa terjadi, kami ingin membawa informasi ini sesegera mungkin dan menunjukkannya di halaman hasil pencarian.

Setidaknya ada tiga kemungkinan solusi untuk masalah ini.

Pertama: tidak melakukan apa pun, berdamai, tutup mata Anda untuk itu dan terus hidup. Kedua: hati-hati menambahkan informasi secara manual untuk membuka kolom pengetahuan, dan kemudian menggunakan data dari sana. Dan opsi ketiga: secara otomatis menggabungkan pengetahuan dari beberapa sumber tematik dengan grafik. Untuk film dan acara TV yang sama, ada beberapa sumber seperti: KinoPoisk, IMDb, Kino Mail.ru. Selain itu, dalam grafik pengetahuan, sebagai aturan, objek memiliki tautan ke sumber daya tematis populer.

Kami mulai menerapkan pendekatan ketiga. Sebelum Anda mulai memecahkan masalah ini, Anda harus bersiap. Faktanya adalah bahwa data dalam sumber disajikan dalam format yang berbeda. Misalnya, di Wikidata itu adalah JSON, di Pencarian Bioskop - HTML. Mereka perlu dikonversi ke format yang sama. Kami mengonversi ke N-Triples, karena nyaman untuk memprosesnya secara paralel, dan dalam hal ini sangat penting, karena kami bekerja dengan data besar. Tumpukan JSON diperluas dari Wikidata membutuhkan sekitar 720 GB, dan halaman Pencarian Film HTML adalah 230 GB, sehingga hampir semua tugas diselesaikan pada sebuah cluster menggunakan paradigma MapReduce.

Perekatan ganda


Salah satu tugas paling sulit saat menggabungkan grafik pengetahuan adalah menempelkan duplikat. Sebagai contoh, kita memiliki grafik dan dua objek di dalamnya, yang merupakan salah satu objek dari dunia nyata. Kami ingin merekatkan mereka dalam grafik yang dihasilkan sehingga menjadi satu objek dalam grafik pengetahuan. Solusi yang kami temukan sejak awal cukup sederhana. Mari ambil dan tempel semua benda yang memiliki nama yang sama. Jadi kami belajar bahwa setidaknya ada dua orang terkenal dengan nama Brad Pitt, sedikit kurang dari empat puluh film dan seri yang disebut "The Bridge", dan tentang jumlah yang sama dari Ivanov tentang yang ada artikel di Wikipedia.

Jelas, pendekatan sederhana seperti itu tidak berhasil, sesuatu yang lebih rumit diperlukan. Dan kemudian kami menemukan solusi tiga bagian. Bagian pertama adalah generator calon untuk menghubungkan. Yang kedua adalah classifier yang mencoba menjawab pertanyaan apakah beberapa objek harus direkatkan bersama. Dan yang ketiga adalah langkah perekatan tambahan: kita menempelkan sesuatu yang tidak berhasil karena beberapa alasan untuk merekatkan pada langkah sebelumnya.

Generator diperlukan untuk mengurangi jumlah calon yang akan dihubungkan (mencoba menghubungkan setiap objek dengan masing-masing terlalu mahal). Karena itu, kami membatasi diri hanya untuk sejumlah kecil kandidat dan kemudian menjalankan classifier hanya untuk set kecil ini. Ide dasarnya adalah bahwa nama-nama objek yang dapat dihubungkan harus serupa dalam beberapa cara. Kami memutuskan untuk memulai dengan pencocokan substring lengkap, tetapi dengan kemampuan untuk mengatur ulang kata-kata. Ini berarti bahwa jika dua objek tidak memiliki urutan kata yang sama (misalnya, nama orang dan nama keluarga tercampur), mereka masih akan dicocokkan. Kami menggunakan nama Rusia dan yang asli asing. Kami juga menggunakan nama panggilan, alias, dan sinonim untuk objek yang kami kumpulkan dari pengalihan Wikipedia.

Sebelum melatih model, alangkah baiknya mendapatkan data dari suatu tempat. Kami beruntung, semua yang dibutuhkan sudah ada dalam grafik pengetahuan terbuka. Misalnya, di Wikidata ada sedikit kurang dari 200 ribu objek, tautan ke film dan acara TV KinoPoisk, dan sedikit kurang dari 100 ribu tautan ke orang-orang KinoPoisk. Kami akan dilatih tentang data ini.

Semua atribut didasarkan pada gagasan bahwa objek yang sama dalam dua kolom harus memiliki konteks yang sama. Gagasan serupa digunakan untuk memecahkan masalah Entity Linking. Selain itu, konteks dalam grafik tidak berarti objek tetangga ke objek ini, tetapi deskripsi string mereka. Secara lebih formal, konteks suatu objek dalam grafik akan dianggap semua garis yang berdekatan dengannya, serta nama-nama objek yang terjadi padanya dan jenisnya. Dalam gbr. 2 baris yang termasuk dalam konteks objek ini disorot dengan huruf tebal.


Ara. 2. Konteks objek Ada

beberapa cara untuk bekerja dengan string. Pertama, untuk mempertimbangkan kebetulan dari string, cocok dengan mereka secara keseluruhan, yaitu, hanya memperhitungkan kebetulan saja. Kedua, kita dapat menggunakan string sebagai kantong kata-kata, memecah string menjadi kata-kata dan urutan pengorbanan. Kami menggunakan kedua pendekatan tersebut.

String dapat digunakan sekaligus sekaligus, atau dikelompokkan berdasarkan jenis hubungan yang terkait dengan objek. Pertandingan absolut dan relatif menurut kelompok juga dipertimbangkan.

Mari kita ambil dua objek: Lionel Messi (Lionel Messi) dan Lionel Richie (Lionel Richie), tab. 2.

Meja. 2. Beberapa hubungan untuk objek Lionel Messi dan Lionel Richie.

Nama hubunganLionel MessiLionel Richie
namaLionel Messi"Lionel Richie"
ulang tahun24 Juni 1987"20 Juni 1949"
klub sepak bolaFC Barcelona-

Nama tidak cocok sepenuhnya, jadi kecocokan lengkap dalam nama akan menjadi nol. Tetapi jumlah kata yang cocok dengan nama adalah 1, karena nama asli "Lionel" cocok dengan kedua objek. Koefisien Jacquard (rasio ukuran persimpangan dengan ukuran serikat) untuk nama akan 0,2:

J(Messi,Richie)=|«Lionel»||«»,«»,«Lionel»,«Messi»,«Richie»|


Kami tidak segera memahami bahwa jika suatu objek tidak memiliki hubungan yang benar, maka tidak masuk akal untuk terburu-buru dan menulis nol pada tanda ini, lebih baik menulis nilai Hilang. Lagi pula, ketika kita menambahkan grafik tematik ke grafik besar, sering tidak memiliki semacam hubungan, dan Anda harus dapat membedakan antara kasus ketika dua hubungan tidak cocok, dan ketika beberapa objek sama sekali tidak memiliki hubungan yang diperlukan . Mengikuti logika ini, jumlah kata yang cocok untuk hubungan football_club akan menjadi nilai yang Hilang. Jumlah pencocokan baris lengkap dalam semua hubungan adalah nol, dan jumlah kata yang cocok adalah dua ("Lionel" dan "Juni").

Peringkat fitur terbaik yang digunakan oleh model ditunjukkan pada Gambar. 3.


Ara. 3. Tanda-tanda paling penting yang digunakan

Atribut terbaik dari model kami adalah total kebetulan relatif kata-kata. Nama kompleks ini menyembunyikan jumlah koefisien Jacquard untuk semua hubungan. Sangat menarik bahwa jika kita benar-benar membuang semua pembelajaran mesin dari tugas ini dan meninggalkan cut-off yang kurang lebih memadai dengan nilai fitur ini, maka kualitas model olehF1-Pengukuran akan turun hanya 20%. Jika kita mengambil tanda-tanda yang dijelaskan di atas, latih XGBoost pada mereka di luar kotak, 250 pohon dengan tinggi 4, maka kita akan mendapatkan metrik yang cukup bagus.

Meja. 3. Metrik model kualitas pada data uji.

Nama MetrikNilai
Presisi0.961531
Kelengkapan (recall)0,963220
F10,962375
Auc0,999589

Tetapi ada masalah: pada metrik ini beberapa objek yang tidak kita lem tidak terlihat. Inilah yang disebut "benda besar" yang memiliki banyak hubungan. Kota, negara, pekerjaan - ini adalah objek yang berhubungan dengan sejumlah besar objek lainnya. Dalam gbr. Gambar 4 menunjukkan bagaimana ini terlihat pada SERP. Segalanya tampak tidak berbahaya:


Ara. 4. Masalah objek "besar"

. Kami memiliki duplikat di kartu. Tampaknya tidak apa-apa, tetapi kenyataannya masalahnya jauh lebih dalam, konsistensi data menderita. Ini karena dalam data pelatihan kami tidak ada objek sama sekali. Di sini perlu untuk menerapkan pendekatan yang berbeda, untuk menggunakan sejumlah besar hubungan objek-objek ini untuk keuntungan mereka sendiri. Dalam gbr. Gambar 5 menunjukkan diagram dari pendekatan ini. Biarkan ada dua objek X dan Y, yang terhubung oleh classifier. Objek-objek ini milik grafik yang berbeda dan setiap objek dikaitkan dengan beberapa objek lain dalam grafiknya. Objek X dikaitkan dengan objek A, B, C melalui hubunganr1, r2, r3, dan objek Y dengan objek D, E, dan F menggunakan relasi r1, r2dan r4. Tetapi sekarang kita tahu bahwa objek X dan Y sebenarnya adalah salah satu objek dari dunia nyata.


Ara. 5. Perekatan tambahan.

Mari kita mengajukan dua hipotesis:

  • H1:P(D|A)=p=P(D|¬A)- Sebuah Objek Dtidak terhubung dengan cara apa pun dan terjadi secara terpisah dari objek A.
  • H2:P(D|A)=p1p2=P(D|¬A)- semacam hubungan antara Ddan Asemuanya seperti itu.

Kemudian kita dapat menerapkan uji rasio kemungkinan dan menerima satu dari dua hipotesis. Dengan demikian, kita bisa menyatukan benda besar.

Solusi terakhir ternyata sangat universal, jadi dengan cara yang sama dimungkinkan untuk merekatkan duplikat untuk sumber tematik lainnya, terus-menerus meningkatkan cakupan dan kedalaman topik dalam grafik pengetahuan.

Kesimpulan


Artikel ini mempertimbangkan salah satu solusi yang mungkin untuk masalah menempelkan objek identik dari grafik pengetahuan yang berbeda. Ketika grafik pengetahuan sudah dibangun, kami dapat menunjukkan kartu informasi pada halaman dengan hasil pencarian, menggunakan pengetahuan dari grafik untuk menjawab factoids, atau membuat beberapa aplikasi menarik lainnya untuk menyenangkan pengguna.

Semoga menarik untuk membaca sedikit tentang bagaimana semuanya bekerja dari dalam ke luar. Jika ada saat-saat yang tidak dapat dipahami, ajukan pertanyaan, saya akan mencoba menjawabnya.

All Articles