NLP基礎——語言模型(動手學深度學習)

語言模型

聯合概率

給定文本序列 x 1 , ? , x t x_1,\cdots,x_t x1?,?,xt?,語言模型的目標是估計聯合概率 P ( x 1 , ? , x t ) P(x_1,\cdots,x_t) P(x1?,?,xt?). 這里的 x t x_t xt? 可以認為是文本序列在時間步 t t t 處的觀測或標簽,而所謂聯合概率指的是一個句子的整體概率,即句子中所有單詞相繼出現的概率。

語言模型的用處:可以在語音識別上解決同音句歧義問題和斷句問題。

語言建模

根據上一節中的序列模型的分析,有基礎概率規則: P ( x 1 , x 2 , ? , x T ) = ∏ t = 1 T P ( x t ∣ x 1 , ? , x t ? 1 ) P(x_1,x_2,\cdots,x_T)=\prod_{t=1}^TP(x_t|x_1,\cdots,x_{t-1}) P(x1?,x2?,?,xT?)=t=1T?P(xt?x1?,?,xt?1?)例如一個四個單詞的文本序列的概率表示為: P ( d e e p , l e a r n i n g , i s , f u n ) = P ( d e e p ) P ( l e a r n i n g ∣ d e e p ) P ( i s ∣ d e e p , l e a r n i n g ) P ( f u n ∣ d e e p , l e a r n i n g , i s ) P(deep,learning,is,fun)=P(deep)P(learning|deep)P(is|deep,learning)P(fun|deep,learning,is) P(deep,learning,is,fun)=P(deep)P(learningdeep)P(isdeep,learning)P(fundeep,learning,is)

為了訓練語言模型,我們需要計算單詞的概率, 以及給定前面幾個單詞后出現某個單詞的條件概率。 這些概率本質上就是語言模型的參數。

計數建模

最容易想到的方法是統計單詞(詞元)在數據集中出現的次數,然后除以整個語料庫的單詞總數。例如: P ( l e a r n i n g ∣ d e e p ) = n ( d e e p , l e a r n i n g ) n ( d e e p ) P(learning|deep)=\frac{n(deep,learning)}{n(deep)} P(learningdeep)=n(deep)n(deep,learning)? 其中 n ( x ) , n ( x , x ‘ ) n(x),n(x,x`) n(x),n(x,x) 分別表示單個單詞和連續單詞出現次數。

這種方法在一些高頻詞上表現的不錯,但是在一些低頻詞和長句多單詞組合的情況表現不佳,因為可能語料庫中這樣的數據很少,即使提出了一些解決辦法如拉普拉斯平滑(通過計數中添加小常量),但仍不能解決該問題。

馬爾可夫模型與n元語法

當單純使用計數法時可能存在長單詞序列樣本極少導致 n ( x 1 , ? , x t ) ≤ 1 n(x_1,\cdots,x_t)\leq1 n(x1?,?,xt?)1 的情況。回憶上一章序列模型中提到的馬爾可夫模型,將其用于語言建模。

我們可以不用考慮整個序列模型,而是只用考慮長度為 τ \tau τ 的時間跨度,還是以長度為 4 4 4 的句子的聯合概率舉例。

一元語法 τ = 0 \tau = 0 τ=0:不用考慮單詞之間的聯系,只考慮互相獨立概率,這樣前后文之間無關聯的語法并不適用時序的模型。 P ( x 1 , x 2 , x 3 , x 4 ) = P ( x 1 ) P ( x 2 ) P ( x 3 ) P ( x 4 ) = n ( x 1 ) n ( x 2 ) n ( x 3 ) n ( x 4 ) n 4 P(x_1,x_2,x_3,x_4)=P(x_1)P(x_2)P(x_3)P(x_4)=\frac{n(x_1)n(x_2)n(x_3)n(x_4)}{n^4} P(x1?,x2?x3?,x4?)=P(x1?)P(x2?)P(x3?)P(x4?)=n4n(x1?)n(x2?)n(x3?)n(x4?)?

二元語法:只與前一個詞元有關。 P ( x 1 , x 2 , x 3 , x 4 ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 2 ) P ( x 4 ∣ x 3 ) P(x_1,x_2,x_3,x_4)=P(x_1)P(x_2|x_1)P(x_3|x_2)P(x_4|x_3) P(x1?,x2?x3?,x4?)=P(x1?)P(x2?x1?)P(x3?x2?)P(x4?x3?)
通常,涉及一個、兩個和三個變量的概率公式分別被稱為一元語法(unigram)、二元語法(bigram)和三元語法。 n n n 元語法模型最大好處在于:在處理比較長的序列時可以將所有長為 n n n 的子序列概率存下來,假設存下來所有情況的數量為 k k k,那么之后查詢時復雜度固定為 O ( k ) O(k) O(k) 而不用遍歷整個文本 O ( n ) O(n) O(n).

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

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

相關文章

亞信安慧AntDB:卓越的拓展性和靈活性

在當今這個信息爆炸的時代,企業對數據處理的需求不斷增長,傳統的數據庫系統往往難以應對海量數據的存儲和處理挑戰。然而,隨著亞信安慧AntDB的出現,解決這一難題的曙光終于出現在眼前。AntDB不僅僅具備了高吞吐、高并發、高性能的…

Linux系統之mv命令的基本使用

Linux系統之mv命令的基本使用 一、mv命令介紹1. mv命令簡介2. mv命令的使用結果 二、mv命令的使用幫助1. 在命令行的幫助信息2. mv常用選項 三、mv命令的基本使用1. 創建源目錄和目標目錄2. 新建測試文件3. 將源目錄文件復制到目標目錄4. 將文件進行改名5. 將目錄的所有文件轉移…

前端面試寶典總結4-手搓代碼JavaScript(數據處理)

前端面試寶典總結4之手寫代碼JavaScript(數據處理) 本文章 對各大學習技術論壇知識點,進行總結、歸納自用學習,共勉🙏 上一篇👉: 前端面試寶典總結3-JavaScript(2) 文章目錄 前端…

python長方形周長面積 2024年3月青少年編程電子學會python編程等級考試二級真題解析

目錄 python長方形周長面積 一、題目要求 1、編程實現 2、輸入輸出 二、算法分析 三、程序代碼 四、程序說明 五、運行結果 六、考點分析 七、 推薦資料 1、藍橋杯比賽 2、考級資料 3、其它資料 python長方形周長面積 2024年3月 python編程等級考試級編程題 一、…

matlab模擬太陽耀斑噴發

代碼 function simulate_solar_flare% 參數設置gridSize 100; % 網格大小timeSteps 200; % 時間步數dt 0.1; % 時間步長% 初始化網格[X, Y] meshgrid(linspace(-5, 5, gridSize));Z zeros(size(X));% 設置耀斑初始位置和強度flareCenter [0, 0]; % 耀斑中心位置flareRad…

【實用技巧】Unity中的Image組件

Unity中的Image組件是UI系統的核心部分,用于顯示圖像和紋理。以下是一些關于Unity Image組件的實用技巧: 使用Sprite作為Image源: 將Sprite直接拖拽到Image組件的Source Image字段中,可以快速設置顯示的圖像。 調整顏色和透明度&a…

9 -力扣高頻 SQL 50 題(基礎版)

9 - 上升的溫度 -- 找出與之前(昨天的)日期相比溫度更高的所有日期的 id -- DATEDIFF(2007-12-31,2007-12-30); # 1 -- DATEDIFF(2010-12-30,2010-12-31); # -1select w1.id from Weather w1, Weather w2 wheredatediff(w1.recordDate,w2.recordDat…

SolidWorks功能強大的三維設計軟件下載安裝,SolidWorks最新資源獲取!

SolidWorks,它憑借出色的三維建模能力,使得設計師們能夠輕松構建出復雜且精細的機械模型,大大提升了設計效率和質量。 在機械設計領域,SolidWorks憑借其豐富的工具和特性,讓設計師們能夠隨心所欲地揮灑創意。無論是零…

Flutter 中的 LayoutBuilder 小部件:全面指南

Flutter 中的 LayoutBuilder 小部件:全面指南 Flutter 是一個功能豐富的 UI 框架,它允許開發者使用 Dart 語言來構建高性能、美觀的跨平臺應用。在 Flutter 的布局系統中,LayoutBuilder 是一個強大的組件,它可以根據父容器的約束…

家政預約小程序12用戶登錄

目錄 1 創建全局變量2 創建頁面3 搭建頁面4 實現登錄邏輯總結 在小程序中,登錄是一個常見的場景。比如我們在小程序預約或者購買時,通常要求用戶先登錄后購買。如果使用傳統方案,登錄這個動作其實最終的目的是為了獲取用戶的openid。而使用低…

Python學習圣經:從0到1,精通Python使用

尼恩:LLM大模型學習圣經PDF的起源 在40歲老架構師 尼恩的讀者交流群(50)中,經常性的指導小伙伴們改造簡歷。 經過尼恩的改造之后,很多小伙伴拿到了一線互聯網企業如得物、阿里、滴滴、極兔、有贊、希音、百度、網易、美團的面試機會&#x…

【智能體】文心智能體大賽第二季持續進行中,一起在智能體的海洋里發揮你的創意吧

目錄 背景作文小助手AI迅哥問答程序員黃歷助手比賽時間第二期賽題豐厚獎品評選說明獲獎智能體推薦文章 背景 AI應用(智能體),持續火熱,一句話就能創建一個有趣、好玩的應用。 可以說一分鐘內就能創建一個有創意的智能體。 看大多…

Linux網絡-自定義協議、序列化和反序列化、網絡計算服務器的實現和Windows端客戶端

文章目錄 前言一、自定義協議傳結構體對象 序列化和反序列化什么是序列化?反序列化 二、計算器服務端(線程池版本)1.main.cc2.Socket.hpp3.protocol.hpp4.Calculator.hpp5.serverCal.hpp6.threadPool.hpp7.Task.hpp8. log.hpp 客戶端Windows客…

我有點想用JDK17了

大家好呀,我是summo,JDK版本升級的非常快,現在已經到JDK20了。JDK版本雖多,但應用最廣泛的還得是JDK8,正所謂“他發任他發,我用Java8”。 其實我也不太想升級JDK版本,感覺投入高,收…

華為、華三交換機、路由器啟用基于端口的環回檢測功能配置

目的 在進行某些特殊功能測試時,例如初步定位以太網故障時,需要開啟以太網接口環回檢測功能,測試接口功能是否異常。 當以太網接口無故障時,開啟環回檢測功能后接口物理狀態和協議狀態將始終處于Up狀態;如果以太網接口…

Linux環境搭建NextCloud

NextCloud是什么 Nextcloud是一款開源免費的私有云存儲網盤項目,可以讓你快速便捷的搭建一套屬于自己或者團隊的云同步網盤,從而實現跨平臺跨設備文件同步,共享,版本控制,團隊協做等功能。它的客戶端覆蓋windows&#…

使用AdaBoost分類方法實現對Wine數據集分類

目錄 1. 作者介紹2. 什么是AdaBoost?2.1 什么是弱分類器2.2 什么是強分類器2.3 如何自適應增強2.4 如何組合弱分類器成為一個強分類器? 3. 什么是Wine數據集3.1 Wine 數據集3.2 Wine 數據集結構 4. 使用AdaBoost分類方法實現對Wine數據集分類5. 完整代碼…

PLC的編程方式有什么編程:深度探索與實用指南

PLC的編程方式有什么編程:深度探索與實用指南 在現代工業自動化領域,可編程邏輯控制器(PLC)扮演著至關重要的角色。PLC的編程方式多種多樣,每種方式都有其獨特的優點和適用場景。本文將從四個方面、五個方面、六個方面…

k8s 配置資源管理

一、Secret的資源配置 1.1 Secret配置的相關說明 Secret 是用來保存密碼、token、密鑰等敏感數據的 k8s 資源,這類數據雖然也可以存放在 Pod 或者鏡像中,但是放在 Secret 中是為了更方便的控制如何使用數據,并減少暴露的風險。 有四種類型&a…

日志優化開發效率

日志怎么打? 1.在關鍵節點打日志 (1).請求入口 (2).結果響應 2.可能發生錯誤的節點打日志 3.日志不是越多越好,打日志也會消耗性能 RequestMapping("/add")public Boolean publishBlog(String title, String content, HttpServletRequest req…