Word2Vec介紹

前言

當今的大語言模型非常智能,但是你有沒有想過這些事情:

  • 機器是怎么理解“國王”和“王后”之間的關系?

  • “貓”和“狗”是怎么在 AI 中“相似以及區分”的?

  • 文本又是怎么變成模型能讀懂的數字?

這一切,都要和一個強大的工具有關系,詞嵌入:Word2Vec!

先看一張圖片,如下是一個tensflow實現的word2vec的密密麻麻的詞圖,是不是感覺很壯觀,那么AI是如何做到的呢 ?
在這里插入圖片描述

本篇就要說下, Word2Vec是如何讓 AI “讀懂”文字的,先看定義,如下

定義

Word2Vec 是 Google 在 2013 年提出的一個自然語言處理模型,它能把文字轉換成向量(數字),而且這些向量還包含了語義信息!

用一句話總結它的核心價值:Word2Vec 把人類理解的詞變成“計算機能理解的向量”,并且保留詞與詞之間的關系!

怎么這么神奇,這就需要去了解下輸出增強

輸出增強

在word2vec出來之前,傳統做法是使用「獨熱編碼 One-Hot Encoding」來表示單詞,比如:

單詞One-hot 向量(長度為5)
[1, 0, 0, 0, 0]
[0, 1, 0, 0, 0]
老鼠[0, 0, 1, 0, 0]

從表中看到,存在兩個主要的問題:

  • 向量非常稀疏,占用內存

  • 單詞之間沒有任何語義關系

比如,“貓”和“狗”在獨熱向量中完全沒有聯系,而 Word2Vec 能讓「相似意思」的詞靠得更近!那么Word2Vec 輸出的是什么樣的向量?和獨熱向量比有啥優勢?我們看下Word2Vec的輸出向量

輸出的向量

Word2Vec 會給每個詞一個低維度的密集向量,比如:

單詞向量(假設為3維)
[0.21, 0.54, -0.31]
[0.19, 0.50, -0.29]
老鼠[-0.42, 0.18, 0.33]

更神奇的是,它還能保留詞之間的關系:具備了一種“類人思維”的意思。通過各個維度的數據相似度,來區分和相似貓狗老鼠,那么各個維度的數據又是怎么訓練出來的呢?

訓練方式

Word2Vec 有兩種主要的訓練方式:

  • CBOW訓練
    CBOW(Continuous Bag of Words),是根據“上下文詞”,預測“中心詞”。

舉例:

給定上下文:我 喜歡 __ 晚飯
模型要學會填空:“吃”

結構圖:

上下文詞 → 中間隱藏層 → 預測中心詞

適合小數據集

  • Skip-Gram訓練

根據“中心詞”,預測“上下文詞”。

舉例:

中心詞:“吃”,模型要學會預測“我”“喜歡”“晚飯”

結構圖:

中心詞 → 中間隱藏層 → 預測多個上下文詞

適合大數據集

實戰示例

我們用 Gensim 來實現 一個Word2Vec的示例如下

from gensim.models import Word2Vecsentences = [["我", "喜歡", "吃", "晚飯"],["貓", "喜歡", "魚"],["狗", "也", "喜歡", "魚"]]model = Word2Vec(sentences, vector_size=100, window=2, min_count=1, sg=1)  # sg=1表示用Skip-Gramprint(model.wv["貓"])  # 查看“貓”的詞向量
print(model.wv.most_similar("貓"))  # 查找最相近的詞

應用場景

場景示例
語義相似性推薦系統中:喜歡“披薩”的人可能也喜歡“漢堡”
文本聚類新聞分類、問答系統
情感分析正負面情緒詞向量聚類
機器翻譯詞義對齊、多語言向量空間

局限性分析

雖然 Word2Vec 非常強大,但也有一些局限:

  • 靜態詞向量:一個詞在不同語境下表示一樣,比如“銀行”在“金融銀行”和“河岸”中的意思不同,但 Word2Vec 分不清

  • 對上下文敏感度弱:只靠鄰近的詞來訓練

  • 冷啟動問題:對新詞不友好

但好在,這些問題在后來的 BERTELMo 等上下文嵌入模型中得到了改善。

總結

特點Word2Vec
優點簡潔、高效、能捕捉詞的語義關系
訓練方式CBOW / Skip-Gram
輸出結果低維度、密集的詞向量
主要應用NLP 中的基礎詞嵌入層
局限不考慮上下文、不支持多義詞

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

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

相關文章

Rsync+sersync實現數據實時同步(小白的“升級打怪”成長之路)

目錄 一、rsync部署 push推數據 1、編寫rsync配置文件 2、備份測試 3、檢驗結果 二、rsyncsersync 實現數據實時同步 1、安裝sersync服務 2、檢驗結果 pull拉取數據 1、編寫rsync配置文件 2、檢驗結果 三、腳本編寫 1、客戶端腳本編寫 2、服務器腳本編寫 一、rsy…

用 python 開發一個可調用工具的 AI Agent,實現電腦配置專業評價

在人工智能時代,AI Agent憑借其強大的任務處理能力,逐漸成為開發人員手中的得力工具。今天,我們就來一起動手,用Python打造一個能夠調用工具的AI Agent,實現根據電腦信息對電腦配置進行專業評價的功能。 一、項目創建…

WSL 安裝使用和常用命令

參考官方使用說明&#xff1a; https://learn.microsoft.com/zh-cn/windows/wsl/ 安裝wsl: wsl --install --no-distribution --no-distribution&#xff1a;安裝 WSL 時不要安裝分發版 更新 wsl: wsl --update 設置wsl 默認版本&#xff1a; wsl --set-default-version <…

720全景VR拍攝制作實戰教程

720全景VR拍攝制作實戰教程 720全景VR拍攝制作是近年來興起的一種沉浸式影像制作技術。它通過多角度拍攝&#xff0c;并將畫面拼接成一個全景視角&#xff0c;使觀眾獲得身臨其境的觀看體驗。本教程將帶你從準備階段到拍攝階段&#xff0c;再到后期處理階段&#xff0c;一步步…

什么真正的云原生開發?如何區別本地開發后部署到云端?

以下是關于云原生開發的深度解析&#xff0c;以及與本地開發后遷移上云的本質區別&#xff1a; 一、真正的云原生開發&#xff1a;從理念到實踐的全面革新 1. 定義與核心思想 云原生開發是一種以云計算能力為核心的架構設計和開發方法論&#xff0c;其本質是讓應用從誕生之初…

從代碼學習深度學習 - 詞的相似性和類比任務 PyTorch版

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言加載預訓練詞向量TokenEmbedding 類詳解預訓練詞向量簡介 (GloVe)具體含義總結建議應用預訓練詞向量詞相似度knn 函數get_similar_tokens 函數相似詞查找示例詞類比get_analogy 函數詞類比任務…

ubuntu 22.04 安裝部署elk(elasticsearch/logstash/kibana) 7.10.0詳細教程

安裝部署elk7.10.0詳細教程 一、安裝jdk 11環境二、安裝elasticsearch 7.10.0三、安裝kibana 7.10.0四、安裝logstash 7.10.0五、安裝ik7.10.0分詞六、開啟安全功能1. 開啟用戶名密碼登錄2. 開啟es安全加密通信3. 開啟Kibana安全功能 七、注意事項和常見錯誤八、其它操作及命令…

技術文章: 基板的吸水率

PCB基板或覆銅板的吸水率是一個重要的性能指標&#xff0c;它衡量了覆銅板在特定條件下&#xff08;通常是浸水后&#xff09;吸收水分的能力&#xff0c;通常用指定條件下吸水后與吸水前相比&#xff0c;質量增加的百分比來表示。當材料暴露扎起在潮濕空氣中或浸沒在水中時其抵…

九日集訓第三天

目錄 搜索旋轉排序數組 搜索旋轉排序數組|| 尋找旋轉排序中的數組最小值 爬樓梯 斐波那契數 第N個泰波那契數 差的絕對值為K的數對數目 猜數字 拿硬幣 山峰數組的峰頂索引 搜索旋轉排序數組 class Solution { public:int search(vector<int>& nums, int t…

CppCon 2017 學習:folly::Function A Non-copyable Alternative to std::function

你說的內容是關于 C 中 可調用類型&#xff08;Callable Types&#xff09; 的基礎知識&#xff0c;我幫你理清并補充理解。 Callable Types&#xff08;可調用類型&#xff09;簡介 C 中任何可以用 () 括號操作符“調用”的對象&#xff0c;都叫做 可調用類型。典型包括&…

PyTorch 中Tensor常用數據結構(int, list, numpy array等)互相轉換和實戰示例

在 PyTorch 中&#xff0c;tensor 是一種強大且靈活的數據結構&#xff0c;可以與多種 Python 常用數據結構&#xff08;如 int, list, numpy array 等&#xff09;互相轉換。下面是詳細解釋和代碼示例&#xff1a; 1. Tensor ? int / float 轉為 int / float&#xff08;前提…

計算機網絡與數據通信基礎

第一章 計算機網絡概述 1. 計算機網絡的核心概念 1.1 定義 將 地理分散 的、具有 獨立處理能力 的計算機系統&#xff08;主機/Host&#xff09;&#xff0c;通過 傳輸介質 與 網絡設備 互連&#xff0c;在 網絡協議 和 軟件 支持下實現 資源共享 與 數據通信 的系統。 關鍵術…

【統計術語】

文章目錄 基礎概念術語基期與現期增長量與增長率環比與同比 比重術語平均數術語特殊增長術語其他常用術語 基礎概念術語 基期與現期 基期&#xff1a;作為基礎參照的時期&#xff0c;一般指過去的時間 現期&#xff1a;與基期對比的時期&#xff0c;一般指現在的時間 示例&am…

XXE(XML外部實體注入)詳解

目錄 一、XXE漏洞簡介 二、XML詳解 (一) XML文檔結構 1. 文檔聲明 2. XML文檔類型定義&#xff08;DTD&#xff09; 3. XML文檔元素 4. XML文檔示例 三、XXE漏洞類型 四、XXE漏洞挖掘技巧 五、XXE漏洞危害 (一) 文件讀取 (二) 內網探測 1. 端口探測 2. 主機存活探…

深入解析JVM字節碼執行引擎

JVM 字節碼執行引擎。它是 JVM 核心組件之一&#xff0c;負責實際執行加載到內存中的字節碼指令。你可以將它想象成 JVM 的“CPU”。 核心職責&#xff1a; 加載待執行的字節碼&#xff1a; 從方法區&#xff08;元空間&#xff09;獲取已加載類的方法字節碼。創建和管理棧幀…

華為OD機試-MELON的難題-DFS(JAVA 2025A卷)

題意是從N快雨花石中找出最少拿出雨花石的塊數&#xff0c;使得雨花石可以均分&#xff0c;直接使用dfs解決此類組合問題 package com.example.demo.bean;import java.util.Arrays; import java.util.LinkedList; import java.util.Scanner;public class YuHuaStone {public s…

鴻蒙數據庫操作

一、使用關系型數據庫實現數據持久化&#xff0c;需要獲取一個RdbStore&#xff0c;其中包括建庫、建表、升降級等操作。 const STORE_CONFIG: relationalStore.StoreConfig {name: AnyOffice.db, // 數據庫文件名securityLevel: relationalStore.SecurityLevel.S1, // 數據庫…

基于ARM SoC的半導體測試

ARM SoC&#xff08;System on Chip&#xff09; 是一種集成了多個關鍵計算組件的單片系統芯片&#xff0c;廣泛應用于移動設備、嵌入式系統、物聯網&#xff08;IoT&#xff09;和半導體測試設備等領域。它的核心設計理念是“高度集成”&#xff0c;將處理器、內存、外設接口等…

JavaEE->多線程2

目錄 一、線程安全&#xff08;重點&#xff09; 1.線程安全演示 2.線程不安全的原因 1.線程是搶占式執行的&#xff08;執行順序是隨機的&#xff09; 2.多個線程同時修改了同一個變量 3.原子性 4.內存可見性 5.指令重排序&#xff08;有序性&#xff09; 二、解決線…

Flutter TCP通信

啟動TCP服務 Future<void> startServer() async {final server await ServerSocket.bind(InternetAddress.anyIPv4, 12345);print(Server listening on ${server.address}:${server.port});server.listen((Socket socket) {print(Client connected: ${socket.remoteAddr…