4.1 文本相似度(二)

目錄

1 文本相似度評估

2 代碼

2.1 load_dataset 方法

2.2?AutoTokenizer、AutoModelForSequenceClassification


1 文本相似度評估

? ? ? 對兩個文本拼接起來,然后作為一個樣本喂給模型,作為一個二分類的任務;

數據處理的方式以及訓練的基本流程與上文相似。

2 代碼

  1. 數據預處理,把需要對比的文本放置一起,作為一個樣本;?tokenizer: 輸入的語句是兩個。分類標簽的類型必須是 int,不能是其他的類型;
  2. 加載模型。
  3. 輸出結果;?


2.1 load_dataset 方法

datasets是抱抱臉開發的一個數據集python庫,可以很方便的從Hugging Face Hub里下載數據,也可很方便的從本地加載數據集,本文主要對load_dataset方法的使用進行詳細說明。

def load_dataset(
? ? path: str,
? ? name: Optional[str] = None,
? ? data_dir: Optional[str] = None,
? ? data_files: Union[Dict, List] = None,
? ? split: Optional[Union[str, Split]] = None,
? ? cache_dir: Optional[str] = None,
? ? features: Optional[Features] = None,
? ? download_config: Optional[DownloadConfig] = None,
? ? download_mode: Optional[GenerateMode] = None,
? ? ignore_verifications: bool = False,
? ? save_infos: bool = False,
? ? script_version: Optional[Union[str, Version]] = None,
? ? **config_kwargs,
) -> Union[DatasetDict, Dataset]:

path:參數path表示數據集的名字或者路徑。可以是如下幾種形式(每種形式的使用方式后面會詳細說明)
數據集的名字,比如imdb、glue
數據集文件格式,比如json、csv、parquet、txt
數據集目錄中的處理數據集的腳本(.py)文件,比如“glue/glue.py”
name:參數name表示數據集中的子數據集,當一個數據集包含多個數據集時,就需要這個參數,比如glue數據集下就包含"sst2"、“cola”、"qqp"等多個子數據集,此時就需要指定name來表示加載哪一個子數據集
data_dir:數據集所在的目錄
data_files:數據集文件
cache_dir:構建的數據集緩存目錄,方便下次快速加載。

2.2?AutoTokenizer、AutoModelForSequenceClassification

類名稱介紹
AutoTokenizerAutoTokenizer?是 Hugging Face Transformers 庫中的一個類,用于自動選擇適合特定預訓練模型的 tokenizer。該類可以根據指定的模型名稱或路徑,自動選擇對應的 tokenizer 類型,無需手動指定。這樣可以方便地在不同的預訓練模型之間切換,而無需更改代碼中的 tokenizer 類型。
AutoModelForSequenceClassificationAutoModelForSequenceClassification?是 Hugging Face Transformers 庫中的一個類,用于自動選擇適合特定預訓練模型的用于序列分類任務的模型。這個類會根據指定的模型名稱或路徑自動選擇對應的模型類型,無需手動指定。這樣可以方便地在不同的預訓練模型之間切換,而無需更改代碼中的模型類型。
TrainerTrainer?是 Hugging Face Transformers 庫中用于訓練和評估模型的高級 API。它提供了一個簡單而強大的接口,用于管理訓練循環、驗證循環、日志記錄、保存模型等任務。使用?Trainer?可以方便地訓練和微調預訓練模型,同時還支持分布式訓練和混合精度訓練等功能。
TrainingArgumentsTrainingArguments?是 Hugging Face Transformers 庫中用于配置訓練參數的類。通過?TrainingArguments?類,可以指定訓練過程中的各種參數,如訓練輪數、學習率、批次大小、日志路徑、模型保存路徑等。這些參數可以幫助控制訓練過程的行為,并對訓練過程進行定制。

from transformers import AutoTokenizer, AutoModelForSequenceClassification, Trainer, TrainingArguments
from datasets import load_dataset,load_from_disk
import traceback
from sklearn.model_selection import train_test_split#dataset = load_dataset("json", data_files="../data/train_pair_1w.json", split="train")
dataset = load_dataset("csv", data_files="/Users/user/studyFile/2024/nlp/text_similar/data/Chinese_Text_Similarity.csv", split="train")datasets = dataset.train_test_split(test_size=0.2,shuffle=True)import torchtokenizer = AutoTokenizer.from_pretrained("../chinese_macbert_base")
def process_function(examples):tokenized_examples = tokenizer(examples["sentence1"], examples["sentence2"], max_length=128, truncation=True)#  注意int(label)tokenized_examples["labels"] = [int(label) for label in examples["label"]]return tokenized_examplestokenized_datasets = datasets.map(process_function, batched=True, remove_columns=datasets["train"].column_names)
#tokenized_datasets# 創建模型
from transformers import BertForSequenceClassification 
model = AutoModelForSequenceClassification.from_pretrained("../chinese_macbert_base")import evaluate
acc_metric = evaluate.load("./metric_accuracy.py")
f1_metirc = evaluate.load("./metric_f1.py")
# 
# acc_metric = evaluate.load("accuracy")
# f1_metirc = evaluate.load("f1")
def eval_metric(eval_predict):predictions, labels = eval_predict#print(predictions,labels)predictions = predictions.argmax(axis=-1)#predictions = [int(p > 0.5) for p in predictions]labels = [int(l) for l in labels]# predictions = predictions.argmax(axis=-1)acc = acc_metric.compute(predictions=predictions, references=labels)f1 = f1_metirc.compute(predictions=predictions, references=labels)acc.update(f1)return acc
train_args = TrainingArguments(output_dir="./cross_model",      # 輸出文件夾per_device_train_batch_size=32,  # 訓練時的batch_sizeper_device_eval_batch_size=32,  # 驗證時的batch_sizelogging_steps=10,                # log 打印的頻率evaluation_strategy="epoch",     # 評估策略save_strategy="epoch",           # 保存策略save_total_limit=3,              # 最大保存數learning_rate=2e-5,              # 學習率weight_decay=0.01,               # weight_decaymetric_for_best_model="f1",      # 設定評估指標load_best_model_at_end=True)     # 訓練完成后加載最優模型
train_args
from transformers import DataCollatorWithPadding
trainer = Trainer(model=model, args=train_args, train_dataset=tokenized_datasets["train"], eval_dataset=tokenized_datasets["test"], data_collator=DataCollatorWithPadding(tokenizer=tokenizer),compute_metrics=eval_metric)
trainer.train()

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

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

相關文章

c 指針基礎

/* 指針練習*/ #include <stdio.h> #include <stdlib.h> void printAll(int n1, int n2, int *p1, int *p2); int main(){ //賦值操作語法演示 int num1 1111; int num2 2222; int *prt1 &num1; int *prt2 &num2; printAll(num1, num2, prt1…

maven .lastUpdated文件作用

現象 有時候我在用maven管理項目時會發現有些依賴報錯&#xff0c;這時你可以看一下本地倉庫中是否有.lastUpdated文件&#xff0c;也許與它有關。 原因 有這個文件就表示依賴下載過程中發生了錯誤導致依賴沒成功下載&#xff0c;可能是網絡原因&#xff0c;也有可能是遠程…

平面設計基礎指南:從零開始的學習之旅!

平面設計師主要做什么&#xff1f; 平面設計師通過創建視覺概念來傳達信息。他們創造了從海報和廣告牌到包裝、標志和營銷材料的所有內容&#xff0c;并通過使用形狀、顏色、排版、圖像和其他元素向觀眾傳達了他們的想法。平面設計師可以在內部工作&#xff0c;專門為品牌創建…

Mac安裝jadx

1、使用命令brew安裝 : brew install jadx 輸入完命令,等待安裝完畢 備注&#xff08;關于Homebrew &#xff09;&#xff1a; Homebrew 是 MacOS 下的包管理工具&#xff0c;類似 apt-get/apt 之于 Linux&#xff0c;yum 之于 CentOS。如果一款軟件發布時支持了 homebrew 安…

mac定時任務、自啟動任務

https://quail.ink/mynotes/p/mac-startup-configuration-detailed-explanation <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.d…

【2024年5月備考新增】】 考前篇(2)《官方平臺 - 考生模擬練習平臺常用操作(一)》

軟考考生常用操作說明 說明:模擬作答系統是旨在讓考生熟悉計算機化考試環境和作答方式,模擬作答不保存考生作答 歷史記錄。考試題型、題量、分值、界面及文字內容以正式考試答題系統為準。 1 如何標記試題、切換試題 2 簡答題如何查看歷史記錄、切換輸入法 3 選做題,已作答…

游戲找不到steam_api64.dll如何解決,介紹5種簡單有效的方法

面對“找不到steam_api64.dll&#xff0c;無法繼續執行代碼”的問題&#xff0c;許多游戲玩家或軟件使用者可能會感到手足無措。這個錯誤提示意味著你的計算機系統在嘗試運行某個游戲或應用程序時&#xff0c;無法定位到一個至關重要的動態鏈接庫文件——steam_api64.dll&#…

《深入Linux內核架構》第3章 內存管理(6)

目錄 3.5.7 內核中不連續頁的分配 3.5.8 內核映射 本專欄文章將有70篇左右&#xff0c;歡迎關注&#xff0c;訂閱后續文章。 本節講解vmalloc, vmap&#xff0c;kmap原理。 3.5.7 內核中不連續頁的分配 kmalloc函數&#xff1a;分配物理地址和虛擬地址都連續的內存。 kmall…

MongoDB聚合運算符:$type

MongoDB聚合運算符&#xff1a;$type 文章目錄 MongoDB聚合運算符&#xff1a;$type語法使用可用的類型 舉例 $type聚合運算符用來返回指定參數的BSON類型的字符串。。 語法 { $type: <expression> }<expression>可以是任何合法的表達式。 使用 不像查詢操作符$…

Selenium + Pytest自動化測試框架實戰(上)

前言 今天呢筆者想和大家來聊聊selenium自動化 pytest測試框架&#xff0c;在這篇文章里你需要知道一定的python基礎——至少明白類與對象&#xff0c;封裝繼承&#xff1b;一定的selenium基礎。這篇文章不會selenium&#xff0c;不會的可以自己去看selenium中文翻譯網喲。 一…

六西格瑪管理培訓公司:事業進階的充電站,助你沖破職場天花板!

六西格瑪&#xff0c;源于制造業&#xff0c;卻不僅僅局限于制造業。它是一種以數據為基礎、以顧客為中心、以流程優化為手段的全面質量管理方法。通過六西格瑪管理&#xff0c;企業可以系統性地識別并解決運營過程中的問題&#xff0c;提高產品和服務的質量&#xff0c;降低成…

導航app為什么知道還有幾秒變綠燈?

在使用地圖導航app行駛至信號燈的交叉路口時&#xff0c;這些應用程序會貼心地告知用戶距信號燈變化還有多少秒&#xff0c;無論是即將轉為綠燈還是紅燈。這一智能化提示不僅使得駕駛員能適時做好起步或剎車的準備&#xff0c;有效緩解了因等待時間不確定而產生的焦慮情緒&…

GBPC2510-ASEMI工業電源專用GBPC2510

編輯&#xff1a;ll GBPC2510-ASEMI工業電源專用GBPC2510 型號&#xff1a;GBPC2510 品牌&#xff1a;ASEMI 封裝&#xff1a;GBPC-4 最大重復峰值反向電壓&#xff1a;1000V 最大正向平均整流電流(Vdss)&#xff1a;25A 功率(Pd)&#xff1a;中小功率 芯片個數&#x…

分布式鎖之RedissonLock

什么是Redisson&#xff1f; 俗話說他就是看門狗&#xff0c;看門狗機制是一種用于保持Redis連接活躍性的方法&#xff0c;通常用于分布式鎖的場景。看門狗的工作原理是&#xff1a;當客戶端獲取到鎖之后&#xff0c;會對Redis中的一個特定的鍵設置一個有限的過期時間&#xff…

[附源碼]傳世手游_玲瓏傳世_GM_安卓搭建教程

本教程僅限學習使用&#xff0c;禁止商用&#xff0c;一切后果與本人無關&#xff0c;此聲明具有法律效應&#xff01;&#xff01;&#xff01;&#xff01; 教程是本人親自搭建成功的&#xff0c;絕對是完整可運行的&#xff0c;踩過的坑都給你們填上了。 如果你是小白也沒…

C++ 509. 斐波那契數

文章目錄 一、題目描述二、參考代碼 一、題目描述 示例 1&#xff1a; 輸入&#xff1a;n 2 輸出&#xff1a;1 解釋&#xff1a;F(2) F(1) F(0) 1 0 1 示例 2&#xff1a; 輸入&#xff1a;n 3 輸出&#xff1a;2 解釋&#xff1a;F(3) F(2) F(1) 1 1 2 示例 3…

設計模式——訪問者模式(Visitor)

訪問者模式&#xff08;Visitor Pattern&#xff09;是一種將數據操作與數據結構分離的設計模式。這種模式適用于數據結構相對穩定&#xff0c;而操作算法經常改變的情況。訪問者模式將數據結構&#xff08;穩定的部分&#xff09;中的元素&#xff08;Element&#xff09;的訪…

C語言題目:一元二次方程

題目描述 解一元二次方程ax^2bxc0的解。 輸入格式 a,b,c的值。 輸出格式 輸出兩個解&#xff0c;按照大小順序輸出&#xff0c;一個解時需要打印兩次&#xff0c;不用考慮無解問題&#xff0c;保留兩位小數 樣例輸入 1 5 -2樣例輸出 0.37 -5.37 代碼解析 首先&#xff0…

了解進程和線程

一、進程和線程 類比&#xff1a; 一個工廠&#xff0c;至少有一個車間&#xff0c;一個車間中至少有一個工人&#xff0c;最終是工人在工作。 一個程序&#xff0c;至少有一個進程&#xff0c;一個進程中至少有一個線程&#xff0c;最終是線程在工作。 進程&#xff1a;是計…

C#正則表達式,提取信息使用

正則表達式簡介 在C#中&#xff0c;正則表達式&#xff08;Regular Expression&#xff0c;通常簡寫為regex或regexp&#xff09;是一種功能強大的文本處理工具&#xff0c;它使用特定的字符序列來定義搜索模式&#xff0c;從而實現對文本的高效搜索、匹配和替換操作。正則表達…