حساب المفاجأة من نماذج اللغة!
surprisal
يدعم معظم نماذج اللغة السببية ( GPT2
- والنماذج المشابهة GPTneo
) من Huggingface أو نقطة التفتيش المحلية، بالإضافة إلى نماذج GPT3
من OpenAI باستخدام واجهة برمجة التطبيقات (API) الخاصة بهم! نحن ندعم أيضًا نماذج اللغة المستندة إلى KenLM
N-gram باستخدام واجهة KenLM Python.
نماذج اللغة المقنعة (نماذج تشبه BERT
) قيد التنفيذ وسيتم دعمها في وقت لاحق (انظر رقم 9).
يحسب المقتطف أدناه المفاجآت لكل رمز مميز لقائمة الجمل
from surprisal import AutoHuggingFaceModel , KenLMModel
sentences = [
"The cat is on the mat" ,
"The cat is on the hat" ,
"The cat is on the pizza" ,
"The pizza is on the mat" ,
"I told you that the cat is on the mat" ,
"I told you the cat is on the mat" ,
]
m = AutoHuggingFaceModel . from_pretrained ( 'gpt2' )
m . to ( 'cuda' ) # optionally move your model to GPU!
k = KenLMModel ( model_path = './literature.arpa' )
for result in m . surprise ( sentences ):
print ( result )
for result in k . surprise ( sentences ):
print ( result )
وينتج مخرجات من هذا النوع ( gpt2
):
The Ġcat Ġis Ġon Ġthe Ġmat
3.276 9.222 2.463 4.145 0.961 7.237
The Ġcat Ġis Ġon Ġthe Ġhat
3.276 9.222 2.463 4.145 0.961 9.955
The Ġcat Ġis Ġon Ġthe Ġpizza
3.276 9.222 2.463 4.145 0.961 8.212
The Ġpizza Ġis Ġon Ġthe Ġmat
3.276 10.860 3.212 4.910 0.985 8.379
I Ġtold Ġyou Ġthat Ġthe Ġcat Ġis Ġon Ġthe Ġmat
3.998 6.856 0.619 2.443 2.711 7.955 2.596 4.804 1.139 6.946
I Ġtold Ġyou Ġthe Ġcat Ġis Ġon Ġthe Ġmat
3.998 6.856 0.619 4.115 7.612 3.031 4.817 1.233 7.033
يمكن تجميع كائن مفاجئ على مجموعة فرعية من الرموز المميزة التي تتطابق بشكل أفضل مع مجموعة من الكلمات أو الأحرف. يتم توريث حدود الكلمات من أداة الرمز المميزة القياسية للنموذج، وقد لا تكون متسقة عبر النماذج، لذا فإن استخدام امتدادات الأحرف عند التقطيع هو الخيار الافتراضي والموصى به. توجد المفاجآت في مساحة السجل، وبالتالي يتم إضافتها عبر الرموز المميزة أثناء التجميع. على سبيل المثال:
>> > [ s ] = m . surprise ( "The cat is on the mat" )
>> > s [ 3 : 6 , "word" ]
12.343366384506226
Ġon Ġthe Ġmat
>> > s [ 3 : 6 , "char" ]
9.222099304199219
Ġcat
>> > s [ 3 : 6 ]
9.222099304199219
Ġcat
ملحوظة: لم يعد OpenAI يُرجع احتمالات السجل في معظم نماذجه مؤخرًا. انظر رقم 15. من أجل استخدام نموذج GPT-3 من واجهة برمجة تطبيقات OpenAI، ستحتاج إلى الحصول على معرف مؤسستك ومفتاح واجهة برمجة التطبيقات الخاص بالمستخدم باستخدام حسابك. بعد ذلك، استخدم OpenAIModel
بنفس طريقة استخدام نموذج Huggingface.
m = surprisal . OpenAIModel ( model_id = 'text-davinci-002' ,
openai_api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ,
openai_org = "org-xxxxxxxxxxxxxxxxxxxxxxxx" )
يمكن أيضًا تمرير هذه القيم باستخدام متغيرات البيئة، OPENAI_API_KEY
و OPENAI_ORG
قبل استدعاء البرنامج النصي.
يمكنك أيضًا الاتصال بـ Surprisal.lineplot()
لتصور المفاجآت:
from matplotlib import pyplot as plt
f , a = None , None
for result in m . surprise ( sentences ):
f , a = result . lineplot ( f , a )
plt . show ()
تحتوي surprisal
أيضًا على الحد الأدنى من CLI:
python - m surprisal - m distilgpt2 "I went to the train station today."
I Ġwent Ġto Ġthe Ġtrain Ġstation Ġtoday .
4.984 5.729 0.812 1.723 7.317 0.497 4.600 2.528
python - m surprisal - m distilgpt2 "I went to the space station today."
I Ġwent Ġto Ġthe Ġspace Ġstation Ġtoday .
4.984 5.729 0.812 1.723 8.425 0.707 5.182 2.574
نظرًا لأن surprisal
يتم استخدامها من قبل أشخاص من مجتمعات مختلفة لأغراض مختلفة، بشكل افتراضي، يتم وضع علامة على التبعيات الأساسية المتعلقة بنمذجة اللغة اختيارية. اعتمادا على حالة الاستخدام الخاصة بك، قم بتثبيت surprisal
مع الإضافات المناسبة.
استخدم أمرًا مثل pip install surprisal[optional]
، مع استبدال [optional]
بأي دعم اختياري تحتاجه. للحصول على إضافات اختيارية متعددة، استخدم قائمة مفصولة بفواصل:
pip install surprisal[kenlm,transformers]
# the above is equivalent to
pip install surprisal[all]
تتضمن الخيارات الممكنة: transformers
، kenlm
، openai
، petals
إذا كنت تستخدم poetry
لمشروعك الحالي، فاستخدم الخيار -E
لإضافة surprisal
مع التبعيات الاختيارية المطلوبة:
poetry add surprisal -E transformers -E kenlm
# the above is equivalent to
poetry add surprisal -E all
يمكنك أيضًا تثبيت openai
petals
poetry add surprisal -E transformers -E kenlm -E openai -E petals
# the above is equivalent to
poetry add surprisal -E allplus
تسمح العلامة -e
بتثبيت قابل للتحرير، حتى تتمكن من إجراء تغييرات على surprisal
.
git clone https://github.com/aalok-sathe/surprisal.git
pip install .[transformers] -e
مستوحاة من lm-scorer
غير النشط الآن؛ شكرًا للأشخاص من CPLlab وEvLab على التعليقات والمساعدة.
رخصة معهد ماساتشوستس للتكنولوجيا. (ج) 2022-23، المساهمين.