【NLP】詞性標注

詞是自然語言處理的基本單位,自動詞法分析就是利用計算機對詞的形態進行分析,判斷詞的結構和類別。
詞性(Part of Speech)是詞匯最重要的特性,鏈接詞匯和句法

詞的分類

屈折語:形態分析
分析語:分詞
黏著語:分詞+形態分析

基本任務

單詞識別&形態還原
考慮特殊的單詞:prof. 縮寫 不規則變形
形態還原:時態 年代 序數詞 貨幣符號 百分號
合成詞還原 seven-year-old

形態分析的一般方法

  1. 查詞典
  2. 根據不同的情況查找相對應的規則對單詞進行處理,如果在字典找得到該單詞的原型,則結束,如果找不到,就按照未登錄詞處理
  3. 完全陌生的詞,按照未登錄詞處理

漢語自動分詞

漢語分詞問題

單字詞與詞素的區分
詞與短語的區分

切分歧義

交集型歧義

中國人/為了/勝利
中國/人為/了/勝利
交集串的集合稱為叫交集串鏈,交集串個數稱為鏈長
e.g. 中國產品質量:中國/國產/產品/品質/質量 交集串為:國,產,品,質 ,交集串鏈為{國,產,品,質},鏈長為 4

組合型歧義

門/把/手/弄/壞/了
門/把手/弄/壞/了

未登錄詞的識別

  1. 人名,地名,組織名
  2. 新出現的詞匯

漢語分詞的基本規則:合并

成語:馬馬虎虎
定量結構:十三區
定名組合:六點
副詞片語:或多或少
重疊結構:高高低低
不可拆分詞:進出口

輔助規則:切分

  1. 有明顯間隔符或語義分隔的
  2. 太過復雜,正反問句,動詞帶雙音節補語:石油/化工/業,討論/清楚,喜歡/不/喜歡
  3. 專有名詞帶普通名詞:京滬/鐵路

分詞,標注的評價方法

測試:封閉測試/開放測試
評價指標:
正確率:測試結果中正確的切分占系統總輸出的比例: P = n N × 100 % P= \frac{n}{N}\times100\% P=Nn?×100%
召回率:系統輸出的答案里面正確的個數 5 占總正確的個數,與文本分類里的 Recall 一樣: R = n N × 100 R= \frac{n}{N}\times 100% R=Nn?×100
F 測度:同上一章

漢語分詞的基本算法

有詞典切分/無詞典切分
基于規則/基于統計

最大匹配法

-有詞典切分,機械切分
正向最大匹配/逆向最大匹配/雙向最大匹配
e.g.他是研究生物的一位科學家,假設詞典當中的最長詞匯長度為 7

正向最大匹配:

先進行最大長度的切分:他是研究生物的/一位化學家
隨后逐漸縮小確定第一個切分詞:他/是研究生物的一位化學家
然后接著上一個切分的詞繼續:他/是/研究生物的一位化學家
不斷循環,可以得到:他/是/研究生/物/的/一/位/化學家

逆向最大匹配:

他/是/研究/生物/的/一/位/化學家
可以看出來正向匹配和逆向匹配之間存在著差別

優缺點

程序簡單,但歧義的消解能力弱,切分準確率在 95% 左右。

最少分詞法(最短路徑法)

記待切分詞串為 S = c 1 c 2 . . . c n S=c_1c_2...c_n S=c1?c2?...cn?,其中 c 均為單個的字,n 為串的長度且大于等于 1,建立一個節點數為 n+1 的切分有向無環圖:
1

在相鄰節點間創建有向邊,邊對應詞,如果 w = c i . . . c j w = c_i...c_j w=ci?...cj?為一個單詞,則建立有向邊(Vi-1,Vj),重復建立并查看是否新詞,最后直到考慮單詞的長度上限停止,從所有路徑中選覆蓋了所有節點的盡可能長的路徑作為分詞結果
e.g. 他說的確實對 可以分為
他/說的/確實/對
他/說/的確/實/對
seg=4<seg=5,選擇第一個分詞

優缺點

簡單方便,需要的資源少,但是對于多條最短路徑和長句子時的復雜度表現并不好

基于語言模型的分詞方式

對于一個待切分的句子 S,W 是一種可能的切分: W ? = arg ? w max ? p ( W ∣ S ) = arg ? w max ? p ( W ) P ( S ∣ W ) W^* = \arg\limits_w \max p(W|S) = \arg\limits_w \max p(W)P(S|W) W?=warg?maxp(WS)=warg?maxp(W)P(SW),其中 pW 為語言模型,另一個則為生成模型,用了樸素貝葉斯的理論

基于 HMM 的分詞方式

基于字標注的分詞方式

將分詞過程看成是字的分類問題,每個字具有自己固定的詞位:如詞首(B)詞中(M)詞尾(E)或單獨成詞(S),使得處理未登錄詞也可以按照字的方向去看待

生成式與判別式

總的來說,通過大量數據構建樣本的概率密度模型,并以此推理,就是生成式,建立在貝葉斯與統計基礎上;如果直接使用觀測值判斷模型,而不考慮樣本如何,那么就屬于對后驗概率建模的判別式

未登錄詞的識別

困難

未登錄詞的識別與描述規則太多;新出現的詞速度太快

對于姓名的識別

  1. 名字用字范圍廣,分布松散,規律不明顯
  2. 姓氏和名字可以拆開使用
  3. 許多名字中的字可以與其他字關聯形成交集串
  4. 缺少文義分隔
    e.g. 祝/賀老板/生意/興隆 or 祝賀/老板/生意/興隆
    主要采用姓名庫進行識別,并在一句中對可能出現姓名的概率估值進行計算,完成對姓名存在性的判斷
計算概率估值

Cname = Xmn
F ( X ) = X 作為姓氏 X 出現的總次數 F(X) = \frac{X 作為姓氏}{X 出現的總次數} F(X)=X出現的總次數X作為姓氏?
F ( m ) = m 作為名字中的第二個字 m 出現的總次數 F(m) = \frac{m 作為名字中的第二個字}{m 出現的總次數} F(m)=m出現的總次數m作為名字中的第二個字?
F ( n ) = n 作為名字中的第三個字 n 出現的總次數 F(n) = \frac{n 作為名字中的第三個字}{n 出現的總次數} F(n)=n出現的總次數n作為名字中的第三個字?
P ( C n a m e ) = F ( X ) F ( m ) F ( n ) P(Cname) = F(X)F(m)F(n) P(Cname)=F(X)F(m)F(n)
f = ln ? P ( C n a m e ) f = \ln P(Cname) f=lnP(Cname)
確定閾值:
姓氏 X 構成名字的最小閾值:
T m i n ( X ) = F ( X ) × M i n ( F ( m ) × F ( n ) ) T_{min}(X) = F(X)\times Min(F(m)\times F(n)) Tmin?(X)=F(X)×Min(F(m)×F(n))
通過訓練得到 X 的該閾值 T,當 f>T 時,則當前識別的漢字串為中文姓名

使用其他修飾規則

如對于維吾爾族中會出現的點符,可以通過該符號來進一步判斷

對于地名機構名識別——建立對應庫(略)

基于神經網絡的實體識別方法

主要為 RNN(LSTM),此處不展開,詳細請在 RNN 相關章節查看

詞性標注

主要目的:消除詞性兼類的問題
在英文中:flies(動詞三單,名次復數)
在中文中:好(形容詞,副詞,動詞),教育(名次,動詞)

詞性標注的一般原則

標準性:使用普遍認可的分類標準與符號集
兼容性:與已有資源盡量一致
可擴展性:方便擴充與修改

詞性標注的方法

  1. 基于規則的詞性標注方法
  2. 基于統計模型(學習)的詞性標注方法:HMM,CRF,NN
  3. 規則和統計方法相結合的詞性標注方法:TBL

HMM 隱馬爾可夫模型

學習過程

給定訓練數據: ( O i , Q i ) (O_i,Q_i) (Oi?,Qi?),O 為詞序列,Q 為詞性序列
訓練出函數 f(O),從 O 映射到 Q,即為詞序列 O 找到最優的 Q
arg ? max ? Q P ( Q ∣ O ) = arg ? max ? Q P ( O ∣ Q ) P ( Q ) \arg \max\limits_Q P(Q|O) = \arg \max\limits_Q P(O|Q)P(Q) argQmax?P(QO)=argQmax?P(OQ)P(Q)
其中 P ( O ∣ Q ) = P ( o 1 , . . . , o n ∣ q 1 , . . . q n ) = ∏ i = 1 n P i ( o i ∣ q i ) P(O|Q) = P(o_1,...,o_n|q_1,...q_n)=\prod\limits_{i=1}^nP_i(o_i|q_i) P(OQ)=P(o1?,...,on?q1?,...qn?)=i=1n?Pi?(oi?qi?)
P(Q)則為語言模型,可以使用我們先前提到的 n-gram 計算:
P ( Q ) = P ( q 1 , . . . , q n ) = P ( q 1 ) P ( q 2 ∣ q 1 ) . . . P ( q n ∣ q n ? 1 ) P(Q)=P(q_1,...,q_n)=P(q_1)P(q_2|q_1)...P(q_n|q_{n-1}) P(Q)=P(q1?,...,qn?)=P(q1?)P(q2?q1?)...P(qn?qn?1?)
這就是隱馬爾可夫模型的原型
詞性的馬爾可夫鏈:
3

狀態:t 時刻的狀態為 q t q_t qt?
轉移概率: a i j a_{ij} aij?表示從狀態 i 轉移到 j 的轉移概率
a i j = P ( q i = j ∣ q t ? 1 = i ) a_{ij} = P(q_i=j|q_{t-1} = i) aij?=P(qi?=jqt?1?=i)
∑ j = 1 N a i j = 1 \sum\limits_{j=1}^Na_{ij}=1 j=1N?aij?=1
起始狀態:初始狀態的概率向量 π = ( π 1 , . . . , π n ) \pi = (\pi_1,...,\pi_n) π=(π1?,...,πn?),表示各狀態作為初始狀態的概率
之所以使用隱馬爾可夫,是因為馬爾可夫只能處理表層的詞序列,但是沒法處理隱層的詞性序列,因此拓展出了隱馬爾可夫
4
在這里插入圖片描述

隱馬爾可夫的三個基本問題:
估算問題(計算產生觀測序列的概率),解碼問題(計算最優的狀態序列),參數學習

觀測的似然

e.g.已知每天吃冰淇淋的個數與天氣的冷熱程度掛鉤
求解觀測到 ICE CREAM 個數在 3 天里分別為 3-1-3 的概率有多大
P ( O ) = ∑ P ( O ∣ Q ) P ( Q ) P(O) = \sum P(O|Q)P(Q) P(O)=P(OQ)P(Q)
對于某個給定狀態時觀測的似然 P(O|Q)
如給出天氣序列 H-H-C,即計算 P ( 313 ∣ H H C ) P(313|HHC) P(313∣HHC)
P ( O ∣ Q ) = P ( o 1 , . . . , o n ∣ q 1 , . . . q n ) = ∏ i = 1 n P i ( o i ∣ q i ) P(O|Q) = P(o_1,...,o_n|q_1,...q_n)=\prod\limits_{i=1}^nP_i(o_i|q_i) P(OQ)=P(o1?,...,on?q1?,...qn?)=i=1n?Pi?(oi?qi?)
可得 P ( 313 ∣ H H C ) = P ( 3 ∣ H ) × P ( 1 ∣ H ) × P ( 3 ∣ C ) P(313|HHC) = P(3|H)\times P(1|H)\times P(3|C) P(313∣HHC)=P(3∣H)×P(1∣H)×P(3∣C)
再計算語言模型 P(Q)
P ( H H C ) = P ( H ∣ S T A R T ) × P ( H ∣ H ) × P ( C ∣ H ) P(HHC)=P(H|START)\times P(H|H)\times P(C|H) P(HHC)=P(HSTART)×P(HH)×P(CH)
然后綜合到一起:
P ( 313 , H H C ) = P ( 3 ∣ H ) × P ( 1 ∣ H ) × P ( 3 ∣ C ) × P ( H ∣ S T A R T ) × P ( H ∣ H ) × P ( C ∣ H ) P(313,HHC) = P(3|H)\times P(1|H)\times P(3|C)\times P(H|START)\times P(H|H)\times P(C|H) P(313,HHC)=P(3∣H)×P(1∣H)×P(3∣C)×P(HSTART)×P(HH)×P(CH)
最后對所有天氣狀態序列求和
但是我們可以看到這樣效率非常低,所以我們引入前向算法和后向算法

前向算法:格柵

111

在這里插入圖片描述.
在這里插入圖片描述

后向算法

β t ( i ) = P ( o t , . . . , o T ∣ q t = i , λ ) \beta_t(i) = P(o_t,...,o_T|q_t = i,\lambda) βt?(i)=P(ot?,...,oT?qt?=i,λ)
與前向算法不同之處在于 q t = j q_t = j qt?=j是推導對象還是已知數據,后向算法往前推導
初始化: β T + 1 = 1 , 1 ≤ i ≤ N \beta_{T+1}=1,1\le i\le N βT+1?=1,1iN
最終得到: P ( O ∣ λ ) = ∑ i = 1 N π i β 1 ( i ) P(O|\lambda) = \sum\limits_{i=1}^N\pi_i\beta_1(i) P(Oλ)=i=1N?πi?β1?(i)
前向算法與后向算法結合可以得到: P ( O ∣ λ ) = ∑ i = 1 N α t ( i ) β t ( i ) , 1 ≤ t ≤ T + 1 P(O|\lambda) = \sum\limits_{i=1}^N\alpha_t(i)\beta_t(i),1 \le t \le T+1 P(Oλ)=i=1N?αt?(i)βt?(i),1tT+1

解碼

已知 Ice Cream 觀測序列為 313,且擁有 HMM 的參數 A(狀態轉移矩陣)B(概率發射矩陣),找到 313 最可能對應的天氣狀態序列(隱層序列)
一種方法:對于一個觀測序列 O 計算 P(Q|O),選取概率最大值對應的狀態序列

Viterbi Algorithm

1111

在這里插入圖片描述
meaning

參數學習

如何找到 HMM 中最好的 A和 B: arg ? max ? λ P ( O t r a i n i n g ∣ λ ) \arg \max\limits_\lambda P(O_{training}|\lambda) argλmax?P(Otraining?λ)
可以分為有監督和無監督兩種

有監督

基于已知的正確答案,統計狀態的轉移,與狀態到觀測的發射

無監督

基于不完全的數據來進行估計,很難得到解析解,但是可以通過 Baum-Welch (Forward-Backward) 局部最大化算法來逼近

前向-后向算法

隨機取一個 lambda,可以計算出似然概率 P(O|lambda)
通過計算,可以看到哪些轉移與發射的使用率最高,相對應的提高他們的概率,可以獲得新的 lambda,就可以得到新的似然概率,不斷逼近局部最優解
(沒看明白)

兩類概率

TAG 之間的轉移概率

e.g.冠詞后面即可以接形容詞,也可以接名詞
極大似然估計法,通過有標記預料估計 P(NN|OT)

詞的似然概率

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

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

相關文章

k8s 1.24.x之后如果rest 訪問apiserver

1.由于 在 1.24 &#xff08;還是 1.20 不清楚了&#xff09;之后&#xff0c;下面這兩個apiserver的配置已經被棄用 了&#xff0c;簡單的說就是想不安全的訪問k8s是不可能了&#xff0c;所以只能走安全的訪問方式也就是 https://xx:6443了&#xff0c;所以需要證書。 - --ins…

Git系列:git rm 的高級使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:「stormsha的主頁」…

【go項目01_學習記錄15】

重構MVC 1 Article 模型1.1 首先創建 Article 模型文件1.2 接下來創建獲取文章的方法1.3 新增 types.StringToUint64()函數1.4 修改控制器的調用1.5 重構 route 包1.6 通過 SetRoute 來傳參對象變量1.7 新增方法&#xff1a;1.8 控制器將 Int64ToString 改為 Uint64ToString1.9…

【數據結構】棧和隊列的相互實現

歡迎瀏覽高耳機的博客 希望我們彼此都有更好的收獲 感謝三連支持&#xff01; 1.用棧實現隊列 當隊列中進入這些元素時&#xff0c;相應的棧1中元素出棧順序與出隊列相反&#xff0c;因此我們可以使用兩個棧來使元素的出棧順序相同&#xff1b; 通過將棧1元素出棧&#xff0c;再…

Databend 倒排索引的設計與實現

倒排索引是一種用于全文搜索的數據結構。它的主要功能是將文檔中的單詞作為索引項&#xff0c;映射到包含該單詞的文檔列表。通過倒排索引&#xff0c;可以快速準確地定位到與查詢詞相匹配的文檔列表&#xff0c;從而大幅提高查詢性能。倒排索引在搜索引擎、數據庫和信息檢索系…

matlab實現繪制煙花代碼

下面是一個簡化的示例&#xff0c;它使用MATLAB的繪圖功能來模擬煙花爆炸的視覺效果。請注意&#xff0c;這個示例是概念性的&#xff0c;并且可能需要根據您的具體需求進行調整。 % 初始化參數 num_fireworks 5; % 煙花數量 num_particles_per_firework 200; % 每個煙花…

前端 CSS 經典:3D 漸變輪播圖

前言&#xff1a;無論什么樣式的輪播圖&#xff0c;核心 JS 實現原理都差不多。所以小伙伴們&#xff0c;還是需要了解一下核心 JS 實驗原理的。 效果圖&#xff1a; 實現代碼&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta chars…

MySQL —— 復合查詢

一、基本的查詢回顧練習 前面兩章節整理了許多關于查詢用到的語句和關鍵字&#xff0c;以及MySQL的內置函數&#xff0c;我們先用一些簡單的查詢練習去回顧之前的知識 1. 前提準備 同樣是前面用到的用于測試的表格和數據&#xff0c;一張學生表和三張關于雇員信息表 雇員信息…

優化數據查詢性能:StarRocks 與 Apache Iceberg 的強強聯合

Apache Iceberg 是一種開源的表格格式&#xff0c;專為在數據湖中存儲大規模分析數據而設計。它與多種大數據生態系統組件高度兼容&#xff0c;相較于傳統的 Hive 表格格式&#xff0c;Iceberg 在設計上提供了更高的性能和更好的可擴展性。它支持 ACID 事務、Schema 演化、數據…

leetcode-設計LRU緩存結構-112

題目要求 思路 雙鏈表哈希表 代碼實現 struct Node{int key, val;Node* next;Node* pre;Node(int _key, int _val): key(_key), val(_val), next(nullptr), pre(nullptr){} };class Solution { public: unordered_map<int, Node*> hash; Node* head; Node* tail; int …

普源DHO924示波器OFFSET設置

一、簡介 示波器是電子工程師常用的測量工具之一&#xff0c;能夠直觀地顯示電路信號的波形和參數。普源DHO924是一款優秀的數字示波器&#xff0c;具有優異的性能和易用性。其中OFFSET功能可以幫助用戶調整信號的垂直位置&#xff0c;使波形更清晰易讀。本文將詳細介紹DHO924…

專注于運動控制芯片、運動控制產品研發、生產與銷售為一體的技術型芯片代理商、方案商——青牛科技

深圳市青牛科技實業有限公司,是專注于運 動控制芯片、運動控制產品研發、生產與銷售為一體的技術型 芯片代理商、方案商。現今代理了國產品牌GLOBALCHIP&#xff0c;芯谷&#xff0c;矽普&#xff0c;TOPPOWER等品牌。其中代理品牌TOPPOWER為電源模塊&#xff0c;他們公司通過了…

cherry-pick的強大之處在于哪里

git cherry-pick 的強大之處在于它提供了一種靈活的方式來應用特定的提交到不同的分支上&#xff0c;而無需合并整個分支或拉取其他不需要的提交。以下是 git cherry-pick 的幾個主要優點和強大之處&#xff1a; 選擇性應用提交&#xff1a;你可以挑選一個或多個特定的提交&…

聲音轉文本(免費工具)

聲音轉文本&#xff1a;解鎖語音技術的無限可能 在當今這個數字化時代&#xff0c;信息的傳遞方式正以前所未有的速度進化。從手動輸入到觸控操作&#xff0c;再到如今的語音交互&#xff0c;技術的發展讓溝通變得更加自然與高效。聲音轉文本&#xff08;Speech-to-Text, STT&…

Plant Simulation驗證AGV算法

Plant Simulation驗證算法也是非常高效且直觀的&#xff0c;一直以來波哥在迭代算法的時候圖形顯示這塊都是使用Openframeworks去做&#xff0c;效果還是非常不錯的。 這里簡要介紹一下openFrameworks&#xff0c;openFrameworks是一個開源的、跨平臺的 C 工具包。旨在開發實時…

LeetCode hot100-49-N

236. 二叉樹的最近公共祖先 給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。百度百科中最近公共祖先的定義為&#xff1a;“對于有根樹 T 的兩個節點 p、q&#xff0c;最近公共祖先表示為一個節點 x&#xff0c;滿足 x 是 p、q 的祖先且 x 的深度盡可能大&#xff08;…

爬蟲學習--12.MySQL數據庫的基本操作(下)

MySQL查詢數據 MySQL 數據庫使用SQL SELECT語句來查詢數據。 語法&#xff1a;在MySQL數據庫中查詢數據通用的 SELECT 語法 SELECT 字段1&#xff0c;字段2&#xff0c;……&#xff0c;字段n FROM table_name [WHERE 條件] [LIMIT N] 查詢語句中你可以使用一個或者多個表&…

uni-app項目在微信開發者工具打開時報錯[ app.json 文件內容錯誤] app.json: 在項目根目錄未找到 app.json

uni-app項目在微信開發者工具打開時報錯[ app.json 文件內容錯誤] app.json: 在項目根目錄未找到 app.json 出現這個問題是因為打開的文件地址不對&#xff0c;解決這個問題首先我們要查看是否有unpackage文件夾&#xff0c;如果有&#xff0c;項目直接指向unpackage\dist\dev\…

vue3使用mitt.js進行各種組件間通信

我們在vue工程中&#xff0c;除開vue自帶的什么父子間&#xff0c;祖孫間通信&#xff0c;還有一個非常方便的通信方式&#xff0c;類似Vue2.x 使用 EventBus 進行組件通信&#xff0c;而 Vue3.x 推薦使用 mitt.js。可以實現各個組件間的通信 優點&#xff1a;首先它足夠小&…

【云原生】Kubeadm部署k8s

目錄 一、部署步驟 二、部署kubernetes 2.1、所有節點關閉防火墻 核心防護 iptables規則 swap交換 2.2、修改主機名并添加主機映射 2.3、調整內核參數 三、安裝Docker 3.1、所有節點安裝docker 3.2、所有接點添加鏡像加速器 3.3、開啟docker、并設置開機自啟、查看狀態…