RSS

Web text extraction systems: How to get the main text of an arbitrary web page

16 Sep

For various purposes one needs systems that can visit a web page and then grab the main text of the page. This is one of those tasks where human intelligence shines and computers have a very hard time. A human being can easily look at a page from cnn.com or any blog and point out the ‘main text’ of the page, that is the part without graphics, ads, videos, side texts, etc.

I have seen that the developer of the famous Lingpipe software also looked for a similar thing: Blegging for Help: Web Scraping for Content?

I think the best server-side system among the ones mentioned in the comments so far is boilerpipe: http://code.google.com/p/boilerpipe/. According to its developer Christian Kohlschütter, “The boilerpipe library provides algorithms to detect and remove the surplus “clutter” (boilerplate, templates) around the main textual content of a web page. The library already provides specific strategies for common tasks (for example: news article extraction) and may also be easily extended for individual problem settings. Extracting content is very fast (milliseconds), just needs the input document (no global or site-level information required) and is usually quite accurate.” Some experiments I have done with the system supports the claims of its developer and I plan to use it for some of my projects.

On the other hand there are client-side systems that try to do similar things:

– Readability: http://lab.arc90.com/experiments/readability/

– Readable: http://readable-app.appspot.com/

Both systems are quite handy if your only concern is to have a good reading / text extraction experience within browser, however it may be a major pain in the important parts of your body to convert them to server-side programming languages (and do the necessary testing). It is not impossible though, see the discussion on Env.js group and the discussion on StackOverflow: http://stackoverflow.com/questions/2921237/is-there-anything-for-python-that-is-like-readability-js

There are a few other server-side ‘main text’ extraction systems that I encountered but since I did not experiment with them yet (well, boilerpipe was quite satisfying, I must admit) I did not want to mention them.

PS: If you know about any better server-side system for ‘main text’ extraction feel free to comment or e-mail me (if it is open source and free software).

 
9 Comments

Posted by on September 16, 2010 in Linguistics, Programlama

 

Tags: ,

9 responses to “Web text extraction systems: How to get the main text of an arbitrary web page

  1. ahmet alp balkan

    September 16, 2010 at 22:56

    Tam da bu aralar üzerine çalıştığım bir konu. Bu aralar hep tesadüf yaşıyoruz sizle🙂

    Açıkçası boilerpipe sux. Readable’ı yapan kişiyle yaptığım görüşmeler sonucu non-minimized js kaynak kodunu alabildim. Sonucunda yaptığım Java kütüphanesi boilerpipe’dan çok daha başarılı çalıştı.

    Fakat açıkçası bu işi client tarafına yüklemektense server side yapmak çok daha verimli oluyor. Server Side çalışan HTML parserlar (jericho vb.) daha güzel işler çıkarmanıza yardım ediyor.

     
  2. Emre Sevinc

    September 17, 2010 at 00:59

    Daha iyisi var diyorsan ve paylaşmaya hazır isen ancak sevinmek düşer bana😉 Detayları e-posta ile ilettim.

     
  3. ahmet alp balkan

    September 17, 2010 at 08:56

    Doğrusu ben stajım esnasında bir şeyler geliştirmiştim.

    Ne yazık ki bunun açık kaynaklı olması şirkete bağlı. Güzel bir seviyeye ulaşırsa gpl altında dağıtabileceklerini söylemişlerdi. Lakin ben de mature bir seviyeye getiremedim projeyi.

    Boilerpipe’ı özellikle Türkiye’deki haber sitelerindeki article’lar ve forumlar üzerinde denedim. Verdiği sonuçlar hiç iç açıcı olmamakla beraber hata yapma oranı da oldukça fazlaydı (örn. yanlış yeri content olarak görme).

    Lingpipe daha güzel olabilir, hiç denemediğimden bilmiyorum ama işin gerçeği şu ki Readability gibi JS üzerinde çalışanlara çok emek verilmiş ve çok başarılı sonuçlar çıkarıyorlar.
    🙂 E-posta için teşekkürler.

     
  4. Emre Sevinc

    September 17, 2010 at 12:39

    O halde ben yoluma boilerpipe ile devam edecegim (daha iyisini ve pratigini bulana dek). Bu konuda bir gelisme oldugunda haberdar edersen sevinirim. Kolay gelsin.

     
  5. Ahmet alp balkan

    October 13, 2010 at 16:34

    http://www2003.org/cdrom/papers/refereed/p583/p583-gupta.html ilginc bir paper. Kismen is goruyor. Benim de orada incelenen diger paperlara gore daha farkli bir yaklasimim var. Belki yayimlarim olgunlastirabilirsem.

     
  6. Erdinç Uzun

    January 22, 2011 at 22:17

    Öncelikle bu kadar benzer konularda Türkiye’de çalışan olduğunu bilmiyordum. Bende bu konuda crawler’ım için bir kod yazdım. http://bilgmuh.nku.edu.tr/SET/ adresinden takip edebilirsiniz. Bu konuda bir yayın denemem var. Layout etiketlerini “div, table ve ul” kullanarak crawler belli bir döküman sonra etiketlerin içeriğe ait mi değil mi olduğuna karar veriyor. Bu sayede text density kullanan yöntemlere göre başlıklar, kısa haber açıklamaları ve son dakika haberlerinde de hata yapılmamış oluyor. Tabiiki kötü tarafı kullanıcı yorumları geliyor. Ama menüler, gereksiz linklerin çoğu temizleniyor. http://bilgmuh.nku.edu.tr/ICrawler_Tester/ test sonuçlarını görebilirsiniz.

     
  7. Akshay

    July 30, 2013 at 06:34

    I would like to bring your notice to our Java library : http://ooyuz.com/devextrac.php as well. With this library, you can extract main text of webpage really fast and can even decide between article page and category page. Let me know if you want to test the library. It is released opensource.

     
  8. murat

    August 1, 2015 at 12:57

    Hocam merhaba,bende bu konu üzerinde çalışıyorum.Boilerpipe her site için aynı sonucu vermiyor.Farklı ectractor tiplerine göre de sonuçlar değişebiliyor.Daha iyi sonuç için nasıl bir yol izleyebilirim.

     

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: