【NLP】 3. Distributional Similarity in NLP(分布式相似性)

Distributional Similarity in NLP(分布式相似性)

分布式相似性(Distributional Similarity) 是自然語言處理(NLP)中的核心概念,基于“相似的單詞出現在相似的上下文中”這一假設。它用于衡量單詞之間的相似性,廣泛應用于詞向量、信息檢索、文本分類等任務。

1. 分布式假設(Distributional Hypothesis)

分布式相似性基于以下假設:

“You shall know a word by the company it keeps.”
—— J. R. Firth (1957)

即,兩個單詞如果經常出現在相似的上下文中,那么它們的語義相似
例如:

  • “貓” 和 “狗” 經常出現在 “寵物”、“喜歡吃”、“可愛”等詞的上下文中,因此它們的意義接近。
  • “汽車” 和 “自行車” 都出現在 “交通工具”、“駕駛”、“速度” 等上下文中,因此它們可能具有相似性。

2. 計算分布式相似性的方法

2.1 共現矩陣(Co-occurrence Matrix)

最基礎的分布式相似性計算方法是共現矩陣

  • 統計一個詞與不同詞的共現次數,形成一個詞-詞矩陣。
  • 每個單詞的向量由其共現次數構成。

示例:

汽車自行車可愛速度
5300100
350080
汽車0064010
自行車004609

問題:

  • 稀疏性:矩陣可能非常大,大量詞對沒有共現。
  • 維度災難:單詞的維度取決于整個詞匯表大小,計算開銷大。

2.2 詞向量(Word Embeddings)

為了解決稀疏性問題,使用低維向量表示單詞

  1. 基于共現矩陣的降維方法
    • PCA(主成分分析)
    • SVD(奇異值分解)
    • PPMI(正點互信息)
  2. 預測式方法(Neural-based Models)
    • Word2Vec(CBOW & Skip-Gram)
    • GloVe(基于矩陣分解)
    • FastText(子詞信息)
    • BERT & Transformer Embeddings(上下文相關詞向量)

示例:

from gensim.models import Word2Vec# 訓練 Word2Vec
sentences = [["貓", "喜歡", "魚"], ["狗", "喜歡", "骨頭"], ["汽車", "行駛", "速度", "快"]]
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, sg=0)# 獲取 "貓" 的詞向量
vector = model.wv["貓"]
print(vector)

3. 計算詞相似性的方法

3.1 余弦相似度(Cosine Similarity)

余弦相似度衡量兩個詞向量的夾角:

  • sim ( A , B ) = A ? B ∥ A ∥ ∥ B ∥ \text{sim}(A, B) = \frac{A \cdot B}{\|A\| \|B\|} sim(A,B)=A∥∥BA?B?

    結果范圍:[][-1,1][?1,1]

  • 1 表示完全相似,0 表示不相關,-1 表示完全相反

3.2 歐幾里得距離(Euclidean Distance)

d ( A , B ) = ∑ ( A i ? B i ) 2 d(A, B) = \sqrt{\sum (A_i - B_i)^2} d(A,B)=(Ai??Bi?)2 ?

  • 距離越小,詞的相似度越高。
  • 適用于低維向量。

3.3 Jaccard 相似度

用于離散詞袋模型

J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A, B) = \frac{|A \cap B|}{|A \cup B|} J(A,B)=ABAB?

  • 適用于 n-gram、關鍵詞提取。

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

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

相關文章

【C#學習】協程等待

來源GPT,僅記錄學習 yield return WaitForEndOfFrame() 適用于 渲染結束后再執行代碼,但 WebGL 可能不適合這個操作,會拖慢幀率。(渲染得太慢) yield return null; 讓代碼在下一幀的 Update() 里繼續運行,更加流暢。 …

【項目】負載均衡式在線OJ

負載均衡式在線OJ 目錄 負載均衡式在線OJ 1.項目介紹: 2.comm 2.1 log.hpp 日志等級 開放式日志 時間戳工具 2.2 util.hpp TimeUtil類 PathUtil類 FileUtil類 StringUtil類 3.Compile_server 3.1compile_run.hpp RemoveTempFile CodeToDesc Start 3.…

實現“XXX一張圖“進行環境設施設備可視化管理

實現“電網一張圖”、“鐵路一張圖”、“水庫一張圖”、“森林一張圖”等概念,本質上是將某一領域的空間數據、設施設備、運行狀態等信息整合到一個統一的數字化平臺上,實現全域可視化、智能化管理和協同運營。這種“一張圖”模式依賴于地理信息系統(GIS)、物聯網(IoT)、…

《基於Python的網絡爬蟲抓包技術研究與應用》

## 摘要 本文探討了基于Python的網絡爬蟲抓包技術及其應用。隨著互聯網數據的快速增長,網絡爬蟲技術在數據采集和分析中扮演著越來越重要的角色。本研究首先介紹了網絡爬蟲的基本概念和Python在爬蟲開發中的優勢,然后深入分析了抓包技術的原理和常用工具…

【藍橋杯速成】| 1.暴力解題

1高頻考點與暴力解題_嗶哩嗶哩_bilibili 感謝up主分享,以下內容是學習筆記,以c為主,部分python 題目一:維納的年齡 題目內容 美國數學家維納(N.Wiener)智力早熟, 11歲就上了大學。他曾在1935~1936年應邀來中國清華大…

[C++Qt] 槽函數收不到信號問題(信號的注冊)

📢博客主頁:https://loewen.blog.csdn.net📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!📢本文由 丶布布原創,首發于 CSDN,轉載注明出處🙉📢現…

從零開始用AI開發游戲(一)

1. 核心玩法設計 核心目標:玩家需在隨機生成的3D迷宮中尋找出口,躲避陷阱、收集道具、解開謎題。核心機制: 隨機生成迷宮:每次游戲生成不同結構的迷宮(遞歸分割算法或深度優先搜索)。第一人稱視角&#xf…

基于ssm的寵物醫院信息管理系統(全套)

一、系統架構 前端:html | layui | vue | element-ui 后端:spring | springmvc | mybatis 環境:jdk1.8 | mysql | maven | tomcat | idea | nodejs 二、代碼及數據庫 三、功能介紹 01. web端-首頁1 02. web端-首頁…

【CXX】6.7 SharedPtr<T> — std::shared_ptr<T>

std::shared_ptr 的 Rust 綁定稱為 SharedPtr。 限制: SharedPtr 不支持 T 為不透明的 Rust 類型。對于在語言邊界上傳遞不透明 Rust 類型的所有權,應改用 Box(C 中的 rust::Box)。 示例 // src/main.rsuse std::ops::Deref; …

利用python生成excel中模板范圍對應的shape文件

利用python生成excel中模板范圍對應的shape文件 # -*- coding: utf-8 -*- import os.pathimport pandas as pd from shapely.geometry import Polygon from shapely.wkt import dumps import argparse# 創建解析器 parser argparse.ArgumentParser(description"這是一個…

cursor使用

引入私有文檔 設置-> Features->下滑找到Docs url后邊多加一個 / 可以拉取url下所有的頁面(子頁面,子目錄),不加只拉取url當前頁面 使用 選擇 Docs 回車 選擇 文檔 直接解析鏈接 鏈接 回車 搜索引擎 web 對比git版本差異 git 選擇其中一個 g…

達夢數據庫中插入導出圖片的方法與應用

達夢數據庫中插入導出圖片的方法與應用 在數據庫的實際應用場景中,圖片存儲是一項常見且重要的需求。以電商平臺為例,商品展示圖片是吸引消費者的關鍵元素;而在社交軟件里,用戶頭像更是個人形象的直觀體現。針對達夢數據庫&#…

【云原生】動態資源分配(DRA)深度洞察報告

1. DRA 的發展與設計靈感 Kubernetes 早期通過 Device Plugin(設備插件)機制支持 GPU、NIC 等特殊硬件,將節點上可用設備數量上報給 kubelet 和調度器。但設備插件模式存在局限:調度器只能根據節點標簽等屬性粗粒度篩選&#xff…

嵌入式八股ARM篇

前言 ARM篇主要介紹一下寄存器和中斷機制,至于匯編這一塊…還請大家感興趣自行學習 1.寄存器 R0 - R3 R4 - R11 寄存器 R0 - R3一般用作函數傳參 R4 - R11用來保存程序運算的中間結果或函數的局部變量 在函數調用過程中 注意在發生異常的時候 cortex-M0架構會自動將R0-R3壓入…

Python 實現的采集諸葛靈簽

Python 實現的采集諸葛靈簽 項目介紹 這是一個基于 Python 開發的諸葛靈簽數據采集和展示項目。通過爬蟲技術獲取諸葛神簽的簽文和解簽內容,并提供數據存儲和查詢功能。 項目結構 zhuge/├── zhuge_scraper.py # 爬蟲主程序├── zhuge_pages/ # 數據存儲目錄…

【C++項目實戰】校園公告搜索引擎:完整實現與優化指南

🎬 個人主頁:誰在夜里看海. 📖 個人專欄:《C系列》《Linux系列》《算法系列》 ?? 道阻且長,行則將至 目錄 📚一、項目概述 📖1.項目背景 📖2.主要功能 📖3.界面展…

代理(Delegate)、閉包(Closure)、Notification(通知中心) 和 swift_event_bus適用場景和工作方式

在 Swift 開發中,在 Swift 開發中,代理(Delegate)、閉包(Closure)、Notification(通知中心) 和 swift_event_bus 主要用于 組件之間的通信,但它們的適用場景和工作方式有…

設計模式--單例模式(Singleton)【Go】

引言 在設計模式中,單例模式(Singleton Pattern)是一種非常常見且實用的模式。它的核心思想是確保一個類只有一個實例,并提供一個全局訪問點。這種模式在需要全局唯一對象的場景中非常有用,比如配置管理、日志記錄、數…

MySQL數據庫復制

文章目錄 MySQL數據庫復制一、復制的原理二、復制的搭建1.編輯配置文件2.在主庫上創建復制的用戶3.獲取主庫的備份4.基于從庫的恢復5.建立主從復制6.開啟主從復制7.查看主從復制狀態 MySQL數據庫復制 MySQL作為非常流行的數據庫,支撐它如此出彩的因素主要有兩個&am…

Sourcetree——使用.gitignore忽略文件或者文件夾

一、為何需要文件忽略機制? 1.1 為什么要會略? 對于開發者而言,明智地選擇忽略某些文件類型,能帶來三大核心優勢: 倉庫純凈性:避免二進制文件、編譯產物等污染代碼庫 安全防護:防止敏感信息&…