知識圖譜構架

目錄

知識圖譜構架

一、StanfordNLP 和 spaCy 工具介紹

(一)StanfordNLP

主要功能

使用示例

(二)spaCy

主要功能

使用示例

二、CRF 和 BERT 的基本原理和入門

(一)CRF(條件隨機場)

基本原理

訓練與解碼

(二)BERT(Bidirectional Encoder Representations from Transformers)

基本原理

使用示例

三、BERT 的使用

(一)文本分類

(二)問答系統

(三)命名實體識別(NER)


一、StanfordNLP 和 spaCy 工具介紹

(一)StanfordNLP

StanfordNLP 是一組用于自然語言處理的工具包,由斯坦福大學開發。它支持多種語言,并提供了豐富的功能,包括分詞、詞性標注、命名實體識別、句法分析、語義角色標注等。

主要功能
  1. 分詞

    • 將文本分割成單詞或短語。例如,在中文中,將“我喜歡自然語言處理”分割為“我/喜歡/自然/語言/處理”。

  2. 詞性標注

    • 為文本中的每個單詞標注其詞性。例如,“run” 可以標注為動詞(“跑步”)或名詞(“跑道”)。

  3. 命名實體識別(NER)

    • 識別文本中的實體,如人名、地名、組織名等。例如,在文本“蘋果公司發布了新一代iPhone”中,識別“蘋果公司”為組織名,“iPhone”為產品名。

  4. 句法分析

    • 分析句子的結構,生成句法樹。例如,分析句子“我愛自然語言處理”的句法結構,確定主語、謂語和賓語。

  5. 語義角色標注

    • 識別句子中的語義角色,如施事、受事、工具等。例如,在句子“他用刀切蘋果”中,識別“他”為施事,“蘋果”為受事,“刀”為工具。

使用示例
from stanfordnlp.server import CoreNLPClient# 啟動 CoreNLP 服務器
with CoreNLPClient(annotators=['tokenize', 'ssplit', 'pos', 'lemma', 'ner', 'parse', 'depparse'], timeout=30000, memory='16G') as client:# 提交請求doc = client.annotate("我愛自然語言處理。")# 打印結果print(doc)

(二)spaCy

spaCy 是一個高效的 NLP 庫,專為生產環境設計。它支持多種語言,并提供了豐富的預訓練模型,能夠快速處理大規模文本數據。

主要功能
  1. 分詞

    • 將文本分割成單詞或短語。例如,在英文中,將“I love natural language processing.”分割為“I/love/natural/language/processing”。

  2. 詞性標注

    • 為文本中的每個單詞標注其詞性。例如,“run” 可以標注為動詞(“VB”)或名詞(“NN”)。

  3. 命名實體識別(NER)

    • 識別文本中的實體,如人名、地名、組織名等。例如,在文本“Apple Inc. released a new iPhone.”中,識別“Apple Inc.”為組織名,“iPhone”為產品名。

  4. 依存句法分析

    • 分析句子中單詞之間的依存關系。例如,在句子“I love natural language processing.”中,分析“love”和“I”之間的主謂關系,“love”和“natural language processing”之間的動賓關系。

  5. 文本分類

    • 對文本進行分類,如情感分析、主題分類等。例如,判斷一條評論是正面還是負面。

使用示例
import spacy# 加載英文模型
nlp = spacy.load("en_core_web_sm")# 處理文本
doc = nlp("I love natural language processing.")# 打印結果
for token in doc:print(token.text, token.pos_, token.dep_)

二、CRF 和 BERT 的基本原理和入門

(一)CRF(條件隨機場)

基本原理

CRF 是一種判別式模型,用于序列標注任務。它通過定義條件概率分布來建模標注序列和觀測序列之間的關系。CRF 的核心思想是:在給定觀測序列的情況下,找到使條件概率最大的標注序列。

CRF 的條件概率分布定義為:

P(Y∣X)=∑Y′?exp(∑i=1n?∑k=1K?λk?fk?(yi?1′?,yi′?,X,i)))exp(∑i=1n?∑k=1K?λk?fk?(yi?1?,yi?,X,i))?

其中:

  • Y 是標注序列

  • X 是觀測序列

  • fk? 是特征函數

  • λk? 是特征權重

  • n 是序列長度

  • K 是特征數量

訓練與解碼
  1. 訓練

    • 使用動態規劃算法計算特征函數的期望值。

    • 使用梯度下降或 L-BFGS 等優化算法更新特征權重。

  2. 解碼

    • 使用維特比算法找到使條件概率最大的標注序列。

(二)BERT(Bidirectional Encoder Representations from Transformers)

基本原理

BERT 是一種基于 Transformer 的預訓練語言模型,用于生成文本的深度雙向表示。BERT 的核心思想是:通過在大規模無監督語料上進行預訓練,學習文本的通用語言知識,然后在特定任務上進行微調,以適應具體的應用場景。

BERT 的架構基于 Transformer 的編碼器部分,采用多層自注意力機制捕捉文本中的長距離依賴關系。BERT 的預訓練任務主要包括:

  1. 掩蓋語言模型(Masked Language Model, MLM)

    • 隨機掩蓋輸入序列中的一部分單詞,讓模型預測這些被掩蓋單詞的值。

  2. 下一句預測(Next Sentence Prediction, NSP)

    • 判斷兩個句子是否是連續的文本。

使用示例
from transformers import BertTokenizer, BertModel# 加載預訓練模型和分詞器
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')# 分詞和編碼
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
outputs = model(**inputs)# 獲取最后一層的隱藏狀態
last_hidden_states = outputs.last_hidden_state

三、BERT 的使用

BERT 在多種 NLP 任務中表現出色,以下是一些常見的應用:

(一)文本分類

BERT 可用于文本分類任務。通過在預訓練的 BERT 模型基礎上添加一個分類層,可以對文本進行分類。例如,在情感分析任務中,判斷評論文本是正面還是負面。

from transformers import BertTokenizer, BertForSequenceClassification
import torch# 加載預訓練模型和分詞器
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')# 分詞和編碼
inputs = tokenizer("I love natural language processing.", return_tensors="pt")
labels = torch.tensor([1]).unsqueeze(0)  # 假設是正面情感# 訓練
outputs = model(**inputs, labels=labels)
loss = outputs.loss
logits = outputs.logits

(二)問答系統

BERT 可用于問答系統。通過在預訓練的 BERT 模型基礎上添加一個問答層,可以回答與給定上下文相關的問題。

from transformers import BertTokenizer, BertForQuestionAnswering# 加載預訓練模型和分詞器
tokenizer = BertTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
model = BertForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')# 分詞和編碼
question = "Who is the founder of Apple Inc.?"
context = "Apple Inc. was founded by Steve Jobs, Steve Wozniak, and Ronald Wayne."
inputs = tokenizer(question, context, return_tensors="pt")
start_positions = torch.tensor([1])
end_positions = torch.tensor([3])# 訓練
outputs = model(**inputs, start_positions=start_positions, end_positions=end_positions)
loss = outputs.loss
start_scores = outputs.start_logits
end_scores = outputs.end_logits

(三)命名實體識別(NER)

BERT 可用于命名實體識別任務。通過在預訓練的 BERT 模型基礎上添加一個 NER 層,可以識別文本中的實體。

from transformers import BertTokenizer, BertForTokenClassification# 加載預訓練模型和分詞器
tokenizer = BertTokenizer.from_pretrained('dbmdz/bert-large-cased-finetuned-conll03-english')
model = BertForTokenClassification.from_pretrained('dbmdz/bert-large-cased-finetuned-conll03-english')# 分詞和編碼
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
labels = torch.tensor([1, 2, 3, 4, 5]).unsqueeze(0)  # 假設標簽# 訓練
outputs = model(**inputs, labels=labels)
loss = outputs.loss
logits = outputs.logits

BERT 的使用方法靈活多樣,可以根據具體任務進行微調,以實現最佳性能。通過合理利用 BERT 的預訓練能力和強大的語言理解能力,可以顯著提升 NLP 應用的效果。

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

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

相關文章

激光三角測量標定與應用

文章目錄 1,介紹。2,技術原理3,類型。3.1,直射式3.2,斜射式3.3,兩種三角位移傳感器特性的比較 4,什么是光片?5,主要的算子。1,create_sheet_of_light_model2&…

高可用消息隊列實戰:AWS SQS 在分布式系統中的核心解決方案

引言:消息隊列的“不可替代性” 在微服務架構和分布式系統盛行的今天,消息隊列(Message Queue) 已成為解決系統解耦、流量削峰、異步處理等難題的核心組件。然而,傳統的自建消息隊列(如RabbitMQ、Kafka&am…

人工智能核心知識:AI Agent 的四種關鍵設計模式

人工智能核心知識:AI Agent 的四種關鍵設計模式 一、引言 在人工智能領域,AI Agent(人工智能代理)是實現智能行為和決策的核心實體。它能夠感知環境、做出決策并采取行動以完成特定任務。為了設計高效、靈活且適應性強的 AI Age…

平替BioLegend品牌-Elabscience PE Anti-Mouse Foxp3抗體:流式細胞術中的高效工具,助力免疫細胞分析!”

概述 調節性T細胞(Treg)在維持免疫耐受和抑制過度免疫反應中發揮關鍵作用,其標志性轉錄因子Foxp3(Forkhead box P3)是Treg功能研究的重要靶點。Elabscience 推出的抗小鼠Foxp3抗體(3G3-E)&…

編程日志5.13

鄰接表的基礎代碼 #include<iostream> using namespace std; //鄰接表的類聲明 class Graph {private: //結構體EdgeNode表示圖中的邊結點,包含頂點vertex、權重weight和指向下一個邊結點的指針next struct EdgeNode { int vertex; int weight; …

PowerBI 矩陣實現動態行內容(如前后銷售數據)統計數據,以及過濾同時為0的數據

我們有一張活動表 和 一張銷售表 我們想實現如下的效果&#xff0c;當選擇某個活動時&#xff0c;顯示活動前后3天的銷售對比圖&#xff0c;如下&#xff1a; 實現方法&#xff1a; 1.新建一個表&#xff0c;用于顯示列&#xff1a; 2.新建一個度量值&#xff0c;用SELECTEDVA…

Prompt Tuning:高效微調大模型的新利器

Prompt Tuning(提示調優)是什么 Prompt Tuning(提示調優) 是大模型參數高效微調(Parameter-Efficient Fine-Tuning, PEFT)的重要技術之一,其核心思想是通過優化 連續的提示向量(而非整個模型參數)來適配特定任務。以下是關于 Prompt Tuning 的詳細解析: 一、核心概念…

杰發科技AC7840——如何把結構體數據寫到Dflash中

1. 結構體數據被存放在Pflash中 正常情況下&#xff0c;可以看到全局變量的結構體數據被存放在Pflash中 數字部分存在RAM中 2. 最小編程單位 8字節編程&#xff0c;因此如果結構體存放在Dfalsh中&#xff0c;進行寫操作&#xff0c;需要寫8字節的倍數 第一種辦法&#xff1a;…

CSS 選擇器入門

一、CSS 選擇器基礎&#xff1a;快速掌握核心概念 什么是選擇器&#xff1f; CSS 選擇器就像 “網頁元素的遙控器”&#xff0c;用于定位 HTML 中的特定元素并應用樣式。 /* 結構&#xff1a;選擇器 { 屬性: 值; } */ p { color: red; } /* 選擇所有<p>元素&#xff0c;…

Anaconda3安裝教程(附加安裝包)Anaconda詳細安裝教程Anaconda3 最新版安裝教程

多環境隔離 可同時維護生產環境、開發環境、測試環境&#xff0c;例如&#xff1a; conda create -n ml python3.10 # 創建機器學習環境 conda activate ml # 激活環境三、Anaconda3 安裝教程 解壓Anaconda3安裝包 找到下載的 Anaconda3 安裝包&#xff08;.ex…

現代計算機圖形學Games101入門筆記(十七)

雙向路徑追蹤 外觀建模 散射介質 人的頭發不能用在動畫的毛發上。 動物的髓質Medulla特別大 雙層圓柱模型應用 BSSRDF是BRDF的延伸。 天鵝絨用BRDF不合理&#xff0c;轉成散射介質。 法線分布 光追很難處理微表面模型 光在微型細節上&#xff0c;光是一個波&#xff0c;會發生衍…

chrome源碼中WeakPtr 跨線程使用詳解:原理、風險與最佳實踐

base::WeakPtr 在 Chromium 中 不能安全地跨線程使用。這是一個很關鍵的點&#xff0c;下面詳細解釋原因及正確用法。 &#x1f50d;原理與使用 ? 先說答案&#xff1a; base::WeakPtr 本質上是**線程綁定&#xff08;thread-affine&#xff09;**的。不能在多個線程之間創建…

hysAnalyser 從MPEG-TS導出ES功能說明

摘要 hysAnalyser 是一款特色的 MPEG-TS 數據分析工具。本文主要介紹了 hysAnalyser 從MPEG-TS 中導出選定的 ES 或 PES 功能(版本v1.0.003)&#xff0c;以便用戶知悉和掌握這些功能&#xff0c;幫助分析和解決各種遇到ES或PES相關的實際問題。hysAnalyser 支持主流的MP1/MP2/…

C++(21):fstream的讀取和寫入

目錄 1 ios::out 2 ios::in和is_open 3 put()方法 4 get()方法 4.1 讀取單個字符 4.2 讀取多個字符 4.3 設置終結符 5 getline() 1 ios::out 打開文件用于寫入數據。如果文件不存在&#xff0c;則新建該文件&#xff1b;如果文件原來就存在&#xff0c;則打開時清除…

系統架構設計(十七):微服務數據一致性和高可用策略

數據一致性問題 問題本質 由于每個微服務擁有獨立數據庫&#xff0c;跨服務操作不能用傳統的數據庫事務&#xff0c;面臨“分布式事務”一致性挑戰。 數據一致性策略 策略核心思想應用場景優缺點強一致性&#xff08;Strong Consistency&#xff09;所有操作實時同步成功&a…

os agent智能體軟件 - 第三彈 - 純語音交互

前兩期期我們發布了產品的初級形態&#xff0c;那時候還只能是“軟件開發者”在本地配置使用&#xff0c;或者運行起來有個大黑框&#xff0c;使用起來美觀度太差。 到今天大概20天&#xff0c;我們的第3版已經出來了&#xff0c;不僅做成了電腦端的exe軟件&#xff08;任何人…

鏈表原理與實現:從單鏈表到LinkedList

1.鏈表的概念及結構 鏈表是一種物理存儲結構上非連續存儲結構&#xff0c;數據元素的邏輯順序是通過鏈表中的引用鏈接次序實現的 。 可以形象的理解&#xff0c;在邏輯上來看&#xff0c;鏈表就像是一節節火車車廂。 鏈表的分類&#xff1a;鏈表的結構有很多種&#xff0c;單向…

替換word中的excel

PostMapping("/make/report/target/performance/first") public AjaxResult makeTargetReportFirst(RequestBody MakeReportDTO makeReportDTO) {Map<String, String> textReplaceMap new HashMap<>();// 替換日期LocalDateTime nowData LocalDateTime…

深入探索百度智能云千帆AppBuilder:從零開始構建AI應用

在數字化轉型的浪潮中&#xff0c;企業對高效、智能的應用開發平臺的需求日益增長。百度智能云千帆AppBuilder&#xff08;以下簡稱AppBuilder&#xff09;憑借其強大的功能和靈活的開發方式&#xff0c;成為企業級大模型應用開發的理想選擇。本文將詳細介紹如何使用AppBuilder…

測試工程師要如何開展單元測試

單元測試是軟件開發過程中至關重要的環節&#xff0c;它通過驗證代碼的最小可測試單元(如函數、方法或類)是否按預期工作&#xff0c;幫助開發團隊在早期發現和修復缺陷&#xff0c;提升代碼質量和可維護性。以下是測試工程師開展單元測試的詳細步驟和方法&#xff1a; 一、理…