Bagaimana cara membuat mesin pencari teks?

8

Saya memiliki string HTML dan ingin mencari tahu apakah kata yang saya berikan relevan dengan string itu.

Relevansi dapat diukur berdasarkan frekuensi dalam teks.

Contoh untuk menggambarkan masalah saya:

this is an awesome bike store
bikes can be purchased online.
the bikes we own rock.
check out our bike store now

Sekarang saya ingin menguji beberapa kata lain:

bike repairs
dog poo

bike repairsharus ditandai sebagai relevan sedangkan dog pooseharusnya tidak ditandai sebagai relevan.

Pertanyaan:

  • Bagaimana ini bisa dilakukan?
  • Bagaimana cara saya memfilter kata-kata yang ambigu seperti inatauor

Terima kasih atas ide Anda!

Saya kira itu adalah sesuatu yang Google lakukan untuk mencari tahu kata kunci apa yang relevan dengan situs web. Saya pada dasarnya mencoba mereproduksi peringkat di halaman mereka.

Hendrik
sumber
Topik besar, lihat Into to IR , ini menuntun Anda dari prinsip dasar pertama bagaimana membangun apa yang Anda tanyakan. Sesuatu untuk dicari adalah tf-idf kemudian menyadari ini tidak menyelesaikan segalanya dan melihat kemungkinan bayesian
EdChum
Mengapa Anda menganggap "perbaikan" sebagai hal yang relevan?
Berteman
Itu hanya contoh. Tidak terlalu memikirkannya :). Saya kira itu tidak relevan?
Hendrik
@Hendrik: tolong, gunakan @ <username> untuk mengatasi pengguna - SE tidak memberi tahu saya tentang komentar Anda. Menghitung relevansi adalah titik kunci dalam mesin pencari (meskipun biasanya Anda menghitung seberapa relevan halaman web dengan permintaan pencarian, Anda memerlukannya, bukan?). Apakah saya memahaminya dengan benar bahwa Anda hanya ingin tahu cara menghitung relevansi dokumen dengan permintaan pencarian ketika ada kata-kata yang sama, tetapi tidak sama persis (misalnya "sepeda" dan, katakanlah, "pengendara sepeda")?
berteman
Saya kira Anda meminta dua hal. Salah satunya adalah masalah pencarian yang cukup dipahami. Anda bisa menggunakan Solr atau Elasticsearch untuk melakukan pekerjaan berat untuk Anda. Mereka berdua dapat menemukan dokumen yang relevan dalam koleksi dengan menimbang hit. Namun, jika Anda ingin pemahaman semantik yang lebih dalam tentang teks (yaitu "perbaikan" tidak disebutkan tetapi merupakan aktivitas khas di toko sepeda) maka mesin pencari murni mungkin jatuh datar.
eckes

Jawaban:

3
  • pra-proses dokumen Anda (beberapa langkah mungkin dilewati)
  • menggunakan model Vector Space untuk mewakili dokumen (Anda dapat menggunakan TF, TF-IDF tersebut atau model lainnya)
  • melakukan hal yang sama dengan permintaan: preprocess dan mewakilinya dalam ruang vektor
  • menemukan dokumen yang paling mirip dengan menghitung kesamaan vektor (misalnya menggunakan cosine similarity )

Itulah garis besar dari proses Pengambilan Informasi

Pengantar Pengambilan Informasi oleh Christopher D. Manning, Prabhakar Raghavan dan Hinrich Schütze adalah buku yang sangat bagus untuk memulai di IR.


Atau cukup gunakan Apache Solr untuk mendapatkan semua yang Anda butuhkan di luar kotak (atau Apache Lucene , yang digunakan oleh Solr, untuk membangun aplikasi Anda sendiri)

Alexey Grigorev
sumber
1

Saya ingat dulu bermain dengan Elastic Search (situs web sekarang sangat berbeda dari yang saya ingat). Ada beberapa hal tentang berurusan dengan bahasa manusia di sini: http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/languages.html

Berhati-hatilah bahwa pencarian elastis seperti bazoka besar untuk masalah Anda. Jika masalah Anda sangat sederhana, mungkin Anda ingin pergi dari awal. Ada beberapa dokumen di web tentang itu.

eri0o
sumber