نظام الإجابة على سؤال الإجابة على مجال الإجابة على نطاق المجال. بنيت على الجزء العلوي من مكتبة Huggingface Transformers.
⛔ [لم يتم الحفاظ عليها] لم يعد هذا المستودع يتم الحفاظ عليه ، ولكن يتم الاحتفاظ به لأغراض تعليمية. إذا كنت تريد بديلًا محفوظًا لـ CDQA ، تحقق من: https://github.com/deepset-ai/haystack
إذا كنت مهتمًا بفهم كيفية عمل النظام وتنفيذه ، فقد كتبنا مقالًا عن متوسطة مع تفسير رفيع المستوى.
قدمنا أيضًا عرضًا تقديميًا خلال وجبة الإفطار رقم 9 NLP التي تنظمها Feedly. يمكنك التحقق من ذلك هنا.
pip install cdqagit clone https://github.com/cdqa-suite/cdQA.git
cd cdQA
pip install -e .تم إجراء تجارب مع:
t2.medium Deep Learning AMI (Ubuntu) الإصدار 22.0p3.2xlarge التعلم العميق AMI (Ubuntu) الإصدار 22.0 + A Tesla V100 16GB. لاستخدام cdQA ، تحتاج إلى إنشاء جهاز بيانات Pandas مع الأعمدة التالية:
| عنوان | الفقرات |
|---|---|
| عنوان المقال | [الفقرة 1 من المقالة ، ... ، الفقرة N من المقالة] |
الهدف من محولات cdqa هو تسهيل إنشاء DataFrame هذا من قاعدة بيانات المستندات RAW الخاصة بك. على سبيل المثال ، يمكن لـ pdf_converter إنشاء ملف بيانات cdqa من دليل يحتوي على ملفات .pdf :
from cdqa . utils . converters import pdf_converter
df = pdf_converter ( directory_path = 'path_to_pdf_folder' )ستحتاج إلى تثبيت Java OpenJdk لاستخدام هذا المحول. لدينا حاليًا محولات لـ:
نخطط لتحسين وإضافة المزيد من المحولات في المستقبل. ابقوا متابعين!
يمكنك تنزيل النماذج والبيانات يدويًا من إصدارات GitHub أو استخدام وظائف التنزيل الخاصة بنا:
from cdqa . utils . download import download_squad , download_model , download_bnpp_data
directory = 'path-to-directory'
# Downloading data
download_squad ( dir = directory )
download_bnpp_data ( dir = directory )
# Downloading pre-trained BERT fine-tuned on SQuAD 1.1
download_model ( 'bert-squad_1.1' , dir = directory )
# Downloading pre-trained DistilBERT fine-tuned on SQuAD 1.1
download_model ( 'distilbert-squad_1.1' , dir = directory )قم بتناسب خط الأنابيب على جسمك باستخدام القارئ الذي تم تدريبه مسبقًا:
import pandas as pd
from ast import literal_eval
from cdqa . pipeline import QAPipeline
df = pd . read_csv ( 'your-custom-corpus-here.csv' , converters = { 'paragraphs' : literal_eval })
cdqa_pipeline = QAPipeline ( reader = 'bert_qa.joblib' ) # use 'distilbert_qa.joblib' for DistilBERT instead of BERT
cdqa_pipeline . fit_retriever ( df = df )إذا كنت ترغب في ضبط القارئ على مجموعة البيانات المشروح التي تشبه الفرق المخصصة:
cdqa_pipeline = QAPipeline ( reader = 'bert_qa.joblib' ) # use 'distilbert_qa.joblib' for DistilBERT instead of BERT
cdqa_pipeline . fit_reader ( 'path-to-custom-squad-like-dataset.json' )احفظ نموذج القارئ بعد الضبط الدقيق:
cdqa_pipeline . dump_reader ( 'path-to-save-bert-reader.joblib' )للحصول على أفضل تنبؤ مع استعلام الإدخال:
cdqa_pipeline . predict ( query = 'your question' )للحصول على أفضل التنبؤات:
cdqa_pipeline . predict ( query = 'your question' , n_predictions = N )هناك أيضًا إمكانية لتغيير وزن درجة المسترد مقابل درجة القارئ في حساب درجة الترتيب النهائي (الافتراضي هو 0.35 ، والذي يظهر أنه أفضل وزن في مجموعة تطوير المجموعة 1.1-فتح)
cdqa_pipeline . predict ( query = 'your question' , retriever_score_weight = 0.35 )لتقييم النماذج على مجموعة البيانات المخصصة ، ستحتاج إلى التعليق عليها. يمكن أن تتم عملية التعليق في 3 خطوات:
قم بتحويل DataFrame الخاص بك إلى ملف JSON بتنسيق فرقة:
from cdqa . utils . converters import df2squad
json_data = df2squad ( df = df , squad_version = 'v1.1' , output_dir = '.' , filename = 'dataset-name' )استخدم ملحقًا لإضافة أزواج أسئلة الإجابة عن الحقيقة:
يرجى الرجوع إلى cdQA-annotator ، وهو مذيع قائم على الويب لمجموعات بيانات الإجابة على أسئلة المغلقة المغلقة مع تنسيق فرقة.
تقييم كائن خط الأنابيب:
from cdqa . utils . evaluation import evaluate_pipeline
evaluate_pipeline ( cdqa_pipeline , 'path-to-annotated-dataset.json' )تقييم القارئ:
from cdqa . utils . evaluation import evaluate_reader
evaluate_reader ( cdqa_pipeline , 'path-to-annotated-dataset.json' )قمنا بإعداد بعض أمثلة الكمبيوتر المحمول بموجب دليل الأمثلة.
يمكنك أيضًا اللعب مباشرة مع أمثلة دفتر الملاحظات هذه باستخدام Binder أو Google Colaboratory:
| دفتر | الأجهزة | منصة |
|---|---|---|
| [1] الخطوات الأولى مع CDQA | وحدة المعالجة المركزية أو وحدة معالجة الرسومات | |
| [2] باستخدام محول PDF | وحدة المعالجة المركزية أو وحدة معالجة الرسومات | |
| [3] تدريب القارئ على الفريق | GPU |
يوفر Binder و Google Colaboratory بيئات مؤقتة وقد يكون بطيئًا في البدء ولكننا نوصي بهما إذا كنت ترغب في البدء في cdQA بسهولة.
يمكنك نشر واجهة برمجة تطبيقات REST cdQA عن طريق التنفيذ:
export dataset_path=path-to-dataset.csv
export reader_path=path-to-reader-model
FLASK_APP=api.py flask run -h 0.0.0.0يمكنك الآن تقديم طلبات لاختبار واجهة برمجة التطبيقات (هنا باستخدام httpie):
http localhost:5000/api query== ' your question here ' إذا كنت ترغب في تقديم واجهة مستخدم أعلى نظام cdQA الخاص بك ، فاتبع تعليمات CDQA-UI ، وهي واجهة ويب تم تطويرها لـ cdQA .
اقرأ إرشاداتنا المساهمة.
| يكتب | عنوان | مؤلف | سنة |
|---|---|---|---|
| ؟ فيديو | Stanford CS224N: NLP مع محاضرة التعلم العميق 10 - إجابة سؤال | كريستوفر مانينغ | 2019 |
| ؟ ورق | قراءة ويكيبيديا للإجابة على أسئلة المجال المفتوح | دانكي تشن ، آدم فيش ، جيسون ويستون ، أنطوان بوردز | 2017 |
| ؟ ورق | فهم القراءة العصبية وما بعده | دانكي تشن | 2018 |
| ؟ ورق | بيرت: ما قبل التدريب من محولات ثنائية الاتجاه العميقة لفهم اللغة | يعقوب ديفلين ، مينغ واي تشانغ ، كنتون لي ، كريستينا توتانوفا | 2018 |
| ؟ ورق | تمثيلات الكلمات السياقية: مقدمة سياقية | نوح أ. سميث | 2019 |
| ؟ ورق | أسئلة في المجال المفتوح من طرف إلى طرف الإجابة على بيرتسيريني | Wei Yang ، Yuqing Xie ، Aileen Lin ، Xingyu Li ، Luchen Tan ، Kun Xiong ، Ming Li ، Jimmy Lin | 2019 |
| ؟ ورق | زيادة البيانات لضرب Bert في الإجابة على أسئلة في المجال المفتوح | Wei Yang ، Yuqing Xie ، Luchen Tan ، Kun Xiong ، Ming Li ، Jimmy Lin | 2019 |
| ؟ ورق | مرور إعادة التصنيف مع بيرت | رودريغو نوجيرا ، كيونغايون تشو | 2019 |
| ؟ ورق | MRQA: قراءة الجهاز للإجابة على الأسئلة | جوناثان بيرانت ، بيرسي ليانغ ، لوك Zettlemoyer | 2019 |
| ؟ ورق | أسئلة غير خاضعة للإجابة على ترجمة cloze | باتريك لويس ، لودوفيتش دينيير ، سيباستيان ريدل | 2019 |
| نطاق | Scikit-Learn: التعلم الآلي في Python | Pedregosa et al. | 2011 |
| نطاق | Pytorch | آدم باسزكي ، سام جروس ، سوميث تشينتالا ، غريغوري تشانان | 2016 |
| نطاق | المحولات: معالجة اللغة الطبيعية الحديثة لـ TensorFlow 2.0 و Pytorch. | الوجه المعانقة | 2018 |
Apache-2.0