新聞發布時間抽取(二)

1. 再論抽取方法

在前一期實驗中,對gne組件進行分析和完善,對三種時間抽取的方法進行了實驗對比。
在對抽取結果進行個例分析的過程中,我發現此前實驗存在幾個問題:

  • 抽取的1000篇新聞存在一定的重復,經過ID去重大約減少了36篇。盡管重復新聞的HTML內容并不一定完全一樣,但考慮到采樣合理性,在新的實驗中,加入基于ID的簡單去重策略。去重這個問題比較復雜,后續單開一篇來討論。
  • 基于文本的正則匹配抽取,其基于//text(),會對整個HTML下面的文本段落段落進行匹配,其中包括<style>(CSS樣式)和<script>(JS腳本)的內容,尤其是<script>可能與JSON-LD重復,且會匹配JS腳本中的非發布日期。在新的改進中,首先移除HTML中的全部<style><script>標簽,然后分別對<head><body>進行匹配,即規則分為 //head//text()//body//text()兩種。理論上來說,<head>中如果出現日期,大概率就是<meta>JSON-LD中的日期,其他<head>標簽中出現的日期即便有也不能采信。在實驗中我的確發現了一例,在<title>中出現了日期,雖然是對的,但是不如正文中的時間精確。
  • 除了已經考慮的<meta>JSON-LD兩種被認為較為可靠的方式外,還有其他較為可靠的方式未考慮,即<time>標簽以及帶有諸如date、time樣式的<span><div>標簽。

2. 時間抽取結果統計

基于新采樣的964篇(去重后)新聞HTML實驗了多種方法,抽取結果如下。
在這里插入圖片描述
通過將上述方法進行組合,按照meta|JSON-LD|time|other|body+re|head+re順序進行提取,可獲得888條,召回率為92.1%;如果按照meta|JSON-LD|time|other|text+re順序進行提取,可獲得923條,召回率為95.7%。排除其中一部分抽取結果可能錯誤或者格式無效問題。

3. 案例分析

為了盡量提高抽取的準確率,對抽取結果進行人工走查分析。

3.1.抽取結果分析(recalled case analysis)

對抽取的888條進行人工走查,判斷是否準確。網頁新聞發布時間的準確率判斷有兩個標準:(1)必須是合法的日期/時間/日期時間的格式。可以首先通過一組較為嚴格的正則表達式進行校驗,對于不匹配的再進行人工核查。(2)是否的確為該網頁所表達的新聞發布時間,也就是說沒有誤抽。

3.1.1.格式正確性分析

經自動檢查和人工核查,在888條結果中,有14條抽取錯誤,詳情如下:

1231405504,06:10 PM06:41 PM06:15 PM06:21 PM06:40 PM
1231393829,Posted yesterday at 6:09am
1231401467,06:10 PM06:41 PM06:15 PM06:21 PM06:40 PM
1231373684,06:10 PM06:41 PM06:15 PM06:21 PM06:40 PM
1231413941,5 hours ago5 hours ago5 hours ago1 day ago21 hours ago
1231423363,Published
1231429109,Posted yesterday at 8:29am
1231423418,Published
1231442966,15:4515:1315:0614:3513:4513:2413:0912:5512:3512:0411:3611:2211:1217:0016:4516:3016:0015:3515:0014:3014:0613:4513:0512:3111:5311:4011:3611:1317:0916:33
1231413993,12 Mar 2025 5:56 pm AEDT12 Mar 2025 5:48 pm AEDT12 Mar 2025 5:45 pm AEDT12 Mar 2025 5:44 pm AEDT12 Mar 2025 5:44 pm AEDT12 Mar 2025 5:34 pm AEDT12 Mar 2025 5:34 pm AEDT12 Mar 2025 5:28 pm AEDT12 Mar 2025 5:14 pm AEDT12 Mar 2025 5:12 pm AEDT12 Mar 2025 5:09 pm AEDT12 Mar 2025 5:09 pm AEDT12 Mar 2025 5:08 pm AEDT12 Mar 2025 5:02 pm AEDT12 Mar 2025 5:02 pm AEDT12 Mar 2025 5:02 pm AEDT12 Mar 2025 4:58 pm AEDT12 Mar 2025 4:54 pm AEDT12 Mar 2025 4:52 pm AEDT12 Mar 2025 4:49 pm AEDT12 Mar 2025 4:48 pm AEDT12 Mar 2025 4:48 pm AEDT12 Mar 2025 4:48 pm AEDT12 Mar 2025 4:48 pm AEDT12 Mar 2025 4:42 pm AEDT12 Mar 2025 4:42 pm AEDT12 Mar 2025 4:40 pm AEDT12 Mar 2025 4:38 pm AEDT
1231404665,12 Mar 2025 4:38 pm AEDT12 Mar 2025 4:22 pm AEDT12 Mar 2025 4:20 pm AEDT12 Mar 2025 4:13 pm AEDT12 Mar 2025 4:12 pm AEDT12 Mar 2025 4:12 pm AEDT12 Mar 2025 4:07 pm AEDT12 Mar 2025 4:07 pm AEDT12 Mar 2025 4:06 pm AEDT12 Mar 2025 4:06 pm AEDT12 Mar 2025 4:06 pm AEDT12 Mar 2025 4:00 pm AEDT12 Mar 2025 3:58 pm AEDT12 Mar 2025 3:52 pm AEDT12 Mar 2025 3:48 pm AEDT12 Mar 2025 3:48 pm AEDT12 Mar 2025 3:46 pm AEDT12 Mar 2025 3:42 pm AEDT12 Mar 2025 3:41 pm AEDT12 Mar 2025 3:40 pm AEDT12 Mar 2025 3:40 pm AEDT12 Mar 2025 3:36 pm AEDT12 Mar 2025 3:36 pm AEDT12 Mar 2025 3:30 pm AEDT12 Mar 2025 3:28 pm AEDT12 Mar 2025 3:24 pm AEDT12 Mar 2025 3:22 pm AEDT12 Mar 2025 3:22 pm AEDT
1231409967,2025-03-112024-11-072024-12-042025-01-192025-03-102025-02-272025-02-262025-02-25
1231295956,03/11/2025 - 09:5403/10/2025 - 09:4403/06/2025 - 10:29
1231402230,12 Mar 2025 8:42 pm AEDT12 Mar 2025 8:42 pm AEDT12 Mar 2025 8:22 pm AEDT12 Mar 2025 8:16 pm AEDT12 Mar 2025 8:14 pm AEDT12 Mar 2025 8:14 pm AEDT12 Mar 2025 8:08 pm AEDT12 Mar 2025 8:02 pm AEDT12 Mar 2025 8:02 pm AEDT12 Mar 2025 7:56 pm AEDT12 Mar 2025 7:46 pm AEDT12 Mar 2025 7:44 pm AEDT12 Mar 2025 7:42 pm AEDT12 Mar 2025 7:40 pm AEDT12 Mar 2025 7:34 pm AEDT12 Mar 2025 7:32 pm AEDT12 Mar 2025 7:28 pm AEDT12 Mar 2025 7:24 pm AEDT12 Mar 2025 7:12 pm AEDT12 Mar 2025 7:12 pm AEDT12 Mar 2025 7:12 pm AEDT12 Mar 2025 7:04 pm AEDT12 Mar 2025 7:02 pm AEDT12 Mar 2025 6:56 pm AEDT12 Mar 2025 6:56 pm AEDT12 Mar 2025 6:54 pm AEDT12 Mar 2025 6:50 pm AEDT12 Mar 2025 6:46 pm AEDT

可以發現其中出現了幾條相對時間,如“5 hours ago”、“yesterday at 8:29am”,以及只有時間如“06:10 PM”,這類信息在缺少上下文的情況下無法推斷絕對時間,應視為無效抽取。查看網頁(https://www.thisdaylive.com/index.php/2025/03/11/police-rescue-two-priests-other-kidnap-victims-in-adamawa-bayelsa/):

<span class="date">5 hours ago</span>

在這里插入圖片描述
說明是通過其他類標簽匹配。同時這個信息其實并非當前新聞的發布時間,而是頁面旁邊的新聞列表中的時間。該頁面真正的發布時間是在一個隱藏標簽中:

<span class="todays-date hide-for-sm-down">Wednesday, 12th March, 2025</span>

標題下面也出現了日期:

<span class="date-container"><i class="fa-light fa-calendar-days"></i> <span class="date">21 hours ago</span></span>

date-container這個樣式還在其他標簽中出現了。
另外也出現了“Published”,發現是其他類標簽抽取出錯,HTML片段如下:

<span class="date">Published</span> <span class="entry-date updated" title="6:01 pm">March 11, 2025</span>

然后這個情況處理比較復雜,雖然可以將entry-date updated加入規則中,但是其日期在text()中,時間則是在@title中。
另一個網頁中(https://98q.com/local-news-stories/efb6880a8150553e5bf8c87c87c03cac)的情況如下:

<span class="date"> Posted yesterday at 8:29am </span>

除此之外,沒有任何其他位置包含時間信息。其他示例包括

<time class="article-intro__date" datetime="2025-03-11" itemprop="datePublished">March 11, 2025</time>
<span class="date updated published-date" itemprop="datePublished" content="2025-03-11T14:36:16+00:00">12 Mar 2025 1:36 am AEDT</span>

從這些個例可以看出,基于其他任意標簽的時間戳往往比較隨意,因此需要嚴格限定規則。

3.1.2.語義正確性分析

對874個抽取取正確時間格式(絕對時間)進行抽樣檢查,看是否為實際的新聞發布時間。
抽樣了10個結果,發現9個抽取自<meta>,1個抽取自JSON-LD,語義全部正確。由于這一批數據大體上都在3月11日左右,因此通過篩選出與3月11日相差較大的日期(如3月9日以前),進行人工對比分析。

出現以下情況:

<meta name="articleDate" content="2025-03-11">
<time datetime="2025-03-07T16:00:00-07:00" class="tnt-date asset-date text-muted">Mar 7, 2025</time>
<div class="PromoA-timestamp" data-timestamp="1610379720000" data-date="January 11, 2021 at 10:42 AM EST" data-promo-date="January 11, 2021" data-show-timestamp="true">, January 11, 2021</div></div>

經分析,全部874個抽取結果中,抽取錯誤僅有2條,說明已有方法較為可靠。

3.2.未抽取網頁分析(bad case analysis)

對未抽取出內容的76篇進行人工檢查,統計結果如下:
在這里插入圖片描述
Missing類進行手工分析,發現情況比較復雜,時間可能出現在標簽中,或者JS代碼中,如果要采用嚴格的規則進行抽取,會比較困難,倒不如直接對HTML進行正則匹配,雖然有抽取錯誤的情況,但也可以忽略不計。

這樣看來,gne組件原始代碼直接基于 //text() 進行規則匹配是有一定道理的。但是,畢竟是規則匹配,難免存在覆蓋不到的情況。如何能夠讓機器做到跟人一樣一眼就可以看到時間并通過其附近的標簽、屬性或樣式等快速判斷?這可以成為繼續研究的主題。

4.結論

本文討論了更多新聞網頁發布時間的抽取方法,開展了相關實驗,并對實驗結果進行了案例分析。

分析發現,通過補充完善正則表達式規則,可以進一步提高時間抽取召回率。但由于正文中的時間語義較為復雜,最佳策略仍然是先通過meta標簽、JSON-LD元數據、time標簽等較為可信的方式抽取。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/74310.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/74310.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/74310.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

算法基礎——棧

一、棧的概念 棧是?種只允許在?端進?數據插?和刪除操作的線性表。 進?數據插?或刪除的?端稱為棧頂&#xff0c;另?端稱為棧底。不含元素的棧稱為空棧。進棧就是往棧中放?元素&#xff0c;出棧就是將元素彈出棧頂。 二、棧的模擬實現 1. 創建 本質還是線性表&#…

Android11至15系統定制篇

Android 11至15系統定制核心要點解析 一、Android 11關鍵定制特性 ?分區存儲強制化? 公共目錄&#xff08;如Downloads、Pictures&#xff09;與應用專屬目錄分離&#xff0c;應用更新后無法通過requestLegacyExternalStorage繞過限制?1。需申請MANAGE_EXTERNAL_STORAGE權限…

macOS 使用 enca 識別 文件編碼類型(比 file 命令準確)

文章目錄 macOS 上安裝 enca基本使用起因 - iconv關于 enca安裝 Encaenca & enconv 其它用法 macOS 上安裝 enca brew install enca基本使用 enca filepath.txt示例 $ enca 動態規劃算法.txt [0] Simplified Chinese National Standard; GB2312CRLF line terminat…

線段樹與掃描線 —— 詳解算法思想及其C++實現

目錄 一、線段樹&#xff08;Segment Tree&#xff09; 基本概念 結構 操作 示例代碼 二、掃描線&#xff08;Sweep Line&#xff09; 基本概念 應用場景 示例代碼&#xff08;矩形面積并集&#xff09; 三、總結 一、線段樹&#xff08;Segment Tree&#xff09; 基本…

匯編代碼中嵌入回調函數的優化說明

一、概述 在 PowerPC 的匯編代碼中&#xff0c;我們需要實現調用 C 函數&#xff08;例如回調函數&#xff09;&#xff0c;并傳遞參數。本文將詳細介紹如何通過一系列步驟完成這一目標&#xff0c;包括代碼示例和詳細的注釋。 二、調用 C 函數的基本步驟及代碼 1. 保存工作寄…

Uni-App 雙欄聯動滾動組件開發詳解 (電梯導航)

本文基于提供的代碼實現一個左右聯動的滾動組件&#xff0c;以下是詳細的代碼解析與實現原理說明&#xff1a; <!--雙欄聯動滾動組件 - 技術解析功能特性&#xff1a;1. 左側導航欄與右側內容區雙向聯動2. 自適應容器高度3. 平滑滾動定位4. 動態內容位置計算 --> <te…

軟考復習-傳輸介質與編碼

傳輸介質 雙絞線 傳輸距離100一200m&#xff0c;即網線&#xff0c;有多種分類 UTP非屏蔽雙絞線 STP屏蔽雙絞線 線序標準有兩種為&#xff1a; T568A標準&#xff1a;綠白、綠、橙白、藍、藍白、橙、棕白、棕 T568B標準&#xff1a;橙白、橙、綠白、藍、藍白、綠、棕白、…

論文閱讀筆記:Denoising Diffusion Probabilistic Models (3)

論文閱讀筆記&#xff1a;Denoising Diffusion Probabilistic Models (1) 論文閱讀筆記&#xff1a;Denoising Diffusion Probabilistic Models (2) 論文閱讀筆記&#xff1a;Denoising Diffusion Probabilistic Models (3) 4、損失函數逐項分析 可以看出 L L L總共分為了3項…

PyTorch 面試題及參考答案(精選100道)

目錄 PyTorch 的動態計算圖與 TensorFlow 的靜態計算圖有何區別?動態圖的優勢是什么? 解釋張量(Tensor)與 NumPy 數組的異同,為何 PyTorch 選擇張量作為核心數據結構? 什么是 torch.autograd 模塊?它在反向傳播中的作用是什么? 如何理解 PyTorch 中的 nn.Module 類?…

#C8# UVM中的factory機制 #S8.1.4# 約束的重載

今天,復習一下《UVM實戰》一書中的 關于約束的重載 章節學習。 一 問題引導 文件:src/ch8/section8.1/8.1.2/rand_mode/my_transaction.sv4 class my_transaction extends uvm_sequence_item; …17 constraint crc_err_cons{18 crc_err == 1b0;19 }20 const…

空調遙控器低功耗單片機方案

RAMSUN空調遙控器采用先進的32位低功耗單片機作為核心控制器&#xff0c;通過優化軟件算法和硬件設計&#xff0c;實現了空調遙控器的低功耗運行。單片機集成了多種功能模塊&#xff0c;包括紅外發射、按鍵掃描、電源管理等&#xff0c;有效降低了整體功耗。同時&#xff0c;該…

結構型——代理模式

結構型——代理模式 代理模式指的是通過創建一個代理來控制對原始對象的訪問。代理在客戶端與實際對象之間充當“中介” 特點 訪問控制&#xff1a;代理對象可以控制對實際對象的訪問&#xff0c;從而實現對訪問權限的控制。延遲加載&#xff1a;代理對象可以在實際對象被調…

【算法】常見排序算法(插入排序、選擇排序、交換排序和歸并排序)

文章目錄 前言一、排序概念及常見排序算法框圖1.排序概念2.常見排序算法框圖 二、實現比較排序算法1.插入排序1.1 直接插入排序1.2 希爾排序 2.選擇排序2.1 直接選擇排序2.2 堆排序 3.交換排序3.1 冒泡排序3.2 快速排序3.2.1 hoare版本3.2.2 挖坑法3.2.3 lomuto前后指針 3.3 快…

Go語言分布式鎖實戰:dlock助力構建高并發穩定系統

在構建分布式系統時&#xff0c;一個常見且棘手的問題便是資源競爭和數據一致性問題。分布式鎖作為一種常用的解決方案&#xff0c;在多個進程或節點之間協調訪問共享資源時顯得尤為重要。今天&#xff0c;我們將介紹一款分布式鎖庫——dlock&#xff0c;并通過詳細的使用示例帶…

算法方法快速回顧

&#xff08;待修改&#xff09; 目錄 1. 雙指針2. 滑動窗口理論基礎 3. 二分查找3. 二分查找理論基礎 4. KMP5. 回溯算法6. 貪心算法7. 動態規劃7.1. 01背包7.2. 完全背包7.3. 多重背包 8. 單調棧9. 并查集10. 圖論10.1. 廣度優先搜索&#xff08;BFS&#xff09;10.2. 深度優…

深度學習:讓機器學會“思考”的魔法

文章目錄 引言&#xff1a;從“鸚鵡學舌”到“舉一反三”一、深度學習是什么&#xff1f;1. 定義&#xff1a;機器的“大腦”2. 核心思想&#xff1a;從數據中“悟”出規律 二、深度學習的“大腦”結構&#xff1a;神經網絡1. 神經元&#xff1a;深度學習的基本單元2. 神經網絡…

電動自行車/電動工具鋰電池PCM方案--SH367003、SH367004、SH79F329

在消費電子系統中&#xff0c;如手機電池包&#xff0c;筆記本電腦電池包等&#xff0c;帶有控制IC、功率MOSFETFE管以及其他電子元件的電路系統稱為電池充放電保護板Protection Circuit Module &#xff08;PCM&#xff09;&#xff0c;而對于動力電池的電池管理系統&#xff…

補碼詳細分析

補碼引入 舉一個生活化的例子 假設由一個掛鐘&#xff0c;它只能順時鐘調時間&#xff0c;那么它調時間就分成了一下兩種情況 正好順時針調就能調好 如&#xff1a;時針從5調到9需要逆時針調才能調好 如&#xff1a;時針從10調到7 在上面的情況中1是不用處理的&#xff0c;2…

計算機網絡入門:物理層與數據鏈路層詳解

&#x1f310; &#xff08;專業解析 中學生也能懂&#xff01;&#xff09; &#x1f4d6; 前言 計算機網絡就像數字世界的“高速公路系統”&#xff0c;而物理層和數據鏈路層是這條公路的基石。本文用 專業視角 和 生活化比喻 &#xff0c;帶你輕松理解這兩層的核心原理&a…

哪些視頻格式在webview2中播放可以設置成透明的?

在WebView2中&#xff0c;能夠播放并設置成透明背景的視頻格式主要取決于其支持的編解碼器以及視頻是否包含alpha通道&#xff08;透明度信息&#xff09;。以下是支持透明背景的視頻格式&#xff1a; 支持透明背景的視頻格式 1. WebM&#xff08;使用VP9編解碼器&#xff09; …