Untuk sementara, saya telah mencoba menemukan cara cerdas mengekstrak teks "relevan" dari URL dengan menghilangkan teks yang terkait dengan iklan dan semua kekacauan lainnya. Setelah beberapa bulan meneliti, saya menyerah sebagai masalah yang tidak dapat ditentukan secara akurat. (Saya sudah mencoba berbagai cara tetapi tidak ada yang dapat diandalkan)
Seminggu yang lalu, saya menemukan Readability - plugin yang mengubah URL apa pun menjadi teks yang dapat dibaca. Ini terlihat cukup akurat bagi saya. Dugaan saya adalah bahwa mereka memiliki algoritme yang cukup pintar untuk mengekstrak teks yang relevan.
Adakah yang tahu bagaimana mereka melakukannya? Atau bagaimana saya dapat melakukannya dengan andal?
javascript
asp.net
extraction
pengguna300981
sumber
sumber
Jawaban:
Keterbacaan terutama terdiri dari heuristik yang "bekerja dengan baik" dalam banyak kasus.
Saya telah menulis beberapa makalah penelitian tentang topik ini dan saya ingin menjelaskan latar belakang mengapa mudah menghasilkan solusi yang berfungsi dengan baik dan ketika sulit untuk mendekati akurasi 100%.
Tampaknya ada hukum linguistik yang mendasari bahasa manusia yang juga (tetapi tidak eksklusif) terwujud dalam konten halaman Web, yang sudah cukup jelas memisahkan dua jenis teks (teks lengkap vs. non-teks lengkap atau, secara kasar, " konten utama "vs." boilerplate ").
Untuk mendapatkan konten utama dari HTML, dalam banyak kasus cukup hanya menyimpan elemen teks HTML (yaitu blok teks yang tidak terganggu oleh markup) yang memiliki lebih dari 10 kata. Tampaknya manusia memilih dari dua jenis teks ("pendek" dan "panjang", diukur dari jumlah kata yang mereka pancarkan) untuk dua motivasi penulisan teks yang berbeda. Saya menyebutnya motivasi "navigasi" dan "informasiasional".
Jika seorang penulis ingin Anda cepat mendapatkan apa yang tertulis, dia menggunakan teks "navigasi", yaitu beberapa kata (seperti "STOP", "Read this", "Click here"). Ini adalah jenis teks yang paling menonjol dalam elemen navigasi (menu, dll.)
Jika seorang penulis ingin Anda memahami secara mendalam apa yang dia maksud, dia menggunakan banyak kata. Dengan cara ini, ambiguitas dihilangkan dengan biaya peningkatan redundansi. Konten seperti artikel biasanya termasuk dalam kelas ini karena memiliki lebih dari beberapa kata.
Meskipun pemisahan ini tampaknya berhasil dalam banyak kasus, pemisahan ini menjadi rumit dengan tajuk utama, kalimat pendek, penafian, footer hak cipta, dll.
Ada strategi dan fitur yang lebih canggih, yang membantu memisahkan konten utama dari boilerplate. Misalnya kepadatan tautan (jumlah kata dalam blok yang ditautkan versus jumlah keseluruhan kata dalam blok), fitur blok sebelumnya / berikutnya, frekuensi teks blok tertentu di "keseluruhan" Web, Struktur DOM dari dokumen HTML, gambar visual halaman, dll.
Anda dapat membaca artikel terbaru saya " Deteksi Boilerplate menggunakan Fitur Teks Dangkal " untuk mendapatkan beberapa wawasan dari perspektif teoritis. Anda juga dapat menonton video presentasi makalah saya di VideoLectures.net.
"Keterbacaan" menggunakan beberapa fitur ini. Jika Anda mengamati dengan cermat log perubahan SVN, Anda akan melihat bahwa jumlah strategi bervariasi dari waktu ke waktu, dan begitu pula kualitas ekstraksi Keterbacaan. Misalnya, pengenalan kepadatan tautan pada bulan Desember 2009 sangat membantu peningkatan.
Menurut saya, oleh karena itu tidak masuk akal untuk mengatakan "Readability do it like that", tanpa menyebutkan nomor versi pastinya.
Saya telah menerbitkan pustaka ekstraksi konten Open Source HTML yang disebut boilerpipe , yang menyediakan beberapa strategi ekstraksi yang berbeda. Tergantung pada kasus penggunaan, satu atau ekstraktor lain bekerja lebih baik. Anda dapat mencoba ekstraktor ini pada halaman pilihan Anda menggunakan aplikasi web boilerpipe-pengiring di Google AppEngine.
Untuk membiarkan angka berbicara, lihat halaman " Benchmarks " di wiki boilerpipe yang membandingkan beberapa strategi ekstraksi, termasuk boilerpipe, Readability dan Apple Safari.
Saya harus menyebutkan bahwa algoritme ini mengasumsikan bahwa konten utama sebenarnya adalah teks lengkap. Ada kasus di mana "konten utama" adalah sesuatu yang lain, misalnya gambar, tabel, video, dll. Algoritme tidak akan berfungsi dengan baik untuk kasus seperti itu.
Bersulang,
Kristen
sumber
keterbacaan adalah bookmarklet javascript. artinya kode sisi kliennya yang memanipulasi DOM. Lihatlah javascriptnya dan Anda akan dapat melihat apa yang sedang terjadi.
Alur kerja dan kode keterbacaan:
Dan jika Anda mengikuti file JS dan CSS yang ditarik oleh kode di atas, Anda akan mendapatkan gambaran keseluruhan:
http://lab.arc90.com/experiments/readability/js/readability.js (ini dikomentari dengan cukup baik, bacaan yang menarik)
http://lab.arc90.com/experiments/readability/css/readability.css
sumber
Tidak ada cara yang 100% andal untuk melakukan ini, tentu saja. Anda dapat melihat kode sumber Keterbacaan di sini
Pada dasarnya, yang mereka lakukan adalah mencoba mengidentifikasi blok teks positif dan negatif . Pengenal positif (yaitu ID div) akan menjadi seperti:
Pengidentifikasi negatif adalah:
Dan kemudian mereka memiliki kandidat yang tidak mungkin dan mungkin . Apa yang akan mereka lakukan adalah menentukan apa yang paling mungkin menjadi konten utama situs, lihat baris
678
di sumber keterbacaan. Hal ini dilakukan dengan menganalisis sebagian besar panjang paragraf, pengenalnya (lihat di atas), pohon DOM (yaitu jika paragraf adalah simpul anak terakhir), menghapus semua yang tidak perlu, menghapus format, dll.Kode tersebut memiliki 1792 baris. Ini memang tampak seperti masalah yang tidak sepele, jadi mungkin Anda bisa mendapatkan inspirasi dari sana.
sumber
Menarik. Saya telah mengembangkan skrip PHP serupa. Ini pada dasarnya memindai artikel dan melampirkan bagian dari ucapan ke semua teks (Brill Tagger). Kemudian, kalimat yang secara tata bahasa tidak valid langsung dihilangkan. Kemudian, pergeseran kata ganti atau bentuk lampau yang tiba-tiba menandakan artikel sudah selesai, atau belum dimulai. Frasa yang berulang akan dicari dan dihilangkan, seperti "Yahoo news sports finance" muncul sepuluh kali di halaman. Anda juga bisa mendapatkan statistik tentang nada dengan sejumlah besar bank kata yang berkaitan dengan berbagai emosi. Perubahan nada yang tiba-tiba, dari aktif / negatif / finansial, menjadi pasif / positif / politik menunjukkan adanya batasan. Benar-benar tidak ada habisnya, betapapun Anda ingin menggali lebih dalam.
Masalah utamanya adalah tautan, anomali yang disematkan, gaya skrip, dan pembaruan.
sumber