Hãy tưởng tượng rằng bạn đang chuẩn bị bắt tay vào thực hiện dự án N.GN (Next Google News) hay N.BM (Next Báo mới), bạn đang cầm một danh sách dài các chức năng, yêu cầu:
- thu thập bài viết từ nhiều nguồn: vnexpress.net, news.zing.vn, soha.vn, …
- tự động sắp xếp bài viết
- phát hiện bài viết trùng lặp
- tóm tắt nội dung bài viết
- phân tích hình đại diện cho bài viết
- xây dựng website
- …
Việc xây dựng dự án trên cần có các công nghệ thích hợp: Python để thu thập bài viết, Java dùng cho việc phân tích, PHP cho website, MongoDB để lưu trữ dữ liệu … (thêm công nghệ khác của bạn vô …) trước khi quyết định chọn công nghê để bắt tay vào làm, mình đề xuất các bạn nên sử dụng node.js, lý do mình sẽ trình bày trong loạt bài viết sau đây:
- Thu thập bài viết dùng thư viện request – node.js (TODO)
- Trích xuất nội dung, hình đại diện bài viết sử dụng readability – node.js (TODO)
- Phát hiện bài viết trùng lặp dùng với node.js (TODO)
- Tóm tắt nội dung bài viết với node-summary – node.js (TODO)
Hay quá, lót dép chờ
Về trích xuất nội dung web page, bạn có thể sử dụng article-parser vì mình đã tối ưu lên từ readability + extractor và có fallback đến Embedly API.
https://www.npmjs.com/package/article-parser
Để xử lý bài trùng lặp, mình đề xuất dùng natural vì nó có implement cho 2 thuật toán phân tích chuỗi nổi tiếng Levenshtein (đo mức độ sửa đổi) và Jaro–Winkler (đo sự khác biệt giữa 2 chuỗi):
https://www.npmjs.com/package/natural