Thứ Bảy, 18 tháng 11, 2006

Sơ lược về kỹ thuật trong VietSpider 3

Trình bày sơ lược về những kỹ thuật trong các module chính của VietSpider 3.

15 nhận xét:

  1. Vietspider là giải pháp phần mềm bóc tách nội dung từ Internet. Chương trình cho phép cấu hình một luồng thông tin trên giao diện đồ họa, từ cấu hình đó, Crawler thực hiện việc bóc tách nội dung từ Internet tiến hành lưu trữ trong database và phát hành trực tiếp tới người dùng.
    Ngoài khả năng bóc tách, ứng dụng còn có khả năng tự động tìm kiếm các nội dung liên quan liên kết chúng lại với nhau. Do đó, nội dung lưu trữ trong cơ sở dữ liệu không là những bản ghi độc lập mà chúng tạo thành một hệ thống lưới dữ liệu liên quan mật thiết với nhau qua ngữ nghĩa. Từ lưới dữ liệu đó, hệ thống có thể lần vết chủ đề tạo thành dòng sự kiện, tìm kiếm, đánh giá những nội dung nổi bật,....
    Giải pháp cũng cung cấp những công cụ quản lý nội dung trong cơ sở dữ liệu, giúp người dùng bao quát được tổng thể các chủ đề, cho phép tái sử dụng vào những mục đích chuyên biệt hoặc phát hành lại trên website.
    Bên cạnh crawler - bóc tách nội dung, RSS Reader là một chức năng cho phép khai thác các kênh nội dung được phân phối theo chuẩn RSS trên Intenet, thư việc được phát triển độc lập sẽ phân phối dưới dạng thư viện nguồn mở cùng với bộ VietSpider HTMLParser trên sourceforge.net.

    Sơ lược kỹ thuật xây dựng chương trình.

    Bộ chuyển đổi tài liệu html.

    Yêu cầu đầu tiên là hệ thống cần xây dựng được một bộ HTMLParser thỏa mãn khả năng trích xuất nội dung từ một tài liệu html. Vietspider không sử dụng các bộ parser nguồn mở có sẵn mà tự xây dựng phục phụ mục đích bóc tách nội dung.

    Từ một địa chỉ trên Internet, Vietspider download về, chuyển đổi sang dạng text và parse nội dung này thành một HTML Tree DOM. Từ DOM này, hệ thống truy xuất tới các nội dung được phân phối ở mức sâu hơn và thực hiện việc bóc tách những phần cần thiết theo một cấu hình cho trước.

    HTMLParser trong VietSpider khi chuyển đổi tuân thủ tương đối các nguyên tắc cơ bản của HTML DTD với version mới nhất trong đó có bổ sung các HTML Tag từ các version cũ của chuẩn HTML. Chuyển đổi tài liệu sang DOM, do khác mục với trình duyệt, HTMLParser chỉ cố gắng chuyển đổi những HTMLTag tham gia vào quá trình định dạng cấu trúc tài liệu, cơ bản không parse những thành phần tham gia vào định dạng việc hiển thị dữ liệu trong HTML Document hay những Tag không tham gia vào việc định dạng tài liệu. Mục đích giúp cải thiện một phần tốc độ cũng như sự đơn giản.

    HTMLParser có bộ công cụ GUI là HTMLExplorer được release kèm với thư viện Open source trên sourceforge.net.

    Sơ lược các kỹ thuật bóc tách.

    HTML là một tài liệu được định dạng theo mô hình cây. Do đó, các hệ thống xử lý nội dung định dạng theo HTML đề chuyển đổi chúng về mô hình dữ liệu dạng tree mà chính xác là Tree DOM. Dựa và Tree DOM, chúng ta có thể dễ dàng truy xuất những thành phần của nó, thêm, bớt hay chỉnh sửa các thuộc tính,... một cách dễ dàng.

    Hầu hết các website hiện nay đều là website động, chúng giống như những template (mẫu) được lên khuôn sẵn và khi có yêu cầu từ phía máy khách, dữ liệu được trả về theo template này. Do đó, các website có một cấu trúc ổn định với mọi nội dung phân phối tới người dùng.

    Dựa vào đặc tính trên của Website động, sau khi chuyển đổi một tài liệu HTML thành Tree DOM, hệ thống cho phép người dùng xác định khối nội dung cần lấy theo một vị trí cụ thể trên Tree DOM. Sau khi định khối, cấu hình này được lưu lại phục phụ cho mục đích bóc tách của crawler.

    Khi nhận được những thông tin về một nguồn tin cùng những cấu hình trước đó, crawler sẽ truy xuất vào Internet, download nội dung và tiến hành các thủ tục bóc tách rồi lưu lại trong cơ sở dữ liệu. Nguồn dữ liệu này tồn tại dưới dạng thô, có thể tiến hành xử lý cho mục đích tái sử dụng cũng như liên kết chúng lại theo những chủ đề liên quan,...

    Sơ lược về kỹ thuật đọc RSS.

    RSS là chuẩn chia sẻ và phân phối nội dung. Hiện nay có rất nhiều những thư viện đọc RSS, ngoài khả năng bóc tách và tổng hợp nội dung của VietSpider, ứng dụng còn cung cấp thêm tính năng đọc RSS như một bổ sung cho chương trình. RSS trong Vietspider được xây dựng ở cấp đơn giản nhưng có khả năng đọc được hết các verion của RSS hoặc ATOM.

    RSS thực chất là các XML document với DTD phục vụ cho mục đích chia sẻ và phân phối thông tin cơ bản của nội dung. Việc đọc và chuyển đổi một XML document đơn giản hơn rất nhiều so với HTML document bởi XML là một cấu trúc chặt chẽ chứ không lỏng lẻo về mặt ngữ pháp như HTML. Hiện nay có rất nhiều các bộ parser giúp cho việc chuyển đổi XML ducument thành những mô hình tài liệu có giao diện lập trình (dạng DOM, SAX,...). Khi tài liệu đã được chuyển đổi sang mô hình dễ sử dụng, chúng ta hoàn toàn có thể lập trình trên chúng.

    RSS Parser trong HTML cho phép chuyển đổi một XML Document thành XML Tree DOM rồi ánh xạ DOM này tới các RSS Bean Object theo version hiện hành của document phân phối. Việc ánh xạ dữ liệu thực hiện qua reflection, đẩy một dữ liệu từ các Item của DOM sang một object dễ sử dụng hơn. Khi đã có được Object này, lập trình viên có thể dễ dàng truy xuất cho những xử lý chuyên biệt hoặc hiển thị chúng trên giao diện đồ họa người dùng.

    Sơ lược về kỹ thuật mining.

    Nội dung có một ý nghĩa, một chủ đề cụ thể, giải pháp nhằm đánh giá, khai thác, tổng hợp,... ngữ nghĩa cho nội dung thường được gọi là mining. Công nghệ có tính tri thức nhằm phân tích dữ liệu trên một hay nhiều ngữ nghĩa sau đó tổng hợp chúng thành những nguồn nội dung có giá trị về mặt ý nghĩa thường được gọi là data mining. Có rất nhiều những lý thuyết nghiên cứu về vấn đề này và trên thế giới đã có rất nhiều hệ thống xây dựng thành công.

    VietSpider sử dụng hai kỹ thuật TF*PDF ( Term Frequency * Proportional Document Frequency) để tổng hợp nội dung. Thông thường một nội dung tin tức sẽ đề cập đến những danh từ cụ thể trong một chủ đề cụ thể. Phân tích để tìm ra những danh từ (chỉ người, vật, địa điểm,...) cùng chủ đề mà nội dung đề cập. Dữ liệu này được lưu lại trong database, và những nội dung tương quan sẽ được đánh giá dựa theo những thông tin này. Giải pháp được phát triển từ những thành phần cơ bản của dự án nguồn mở Lucene (version 2.0) trên Apache. Lucene là một thư viện fulltext search, hoàn toàn không phải là một giải pháp mining. Do đó, VietSpider dựa trên mã nguồn của sản phẩm này để phát triển mô hình mining với tiếng Việt bước đầu đã có những thành công nhất định.

    Trả lờiXóa
  2. e ko thay fan download o dau ca anh oi

    Trả lờiXóa
  3. anh có thể nói rõ phần sau khi thu thập tin RSS rồi phân loại tin như thế nào có được không anh?
    Dùng cái gì để thực hiện nó. em cám ơn!

    Trả lờiXóa
  4. mình biết đến blog của nhuthuan qua topic http://www.ddth.com/showthread.php?p=1549259#post1549259 và cũng đọc qua một số entry về giải thuật cũng như cách hoạt động của VietSpider. Quả thật hơi bất ngờ vì mình cũng vừa phát triển xong ở mức tạm ổn 1 spider cho riêng mình phục vụ cho site : toptiptut.com, bất ngờ ở chỗ giải thuật của mình cũng gần gần giống với nhuthuan :D. Spider của mình viết bằng trên nền asp.net (c#) mình cũng xin giới thiệu qua các bước cho spider của mình để các bạn tham khảo:
    1. Thu thập các template của các website, thông qua đó bạn xác định được "mẫu" khi bắt đầu và kết thúc 1 content
    2. Thu thập các rss của các site, từ rss bạn sẽ có link của content, thông thường rss được phân phát theo chuyên mục, từ tính chất này bạn có thể điều hướng nội dung của rss về chuyên mục trên site của bạn.
    3. Bước thu thập nội dung, theo link từ các rss, bạn "download" content về và dựa trên template để xác định đâu là phần nội dung của content để xuất ra hoặc insert vào database của bạn.
    Một số bước căn bản từ spider của riêng mình cho các bạn tham khảo, mình chỉ mới phát triển spidder này trong khoảng 2 tuần, giải thuật như trên và hoàn toàn phụ thuộc vào template của các website nguồn.

    Trả lờiXóa
  5. Hi bạn,

    Mình có 1 số thắc mắc, bạn có thể giúp mình được không? Đó là kết quả sau khi bóc tách thông tin được lưu ở đâu, trong 1 folder do mình định ra hay trong database? Bây giờ mình muốn dùng kết quả ấy để show ra 1 trang web thì nên xử lý như thế nào?

    Cảm ơn bạn.

    Trả lờiXóa
  6. Kết quả sau bóc tách sẽ được lưu trong database, có thể là MySQL, SQL Server, Oracle,... tùy bạn thiết lập và cài đặt trong cấu hình. Bạn thử lại nhé.

    Khi có database đó, bạn có thể viết web để show ra ngoài.

    Chào Tấn Khánh, cám ơn bạn đã chia sẻ. Bận quá nên chưa phản hồi lại được.

    Trả lờiXóa
  7. Hi,
    Mình có tải VietSpider cho linux về dùng thử, chỉ chạy thành công lần đầu tiên, sau khi restart nó thì gặp lỗi naỳ:
    Exception in thread "Thread-3" java.lang.RuntimeException: java.lang.NullPointerException
    at org.vietspider.VietSpider$2.run(VietSpider.java:100)
    at java.lang.Thread.run(Thread.java:619)
    log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.tsccm.RefQueueWorker).
    log4j:WARN Please initialize the log4j system properly.

    Mình không hiểu lỗi do đâu.

    Trả lờiXóa
  8. Đây là lỗi xảy ra ở các bản cũ của VietSpider (trước bản build 13). Bạn mở file data/system/system.properties và khai báo giá trị của host rồi save lại. (tìm đến dòng host= và thêm vào địa chỉ ip ví dụ 192.168.1.13). Sau đó chạy lại chương trình. Bản 13 đã khắc phục được vấn đề này.

    Trả lờiXóa
  9. Bản free không có tùy chọn ngôn ngữ bạn nhỉ?

    Trả lờiXóa
  10. A`, tớ có thấy tùy chọn ngôn ngữ trong bản 12, nhưng màn hình lúc khởi động đó không dừng lại mà nó vào ngay chương trình chính.

    Trả lờiXóa
  11. bản miễn phí không có tùy chọn cho bạn.

    Trả lờiXóa
  12. Bạn có thể hướng dẫn tớ lấy thông tin đc không?
    Tớ muốn lấy toàn bộ dữ liệu từ bảng này về:http://ai.fmcsa.dot.gov/SafeStat/CarrierSelectionList.asp?interintra=1&selection=National&State1=+&Resource=+&State2=+&intraselect=allintrast&stateintra=+&SEACat=+&Category=+&SortSelection=carriername&Submit1=Search&PageN=PlsWait&WhichForm=advance
    (Trang ngoài của nó là: http://ai.fmcsa.dot.gov/SafeStat/disclaimer.asp?RedirectedURL=/SafeStat/SafeStatMain.asp&PageN%3Dresult2%26link%3D -> click button ở cuối trang -> click button search ở tab Carrier List)

    Tớ đặt trang chủ = http://ai.fmcsa.dot.gov/SafeStat/CarrierSelectionList.asp?interintra=1&selection=National&State1=+&Resource=+&State2=+&intraselect=allintrast&stateintra=+&SEACat=+&Category=+&SortSelection=carriername&Submit1=Search&PageN=PlsWait&WhichForm=advance

    Đặt trang mẫu = http://ai.fmcsa.dot.gov/SafeStat/CarrierOverview.asp?DOT=1856090

    Trang mẫu là trang detail của 1 item mà tớ chọn ở trang list, tớ muốn lấy các thông tin ở vùng Carrier Overview.
    Sau đó từ trang detail này, ở vùng Carrier Overview, tớ theo link "For more up-to-date Carrier Information visit the SAFER website." tới 1 trang nữa, vd http://safer.fmcsa.dot.gov/query.asp?searchtype=ANY&query_type=queryCarrierSnapshot&query_param=USDOT&query_string=1856090, ở trang này tớ lấy các thông tin nó liệt kê trong cái table.

    Tớ đặt mức quét là 3.

    Nhưng nội dung sau khi quét nội dung lấy về lại là các link như
    "State Profile Reports
    Historical View..."

    Trả lờiXóa
  13. Mình đang làm một crawler lấy thông tin giá phòng khách sạn từ trang chudu24.com nhưng không biết các bước làm thế nào.các pro chỉ mình với nha! mình cảm ơn rất nhiều...
    Mình không biết viết code thế nào hết, các pro có bài nào tương tự cho mình xin nha...
    Xin hậu tạ...

    Trả lờiXóa

nhudinhthuan@gmail.com