【NLP】15. NLP推理方法詳解 --- 動態規劃:序列標注,語法解析,共同指代

動態規劃 (Dynamic Programming)

動態規劃(Dynamic Programming,簡稱 DP)是一種通過將問題分解為較小子問題來優化計算效率的技術。它特別適用于優化最優解問題,比如序列標注(sequence tagging)這類任務。

序列標注 (Sequence Tagging)

序列標注是自然語言處理(NLP)中常見的任務之一。它的目標是為輸入的每個單詞(或者子序列)分配一個標簽。這個標簽集通常是固定且有限的。最常見的例子是:

  • 命名實體識別(NER):為句子中的每個單詞分配一個類別(例如,表示人名、地點、組織等)。
  • 詞性標注(POS tagging):為每個單詞標記它的詞性(例如,名詞、動詞、形容詞等)。

在序列標注中,標簽是來自一個固定的標簽集合,且序列長度已知且固定。

問題描述

獨立預測的局限性

在許多基礎的機器學習模型中,每個標簽都是獨立預測的。這種方法存在一個問題,就是 獨立預測可能會導致不一致的結果。例如,在詞性標注任務中,模型可能會錯誤地標記某個單詞的詞性,但這個錯誤可能會影響后續預測。

貪心預測的缺點

貪心算法(greedy approach)逐步做出局部最優的選擇,但由于缺乏全局視野,這種方法可能會導致全局的錯誤。例如,貪心算法可能錯誤地為某個詞分配了標簽,導致后續的標注結果不一致。

舉個例子,“the old man the boat”這個句子中,如果我們貪心地預測每個詞的標簽,可能會錯誤地預測"man"作為動詞(即“the old man [to] the boat”)。但由于模型只關注當前詞,錯誤直到后續預測時才會變得明顯。

動態規劃在序列標注中的應用

動態規劃(DP)是解決這類問題的有效工具。它的基本思想是通過將問題分解為子問題,并存儲子問題的解,避免重復計算,進而提高效率。在序列標注中,DP通過計算每個詞的標簽得分以及標簽之間的轉移得分,來有效地找到最高得分的標簽序列。

序列標注模型中的得分計算

序列標注任務的模型通常會涉及兩個主要部分:

  1. 發射模型(Emission Model):表示當前單詞與某個標簽的關聯。例如,對于命名實體識別任務,發射模型會計算每個單詞屬于某個實體類型(如人名、地點等)的概率。
  2. 轉移模型(Transition Model):表示從一個標簽轉移到另一個標簽的概率。例如,標簽 “動詞” 轉移到標簽 “名詞” 的概率。
計算得分的步驟
  1. 初始化步驟(Start State):首先計算從開始狀態(start state)到每個標簽的概率,通常用發射模型來計算。

p r o b 1 = e / t prob1=e / t prob1=e/t

其中 e 是發射概率,t 是轉移概率。

  1. 遞歸計算(Intermediate Scores):對于每個單詞,基于其與當前標簽的發射概率,和從前一個標簽到當前標簽的轉移概率,計算所有可能路徑的得分。

prob4 = e × max ? ( t × prob?pre ) \text{prob4} = e \times \max(t \times \text{prob pre}) prob4=e×max(t×prob?pre)

其中 prob pre 是前一個狀態的概率。

  1. 最終得分(Final Score):當所有單詞都標注完成時,計算最終的得分。

prob10 = max ? ( t pre × prob?pre ) \text{prob10} = \max(t_{\text{pre}} \times \text{prob pre}) prob10=max(tpre?×prob?pre)

其中 tpre 是前一個標簽到當前標簽的轉移概率,prob pre 是前一個標簽的得分。

時間復雜度

  • O(|words| * |labels|2):對于標準的序列標注任務,時間復雜度是 O(單詞數×標簽數^2),因為對于每個單詞,我們需要計算標簽之間的轉移概率,而轉移的計算需要遍歷每對標簽。
  • O(|words| * |labels|3):如果我們在模型中加入了更多的標簽上下文(例如,考慮更長的標簽序列歷史),時間復雜度會增加到 O(單詞數×標簽數^3),這意味著計算量會更大。

模型的應用

這種基于動態規劃的序列標注方法可以應用于不同類型的模型,包括:

  • 線性模型(Linear Models):比如條件隨機場(CRF)模型,能夠有效地處理序列標注問題。
  • 前饋神經網絡(Feedforward Networks):可以用于對每個單詞進行獨立標注,盡管沒有考慮標簽之間的轉移關系。
  • 循環神經網絡(RNN):能夠在處理序列數據時保持對上下文的記憶。
  • 變換器(Transformer):能夠捕捉全局依賴關系,用于序列標注任務。

擴展:提高標簽上下文

如果我們希望引入更多的上下文信息(例如,考慮每個詞的前后標簽),可以將模型擴展為聯合模型(Joint Model)。這種模型將多個標簽的上下文信息一起處理,提高了模型的復雜性,但也可能帶來更好的性能。

語法解析(Graph Parsing)

在自然語言處理中,語法解析(Syntactic Parsing)用于識別句子的語法結構,它能夠幫助我們解析一個句子的結構,解決歧義問題。一句話可能有多種解釋,語法解析的目標是通過建立詞語之間的關系樹來解決這種歧義。

1. 什么是圖解析(Graph Parsing)?

在圖解析中,我們通過構建依存關系樹(dependency tree)來表示句子的語法結構。這種結構通常由(arc)、(edge)和依賴關系(dependencies)組成,表示一個詞語與另一個詞語之間的語法關系。

  • 頭部(head)詞語是句子的核心,它決定了其他詞語的語法角色。
  • 從屬詞(dependent)是依賴于頭部詞語的詞,表示與頭部的語法關系。
2. 解析樹的要求

為了確保生成的語法樹是正確的,解析算法必須滿足以下幾個要求:

  1. 生成一棵樹:結果必須是一個樹結構。
  2. 沒有交叉弧:樹中不能有交叉的依賴關系。
  3. 有且僅有一個根:樹中必須有一個唯一的根節點。
  4. 樹有最高的得分:在所有可能的樹中,得分最高的樹是最終的解析結果。
3. 動態規劃方法

圖解析可以使用動態規劃(Dynamic Programming)來高效地推導出最優的解析樹。解析的過程通常基于項目(items)和規則(rules)。

  • 項目:表示在解析過程中需要構建的中間結構。
  • 規則:定義如何從已有的項目中組合出新的項目。

解析過程遵循以下步驟:

  1. 為每個項目定義規則:逐步組合項目。
  2. 保持每個項目的最佳得分:對于每個步驟,我們保存當前最優的解析樹。
4. 圖解析的過程

圖解析算法通常基于如下思路:

  • 對每個項目進行分析,存儲最優的解析路徑。
  • 最終從最頂層開始,逐步向下回溯,得到最優的解析樹。

這個過程類似于金字塔結構:從底部逐步構建解析樹的各個部分,最后得到完整的句子結構。

5. CKY算法(Cocke-Younger-Kasami Algorithm)

CKY算法是一種常用的動態規劃算法,它可以有效地進行語法分析。其時間復雜度為:

O(∣rules_comb∣?∣words∣^3 + ∣rules_arc∣?∣words∣^2)

其中,|rules_comb| 是組合規則的數量,|words| 是句子中單詞的數量,|rules_arc| 是依賴關系的數量。

6. 為什么圖解析在LLM時代依然重要?

雖然大規模語言模型(LLM)在許多自然語言處理任務中表現出色,但在某些領域,語法解析仍然是非常有用的,尤其是在一些特定的專業領域,如醫療和法律中。以下是一些原因:

  1. 專業領域的需求:例如,醫療領域的文本通常包含復雜的術語和結構,這時準確的語法解析對于理解句子至關重要。
  2. 作為系統的一部分:語法解析可以作為其他任務(如信息抽取、機器翻譯等)的組成部分。它能提供更好的句法結構,幫助后續任務提高準確性。
  3. LLMs的局限性:盡管LLMs在處理自然語言時非常強大,但在某些任務(例如抽象意義表示 AMR)上仍然存在挑戰,而圖解析可以在這些任務中提供幫助。

7. 共同指代(Coreference)

共同指代指的是文本中多個提及相同實體的現象。例如,在句子中提到“John”和“he”,我們需要確定“he”是否指代“John”。

  • 實體鏈接/維基化(Entity Linking/Wikification):將文本中的每個實體鏈接到外部知識庫(如維基百科)。

共同指代的搜索空間非常龐大,可能存在多種方式來將不同的提及聚類在一起。為了解決這個問題,我們可以采用以下簡化方法:

  1. 提及檢測和過濾:首先檢測文本中所有的提及,然后篩選出可能的共同指代。
  2. 鏈接提及對:對每一對提及,找到最可能的前一個提及,并將它們標記為共同指代。
  3. 尋找傳遞閉包:通過逐步傳遞的方式,建立完整的共同指代關系。
8. 簡單而有效的推理算法

有時候,簡單的推理算法就足夠解決問題。通過上述的簡化方法,我們可以有效地解決共同指代問題,盡管這些方法看起來很基礎,但在許多實際應用中仍然非常有效。

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

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

相關文章

JavaScript中的NaN、undefined和null 的區別

NaN代表"Not a Number",它是一種特殊的數值,用于表示非數字值。當一個操作無法返回有效的數值時,通常會得到NaN作為結果。 let result = 10 / abc; console.log(result); // 輸出 NaN需要注意的是,NaN與自身不相等,我們無法通過簡單的比較操作符(如==或===)來…

Turtle事件處理(鍵盤與鼠標交互)

Turtle 提供了 事件驅動編程,允許我們使用 鍵盤 和 鼠標 控制 Turtle,從而實現交互式繪圖。例如,我們可以讓 Turtle 響應 按鍵、鼠標點擊 和 拖動 事件,使其根據用戶的輸入進行移動、旋轉或繪制圖形。 1. 事件機制概述 Turtle 的事件處理主要依賴 turtle.Screen() 提供的 …

【Keepalived】Keepalived-2.3.3明確結束對CentOS 7的支持

2025年3月30日,官方發布了Keepalived的最新版,版本號:2.3.3 而2024年11月3日發布的2.3.2版本,在CentOS 7.9上編譯的時候,就出現了報錯,但是在Alma Linux 8.10上,則可以成功編譯安裝&#xff0c…

PyTorch --torch.cat張量拼接原理

在 PyTorch 的 torch.cat 函數中,out 參數用于指定輸出張量的存儲位置。是否使用 out 參數直接影響結果的存儲方式和張量的內存行為。以下是詳細解釋: 不使用 out 參數(默認行為) 含義:不提供 out 參數時,…

人工智能之數學基礎:矩陣對角化的本質

本文重點 前面的課程中,我們學習了矩陣的對角化,基于對角化可以將矩陣A轉變為對角矩陣D,但是你有沒有想過,為什么要進行矩陣對角化,矩陣對角化究竟做了一件什么事情呢? 矩陣對角化的本質 幾何解釋: 從幾何變換的角度看,矩陣對角化意味著我們找到了一組基,使得線性變…

ubuntu的ubuntu--vg-ubuntu--lv磁盤擴容

在我們安裝ubuntu時,如果選擇的是自動分區,就會按照邏輯卷的形式來分區,并且只分配100G其余的并不會被分配,這對我們大多數情況來說都是不合理的,所以,如何擴充呢 下面以一個小的案例來說明如何擴充 問題…

Redis BitMap 實現簽到及連續簽到統計

一、引言 用戶簽到功能是很多應用都離不開的一個板塊,單詞打開、QQ達人等等為我們所熟知,這項功能該如何實現呢,一些朋友可能想當然的覺得無非將每日的簽到數據記錄下來不就好了,不會去細想用誰記錄,如何記錄才合適。 …

前端國際化-插件模式

文章目錄 Webpack 插件開發解析中文調用有道翻譯 API生成 JSON 語言文件React 國際化實現 Webpack 插件開發 創建 i18n-webpack-plugin.js 插件:在 src 目錄下掃描所有文件使用 babel-parser 解析 JavaScript/JSX 代碼識別中文文本通過有道翻譯 API 翻譯生成 local…

IP屬地和發作品的地址不一樣嗎

在當今這個數字化時代,互聯網已經成為人們日常生活不可或缺的一部分。隨著各大社交平臺功能的不斷完善,一個新功能——IP屬地顯示,逐漸走進大眾視野。這一功能在微博、抖音、快手等各大平臺上得到廣泛應用,旨在幫助公眾識別虛假信…

PP-ChatOCRv3新升級:多頁PDF信息抽取支持自定義提示詞工程,拓展大語言模型功能邊界

文本圖像信息抽取技術在自動化辦公、建筑工程、教育科研、金融風控、醫療健康等行業領域具有廣泛應用場景。2024年9月,飛槳低代碼開發工具PaddleX中新增文本圖像智能產線PP-ChatOCRv3,充分結合PaddleOCR的文本圖像版面解析能力和文心一言語言理解優勢&am…

算法刷題記錄——LeetCode篇(1.2) [第11~20題](持續更新)

更新時間:2025-03-29 LeetCode題解專欄:實戰算法解題 (專欄)技術博客總目錄:計算機技術系列目錄頁 優先整理熱門100及面試150,不定期持續更新,歡迎關注! 17. 電話號碼的字母組合 給定一個僅包含數字 2-9…

如何在 vue 渲染百萬行數據,vxe-table 渲染百萬行數據性能對比,超大量百萬級表格渲染

vxe-table 渲染百萬行數據性能對比,超大量百萬級表格渲染;如何在 vue 渲染百萬行數據;當在開發項目時,遇到需要流暢支持百萬級數據的表格時, vxe-table 就可以非常合適了,不僅支持強大的功能,虛…

阿里 FunASR 開源中文語音識別大模型應用示例(準確率比faster-whisper高)

文章目錄 Github官網簡介模型安裝非流式應用示例流式應用示例 Github https://github.com/modelscope/FunASR 官網 https://www.funasr.com/#/ 簡介 FunASR是一個基礎語音識別工具包,提供多種功能,包括語音識別(ASR)、語音端…

如何使用 LLaMA-Factory 微調 LLaMA3

【LLaMa3微調】使用 LLaMA-Factory 微調LLaMA3 實驗環境 1.1 機器 操作系統:Windows 10 或 UbuntuPyTorch 版本:2.1.0Python 版本:3.10(針對Ubuntu 22.04)Cuda 版本:12.1GPU 配置:p100 (16GB) …

使用Java ApI 實現Hadoop文件上傳

目錄 文件傳輸步驟 windows的本機文件傳輸 linux的虛擬機文件傳輸 文件傳輸步驟 建立連接 在connect2HDFS()方法中,通過設置Configuration對象來指定HDFS的URI(在這個例子中為hdfs://192.168.12.133:9000),并初始化一個FileSys…

喜訊 | 耘瞳科技視覺檢測與測量裝備榮膺“2024機器視覺創新產品TOP10”

3月28日,全球機器視覺行業盛會VisionChina2025(上海)機器視覺展完美收官。展會期間,由機器視覺產業聯盟(CMVU)舉辦的“2024機器視覺創新產品TOP10”企業名單正式揭曉,耘瞳科技“工業跨尺度場景實…

數據可視化(matplotlib)-------圖表樣式美化

目錄 一、圖表樣式概述 (一)、默認圖表樣式 (二)、圖表樣式修改 1、局部修改 2、全局修改 二、使用顏色 (一)、使用基礎顏色 1、單詞縮寫或單詞表示的顏色 2、十六進制/HTML模式表示的顏色 3、RGB…

202518 | Ngnix

Ngnix是什么 Nginx(發音為“engine-x”)是一個開源的高性能HTTP服務器、反向代理服務器、負載均衡器和郵件代理服務器。它由俄羅斯程序員Igor Sysoev開發,首次發布于2004年,旨在解決C10K問題(即如何高效地處理10,000個…

WP Mail 郵件發送:WordPress Mail SMTP設置

在我們WordPress搭建個人網站完成后,讀者或者客戶發送的電子郵件,包括你的WPForms電子郵件通知,如果無法到達預定收件人收件箱,這會對我們網站的運營造成很大的影響,問題在于WordPress Mail SMTP的發送方式。 SMTP&am…

小智機器人關鍵函數解析:MqttProtocol::SendAudio()對輸入的音頻數據進行加密處理,通過UDP發送加密后的音頻數據

MqttProtocol::SendAudio()對輸入的音頻數據進行加密處理&#xff0c;通過UDP發送加密后的音頻數據。 源碼&#xff1a; void MqttProtocol::SendAudio(const std::vector<uint8_t>& data) {// 使用互斥鎖保護臨界區&#xff0c;確保同一時間只有一個線程可以訪問該…