add data preproces

This commit is contained in:
sm_alavi 2025-11-06 07:18:15 +00:00
parent 66cfb0af4c
commit 738d120728
9 changed files with 1032 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
data_preprocess/data/*

View File

@ -0,0 +1,152 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "a78759c8",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/firouzi/embedding_model/.venv/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
" from .autonotebook import tqdm as notebook_tqdm\n",
"/home/firouzi/embedding_model/.venv/lib/python3.10/site-packages/datasets/load.py:1461: FutureWarning: The repository for Gholamreza/pquad contains custom code which must be executed to correctly load the dataset. You can inspect the repository content at https://hf.co/datasets/Gholamreza/pquad\n",
"You can avoid this message in future by passing the argument `trust_remote_code=True`.\n",
"Passing `trust_remote_code=True` will be mandatory to load this dataset from the next major release of `datasets`.\n",
" warnings.warn(\n",
"Downloading builder script: 4.41kB [00:00, 4.07MB/s]\n",
"Downloading readme: 5.15kB [00:00, 7.92MB/s]\n",
"Downloading data: 100%|██████████| 26.4M/26.4M [01:05<00:00, 406kB/s] \n",
"Downloading data: 100%|██████████| 3.49M/3.49M [00:00<00:00, 5.18MB/s]\n",
"Downloading data: 100%|██████████| 3.45M/3.45M [00:00<00:00, 5.38MB/s]\n",
"Generating train split: 0%| | 0/63994 [00:00<?, ? examples/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"/root/.cache/huggingface/datasets/downloads/e49d5f650d69a5999fe6ceb4438a023cccdcf3e6519abc4dabce736f91595591\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Generating train split: 100%|██████████| 63994/63994 [00:02<00:00, 21411.84 examples/s]\n",
"Generating validation split: 21%|██▏ | 1703/7976 [00:00<00:00, 16945.09 examples/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"/root/.cache/huggingface/datasets/downloads/ea42ddfa9db6f39bc3249a878c853a6f6b466f6217a360bbb8afbac9410d84cc\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Generating validation split: 100%|██████████| 7976/7976 [00:00<00:00, 23678.57 examples/s]\n",
"Generating test split: 18%|█▊ | 1434/8002 [00:00<00:00, 10262.32 examples/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"/root/.cache/huggingface/datasets/downloads/d6ba3b80ff2a6d0333454fac286694b5e777518ea141e0dcd7c0558b71624882\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Generating test split: 100%|██████████| 8002/8002 [00:00<00:00, 20511.40 examples/s]\n"
]
}
],
"source": [
"from datasets import load_dataset\n",
"\n",
"dataset = load_dataset(\"Gholamreza/pquad\")\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "c91f659a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"48273\n",
"63994\n"
]
}
],
"source": [
"all_dataset = []\n",
"for data in dataset[\"train\"]:\n",
" if len(data[\"answers\"][\"text\"]) > 0:\n",
" all_dataset.append({'question': data['question'], 'passgae_positive': [data['context']], 'passgae_negative': []})\n",
"\n",
"\n",
"print(len(all_dataset))\n",
"print(len(dataset[\"train\"]))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "d66809ce",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'question': 'در 816 مرعشی از حکمرانی چه کسی در تنکابن یاد کرده\\u200cاست؟', 'passgae_positive': ['در ۸۰۶ خواندمیر به ولایت تنکابن اشاره کرده و در ۸۱۶ مرعشی از حکمرانیِ سیدداوود کارکیای تنکابنی، فرزند سیدهادی کیا، در تنکابن یاد کرده\\u200cاست. مَلک کیومرث ــ که در ۸۳۰ به مخالفت با سادات گیلان برخاسته بود ــ در ۸۳۱ عمارت خاصة سید داوود کارکیای تنکابنی را که در اواخر تابستان هنوز در ییلاق به سر می\\u200cبرد، آتش زد و برخی اهالی را به قتل رساند. در ۸۶۵ مازندرانی از «موضع تنکابن» در «مملکت گیلان» نام برده\\u200cاست. مرعشی در ۸۸۹ به حرکت خود از کِلیشُم (از قرای ییلاقی تنکابن) به تنکابن برای تصرف «دشت تنکابن» اشاره کرده\\u200cاست.'], 'passgae_negative': []}\n"
]
}
],
"source": [
"print(all_dataset[10000])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9a566e69",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,122 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "a78759c8",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/firouzi/embedding_model/.venv/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
" from .autonotebook import tqdm as notebook_tqdm\n",
"Downloading readme: 2.68kB [00:00, 2.49MB/s]\n",
"Downloading data: 100%|██████████| 68.3k/68.3k [00:00<00:00, 160kB/s]\n",
"Generating test split: 1400 examples [00:00, 159163.68 examples/s]\n"
]
}
],
"source": [
"from datasets import load_dataset\n",
"\n",
"dataset = load_dataset(\"MCINext/LongRag-Fa\")\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "c91f659a",
"metadata": {},
"outputs": [
{
"ename": "KeyError",
"evalue": "'train'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[2], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m all_dataset \u001b[38;5;241m=\u001b[39m []\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m data \u001b[38;5;129;01min\u001b[39;00m \u001b[43mdataset\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtrain\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m:\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(data)\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n",
"File \u001b[0;32m/home/firouzi/embedding_model/.venv/lib/python3.10/site-packages/datasets/dataset_dict.py:74\u001b[0m, in \u001b[0;36mDatasetDict.__getitem__\u001b[0;34m(self, k)\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m__getitem__\u001b[39m(\u001b[38;5;28mself\u001b[39m, k) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Dataset:\n\u001b[1;32m 73\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(k, (\u001b[38;5;28mstr\u001b[39m, NamedSplit)) \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m---> 74\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__getitem__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mk\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 76\u001b[0m available_suggested_splits \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 77\u001b[0m split \u001b[38;5;28;01mfor\u001b[39;00m split \u001b[38;5;129;01min\u001b[39;00m (Split\u001b[38;5;241m.\u001b[39mTRAIN, Split\u001b[38;5;241m.\u001b[39mTEST, Split\u001b[38;5;241m.\u001b[39mVALIDATION) \u001b[38;5;28;01mif\u001b[39;00m split \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\n\u001b[1;32m 78\u001b[0m ]\n",
"\u001b[0;31mKeyError\u001b[0m: 'train'"
]
}
],
"source": [
"all_dataset = []\n",
"for data in dataset[\"train\"]:\n",
" print(data)\n",
" break\n",
" # if len(data[\"answers\"][\"text\"]) > 0:\n",
" # all_dataset.append({'question': data['question'], 'passgae_positive': [data['context']], 'passgae_negative': []})\n",
"\n",
"print(len(all_dataset))\n",
"print(len(dataset[\"train\"]))\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d66809ce",
"metadata": {},
"outputs": [],
"source": [
"print(all_dataset[10])"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "e2f94154",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'_id': 'q0', 'text': 'یک سرمایه\\u200cگذار باید برای بررسی دقیق گزارش\\u200cهای مالی سالانه یا فصلی یک شرکت، با تمرکز بر شاخص\\u200cهای اقتصادی عملکرد، چه رویکرد سیستماتیکی را دنبال کند؟\\n'}\n"
]
}
],
"source": [
"import json\n",
"\n",
"with open(\"./data/longrag/queries.jsonl\", \"r\") as f:\n",
" for data in f:\n",
" data = json.loads(data)\n",
" print(data)\n",
" break"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "efae8a38",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,182 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "f79319fa",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2107\n",
"21844\n",
"2207172\n"
]
}
],
"source": [
"dataset_miracle_topics = []\n",
"with open('/home/firouzi/embedding_model/data_preprocess/data/miracl/miracl-v1.0-fa/topics/topics.miracl-v1.0-fa-train.tsv', 'r') as f:\n",
" for line in f:\n",
" qid, topic = line.strip().split('\\t')\n",
" dataset_miracle_topics.append({'qid': qid, 'topic': topic})\n",
"\n",
"dataset_miracle_qrels = []\n",
"with open('/home/firouzi/embedding_model/data_preprocess/data/miracl/miracl-v1.0-fa/qrels/qrels.miracl-v1.0-fa-train.tsv', 'r') as f:\n",
" for line in f:\n",
" qid, _, docid, rel = line.strip().split('\\t')\n",
" dataset_miracle_qrels.append({'qid': qid, 'docid': docid, 'rel': rel})\n",
"\n",
"import json\n",
"\n",
"dataset_miracle_corpus = {}\n",
"for i in range(5):\n",
" with open(f'/home/firouzi/embedding_model/data_preprocess/data/miracl-corpus/miracl-corpus-v1.0-fa/docs-{i}.jsonl', 'r', encoding='utf-8') as f:\n",
" for line in f:\n",
" json_data = json.loads(line)\n",
" dataset_miracle_corpus[json_data['docid']] = json_data\n",
"\n",
"print(len(dataset_miracle_topics))\n",
"print(len(dataset_miracle_qrels))\n",
"print(len(dataset_miracle_corpus.keys()))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "8ce0ad2b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2107\n"
]
}
],
"source": [
"all_dataset = []\n",
"for data_topic in dataset_miracle_topics:\n",
" qid = data_topic['qid']\n",
" topic = data_topic['topic']\n",
"\n",
" passgae_positive = []\n",
" passgae_negative = []\n",
" for data_qrel in dataset_miracle_qrels:\n",
"\n",
" if qid == data_qrel['qid']:\n",
" data_corpus = dataset_miracle_corpus[data_qrel['docid']]\n",
" \n",
" if data_qrel['rel'] == '1':\n",
" passgae_positive.append({'title': data_corpus['title'].replace('\\u200c', ' '), 'text': data_corpus['text'].replace('\\u200c', ' ')})\n",
" \n",
" else:\n",
" passgae_negative.append({'title': data_corpus['title'].replace('\\u200c', ' '), 'text': data_corpus['text'].replace('\\u200c', ' ')})\n",
"\n",
" all_dataset.append({'question': topic, 'passgae_positive': passgae_positive, 'passgae_negative': passgae_negative})\n",
"\n",
"print(len(all_dataset))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "68c6b79d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'question': 'برای ازبین بردن آفات هز چه سمی استفاده می شود؟',\n",
" 'passgae_positive': [{'title': 'آلودگی خاک',\n",
" 'text': 'سموم دفع آفات ماده ای است که برای از بین بردن آفت استفاده می شود. سموم دفع آفات ممکن است یک ماده شیمیایی، عامل بیولوژیکی (مانند ویروس یا باکتری)، ضد میکروبی، ضد عفونی کننده یا وسیله ای باشد که در برابر هر نوع آفت استفاده می شود. آفات شامل حشرات، عوامل بیماری زای گیاهی، علف های هرز، نرم تنان، پرندگان، پستانداران، ماهی ها، نماتدها (کرم های گرد) و میکروب هایی است که برای غذا با انسان رقابت می کنند، اموال را از بین می برند، گسترش می یابند یا ناقل بیماری هستند یا باعث آزار می شوند. اگرچه استفاده از سموم دفع آفات فوایدی دارد، اما اشکالاتی مانند سمیت بالقوه برای انسان و موجودات دیگر نیز وجود دارد.'}],\n",
" 'passgae_negative': [{'title': 'آفت کش',\n",
" 'text': 'در قرن پانزدهم میلادی از عناصر سمی مانند آرسنیک، جیوه و سرب برای ازبین بردن آفت ها استفاده می شده است.'},\n",
" {'title': 'آتلیه عکاسی',\n",
" 'text': 'سعی کنید زاویه های غیرمعمولی مانند عکسبرداری حشرات از طرف، جلو یا پایین را پیدا کنید. اگر نمی خواهید روی زمین خزید، از صفحه نمایش تلنگر خود استفاده کنید. اگر این حشره در یک گیاه یا یک برگ قرار دارد، سعی کنید آن گیاه را به سمت آن در برابر آسمان نگه دارید این یک زاویه جالب و زمینه ای زیباتر است.'},\n",
" {'title': 'رتینیت',\n",
" 'text': 'مراجعه منظم به چشم پزشک بسیار مهم است. در حالی که مکمل های یادشده در بالا ممکن است به کاهش علائم کمک کند، خود شبکیه قابل درمان نیست. افزون بر این، از وسایلی مانند ذره بین های کم بینایی می توان برای کمک به بینایی در بیماران مبتلا به ناامیدی بینایی به دلیل رتینیت استفاده کرد. خدمات توانبخشی همچنین ممکن است به بیمار کمک کند تا بیماران از بینایی خود به نحو موثرتری استفاده کنند. در پایان، پیشنهاد می شود حتی در روزهای تاریک از عینک آفتابی استفاده کنید تا از چشم در برابر اشعه فرابنفش محافظت شود.'},\n",
" {'title': 'درم ابریژن',\n",
" 'text': 'در این روش، پزشک می کوشد با سایش فیزیکی (یا با مواد شیمیایی)، لایه های سطحی و حتی بخشی از لایه های میانیِ اپیدرم را که اغلب ناهموار و حاوی سلول های فرسوده و مرده است، بردارد تا پوست جدیدی که جوان تر و مسطح تر است جایگزین آن ها شود. معمولاً از برس یا پودرهای ساینده مانند اکسید آلومینیوم استفاده می شود. قبل از لایه برداری گاه از بی حسی موضعی استفاده می شود و پس از آن به بیمار توصیه می شود تا چند روز از مواجهه با نور خورشید اجتناب نموده و از پمادهای ترمیم کننده استفاده کند. اگر لایه برداری خیلی عمقی باشد احتمال خونریزی جزئی وجود دارد.'},\n",
" {'title': 'عکاسی از مجسمه',\n",
" 'text': 'انتخاب زاویه دید صرفاً از دیدگاه پرسپکتیو صحیح کافی نیست، بلکه برای بهتر نشان دادن مجسمه از حالت و وضع آن نیز باید یاری جست. کافی است دور مجسمه بچرخید تا ببینید برای قرار دادن دوربین چقدر نقاط زیادی وجود دارد. تصادفاً اغلب آنها نیز خوب و مناسب است. در این میان آنهایی ترجیح دارند که اصالت اثر را بر هم نزنند. بر حسب اینکه بخواهید سر تا پای مجسمه را بگیرید یا فقط نیمی از اندام آن را، تمام صورت یا جزئی از حالت صورت را، خواهید توانست تصاویر بسیار متعدد و مختلفی از یک مجسمه به دست آورید. یکی از شرایط مهم و اصلی موفقیت در عکاسی از مجسمه، نمایاندن جنس آن است، به نحوی که با یک نگاه، مرمر از سنگ و فلز از چوب تشخیص داده شود.'},\n",
" {'title': 'سالک (بیماری)',\n",
" 'text': 'هنگام خوابیدن در فضای آزاد از پشه بند استفاده شود. روی درها و پنجره های ورودی تورهای بسیار ریز نصب شود. از نگهداری دام و طیور در منازل خودداری شود. از انباشتن و ریختن خاکروبه و نخالهٔ ساختمانی زباله و کودهای حیوانی در مناطق مسکونی اجتناب شود. بهسازی محیط و ترمیم محل استراحت و رشد و تکثیر پشه (شکاف دیوارها) به طور دقیق و صحیح صورت پذیرد. از رها شدن فاضلاب ها در گذرگاه ها خودداری گردد. گردآوری و درمان سگ های ولگرد و مبارزه با جوندگان به روش صحیح. برای درمان آن فریز کردن ویاتزریق آمپول گلوکانتین توصیه می شود.'},\n",
" {'title': 'کانسیلر',\n",
" 'text': 'تصحیح رنگ شامل استفاده از کانسیلرهای با رنگ هلو، سبز و بنفش برای از بین بردن برخی از مناطق تغییر رنگ پوست می باشد. هر کدام از این رنگ ها، یک رنگ یا تیرگی خاص را برطرف می کند. وقتی می خواهید قرمزی را از بین ببرید، از رنگ سبز استفاده می شود. رنگ هلویی برای از بین بردن حلقه های تیره آبی استفاده می شود و نهایتاً بنفش، لکه های زرد را از بین می برد. هنگام استفاده از این تکنیک توجه به این نکته مهم است که این کار باید قبل از استفاده از کرم پودر و فقط به صورت لایه ای نازک استفاده شود.'},\n",
" {'title': 'آندش',\n",
" 'text': 'مرسوم ترین روش جهت آندش می باشد که ضخامتی در حدود ۰٫۰۱ تا ۰٫۰۰۱ اینچ را ایجاد می نماید. ۶۷ درصد به درون قطعه نفوذ کرده و ۳۳ درصد روی سطح رشد می نماید. این روش برای ایجاد سختی و مقاومت به سایش و خوردگی بسیار مناسب است. فیلم آندی ایجاد شده به این روش قابلیت جذب مناسبی جهت انواع رنگ را دارد که پس از انجام مناسب سیل(Seal) ثبات مطلوبی نیز خواهد داشت.قطعات اپتیکی جهت حذف انعکاس نور، بدنه شیرهای هیدرولیک، تجهیزات نظامی، قطعات کامپیوتر و الکترونیک، تجهیزات سخت افزار مکانیکی'},\n",
" {'title': 'افت حرارتی',\n",
" 'text': 'در بسیاری از آزمایشگاه های تحقیقاتی استفاده از دستکش آزبست (پنبه ای نسوز) هنگام کار کردن با کوره ضروری است زیرا می تواند به دمای بسیار بالایی برسد. همچنین استفاده از ماسک صورت در دماهای بالاتر نیز برای اطمینان از ایمنی محققان و اعضای جوان آزمایشگاه توصیه می شود. همچنین توصیه می شود محققانی که آزمایش LOI(افت حرارتی) را انجام می دهند، باید تمام ساعت و جواهرات خود را باز کنند زیرا آنها رساناهای گرمایی خوبی هستند. هنگام جداکردن نمونه ها در دماهای بالا، این لوازم جانبی به راحتی گرم می شوند و منجر به سوختگی، درون آنها می شود.'}]}"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all_dataset[151]"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "76337eb1",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Fetching 5 files: 100%|██████████| 5/5 [00:12<00:00, 2.50s/it]\n"
]
},
{
"data": {
"text/plain": [
"'/home/firouzi/embedding_model/data_preprocess/miracl-corpus'"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from huggingface_hub import snapshot_download\n",
"\n",
"snapshot_download(\n",
" repo_id=\"miracl/miracl-corpus\",\n",
" repo_type=\"dataset\", # or \"dataset\", \"space\" depending on repo\n",
" allow_patterns=[\"miracl-corpus-v1.0-fa/**\"], # only download this folder\n",
" local_dir=\"miracl-corpus\"\n",
")\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,122 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "a78759c8",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/firouzi/embedding_model/.venv/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
" from .autonotebook import tqdm as notebook_tqdm\n",
"/home/firouzi/embedding_model/.venv/lib/python3.10/site-packages/datasets/load.py:1461: FutureWarning: The repository for Shitao/MLDR contains custom code which must be executed to correctly load the dataset. You can inspect the repository content at https://hf.co/datasets/Shitao/MLDR\n",
"You can avoid this message in future by passing the argument `trust_remote_code=True`.\n",
"Passing `trust_remote_code=True` will be mandatory to load this dataset from the next major release of `datasets`.\n",
" warnings.warn(\n",
"Downloading builder script: 5.70kB [00:00, 5.21MB/s]\n",
"Downloading readme: 4.78kB [00:00, 7.81MB/s]\n",
"Downloading data: 100%|██████████| 1.26G/1.26G [02:22<00:00, 8.80MB/s] \n",
"Downloading data: 100%|██████████| 20.9M/20.9M [00:02<00:00, 7.81MB/s]\n",
"Downloading data: 100%|██████████| 82.1M/82.1M [00:07<00:00, 11.2MB/s] \n",
"Generating train split: 10000 examples [00:34, 286.48 examples/s]\n",
"Generating dev split: 200 examples [00:00, 381.83 examples/s]\n",
"Generating test split: 800 examples [00:02, 337.61 examples/s]\n"
]
}
],
"source": [
"from datasets import load_dataset\n",
"\n",
"dataset = load_dataset('Shitao/MLDR', \"en\")\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "c91f659a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"6306\n",
"9008\n"
]
}
],
"source": [
"all_dataset = []\n",
"for data in dataset[\"train\"]:\n",
" if len(data[\"answers\"][\"text\"]) > 0:\n",
" all_dataset.append({'question': data['question'], 'passgae_positive': [data['context']], 'passgae_negative': []})\n",
"\n",
"print(len(all_dataset))\n",
"print(len(dataset[\"train\"]))\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d66809ce",
"metadata": {},
"outputs": [],
"source": [
"print(all_dataset[10])"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "e2f94154",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10000"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(dataset[\"train\"])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cdded156",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,98 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "a78759c8",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/firouzi/embedding_model/.venv/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
" from .autonotebook import tqdm as notebook_tqdm\n",
"/home/firouzi/embedding_model/.venv/lib/python3.10/site-packages/datasets/load.py:1461: FutureWarning: The repository for persiannlp/parsinlu_reading_comprehension contains custom code which must be executed to correctly load the dataset. You can inspect the repository content at https://hf.co/datasets/persiannlp/parsinlu_reading_comprehension\n",
"You can avoid this message in future by passing the argument `trust_remote_code=True`.\n",
"Passing `trust_remote_code=True` will be mandatory to load this dataset from the next major release of `datasets`.\n",
" warnings.warn(\n"
]
}
],
"source": [
"from datasets import load_dataset, VerificationMode\n",
"\n",
"dataset = load_dataset(\"persiannlp/parsinlu_reading_comprehension\", verification_mode=VerificationMode.NO_CHECKS)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "c91f659a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"600\n"
]
}
],
"source": [
"all_dataset = []\n",
"for data in dataset[\"train\"]:\n",
" all_dataset.append({'question': data['question'], 'passgae_positive': [data['context']], 'passgae_negative': []})\n",
"\n",
"print(len(all_dataset))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "d66809ce",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'question': 'چرا جوجه ها عطسه میکنند؟', 'passgae_positive': ['همه ما عطسه می کنیم ، عطسه واکنشی است نسبت به احساس خارش و سوزش در سوراخ بینی که معمولا با آبریزش بینی همراه است . بیشتر پرندگان به طور نرمال در تلاش برای بیرون راندن گردها از بینی خود گاهی اوقات عطسه می کنند . اما آیا همیشه باید به عطسه پرنده یا طوطی خود توجه کنیم ؟ اگر طوطی گاهی اوقات عطسه کند و در این حین مایع شفافی از بینی او خارج شود ( کمتر از یک یا دوبار در روز)، بدون اینکه علایم دیگری از خود نشان دهد ، شاید او در حال اعمال مکانیسمی نرمال برای پاک کردن سوراخ بینی خود است . دلایل زیادی برای عطسه کردن و ترشح بینی طوطی وجود دارد.'], 'passgae_negative': []}\n"
]
}
],
"source": [
"print(all_dataset[10])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e2f94154",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,99 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "a78759c8",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/firouzi/embedding_model/.venv/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
" from .autonotebook import tqdm as notebook_tqdm\n"
]
}
],
"source": [
"from datasets import load_dataset\n",
"\n",
"dataset = load_dataset(\"SajjadAyoubi/persian_qa\")\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "c91f659a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"6306\n",
"9008\n"
]
}
],
"source": [
"all_dataset = []\n",
"for data in dataset[\"train\"]:\n",
" if len(data[\"answers\"][\"text\"]) > 0:\n",
" all_dataset.append({'question': data['question'], 'passgae_positive': [data['context']], 'passgae_negative': []})\n",
"\n",
"print(len(all_dataset))\n",
"print(len(dataset[\"train\"]))\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "d66809ce",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'question': 'اولین مکان علمی که عبارت داده شناسی را استفاده کرد کجا بود؟', 'passgae_positive': ['علوم رایانه یا علوم کامپیوتر به مجموعهٔ مطالعاتی گفته می\\u200cشود که به زیربناهای نظری، روش\\u200cهای طراحی و ساخت و چگونگی استفاده از رایانه می\\u200cپردازند.رشته علوم کامپیوتر را می\\u200cتوان به زیررشته\\u200cهای نظری و عملی بسیاری تقسیم کرد. بعضی از این زیررشته\\u200cها، نظیر نظریه پیچیدگی محاسباتی (که خواص اساسی مشکلات محاسباتی و قابل حل بودن آن\\u200cها را بررسی می\\u200cکند) بسیار انتزاعی هستند، این در حالی است که زیررشته\\u200cهای دیگر مانند گرافیک کامپیوتری به بررسی کاربردهای قابل لمس تر در دنیای واقعی تأکید دارند. اکثر زیررشته\\u200cهای علوم کامپیوتر بر چالش\\u200cهای موجود در اجرای محاسبات تمرکز دارند. اولین مؤسسهٔ علمی که عبارت داده\\u200cشناسی را بکار برد DIKU گروه داده\\u200cشناسی در دانشگاه کپنهاگ بوده\\u200cاست که توسط پیتر ناور در سال ۱۹۶۹ به عنوان اولین گروه داده\\u200cشناسی بنا گذاشته شد. عبارت زیر از دانشمند معروف علم رایانه ادسخر دیکسترا نقل قول شده\\u200cاست: \"علم رایانه به همان اندازه در مورد رایانه است که نجوم در مورد تلسکوپ.\" در بسیاری از کشورهای پیشرو در زمینهٔ علوم کامپیوتر، مثل ایالات متحده آمریکا و کشورهای اروپایی، رشتهٔ علوم کامپیوتر رشتهٔ اصلی در زمینهٔ علوم و مهندسی کامپیوتر و سیستم\\u200cهای اطلاعاتی است.'], 'passgae_negative': []}\n"
]
}
],
"source": [
"print(all_dataset[10])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e2f94154",
"metadata": {},
"outputs": [],
"source": [
"data[\"answers\"]"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,235 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "a78759c8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1000212\n",
"250666\n",
"270642\n"
]
}
],
"source": [
"import json\n",
"\n",
"dataset_synthetic_scores = []\n",
"with open('/home/firouzi/embedding_model/data_preprocess/data/synthetic-persian-qa-retrieval/train.jsonl', 'r', encoding='utf-8') as f:\n",
" for line in f:\n",
" data = json.loads(line)\n",
" dataset_synthetic_scores.append(data)\n",
"\n",
"dataset_synthetic_queries = {}\n",
"with open('/home/firouzi/embedding_model/data_preprocess/data/synthetic-persian-qa-retrieval/queries.jsonl', 'r', encoding='utf-8') as f:\n",
" for line in f:\n",
" json_data = json.loads(line)\n",
" dataset_synthetic_queries[json_data['_id']] = json_data\n",
"\n",
"dataset_synthetic_corpus = {}\n",
"with open('/home/firouzi/embedding_model/data_preprocess/data/synthetic-persian-qa-retrieval/corpus.jsonl', 'r', encoding='utf-8') as f:\n",
" for line in f:\n",
" json_data = json.loads(line)\n",
" dataset_synthetic_corpus[json_data['_id']] = json_data\n",
"\n",
"print(len(dataset_synthetic_scores))\n",
"print(len(dataset_synthetic_queries))\n",
"print(len(dataset_synthetic_corpus))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "bbb2657f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"106520\n",
"223423\n"
]
}
],
"source": [
"all_dataset = {}\n",
"count = 0\n",
"for data_topic in dataset_synthetic_scores:\n",
" try:\n",
" query_id = data_topic['query-id']\n",
" corpus_id = int(data_topic['corpus-id'])\n",
" score = data_topic['score']\n",
"\n",
" passgae_positive = []\n",
" passgae_negative = []\n",
" if score == \"1\":\n",
" passgae_positive.append({'title': dataset_synthetic_corpus[corpus_id]['title'].replace('\\u200c', ' '), 'text': dataset_synthetic_corpus[corpus_id]['text'].replace('\\u200c', ' ')})\n",
" if all_dataset.get(query_id, None):\n",
" all_dataset[query_id]['passgae_positive'].append({'title': dataset_synthetic_corpus[corpus_id]['title'].replace('\\u200c', ' '), 'text': dataset_synthetic_corpus[corpus_id]['text'].replace('\\u200c', ' ')})\n",
" else:\n",
" all_dataset[query_id] = {'question': dataset_synthetic_queries[query_id]['text'], 'passgae_positive': passgae_positive, 'passgae_negative': passgae_negative}\n",
" else:\n",
" passgae_negative.append({'title': dataset_synthetic_corpus[corpus_id]['title'].replace('\\u200c', ' '), 'text': dataset_synthetic_corpus[corpus_id]['text'].replace('\\u200c', ' ')})\n",
" if all_dataset.get(query_id, None):\n",
" all_dataset[query_id]['passgae_negative'].append({'title': dataset_synthetic_corpus[corpus_id]['title'].replace('\\u200c', ' '), 'text': dataset_synthetic_corpus[corpus_id]['text'].replace('\\u200c', ' ')})\n",
" else:\n",
" all_dataset[query_id] = {'question': dataset_synthetic_queries[query_id]['text'], 'passgae_positive': passgae_positive, 'passgae_negative': passgae_negative}\n",
" except:\n",
" count += 1\n",
"print(count)\n",
"print(len(all_dataset))"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "42166e97",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'query-id': 'train_2', 'corpus-id': '32409', 'score': '0'}"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data_topic"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "c91f659a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'query-id': 'train_0', 'corpus-id': '43272', 'score': '1'}"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataset_synthetic_scores[0]\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "d66809ce",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'_id': 'test_0',\n",
" 'text': 'چگونه نان کدو حلوایی را در فر بپزیم و چه نکاتی برای پخت بهتر وجود دارد؟'}"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataset_synthetic_queries[0]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "1cdb5b31",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'_id': 10,\n",
" 'title': '',\n",
" 'text': 'عبدالرحمن رحمانی یک سیاستمدار افغانستانی است که در دوره شانزدهم مجلس نمایندگان به عنوان نماینده مردم بلخ فعالیت می\\u200cکند. او در این مجلس عضو کمیسیون اقتصاد ملی، سازمان\\u200cهای غیر حکومتی، انکشاف دهات، زراعت و مالداری می\\u200cباشد.'}"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataset_synthetic_corpus[10]"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "e6b8c9af",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'question': 'کتاب «تأثیر فلات زدگی شغلی در سازمان» چه کسانی را هدف قرار داده است؟',\n",
" 'passgae_positive': [{'title': '',\n",
" 'text': '\"مدیران کسب و کارها\" و \"رهبران تیم ها یا سازمان\\u200cها\" مخاطبان اصلی این کتاب هستند. با مطالعه این اثر می توانند بهتر با موضوع فلات زدگی آشنا شوند، آن را در میان کارکنان خود تشخیص دهند و راه حل هایی برای بهبود عملکرد آنها ارائه کنند.'}],\n",
" 'passgae_negative': [{'title': '',\n",
" 'text': 'این کتاب به موضوع مدیریت و رهبری اختصاص دارد که توسط پیتر اف. دراکر و جوزف اِی. ماچیاری\\u200cالو نوشته شده است. تمرکز اصلی این کتاب بر مفهوم «انجام دادن کار درست» یا اثربخشی، در مقابل صرفاً انجام صحیح امور (کارایی) است. نویسندگان تأکید می کنند که سازمان ها باید فراتر از صرفاً کارآمد بودن حرکت کرده و اطمینان حاصل کنند که ارزش واقعی برای مشتریان نهایی خلق می شود.'},\n",
" {'title': '',\n",
" 'text': 'اگر در سازمان یا کسب و کاری فعالیت می کنید که از چنین اصطلاحاتی استفاده می کند، این کتاب به شما کمک خواهد کرد تا ماهیت آنها را شناخته و از تاثیر منفی شان بر دوری جویید. همچنین با خواندن این کتاب متوجه خواهید شد که چگونه می توان گفتمان سازمانی را تغییر داده و سازمان خود را نجات داد.'},\n",
" {'title': '',\n",
" 'text': 'این کتاب به علاقه\\u200cمندان مدیریت و افرادی که در حوزه\\u200cهای مرتبط با منابع انسانی و بهبود محیط کار فعالیت می\\u200cکنند، پیشنهاد می\\u200cشود. مطالعه این کتاب می\\u200cتواند به مدیران و کارکنان کمک کند تا با شناخت بهتر استرس شغلی و راهکارهای مدیریت آن، به بهبود کیفیت کار و افزایش رضایت شغلی در محیط\\u200cهای کاری بپردازند.'}]}"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(all_dataset.values())[14500]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "74ef02a1",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

21
notes.txt Normal file
View File

@ -0,0 +1,21 @@
** DATASET
1-passage score does not have to be 0,1. it can be a range from 0 to 1 (0,0.25,0.5,0.75,1) : we can get this core by llm and apply it in loss calculation.
2-dataset needs preprocesing of removing negetive or positive passage by llm.
3-miracle dataset: question = 2107 - passages = 21844 : some negetive passage can be related
4-cross ligual dataset can be useful : query = first language - passage = second language
5-swim-ir dataset : they have passage and they have created query from it : it is shit for persian
6-parsinlu dataset: question = 600 - passage = 600 : all are positive
7-persianqa dataset: question = 6306 - passage = less than queries : every passage has multiple queries : all are positive - be careful some query is impossible to anser
8-pquad dataset :question = 48273 - passage = 10082 : every passage has multiple queries : be careful some query is impossible to anser : all are positive
9-longragfa dataset: it is long doc and query and for evaluation : question = 250, passage = 1500 : not using
10-Synthetic-persian-qa-retrieval dataset : question = 223423, passage = 250000 : negetaive passage are not exactly different : needs preprocessing