機器學習知識自然語言處理入門

一、引言:當文字遇上數學 —— 自然語言的數字化革命

在自然語言處理(NLP)的世界里,計算機要理解人類語言,首先需要將文字轉化為數學向量。早期的 One-Hot 編碼如同給每個詞語分配一個唯一的 “房間號”,例如 “我愛北京天安門” 分詞后,每個詞用一個僅含一個 1 的高維向量表示。但這種方法如同用龐大的書架存放稀疏的書籍 —— 維度爆炸、語義割裂,無法捕捉詞語間的潛在聯系。

于是,** 分布式表示(Distributed Representation)** 應運而生,它如同為詞語打造一張 “語義地圖”,每個詞被映射為低維空間中的一個點,相近的點代表語義相關的詞。Word2Vec 正是這一思想的經典實現,它用簡潔的神經網絡架構,讓計算機學會 “理解” 詞語的隱含關系,甚至能完成 “king - man + woman = queen” 這樣的語義推理。

二、Word2Vec:讓詞語在向量空間中 “對話”
2.1 從 One-Hot 到詞向量:稀疏到稠密的跨越

One-Hot 編碼的缺陷在于 “維度詛咒”:若詞表有 N 個詞,每個向量需 N 維,且僅有一個 1。而 Word2Vec 通過訓練,將詞語映射到d 維稠密向量(d 通常為 50-300),每個維度對應一種潛在語義特征(如 “性別”“地點”“情感” 等)。例如 “國王” 和 “女王” 可能在 “權力” 維度值高,在 “性別” 維度值相反。

2.2 模型架構:簡化的神經網絡魔法

Word2Vec 本質是一個兩層神經網絡,有兩種經典模式:

  • CBOW(連續詞袋模型):用上下文詞語預測目標詞(如用 “I” 和 “learning” 預測 “deep”)。
  • Skip-gram:用目標詞預測上下文(如用 “deep” 預測 “I” 和 “learning”)。

以 CBOW 為例,模型結構如下:

  1. 輸入層:上下文詞語的 One-Hot 向量(假設詞表大小 V,向量維度 V)。
  2. 隱藏層:權重矩陣 W(V×d)與輸入向量相乘,壓縮為 d 維詞向量。
  3. 輸出層:通過 Softmax 計算目標詞的概率(矩陣 W'(d×V)將隱藏層映射回 V 維空間)。
2.3 數據生成:滑動窗口里的語義世界

訓練數據來自大規模文本(如維基百科),通過滑動窗口提取上下文 - 目標詞對。例如句子 “I like deep learning and NLP”,窗口大小設為 3 時,可生成樣本:

  • 上下文 [“I”, “like”] → 目標詞 “deep”
  • 上下文 [“like”, “deep”] → 目標詞 “learning”
    ...
    滑動窗口遍歷全文后,形成大量訓練樣本。為解決 Softmax 計算量過大的問題,引入負采樣(Negative Sampling):對每個正樣本(真實上下文 - 目標詞對),隨機采樣若干負樣本(非目標詞),將多分類問題轉化為二分類,大幅提升訓練效率。
三、訓練 Word2Vec:讓機器學會 “猜詞”

訓練的核心是通過反向傳播優化權重矩陣 W 和 W',使得預測目標詞的概率最大化。過程可簡化為:

  1. 初始化:隨機初始化詞向量矩陣。
  2. 前向傳播:根據輸入上下文計算目標詞概率。
  3. 計算損失:用交叉熵衡量預測與真實標簽的差距。
  4. 反向傳播:更新權重,降低損失。

訓練完成后,每個詞語對應隱藏層的權重向量即為其詞向量。這些向量不僅能通過余弦相似度衡量詞語相關性(如 “貓” 與 “狗” 接近),還能通過向量運算發現語義規律,如 “中國” - “北京” + “巴黎” ≈ “法國”。

四、Word2Vec 的優缺點:通用但不完美的語義引擎

優點

  • 高效性:相比傳統 Embedding,更低的維度和更快的訓練速度。
  • 語義關聯性:能捕捉詞語間的類比關系(如 “男人 - 女人” 對應 “國王 - 女王”)。
  • 通用性:可遷移至多種 NLP 任務(如文本分類、機器翻譯)。

缺點

  • 多義詞困境:一個詞對應一個向量,無法區分 “bank(銀行 / 河岸)” 在不同語境的含義。
  • 靜態局限性:詞向量固定,無法針對特定任務動態調整(如情感分析中 “棒” 的褒義強度)。
五、實戰:用 Word2Vec 生成古詩
5.1 數據準備:構建詩詞語料庫

收集唐詩、宋詞等古典文本,預處理步驟:

  • 分詞(保留單字,因古詩以字為基本單位)。
  • 清洗(去除標點、特殊符號)。
  • 構建詞表(統計高頻字,過濾生僻字)。
5.2 訓練詩詞專用詞向量

調整 Word2Vec 參數:

  • 窗口大小設為 2-5(捕捉近鄰字的語義關聯,如 “床前”“明月”)。
  • 向量維度設為 100-200(平衡語義表達與計算效率)。
  • 負采樣數設為 5-10(增加訓練難度,提升向量質量)。

訓練完成后,“月”“夜”“酒” 等字的向量應在語義空間中接近,而 “江”“河”“湖” 形成地理相關的簇。

5.3 結合語言模型生成詩句

Word2Vec 僅提供詞向量,生成古詩需結合序列模型(如 RNN/LSTM):

  1. 編碼層:將輸入字轉換為 Word2Vec 向量。
  2. 隱藏層:RNN 捕捉上下文依賴,輸出隱藏狀態。
  3. 解碼層:通過 Softmax 預測下一個字的概率,采樣生成詩句。

示例代碼框架(偽代碼):

python

# 假設已訓練好word2vec模型和RNN模型  
def generate_poem(seed_word, length=4):  poem = [seed_word]  for _ in range(length):  # 編碼當前序列  vecs = [word2vec[word] for word in poem]  hidden_state = rnn(vecs)  # 預測下一字  next_word = softmax(hidden_state).sample()  poem.append(next_word)  return ''.join(poem)  # 生成示例:以“春”開頭的五言絕句  
print(generate_poem('春', 20))  # 輸出類似“春眠不覺曉,處處聞啼鳥...”的詩句  

六、結語:從詞向量到認知智能的起點

Word2Vec 如同打開自然語言理解的第一扇窗,用簡單的架構揭示了語言的數學本質。盡管它存在局限,但作為后續預訓練模型(如 BERT、GPT)的基石,其思想深遠影響著 NLP 的發展。從古詩生成到智能對話,詞向量始終是連接人類語言與機器智慧的橋梁。

思考延伸:如何用 Word2Vec 分析不同詩人的寫作風格?多語言場景下,如何讓不同語言的詞向量 “對話”?歡迎在評論區分享你的想法!

參考資料

  • 《Word2Vec Parameter Learning Explained》(Tomas Mikolov et al.)
  • 《自然語言處理入門》(何晗)
  • Word2Vec 官方實現:gensim 庫

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

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

相關文章

Linux-線程概念和控制

1.Linux線程概念 1.1什么是線程 ? 在?個程序?的?個執?路線就叫做線程(thread)。更準確的定義是:線程是“?個進程內部 的控制序列” ? ?切進程?少都有?個執?線程 ? 線程在進程內部運?,本質是在進程地址空間內運?…

【氮化鎵】低劑量率對GaN HEMT柵極漏電的影響

2024 年 2 月 22 日,中國科學院新疆理化技術研究所的Li等人在《IEEE ACCESS》期刊發表了題為《Degradation Mechanisms of Gate Leakage in GaN-Based HEMTs at Low Dose Rate Irradiation》的文章,基于實驗分析和 TCAD 仿真,研究了低劑量率輻照下基于 GaN 的 p 型柵高電子遷…

.NET Core 中 Swagger 配置詳解:常用配置與實戰技巧

隨著微服務架構和 RESTful API 的廣泛應用,API 文檔的管理和自動化生成成為了開發中的重要部分。Swagger(現為 OpenAPI)是一款功能強大的工具,它可以自動生成 API 文檔,并提供交互式 UI,幫助開發者、測試人…

海康工業相機白平衡比選擇器對應的值被重置后,如何恢復原成像

做項目的時候,有時候手抖,一不小心把一個成熟穩定的項目的相機配置,重置了,如何進行恢復呢,在不知道之前配置數據的情況下。 我在做項目的時候,為了讓這個相機成像穩定一點,尤其是做顏色檢測時…

【八股戰神篇】Java虛擬機(JVM)高頻面試題

目錄 專欄簡介 一 請解釋Java虛擬機(JVM)及其主要功能 延伸 1. JVM的基本概念 2. JVM的主要功能 二 對象創建的過程了解嗎 延伸 1.Java 創建對象的四種常見方式 三 什么是雙親委派模型 延伸 1.雙親委派機制的作用: 2.雙親委派模型的核心思想: 3.雙親委派模型的…

win10 上刪除文件夾失敗的一個原因:sqlYog 備份/導出關聯了該文件夾

在嘗試刪除路徑為.../bak/sql的文件時,系統提示無權限操作。然而,關閉SQLyog后,刪除操作成功完成。這表明SQLyog可能正在占用該文件,導致刪除權限受限。關閉SQLyog后,文件被釋放,刪除操作得以順利進行。建議…

Oracle中如何解決LATCH:CACHE BUFFERS LRU CHAIN

簡單來講,Oracle為了高效管理BUFFER CACHE主要使用以下2種LRU列: ?LRU列,又叫替換列(replacement list),其中又分為主列和輔助列。 主列:已使用的緩沖區列,分為HOT和COLD區域。HOT區…

C++:迭代器

迭代器的本質&#xff1a;對象。 迭代器與指針類似&#xff0c;通過迭代器可以指向容器中的某個元素&#xff0c;還可以對元素進行操作。 迭代器統一規范了遍歷方式。不同的數據結構可以用統一的方式去遍歷。 接下來是一個自定義迭代器的代碼示例。 #include<iostream&g…

(4)Java虛擬線程與傳統線程對比

虛擬線程與傳統線程對比 &#x1f504; &#x1f4cb; 核心問題 Project Loom的虛擬線程與傳統線程在資源消耗上有何區別&#xff1f;如何設計一個支持百萬級并發的服務&#xff1f; &#x1f4ca; 資源消耗比較 &#x1f418; 傳統線程 &#x1f4cf; 每線程約1MB棧空間&am…

Java 單元測試框架比較:JUnit、TestNG 哪個更適合你?

Java 單元測試框架比較&#xff1a;JUnit、TestNG 哪個更適合你&#xff1f; 在 Java 開發領域&#xff0c;單元測試是保證代碼質量的重要環節。而選擇一個合適的單元測試框架&#xff0c;對于提升測試效率和代碼可靠性至關重要。本文將深入比較 JUnit 和 TestNG 這兩個主流的…

從零開始的抽獎系統創作(2)

我們接著進行抽獎系統的完善。 前面我們完成了 1.結構初始化&#xff08;統一結果返回之類的&#xff0c;還有包的分類&#xff09; 2.加密&#xff08;基于Hutool進行的對稱與非對稱加密&#xff09; 3.用戶注冊 接下來我們先完善一下結構&#xff08;統一異常處理&#…

【vs2022的C#窗體項目】打開運行+sql Server改為mysql數據庫+發布

1. vs2022打開運行原sql Server的C#窗體項目更改為mysql數據庫 1.1. vs2022安裝基礎模塊即可 安裝1??vs核心編輯器2??.net桌面開發必選&#xff0c;可選均不安裝&#xff01;&#xff01;&#xff01; 為了成功連接mysql數據庫&#xff0c;需要安裝組件NuGet包管理器 安…

AI 編程 “幻覺” 風險頻發?飛算 JavaAI 硬核技術筑牢安全防線

AI 技術已深度融入編程領域&#xff0c;為開發者帶來前所未有的便利與效率提升。然而&#xff0c;AI 編程 “幻覺” 問題如影隨形&#xff0c;頻頻引發困擾&#xff0c;成為阻礙行業穩健發展的潛在風險。飛算 JavaAI 憑借一系列硬核技術&#xff0c;強勢出擊&#xff0c;為攻克…

數據庫----軟考中級軟件設計師(自用學習筆記)

目錄 1、E-R圖 2、結構數據模型 3、數據庫的三級模式結構 4、關系代數 5、查詢 6、SQL控制語句 7、視圖?編輯 8、索引 9、關系模式 10、函數依賴 11、通過閉包求候選碼 12、范式 13、無損連接和保持函數依賴 14、數據庫設計 15、數據庫的控制功能 16、數據庫…

【Qt】Qt常見控件的相關知識點

1.close退出槽函數 2.設置快捷鍵&#xff0c;QMenu 。 適用&字母就能設置快捷鍵&#xff0c;運行qt程序&#xff0c;最后就可以按Alt對應的字母進行快捷操作。 3.QMenuBar內存泄露問題 如果ui已經自動生成了menubar&#xff0c;我們再次生成一個新的菜單欄&#xff0c;而…

httpx[http2] 和 httpx 的核心區別及使用場景如下

httpx[http2] 和 httpx 的核心區別在于 HTTP/2 協議支持&#xff0c;具體差異及使用場景如下&#xff1a; 1. 功能區別 命令/安裝方式協議支持額外依賴適用場景pip install httpx僅 HTTP/1.1無通用請求&#xff0c;輕量依賴pip install httpx[http2]支持 HTTP/2需安裝 h2>3…

Spring Boot 中 MyBatis 與 Spring Data JPA 的對比介紹

一、核心概念 MyBatis 定義&#xff1a;基于 SQL 的持久層框架&#xff0c;提供靈活的 SQL 映射和自定義查詢能力。 特點&#xff1a; 開發者手動編寫 SQL&#xff08;XML 或注解&#xff09;。 支持動態 SQL、復雜查詢優化。 輕量級&#xff0c;對數據庫控制力強。 Spri…

k8s1.27集群部署mysql8.0雙主雙從

環境介紹&#xff1a; #節點分配 159m--->兩個master&#xff0c;生產環境建議&#xff0c;一個master一個節點。 160n-->slave-0 161n-->slaves-0 #存儲卷 pv-->放在節點上&#xff0c;沒用nfs/云存儲。hostpath方式存儲。pv的資源分配1G&#xff0c;較小&#…

vivado fpga程序固化

一般下載到fpga上的程序在掉電之后就會丟失&#xff0c;如果想要掉電之后程序不丟失&#xff0c;就需要將比特流文件固化到板載的flash上。 以下以我的7a100t開發板為例&#xff0c;介紹程序固化的流程 點擊OK就可以下載了。

RabbitMQ Topic RPC

Topics(通配符模式) Topics 和Routing模式的區別是: topics 模式使?的交換機類型為topic(Routing模式使?的交換機類型為direct)topic 類型的交換機在匹配規則上進?了擴展, Binding Key?持通配符匹配(direct類型的交換機路 由規則是BindingKey和RoutingKey完全匹配) 在top…