中文rlhf數據集50w條數據解析

中文rlhf數據集50w條數據解析

  • 解析代碼
  • 數據名
  • 代碼解析

解析代碼

import jieba
from tqdm import tqdm
import re
import pandas as pd
import numpy as npdef find_non_english_text(text):pattern = re.compile(r'[^a-zA-Z]')return pattern.sub('', text)def find_chinese_text(text):pattern = re.compile(r'[^\u4e00-\u9fff]')return pattern.sub('', text)json_list = pd.read_parquet("E:/data_sets/train-rm-static-m2m100-zh-jianti.parquet")
data_list = []
basic_list = ["<|User|>", "<|Ash|>"] * 100for _, one_data in tqdm(json_list.iterrows()):ins = "".join(one_data["prompt"].split("\n\n")[1:-1])# inp=one_data["input"]out = one_data["response"]ins = np.hstack([i.split("Human:") for i in ins.split("Assistant:")])[1:].tolist()ins = [i for i in ins if len(i)>0]ins_len = len(ins)try:ins = np.hstack([[i, j] for i, j in zip(basic_list[:ins_len], ins)]).tolist()ins += [basic_list[ins_len], out]data_list.append(ins)except:continue
with open("data_set_five.txt", "a", encoding="utf-8") as f:voc_set = set()for one_data in tqdm(data_list):ins = []for one in one_data:if one in ["<|User|>", "<|Ash|>"]:ins += [one]else:one = jieba.lcut(one)try:one = np.hstack([list(i) if len(find_chinese_text(i)) > 0 else i for i in one]).tolist()except:breakins += onevoc_set |= set(ins)f.write(str(ins) + "\n")

數據名

在hf上搜方可
train-rm-static-m2m100-zh-jianti.parquet
數據地址

代碼解析

  1. import jieba: 導入分詞庫jieba。
  2. from tqdm import tqdm: 導入tqdm庫,用于在循環中顯示進度條。
  3. import re: 導入正則表達式庫。
  4. import pandas as pd: 導入pandas庫,用于處理數據。
  5. import numpy as np: 導入numpy庫,用于處理數組。
  6. def find_non_english_text(text): 定義一個函數,用于查找非英文文本。該函數輸入一個文本,使用正則表達式找到文本中的非英文字符,并用空字符替換。
  7. def find_chinese_text(text): 定義一個函數,用于查找中文文本。該函數輸入一個文本,使用正則表達式找到文本中的非中文字符,并用空字符替換。
  8. json_list = pd.read_parquet("E:/data_sets/train-rm-static-m2m100-zh-jianti.parquet"): 讀取parquet格式的文件,并將數據賦值給json_list。
  9. data_list = []: 定義一個空列表,用于存儲最終的數據。
  10. basic_list = ["&lt;|User|>", "&lt;|Ash|>"] * 100: 定義一個列表,其中包含兩個字符串"<|User|>“和”<|Ash|>",并將其重復100次。
  11. for _, one_data in tqdm(json_list.iterrows()):: 遍歷json_list,并使用tqdm在循環中顯示進度條。其中,_表示索引值,one_data表示每一行數據。
  12. ins = "".join(one_data["prompt"].split("\n\n")[1:-1]): 從one_data中獲取prompt字段,并去除字段中的換行符。然后,取出prompt中除第一行和最后一行之外的所有內容,并將其賦值給ins。
  13. out = one_data["response"]: 從one_data中獲取response字段,并將其賦值給out。
  14. ins = np.hstack([i.split("Human:") for i in ins.split("Assistant:")])[1:].tolist(): 將ins根據"Assistant:"分割成多個子串,然后將子串中的"Human:"去除,并將子串合并為一個列表。最后,將列表中的第一個元素去除,并將其轉換為列表類型。
  15. ins_len = len(ins): 獲取ins列表的長度,并將其賦值給ins_len。
  16. ins = np.hstack([[i, j] for i, j in zip(basic_list[:ins_len], ins)]).tolist(): 將basic_list中與ins長度相同的元素取出,然后將basic_list和ins中的元素一一配對組成元素為兩個字符串的列表,并將這些列表合并為一個列表。最后,將這個列表轉換為列表類型。
  17. data_list.append(ins): 將ins添加到data_list中。
  18. with open("data_set_five.txt", "a", encoding="utf-8") as f:: 打開一個文件"data_set_five.txt",并將其賦值給變量f。打開文件時,使用"a"模式表示追加數據到文件末尾。
  19. voc_set = set(): 定義一個空集合,用于存儲數據中的所有詞匯。
  20. for one_data in tqdm(data_list):: 遍歷data_list,并使用tqdm在循環中顯示進度條。其中,one_data表示每一個元素。
  21. ins = []: 定義一個空列表,用于存儲分詞后的文本。
  22. for one in one_data:: 遍歷one_data中的每一個元素,并將其賦值給變量one。
  23. if one in ["&lt;|User|>", "&lt;|Ash|>"]:: 判斷one是否等于"<|User|>“或”<|Ash|>"。
  24. ins += [one]: 如果one等于"<|User|>“或”<|Ash|>",則將one加入ins中。
  25. else:: 如果one不等于"<|User|>“或”<|Ash|>"。
  26. one = jieba.lcut(one): 使用jieba對one進行分詞。
  27. try:: 開始異常處理。
  28. one = np.hstack([list(i) if len(find_chinese_text(i)) > 0 else i for i in one]).tolist(): 對于one中的每個分詞,如果其包含中文字符,則將其拆分成單個字符,否則不做處理。然后,將處理后的結果合并為一個列表,并將這個列表轉換為列表類型。
  29. voc_set |= set(ins): 將ins中的所有元素加入voc_set中。
  30. f.write(str(ins) + "\n"): 將ins轉換為字符串,并將其寫入文件中,同時在字符串末尾加入換行符。

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

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

相關文章

教育數字化轉型:塑造未來學習新范式

在國家教育數字化戰略行動指引下&#xff0c;我國正積極推動數字化賦能教育高質量發展&#xff0c;以塑造教育發展的新優勢。如今&#xff0c;隨著科技新基建的普及和數字化賦能教育的深入推進&#xff0c;未來的教育模型正在逐漸形成。 在新的教育模型中&#xff0c;數字化學…

算法基礎(python版本)

第二章 算法設計思想 一、搜索排序 1.排序算法 https://visualgo.net/zh/sorting (1)冒泡排序 # 思路&#xff1a; # (1)比較相鄰元素&#xff0c;如果第一個比第二個大&#xff0c;則交換他們 # (2)第一輪下來&#xff0c;可以保證最后一個數一定是最大的&#xff1b;第二…

2023最全的Web自動化測試介紹

做測試的同學們都了解&#xff0c;做Web自動化&#xff0c;我們主要用Selenium或者是QTP。 有的人可能就會說&#xff0c;我沒這個Java基礎&#xff0c;沒有Selenium基礎&#xff0c;能行嗎&#xff1f;測試雖然屬于計算機行業&#xff0c;但其實并不需要太深入的編程知識&…

介紹一個功能強大的shopify app——TINYIMG

各位觀眾老爺&#xff0c;南來的北往的&#xff0c;東去的西走的&#xff0c;今天給大家推薦一個功能很強大的shopify app 當當當 那就是 tinyimg 這個app有多牛逼呢&#xff0c;且聽我慢慢道來 首先這個app可以用來優化圖片大小&#xff0c;給你的網站提提速 然后這個app還可…

Android使用AIDL+MemoryFile傳遞大數據

Android進程間通信經常會使用AIDL&#xff0c;簡單方便&#xff0c;但是數據量有限制&#xff0c;超過一定值會報錯&#xff1a; E !!! FAILED BINDER TRANSACTION !!! (parcel size 2073744) 可以通過使用AIDLMemoryFile傳遞大數據 新建AIDL接口&#xff1a; interface On…

CCFCSP試題編號:201803-2試題名稱:碰撞的小球

一、題目描述 二、思路 1.首先妾身分析這個題目&#xff0c;想要解題&#xff0c;得得解決2個問題。 1&#xff09;判斷小球到達端點或碰撞然后改變方向&#xff1b; 2&#xff09;每時刻都要改變位置 兩個問題都比較好解決&#xff0c;1&#xff09;只要簡單判斷坐標&…

形態學操作—膨脹

在 OpenCV 中&#xff0c;圖像形態學操作是一組基于圖像形狀的處理技術&#xff0c;其中膨脹&#xff08;Dilation&#xff09;是其中之一。膨脹操作可用于圖像處理中的特征增強、去噪、分割和邊緣檢測等。其基本原理是利用結構元素&#xff08;Kernel 或 Structuring Element&…

Tomcat實現WebSocket即時通訊 Java實現WebSocket的兩種方式

HTTP協議是“請求-響應”模式&#xff0c;瀏覽器必須先發請求給服務器&#xff0c;服務器才會響應該請求。即服務器不會主動發送數據給瀏覽器。 實時性要求高的應用&#xff0c;如在線游戲、股票實時報價和在線協同編輯等&#xff0c;瀏覽器需實時顯示服務器的最新數據&#x…

UML建模圖文詳解教程06——順序圖

版權聲明 本文原創作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl本文參考資料&#xff1a;《UML面向對象分析、建模與設計&#xff08;第2版&#xff09;》呂云翔&#xff0c;趙天宇 著 順序圖概述 順序圖(sequence diagram&#xff0c;也…

(三)C語言之for語句概述

&#xff08;三&#xff09;C語言之for語句概述 一、使用for語句實現打印華氏溫度與攝氏溫度轉換二、for語句概述三、練習 一、使用for語句實現打印華氏溫度與攝氏溫度轉換 #include <stdio.h> /*當華氏溫度為 0,20,40,...300時&#xff0c;打印出華氏溫度與攝氏溫度對照…

一個簡單的QT應用示例

一個簡單的QT應用示例&#xff1a;創建一個窗口程序。 首先&#xff0c;確保已經安裝了Qt開發環境。接下來&#xff0c;按照以下步驟創建一個簡單的窗口程序&#xff1a; 1. 打開Qt Creator&#xff0c;點擊“新建文件或項目”。 2. 選擇“應用程序”&#xff0c;然后點擊“下…

【MATLAB】根軌跡的繪制及rltool工具的使用

目錄 一、MATLAB中傳遞函數的表示二、rlocus函數繪制根軌跡1.常規根軌跡仿真示例2.參數根軌跡仿真示例3.零度根軌跡仿真示例 三、圖形化工具rltool介紹 一、MATLAB中傳遞函數的表示 在繪制系統的根軌跡之前&#xff0c;需要知道傳遞函數在matlab中如何表示。 在matlab中&#…

VOC數據集和COCO數據集直接的相互轉換

VOC數據集格式 get_list.py import os import random import shutil# 設置隨機種子 random.seed(1000)# 判斷Annotations和JpegImages是否對應 train_precent=0.8 label_path= "../../Annotations" print(os.path.abspath(label_path)) save="../Main" pr…

repo init報error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

repo init報error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 1 repo init出錯的信息2 解決方法 在ubuntu執行repo init的時候報了repo init報error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed這種錯誤&#xff0c;解決方法是需要更新本地…

PS給圖片增加一個白色邊框。

問題描述&#xff1a;PS如何給圖片增加一個白色邊框&#xff1f; 解決辦法&#xff1a; 第一步&#xff1a;使用shiftAltA快捷鍵&#xff0c;在圖片四周拉出一個灰白色的邊框。如下圖所示&#xff1a; 第二步&#xff0c;使用快捷鍵Ctrlshiftn新建一個圖層。 并把新建的圖層…

創建maven的web項目

&#xff08;一&#xff09;創建maven的web項目 Step1、創建一個普通的maven項目 &#xff08;1&#xff09;新建一個empty project&#xff0c;命名為SSM2。 點擊項目名&#xff0c;右鍵new&#xff0c;選擇Module&#xff0c;左側選擇“Maven archetype”&#xff0c;可以給…

我叫:快速排序【JAVA】

1.自我介紹 1.快速排序是由東尼霍爾所發展的一種排序算法。 2.快速排序又是一種分而治之思想在排序算法上的典型應用。 3.本質上來看&#xff0c;快速排序應該算是在冒泡排序基礎上的遞歸分治法。 2.思想共享 快速排序(Quicksort)是對冒泡排序的一種改進。基本思想是:通過一趟…

【iOS】數據持久化(二)之歸檔和解檔(iOS 13以后)

在之前介紹的數據存儲方法中&#xff0c;不管是NSUserDefaults還是plist文件都不能對自定義對象進行存儲&#xff0c;OC提供的解歸檔恰好解決了這個問題 本片文章對 iOS13 以后的版本 歸檔和解檔 進行介紹。老版本的解歸檔見這篇文章&#xff1a;【iOS】文件&#xff08;對象數…

Python Anaconda創建虛擬環境及Pycharm使用虛擬環境

目錄 前言 一、Anaconda與Pycharm 二、conda常用命令 三、Pycharm使用虛擬環境 總結 前言 我們在做開發任務時可能會創建多個項目&#xff0c;這些項目可能會依賴于不同的Python環境。比如有的用到Python3.6、有的用到Python3.7&#xff1b;有的用Pytorch開發、有的用Tens…

解決:ImportError: cannot import name ‘Sequence‘ from ‘collections‘

解決&#xff1a;ImportError: cannot import name ‘Sequence‘ from ‘collections‘ 背景 在使用之前的代碼時&#xff0c;報錯&#xff1a; File “G:\research\code\MicroDE_py\plot_bcic_iv_4_ecog_trial.py”, line 262, in from skorch.helper import predefined_spl…