Khai thác dữ liệu web liên quan đến một số lượng đáng kể các quyết định thiết kế và bước ngoặt trong xử lý dữ liệu. Tùy thuộc vào mục đích thu thập dữ liệu, nó cũng có thể yêu cầu đánh giá chất lượng và lọc đáng kể. Mặc dù một số thuật toán quy mô lớn có thể được kỳ vọng sẽ làm mịn các điểm bất thường, nhưng việc sử dụng yêu cầu tỷ lệ sai sót thấp và các phương pháp đọc gần [chẳng hạn như tìm kiếm các ví dụ trong nghiên cứu từ điển] ngụ ý các cải tiến và cải tiến liên tục đối với việc xây dựng và xử lý thuật toán.
Phân biệt giữa toàn bộ trang và nội dung văn bản chính có thể giúp giảm bớt nhiều vấn đề về chất lượng liên quan đến văn bản web. nếu văn bản chính quá ngắn hoặc dư thừa, có thể không cần thiết phải sử dụng nó. Mặc dù nó hữu ích cho việc loại bỏ các tài liệu web trùng lặp, nhưng các tác vụ khác liên quan đến trích xuất nội dung cũng được hưởng lợi từ cơ sở văn bản sạch hơn, vì nó giúp thực hiện công việc trên nội dung “thực”. Trong trường hợp cụ thể là nghiên cứu ngôn ngữ và từ điển, nó cho phép chạy kiểm tra nội dung [chẳng hạn như phát hiện ngôn ngữ] trên phần duy nhất của tài liệu thực sự được tính
Những thách thức trong việc trích xuất nội dung web
Do kho văn bản, loại văn bản và trường hợp sử dụng ngày càng đa dạng nên việc đánh giá mức độ đầy đủ và chất lượng của dữ liệu web nhất định cho các mục tiêu nghiên cứu nhất định ngày càng trở nên khó khăn hơn. Hoạt động trung tâm trong xây dựng kho văn bản bao gồm giữ lại nội dung mong muốn trong khi loại bỏ phần còn lại, một nhiệm vụ có nhiều tên đề cập đến các nhiệm vụ con đặc biệt hoặc toàn bộ. quét web, loại bỏ bản soạn sẵn hoặc phát hiện bản mẫu, phát hiện mẫu trang web, làm sạch trang web hoặc trích xuất nội dung web – để biết tổng quan gần đây, hãy xem Lejeune & Zhu [ .
Gần đây, các phương pháp sử dụng CommonCrawl đã phát triển mạnh mẽ, vì chúng cho phép tải xuống và xử lý nhanh hơn bằng cách bỏ qua [hoặc chính xác hơn là thuê ngoài] giai đoạn thu thập thông tin. Mặc dù tôi nghĩ rằng việc tìm kiếm cách "riêng" của một người thông qua Web khá phù hợp với một số tình huống sử dụng nhất định, nhưng rõ ràng là dữ liệu CommonCrawl không nên được sử dụng mà không có một số bộ lọc, nó cũng có thể được hưởng lợi từ siêu dữ liệu được tinh chỉnh hơn
Tôi đã viết về công việc đang diễn ra trong việc trích xuất ngày tháng trong các trang HTML bằng mô-đun Python htmldate, bây giờ tôi sẽ giới thiệu thành phần thứ hai của . trafilatura, một thư viện Python để trích xuất văn bản. Nó tập trung vào nội dung chính, thường là phần được hiển thị ở trung tâm, không có thanh bên trái hoặc bên phải, đầu trang hoặc chân trang, nhưng bao gồm các tiêu đề và nhận xét tiềm năng.
Giới thiệu tính năng cạo văn bản với Trafilatura
Trafilatura là một thư viện Python được thiết kế để tải xuống, phân tích cú pháp và cạo dữ liệu trang web. Nó cũng cung cấp các công cụ có thể dễ dàng trợ giúp điều hướng trang web và trích xuất liên kết từ sơ đồ trang web và nguồn cấp dữ liệu
Mục đích chính của nó là tìm các phần văn bản gốc và có liên quan của trang web và cũng để loại bỏ tiếng ồn bao gồm các phần tử lặp lại [đầu trang và chân trang, quảng cáo, liên kết/danh sách blog, v.v. ]. Nó phải đủ chính xác để không bỏ sót văn bản hoặc loại bỏ các tài liệu hợp lệ, nó cũng phải có tốc độ hợp lý, vì nó dự kiến sẽ chạy trong sản xuất trên hàng triệu trang
Trafilatura loại bỏ văn bản chính của trang web trong khi vẫn giữ nguyên một số cấu trúc, một tác vụ còn được gọi là loại bỏ bản mẫu, nội dung dựa trên DOM . Kết quả xử lý có thể ở định dạng HTML text cleaning. The result of processing can be in TXT , CSV , JSON & XML formats. In the latter case, basic formatting elements are preserved such as text formatting [bold, italic, etc.] and page structure [paragraphs, titles, lists, links, images, etc.], which can then be used for further processing.
Thư viện chủ yếu hướng tới phân tích ngôn ngữ nhưng có thể phục vụ nhiều mục đích khác nhau. Từ quan điểm ngôn ngữ học và đặc biệt là khi so sánh với kho ngữ liệu “tiền web” và mục đích chung, những thách thức trong việc xây dựng kho dữ liệu web nằm ở khả năng trích xuất và xử lý trước các văn bản web thu được và cuối cùng là cung cấp chúng trong các bộ sưu tập mạch lạc và có thể mô tả rõ ràng
Vì trafilatura như vậy có tính năng trích xuất nhận xét [tách biệt với phần còn lại], phát hiện trùng lặp ở cấp độ câu, đoạn văn và tài liệu bằng cách sử dụng ít được sử dụng gần đây nhất [ LRU] cache, XML output compatible with the recommendations of the Text Encoding Initiative [XML TEI], and language detection on the extracted content.
Thư viện hoạt động với tất cả các phiên bản phổ biến của Python và có thể được cài đặt như sau
$ pip install trafilatura # pip3 where applicable
Cách sử dụng với Python
Thư viện bao gồm một loạt hàm Python có thể dễ dàng sử dụng lại và điều chỉnh cho phù hợp với các cài đặt phát triển khác nhau
>>> import trafilatura >>> downloaded = trafilatura.fetch_url['//github.blog/2019-03-29-leader-spotlight-erin-spiceland/'] >>> trafilatura.extract[downloaded] # outputs main content and comments as plain text ... >>> trafilatura.extract[downloaded, xml_output=True, include_comments=False] # outputs main content without comments as XML ...
Các giá trị này được kết hợp có thể mang lại thời gian thực thi nhanh nhất nhưng không nhất thiết phải bao gồm tất cả các đoạn văn bản có sẵn
>>> result = extract[downloaded, include_comments=False, include_tables=False, no_fallback=True]
Đầu vào có thể bao gồm một cây được phân tích cú pháp trước đó [i. e. một lxml. html], sau đó được xử lý liền mạch
>>> from lxml import html >>> mytree = html.fromstring[''] >>> extract[mytree] 'Here is the main text. It has to be long enough in order to bypass the safety checks. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n' Here is the main text. It has to be long enough in order to bypass the safety checks. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Có thể sử dụng hàm bare_extraction
để bỏ qua chuyển đổi và sử dụng trực tiếp và chuyển đổi đầu ra thô. nó trả về các biến Python cho siêu dữ liệu [dưới dạng từ điển] cũng như văn bản chính và nhận xét [cả hai đều là đối tượng LXML ].
>>> from trafilatura import bare_extraction >>> bare_extraction[downloaded]
- Để biết thêm chi tiết, vui lòng tham khảo phần tài liệu đề cập đến Python
Cách sử dụng trên dòng lệnh
Trafilatura bao gồm giao diện dòng lệnh và có thể được sử dụng thuận tiện mà không cần viết mã
$ trafilatura -u "//www.scientificamerican.com/article/statistically-speaking-elephants-by-the-numbers/" 'Post updated 8/13/2013, 11:18 a.m. It’s World Elephant Day. [Who knew?!] Here’s a sober update on the ongoing saga of the proboscidian we call elephants. ...' $ trafilatura -h # displays all the available options
Tổ hợp đối số sau đây cho phép tải xuống hàng loạt [URL được chứa bởi links.txt
], sao lưu các nguồn HTML trong một thư mục, chuyển đổi và lưu trữ riêng biệt . Điều này có thể đặc biệt hữu ích cho việc lưu trữ và xử lý thêm. XML. This can be especially useful for archival and further processing:
$ trafilatura --inputfile links.txt --outputdir converted/ --backup-dir html-sources/ --xml
- Để biết thêm thông tin, vui lòng tham khảo tài liệu về cách sử dụng dòng lệnh
Các lựa chọn thay thế tiềm năng
Mặc dù một vài gói Python tương ứng không được duy trì tích cực, các lựa chọn thay thế sau đây để trích xuất văn bản web bao gồm
- Thư viện giữ nguyên cấu trúc văn bản nhưng không tập trung vào văn bản chính
- Thư viện tập trung vào trích xuất văn bản chính
- Các thư viện trích xuất văn bản chính đồng thời trích xuất siêu dữ liệu của tài liệu
Trafilatura có nhiều chức năng hữu ích như siêu dữ liệu, trích xuất văn bản và nhận xét cũng như khám phá liên kết trong nguồn cấp dữ liệu và sơ đồ trang web. Chỉ riêng về trích xuất văn bản, nó đã có giá tốt hơn đáng kể so với các lựa chọn thay thế hiện có, hãy xem các so sánh về chất lượng trích xuất sau đây