#extract #density #content #text #paper #scraping #dom-text-density

dom-content-extraction

Rust 实现通过文本密度进行内容提取的论文

10 个版本

新版本 0.3.2 2024 年 8 月 14 日
0.3.1 2024 年 8 月 12 日
0.2.14 2024 年 8 月 10 日
0.2.12 2024 年 7 月 24 日
0.1.0 2023 年 3 月 25 日

网页编程 中排名 457

Download history 2/week @ 2024-07-06 97/week @ 2024-07-20 65/week @ 2024-07-27 351/week @ 2024-08-10

每月下载量 513

授权 MPL-2.0

34KB
508

dom-content-extraction

Fei Sun、Dandan Song 和 Lejian Liao 论文的 Rust 实现

通过文本密度进行内容提取 (CETD)

use dom_content_extraction::{DensityTree, get_node_text};

let dtree = DensityTree::from_document(&document); // &scraper::Html 
let sorted_nodes = dtree.sorted_nodes();
let node_id = sorted_nodes.last().unwrap().node_id;

println!("{}", get_node_text(node_id, &document));

dtree.calculate_density_sum();
let extracted_content = dtree.extract_content(&document);

println!("{}", extracted_content;

运行示例

检查示例。

此示例将从生成的 "lorem ipsum" 页面提取内容

cargo run --example check -- lorem-ipsum 

有一个评分示例,我正在尝试实现评分。您需要从

https://sigwac.org.uk/cleaneval/

下载 GoldenStandard 和 finalrun-input 数据集,并将其解压到 data/ 目录。

cargo run --example ce_score

据我所知,有些文件无法打开

Error processing file 730: Failed to read file: "data/finalrun-input/730.html"

Caused by:
    stream did not contain valid UTF-8

但总体上提取效果相当不错

Overall Performance:
  Files processed: 370
  Average Precision: 0.87
  Average Recall: 0.82
  Average F1 Score: 0.75  

在 docs.rs 上阅读文档

期望功能

  • 实现正常评分
  • 创建真实世界数据集
  • 改进算法

依赖项

~3–9MB
~80K SLoC