# 使用 Hugging Face Transformers 和 PyTorch 實現信息抽取

使用 Hugging Face Transformers 和 PyTorch 實現信息抽取

在自然語言處理(NLP)領域,信息抽取是一種常見的任務,其目標是從文本中提取特定類型的結構化信息。本文將介紹如何使用 Hugging Face Transformers 和 PyTorch 實現基于大語言模型的信息抽取。我們將通過一個具體的例子,展示如何從文本中抽取商品的詳細信息,包括產品名稱、品牌、特點、價格和銷量等。

1. 任務背景

信息抽取在許多應用場景中都非常有用,例如從新聞文章中提取關鍵信息、從產品描述中提取商品信息等。傳統的信息抽取方法通常依賴于規則匹配或基于機器學習的分類器,但這些方法往往需要大量的標注數據,并且在面對復雜的文本結構時效果有限。近年來,隨著大語言模型(如 GPT、Bert 等)的發展,基于這些模型的信息抽取方法逐漸成為研究熱點。

2. 技術棧介紹

2.1 Hugging Face Transformers

Hugging Face Transformers 是一個開源的 Python 庫,提供了大量預訓練的語言模型,以及用于微調和部署這些模型的工具。它支持多種模型架構(如 Bert、GPT、T5 等),并且提供了豐富的 API,方便開發者快速實現各種 NLP 任務。
在這里插入圖片描述
在這里插入圖片描述

2.2 PyTorch

PyTorch 是一個流行的深度學習框架,以其動態計算圖和易用性而聞名。它提供了強大的 GPU 支持,能夠加速模型的訓練和推理過程。在本文中,我們將使用 PyTorch 來加載和運行預訓練的語言模型。

3. 實現步驟

3.1 定義任務和數據

我們的目標是從給定的文本中抽取商品的相關信息。具體來說,我們需要提取以下屬性:

  • 產品名稱
  • 品牌
  • 特點
  • 原價
  • 促銷價
  • 銷量

為了實現這一目標,我們定義了一個簡單的數據結構來描述這些屬性,并提供了一些示例數據供模型學習。

3.2 初始化模型和分詞器

我們使用 Hugging Face Transformers 提供的 AutoTokenizerAutoModelForCausalLM 來加載預訓練的語言模型。在這個例子中,我們使用了 Qwen2.5-1.5B-Instruct 模型,這是一個經過指令微調的模型,能夠更好地理解自然語言指令。

tokenizer = AutoTokenizer.from_pretrained(r"C:\Users\妄生\Qwen2.5-1.5B-Instruct", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(r"C:\Users\妄生\Qwen2.5-1.5B-Instruct", trust_remote_code=True)

3.3 構建提示模板

為了幫助模型更好地理解任務,我們設計了一個提示模板,明確告訴模型需要抽取哪些信息。模板中包含了需要抽取的實體類型和屬性,以及如何格式化輸出結果。

IE_PATTERN = "{}\n\n提取上述句子中{}的實體,并按照JSON格式輸出,上述句子中不存在的信息用['原文中未提及']來表示,多個值之間用','分隔。"

3.4 準備示例數據

為了讓模型更好地理解任務,我們提供了一些示例數據。這些示例數據展示了如何從文本中抽取信息,并以 JSON 格式輸出。

ie_examples = {'商品': [{'content': '2024 年新款時尚運動鞋,品牌 JKL,舒適透氣,多種顏色可選。原價 599 元,現在促銷價 499 元。月銷量 2000 雙。','answers': {'產品': ['時尚運動鞋'],'品牌': ['JKL'],'特點': ['舒適透氣、多種顏色可選'],'原價': ['599元'],'促銷價': ['499元'],'月銷量': ['2000雙'],}}]
}

3.5 實現信息抽取函數

我們定義了一個 inference 函數,用于對輸入的文本進行信息抽取。這個函數首先將輸入文本和提示模板組合起來,然后使用模型生成輸出結果。最后,我們將生成的結果解碼并打印出來。

def inference(sentences: list, custom_settings: dict):for sentence in sentences:cls_res = "商品"if cls_res not in schema:print(f'The type model inferenced {cls_res} which is not in schema dict, exited.')exit()properties_str = ', '.join(schema[cls_res])schema_str_list = f'"{cls_res}"({properties_str})'sentence_with_ie_prompt = IE_PATTERN.format(sentence, schema_str_list)full_input_text = build_prompt(sentence_with_ie_prompt, custom_settings["ie_pre_history"])inputs = tokenizer(full_input_text, return_tensors="pt")inputs = inputs.to('cpu')output_sequences = model.generate(inputs["input_ids"], max_length=2000, attention_mask=inputs.attention_mask)generated_reply = tokenizer.decode(output_sequences[0], skip_special_tokens=True)print(generated_reply[len(full_input_text):])

3.6 測試模型

最后,我們使用一些測試數據來驗證模型的效果。

sentences = ['“2024 年潮流雙肩包,品牌 PQR,材質耐磨,內部空間大。定價399元,優惠后價格349元。周銷量800個。”','2024 年智能手表,品牌為華為,功能強大,續航持久。售價1299元,便宜價999元,目前有黑色和銀色可選。月銷量3000只。'
]
custom_settings = init_prompts()
inference(sentences, custom_settings)

4. 結果展示

運行上述代碼后,模型將輸出從測試數據中抽取的信息。例如,對于第一句測試數據,模型可能會輸出類似以下的結果:

在這里插入圖片描述

5. 總結

本文介紹了一個基于 Hugging Face Transformers 和 PyTorch 的信息抽取實現。通過使用預訓練的語言模型和提示模板,我們能夠從文本中抽取特定的結構化信息。這種方法的優點是不需要大量的標注數據,并且能夠處理復雜的文本結構。然而,它也有一些局限性,例如對模型的依賴較大,且生成的結果可能需要進一步驗證和修正。

未來,我們可以探索更多優化方法,例如微調模型以提高其在特定任務上的性能,或者結合其他技術(如規則匹配)來提高抽取的準確性。此外,我們還可以嘗試將這種方法應用于其他類型的信息抽取任務,以驗證其通用性。

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

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

相關文章

Firecrawl MCP Server 深度使用指南

無論是市場分析師洞察行業動態、研究者收集學術資料,還是開發者為智能應用采集數據,都對網絡數據采集工具提出了極高的要求。Firecrawl MCP Server 應運而生,它宛如一把犀利的 “數字手術刀”,能夠精準地剖析網頁,為用…

OceanBase數據庫全面指南(基礎入門篇)

文章目錄 一、OceanBase 簡介與安裝配置指南1.1 OceanBase 核心特點1.2 架構解析1.3 安裝部署實戰1.3.1 硬件要求1.3.2 安裝步驟詳解1.3.3 配置驗證二、OceanBase 基礎 SQL 語法入門2.1 數據查詢(SELECT)2.1.1 基礎查詢語法2.1.2 實際案例演示2.2 數據操作(INSERT/UPDATE/DE…

幾種環境下的Postgres數據庫安裝

1. Postgres 數據庫介紹 PostgreSQL(又稱 Postgres)是一種強大、開源的關系型數據庫管理系統(RDBMS),它具備高度的可靠性、穩定性和可擴展性,主要特點如下: 開源:PostgreSQL 是基于開…

函數[x]和{x}在數論中的應用

函數[x]和{x}在數論中的應用 函數[x]和{x}的定義與基本性質(定義1,命題1)定義1例1命題1 函數[x]和{x}的應用(定理1,推論1-推論3)例2定理1注解5推論1例3例4推論2推論3命題2 函數[x]和{x}的定義與基本性質&am…

Python爬蟲(32)Python爬蟲高階:動態頁面處理與Scrapy+Selenium+BeautifulSoup分布式架構深度解析實戰

目錄 引言一、動態頁面爬取的技術背景1.1 動態頁面的核心特征1.2 傳統爬蟲的局限性 二、技術選型與架構設計2.1 核心組件分析2.2 架構設計思路1. 分層處理2. 數據流 三、代碼實現與關鍵技術3.1 Selenium與Scrapy的中間件集成3.2 BeautifulSoup與Scrapy Item的整合3.3 分布式爬取…

FreeSWITCH rtcp-mux 測試

rtcp 跟 rtp 占用同一個端口,這就是 rtcp 復用 Fs 呼出是這樣的: originate [rtcp_muxtrue][rtcp_audio_interval_msec5000]user/1001 &echo 需要同時指定 rtcp_audio_interval_msec,否則 rtcp_mux 不能生效 Fs 呼入不需要配置&#xf…

day019-特殊符號、正則表達式與三劍客

文章目錄 1. 磁盤空間不足-排查流程2. 李導推薦書籍2.1 大話存儲2.2 性能之巔 3. 特殊符號3.1 引號系列(面試題)3.2 重定向符號3.2.1 cat與重定向3.2.2 tr命令:替換字符3.2.3 xargs:參數轉換3.2.4 標準全量追加重定向 4. 正則表達…

Vue3 watch 使用與注意事項

watch 的第一個參數可以是不同形式的“數據源”&#xff1a;它可以是一個 ref (包括計算屬性)、一個響應式對象、一個 getter 函數、或多個數據源組成的數組&#xff1a; 1&#xff1a;reactive監聽對象 <template><div><h1>情況二&#xff1a;watchEffect…

醫學寫作供應商管理全流程優化

1. 供應商篩選與評估 1.1 資質審核 1.1.1 行業認證核查 核查供應商的行業認證,如AMWA醫學寫作認證、EMWA會員資格、ISO 9001等,確保其專業資質。 1.1.2 團隊背景評估 評估團隊成員專業背景,包括醫學/藥學學位、臨床試驗經驗、發表記錄,保障專業能力。 1.1.3 國際規范熟悉…

固態硬盤顆粒類型、選型與應用場景深度解析

一、固態硬盤顆粒類型的技術演進與特性 固態硬盤&#xff08;SSD&#xff09;的性能核心在于存儲單元結構的設計&#xff0c;這種設計直接決定了數據的存儲密度、讀寫速度、耐久度及成本效益。當前主流的閃存顆粒類型呈現從單層到多層架構的梯度演進&#xff0c;其技術特征與應…

CAPL自動化-診斷Demo工程

文章目錄 前言一、診斷控制面板二、診斷定義三、發送診斷通過類.方法的方式req.SetParameterdiagSetParameter四、SendRequestAndWaitForResponse前言 本文將介紹CANoe的診斷自動化測試,工程可以從CANoe的 Sample Configruration 界面打開,也可以參考下面的路徑中打開(以實…

嵌入式預處理鏈接腳本lds和map文件

在嵌入式開發中&#xff0c;.lds.S 文件是一個 預處理后的鏈接腳本&#xff08;Linker Script&#xff09;&#xff0c;它結合了 C 預處理器&#xff08;Preprocessor&#xff09; 的功能和鏈接腳本的語法。它的核心作用仍然是 定義內存布局和鏈接規則&#xff0c;但通過預處理…

PT5F2307觸摸A/D型8-Bit MCU

1. 產品概述 ● PT5F2307是一款51內核的觸控A/D型8位MCU&#xff0c;內置16K*8bit FLASH、內部256*8bit SRAM、外部512*8bit SRAM、觸控檢測、12位高精度ADC、RTC、PWM等功能&#xff0c;抗干擾能力強&#xff0c;適用于滑條遙控器、智能門鎖、消費類電子產品等電子應用領域。 …

RabbitMQ——消息確認

一、消息確認機制 生產者發送的消息&#xff0c;可能有以下兩種情況&#xff1a; 1> 消息消費成功 2> 消息消費失敗 為了保證消息可靠的到達消費者&#xff08;&#xff01;&#xff01;&#xff01;注意&#xff1a;消息確認機制和前面的工作模式中的publisher confi…

C++異步(1)

什么是異步? 異步就是多個線程是同時執行的&#xff0c;與之相對的就是線程同步&#xff0c;二者都應用在并發的場景上。 異步的特點 異步執行的任務無需等待其他任務完成&#xff0c;其本身是通過非阻塞的方式執行的&#xff0c;不依賴前驅任務&#xff0c;通常用于IO密集…

向量數據庫Milvus03-高級功能與性能調優

Milvus高級功能與性能調優 目錄 高級特性詳解性能調優技巧生產環境部署最佳實踐總結與展望 1. 高級特性詳解 1.1 多索引兼容 Milvus 支持多種索引類型&#xff08;如 HNSW、IVF_PQ、IVF_FLAT&#xff09;的混合使用&#xff0c;以適應不同場景的需求。 HNSW&#xff08;Hier…

5月24日day35打卡

模型可視化與推理 知識點回顧&#xff1a; 三種不同的模型可視化方法&#xff1a;推薦torchinfo打印summary權重分布可視化進度條功能&#xff1a;手動和自動寫法&#xff0c;讓打印結果更加美觀推理的寫法&#xff1a;評估模式 作業&#xff1a;調整模型定義時的超參數&#x…

野火魯班貓(arrch64架構debian)從零實現用MobileFaceNet算法進行實時人臉識別(三)用yolov5-face算法實現人臉檢測

環境直接使用第一篇中安裝好的環境即可 先clone yolov5-face項目 git clone https://github.com/deepcam-cn/yolov5-face.git 并下載預訓練權重文件yolov5n-face.pt 網盤鏈接: https://pan.baidu.com/s/1xsYns6cyB84aPDgXB7sNDQ 提取碼: lw9j &#xff08;野火官方提供&am…

R語言科研編程-柱狀圖

R語言簡介 R語言是一種開源的統計計算和圖形繪制編程語言&#xff0c;廣泛應用于數據分析、機器學習、數據可視化等領域。它由Ross Ihaka和Robert Gentleman于1993年開發&#xff0c;具有豐富的統計函數庫和圖形功能&#xff0c;尤其適合數據科學研究和可視化任務。 使用R語言…

Android-Handler學習總結

??面試官?&#xff1a;你好&#xff01;我看你簡歷里提到熟悉 Android 的 Handler 機制&#xff0c;能簡單說一下它的作用嗎&#xff1f; ?候選人?&#xff1a; Handler 是 Android 中用來做線程間通信的工具。比如Android 應用的 UI 線程&#xff08;也叫主線程…