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 pengetahuanAda 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 terbukaMasalah 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 Adabeberapa 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 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:
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 digunakanAtribut 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 oleh-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.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 hubungan, , , dan objek Y dengan objek D, E, dan F menggunakan relasi , dan . 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:- - Sebuah Objek tidak terhubung dengan cara apa pun dan terjadi secara terpisah dari objek .
- - semacam hubungan antara dan semuanya 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.