Dasar-dasar algoritma mesin pencari dalam proses search engine optimization (#SEO)


Salah satu momok menakutkan bagi sebuah situs adalah terbenam jauh di dalam mesin pencari atau search engine dan tidak satu pun mesin pencari yang mau meliriknya. Google search engine atau mesin pencari milik Google hingga saat ini masih menjadi salah satu mesin pencari terganas yang tidak saja mampu mengeksplorasi situs baru yang unik, namun juga membenamkan situs-situs lama yang sudah tidak lagi dilirik para pemburu informasi.



Dalam artikel ini, Logsains tidak akan mencoba mengungkap rahasia bagaimana algoritma Google membangun kedigdayaannya dalam menelusuri gang-gang, jalan-jalan, dan jalan bebas hambatan berisi beragam informasi besar di internet, yang memudahkan para pemburu informasi berselancar dan berburu "mangsa" informasi yang tepat buat mereka. Logsains akan mencoba berbagi informasi tentang bagaimana mesin pencari melakukan pencariannya dan berevolusi menjadi model yang sangat kompleks, melibatkan berbagai faktor dan persamaan matematika.

Seluruh informasi ini merupakan penjelasan dari artikel berjudul "Search Engine Algorithm Basics" yang dipublikasi pada tahun 2011. Betul! Tujuh tahun lalu. Namun, Logsains merasa informasi ini layak diteruskan kepada para blogger atau para newbie di bidang search engine optimization (SEO), di-Indonesia-kan menjadi optimasi mesin telusur, untuk membuka cakrawala tentang bagaimana sebuah mesin telusur bekerja.

Artikel yang menjelaskan tentang dasar-dasar algoritma mesin pencari ini dimulai dengan membawa contoh makanan Belanda sebagai ilustrasi yang mendasari sejumlah masalah yang muncul dalam proses perburuan informasi dari suatu artikel. Makanan yang digunakan di sini adalah: croquets, bitterballen, dan frikandellen.

Croquets adalah nama untuk kroket dalam bahasa Indonesia. Di Belanda, kroket merupakan makanan yang terdiri dari ragout yang dilapisi putih telur dan tepung panir lalu digoreng. Umumnya berbentuk silinder dan memanjang.



Bitterballen merupakan makanan dengan rasa yang semirip dengan croquets. Yang membedakannya adalah bentuknya yang bulat.



Sedangkan Frikandellen adalah bakso sosis tradisional Belanda, dengan bentuk yang panjang seperti layaknya sosis pada umumnya.




=========




Benar atau Salah (True or False)

Mesin pencari terkini jelas telah berkembang pesat dalam beberapa tahun terakhir, tetapi pada awalnya mereka hanya bisa berurusan dengan operator logika Boolean. Dalam bahasa yang sederhana, apakah suatu istilah perlu dimasukkan dalam dokumen atau tidak. Sesuatu itu dinyatakan sebagai benar atau salah, 1 atau 0. Selain itu Anda dapat menggunakan operator logika AND, OR dan NOT untuk mencari dokumen yang mengandung sejumlah istilah atau mengecualikan istilah. Cara ini memang terdengar cukup simpel, tetapi juga memang ada beberapa masalah dengan cara ini. Misalkan kita memiliki dua dokumen, yang terdiri dari teks-teks berikut:


Doc1:
"And our restaurant in New York serves croquets and bitterballen."

Doc2:
"In the Netherlands you retrieve croquets and frikandellen from the wall."

Jika kita membangun suatu mesin pencari, langkah pertama adalah tokenisasi teks. Kita ingin dapat dengan cepat menentukan dokumen mana yang mengandung satu istilah. Cara ini akan lebih mudah jika kita memasukkan semua token dalam database. Token adalah istilah tunggal apa pun yang ada dalam suatu teks, jadi berapa banyak token yang dikandung Doc1?

Saat Anda memulai untuk menjawab pertanyaan ini dalam hati, Anda mungkin akan berpikir tentang definisi "istilah". Sebenarnya, seperti terlihat dalam contoh, "New York" harus dinyatakan sebagai satu istilah. Lalu, bagaimana kita dapat menentukan bahwa dua kata individu yang sebenarnya satu kata berada di luar cakupan artikel ini, jadi saat ini kita memperlakukan setiap kata terpisah sebagai token yang terpisah. Jadi kita punya 10 token di Doc1 dan 11 token di Doc2. Untuk menghindari duplikasi informasi dalam database ini, kita akan menyimpan dalam bentuk jenis dan bukan token.

Jenis adalah token unik dalam sebuah teks. Dalam contoh, Doc1 berisi dua kali token "and". Dalam contoh ini kita abaikan fakta bahwa "dan" muncul sekali dengan huruf kapital dan tanpa huruf kapital. Seperti halnya penentuan istilah, ada teknik untuk menentukan apakah sesuatu istilah benar-benar perlu dikapitalisasi. Dalam hal ini, kita berasumsi bahwa kita dapat menyimpannya tanpa huruf kapital dan bahwa "And" dan "and" adalah jenis yang sama.

Dengan menyimpan semua jenis ke dalam basis data dengan dokumen-dokumen yang kita dapat cari, kita dapat menelusurinya dalam basis data dengan bantuan logika Boolean. Pencarian "croquets" akan memunculkan hasil di Doc1 dan Doc2. Pencarian "croquets AND bitterballen" hanya akan mengembalikan Doc1 sebagai hasilnya. Masalah yang muncul dengan metode ini adalah Anda cenderung akan mendapatkan hasil yang bisa jadi terlalu banyak atau bisa jadi terlalu sedikit. Selain itu, ia tidak memiliki kemampuan untuk mengatur hasil. Jika kita ingin meningkatkan metode ini, kita harus menentukan apa lagi yang bisa kita gunakan selain soal ada atau tidaknya suatu istilah dalam dokumen. Faktor-faktor dalam halaman (on-page) mana yang akan Anda gunakan untuk mengatur keluarannya jika Anda adalah Google?


Indeks Zona

Metode yang relatif sederhana adalah dengan menggunakan indeks zona. Halaman web dapat dibagi menjadi beberapa zona berbeda. Cobalah masukkan dalam benak anda soal judul, deskripsi, penulis dan tubuh. Dengan menambahkan bobot ke setiap zona itu dalam dokumen, kita dapat menghitung skor sederhana untuk setiap dokumen. Ini adalah salah satu metode pertama pencarian halaman yang digunakan untuk menentukan subjek halaman. Operasi penghitungan skor berdasarkan indeks zona adalah sebagai berikut:

Misalkan kita menambahkan bobot berikut ke setiap zona:

ZonaBobot
Judul0,4
Deskripsi0,1
Konten0,5

Kemudian kita menjalankan kueri pencarian berikut:
“croquets AND bitterballen”

Dan, kita memiliki dokumen dengan zona berikut:

ZonaBobotBooleanSkor
JudulNew York Café00
DeskripsiCafé with delicious croquets and bitterballen10,1
KontenOur restaurant in New York serves croquets and bitterballen10,5
Total0,6

Karena pada satu titik semua orang mulai menyalahgunakan bobot yang diberikan di sana, misalnya dalam deskripsi, menjadi lebih penting bagi Google untuk membagi tubuh halaman dalam zona yang berbeda dan menetapkan bobot yang berbeda untuk setiap zona individu dalam tubuh. halaman

Ini cukup sulit karena halaman web berisi berbagai dokumen dengan struktur yang berbeda. Penafsiran dokumen berbentuk XML oleh mesin pencari terbilang cukup gampang. Ketika menafsirkan dokumen berbentuk HTML, mesin pencari mulai mengalami kesulitan. Struktur dan tag-tagnya jauh lebih terbatas, yang membuat pisau analisisnya menjadi lebih sulit, termasuk penggunaan HTML5. Misalnya, jika Anda tahu bahwa Google memberikan bobot yang lebih besar pada konten yang berada dalam tag "<content>" dan lebih sedikit ke konten di dalam tag "<footer>", Anda tentu tidak akan bersusah payah untuk menggunakan tag "<footer>".

Untuk menentukan konteks dari satu halaman, Google harus membagi halaman web menjadi beberapa blok. Dengan cara ini Google dapat menilai blok mana pada halaman yang penting dan mana yang tidak. Salah satu metode yang dapat digunakan adalah rasio teks / kode. Suatu blok pada halaman yang berisi lebih banyak teks dibandingkan kode HTML kemungkinan berisi konten utama dari halaman tersebut. Blok yang berisi banyak tautan atau kode HTML dan sedikit konten kemungkinan adalah menu. Inilah sebabnya mengapa memilih editor WYSIWYG yang tepat sangat penting. Terkadang, beberapa jenis perangkat editor ini menggunakan banyak kode HTML yang tidak perlu.

Penggunaan rasio teks / kode hanyalah salah satu metode yang dapat digunakan mesin telusur untuk membagi halaman menjadi beberapa blok. Metode blok ini disampaikan Bill Slawski di awal tahun 2011.

Keuntungan menggunakan metode indeks zona adalah Anda dapat mengalkulasi skor yang cukup sederhana untuk setiap dokumen. Kerugiannya tentu saja akan banyak dokumen yang bisa saja mendapatkan skor yang sama.


Frekuensi Istilah

Ketika Anda diminta untuk membayangkan faktor-faktor yang ada dalam halaman (on-page) yang akan Anda gunakan untuk menetapkan relevansi suatu dokumen, Anda mungkin akan berpikir tentang frekuensi istilah pencariannya atau kuerinya. Ini merupakan langkah logis untuk meningkatkan bobot pada setiap dokumen dengan menggunakan istilah pencarian yang muncul lebih sering.

Beberapa agen SEO ada yang bersikukuh dengan cerita soal penggunaan kata kunci dengan persentase tertentu dalam teks. Kita semua tahu itu tidak benar. Contoh-contoh berikut akan menjadi bagian dari alasan dan penjelasannya. Di sini akan ada beberapa rumus yang muncul, tetapi itu hanyalah garis besar dari cerita yang lebih penting.

Angka-angka yang ada dalam tabel di bawah ini adalah jumlah kemunculan suatu kata dalam dokumen (disebut juga frekuensi istilah (term frequency) atau tf. Jadi kira-kira dokumen mana yang memiliki skor lebih baik untuk kueri: croquets and bitterballen?

croquetsandcafébitterballenAmsterdam...
Doc1810320
Doc2120392
DocN...............
Query11010

Skor untuk dua dokumen tersebut adalah sebagai berikut:
skor (“croquets and bitterballen”, Doc1) = 8 + 10 + 2 = 20
skor (“croquets and bitterballen”, Doc2) = 1 + 20 + 9 = 30

Pada kasus ini, dokumen 2 lebih dekat terkait dengan kuerinya. Dalam contoh ini, istilah "and" mendapatkan bobot terbanyak, tetapi apakah ini adil? Ini adalah stop-word, kata-kata umum yang biasa muncul dalam jumlah besar dan kadang tidak memiliki makna, dan kita hanya ingin memberikannya nilai sedikit.

Kita dapat melakukan hal ini dengan menggunakan inversi frekuensi dokumen atau inverse document frequency (tf-idf), yang merupakan kebalikan dari frekuensi dokumen atau document frequency (df). Frekuensi dokumen adalah jumlah dokumen di mana suatu istilah muncul. Sementara, inversi frekuensi dokumen adalah sebaliknya. Karena saat jumlah dokumen di mana sebuah istilah tumbuh, idf-nya akan menyusut.

Anda bisa menghitung idf dengan membagi jumlah total dokumen yang Anda miliki yand ada di dalam korpus Anda dengan jumlah dokumen yang mengandung suatu istilah dan kemudian mengambil logaritma dari hasil baginya.

Anggap saja idf dari istilah-istilah kueri kita adalah sebagai berikut:

idf(croquets) = 5
idf(and) = 0.01
idf(bitterballen) = 2

Kemudian Anda mendapatkan skor berikut ini:
skor (“croquets and bitterballen”, Doc1) = 8 * 5 + 10 * 0,01 + 2 * 2 = 44,1
skor (“croquets and bitterballen”, Doc2) = 1 * 5 + 20 * 0,01 + 9 * 2 = 23,2

Nah, sekarang Doc1 memiliki skor yang lebih baik. Tapi sekarang kita tidak memperhitungkan soal panjangnya. Satu dokumen bisa saja berisi lebih banyak konten daripada dokumen lain, tanpa perlu tahu apakah isinya lebih relevan dibandingkan yang lain. Sebuah dokumen yang panjang akan memperoleh skor yang lebih tinggi dengan cukup mudah dengan metode ini.


Model Vektor

Kita bisa menyelesaikan masalah ini dengan melihat kesamaan kosinus dokumen. Penjelasan yang tepat dari teori di balik metode ini berada di luar ruang lingkup penjelasan dalam artikel ini, tetapi Anda dapat menganggapnya sebagai semacam titik tengah dari harmonisasi di antara istilah-istilah kueri dalam dokumen. Di sini ada sebuah file excel, yang bisa Anda coba otak-atik sendiri. Ada penjelasan di dalam filenya itu. Yang Anda perlukan berikutnya adalah metrik berikut:
  • Istilah Kueri (Query terms) - masing-masing istilah yang terpisah dalam kueri.
  • Frekuensi Dokumen (Document frequency) - berapa banyak dokumen yang Google ketahui mengandung istilah itu?
  • Frekuensi Istilah (Term frequency) - frekuensi untuk setiap istilah kueri terpisah dalam dokumen.
Di sini ada sebuah contoh yang benar-benar menggunakan model ini. Website ini memiliki halaman yang dirancang untuk mendapatkan peringkat berdasarkan istilah "fiets kopen" yang berasal dari bahasa Belanda artinya "membeli sepeda". Masalahnya adalah halaman yang salah (beranda) yang mendapatkan peringkat untuk kuerinya.

Untuk formulanya, sudah ada disertakan inversi frekuensi dokumen yang diceritakan sebelumnya (idf). Untuk ini, kita membutuhkan jumlah total dokumen dalam indeks Google. Untuk ini kita mengasumsikan N = 10,4 miliar.

Berikut penjelasan tentang tabel di bawah ini:
  • tf = frekuensi waktu
  • df = frekuensi dokumen
  • idf = inversi frekuensi dokumen
  • Wt,q = bobot untuk istilah dalam kueri
  • Wt,d = bobot untuk istilah dalam dokumen
  • Produk = Wt,q * Wt,d
  • Skor = Jumlah produk
Halaman utama, yang diperingkatkan adalah: http://www.fietsentoko.nl/


Sementara, halaman yang ingin diperingkatkan adalah : http://www.fietsentoko.nl/fietsen/


Meskipun dokumen kedua berisi istilah kueri yang lebih sering, skor dokumen untuk kuerinya sendiri lebih rendah (lebih tinggi lebih baik). Ini karena kurangnya keseimbangan antara istilah kueri. Berdasarkan perhitungan ini, dicobalah mengubah teks di halaman, dan meningkatkan penggunaan istilah "fietsen" dan mengurangi penggunaan "kopen" yang merupakan istilah yang lebih umum di mesin pencari dan memiliki bobot yang lebih sedikit. Ini akhirnya mengubah skornya menjadi sebagai berikut:

Setelah beberapa hari, Google merayapi halaman dan dokumen yang sudah diubah dan mulai menerima peringkat untuk istilah tersebut. Kita dapat menyimpulkan bahwa seberapa banyak Anda menggunakan suatu istilah belum tentu hal yang penting. Yang terpenting adalah menemukan keseimbangan yang tepat untuk istilah yang ingin Anda rangking.


Percepat Prosesnya

Untuk melakukan kalkulasi ini pada setiap dokumen yang sesuai kueri pencarian, membutuhkan kekuatan daya yang besar saat memprosesnya. Anda dapat memperbaikinya dengan menambahkan beberapa nilai statis untuk menentukan dokumen mana yang ingin Anda hitung skalanya. Misalnya, PageRank itu bisa menjadi nilai statis yang bagus. Saat Anda pertama kali menghitung skor untuk laman yang cocok dengan kueri dan memiliki PageRank yang tinggi, Anda memiliki perubahan yang bagus untuk menemukan beberapa dokumen yang akan berakhir dengan 10 teratas pada hasilnya.

Kemungkinan lain adalah penggunaan daftar juara. Untuk setiap istilah, ambillah hanya dokumen N teratas dengan skor terbaik untuk istilah itu. Jika kemudian Anda memiliki kueri multi-istilah, Anda bisa melakukan persilangan pada daftar tersebut untuk menemukan dokumen-dokumen yang berisi semua istilah kueri dan mungkin memiliki skor yang tinggi. Hanya jika dokumen yang mengandung semua istilah itu terlalu sedikit, Anda dapat mencarinya di semua dokumen. Jadi Anda tidak akan memeringkat hanya dengan menemukan skor vektor terbaik, Anda juga memiliki skor statis yang tepat.


Relevansi Umpan Balik

Relevansi Umpan Balik menetapkan nilai lebih atau kurang pada suatu istilah yang ada dalam kueri, berdasarkan relevansi dokumen. Menggunakan Relevansi Umpan Balik, mesin telusur dapat mengubah kueri pengguna tanpa memberi tahu pengguna.

Langkah pertama di sini adalah menentukan apakah dokumen itu relevan atau tidak. Meskipun ada mesin telusur yang di sana Anda dapat menentukan apakah suatu hasil pencarian atau suatu dokumen itu relevan atau tidak, Google sudah lama tidak memiliki fungsi ini. Upaya pertama yang mereka lakukan adalah dengan menambahkan bintang favorit pada hasil pencarian. Saat ini Google mencobanya dengan tombol Google+. Jika cukup banyak orang yang menekan tombol itu pada hasil tertentu, Google akan mulai mempertimbangkan dokumen tersebut adalah relevan untuk kueri itu.

Metode lain adalah dengan melihat halaman-halaman saat ini yang memiliki peringkat yang baik. Halaman-halaman ini akan dianggap relevan. Bahayanya metode ini adalah penyimpangan topik. Jika Anda mencari bitterballen dan croquettes, dan halaman-halaman yang berperingkat terbaik adalah semua halaman snack bar di Amsterdam, bahayanya adalah Anda akan memberikan nilai ke Amsterdam dan berakhir dengan hanya snack bar di Amsterdam yang muncul dalam hasilnya.

Cara lain yang digunakan Google adalah hanya menggunakan penambangan data. Mereka juga dapat melihat Rasio Klik Tayang (RKT) halaman yang berbeda. Laman dengan RKT lebih tinggi dan memiliki rasio pentalan lebih rendah, maka secara rata-rata dapat dianggap relevan. Laman dengan rasio pentalan yang sangat tinggi dapat dianggap tidak akan relevan.

Contoh bagaimana kita dapat menggunakan data ini untuk menyesuaikan bobot istilah kueri adalah dengan formula umpan balik Rochio. Ini berupa bentuk penyesuaian nilai setiap istilah dalam kueri dan kemungkinan penambahan istilah kueri tambahan. Rumusnya sendiri adalah sebagai berikut:



Tabel di bawah ini adalah representasi visual dari formula di atas. Misalkan kita menerapkan nilai-nilainya sebagai berikut:
Istilah Kueri: +1 (alfa)
Istilah Relevan: +1 (beta)
Istilah Tidak Relevan: -0,5 (gamma)

Kita memiliki kueri berikut:
“croquets and bitterballen”

Relevansi dokumen-dokumen berikut adalah sebagai berikut:
Doc1: relevan
Doc2: relevan
Doc3: tidak relevan

Kueri barunya menjadi sebagai berikut:
croquets(2) and(1) bitterballen(1) cafe(0,5)

Nilai untuk setiap istilah adalah bobot yang didapatnya dalam kueri Anda. Kita dapat menggunakan bobot tersebut dalam penghitungan vektor kita. Meskipun istilah Amsterdam mendapatkan skor -0,5, penyesuaian nilai negatif dikembalikan ke 0. Dengan cara ini kita tidak mengecualikan suatu istilah-istilah dari hasil pencarian. Dan meskipun café tidak muncul dalam kueri asli, itu ditambahkan dan diberi bobot dalam kueri baru.

Anggaplah Google menggunakan cara Relevansi Umpan Balik ini, maka Anda bisa melihat halaman-halaman yang sudah memiliki peringkat untuk kueri tertentu. Dengan menggunakan kosakata yang sama, Anda dapat memastikan bahwa Anda mendapatkan hasil terbaik dari Relevansi Umpan Balik ini.

=====

Singkatnya, kita telah mengetahui salah satu dari banyak opsi dalam menetapkan nilai pada dokumen berdasarkan konten halaman. Meskipun metode vektor ini cukup akurat, tentu saja ini bukan satu-satunya metode untuk menghitung relevansi halaman. Ada banyak penyesuaian pada model yang sudah dijelaskan di atas, dan itu juga tetap hanyalah sebagian dari algoritma lengkap mesin pencari seperti Google. Setidaknya artikel ini memberikan beberapa wawasan baru dalam metode mesin telusur menggunakan selain faktor eksternal.

Comments