مع النضج في Pytorch Toolchain ، فقد حان الوقت لأرشفة مثل هذه الإعادة. ستتمكن من العثور على خيارات أكثر تطوراً لكل جزء من مجموعة الأدوات هذه:
سعيد النمو!
لا تتردد في الاتصال بي إذا كان أي شخص يريد أن يرفض هذا الريبو ومواصلة تطويره. يمكنك الوصول إلي في "Petrochukm [at] gmail.com".

Pytorch-NLP ، أو torchnlp لفترة قصيرة ، هي مكتبة من المرافق الأساسية لـ Pytorch NLP. يمتد torchnlp Pytorch لتزويدك بوظائف معالجة بيانات النص الأساسية.
شعار من قبل كلو ييو ، رعاية الشركات من قبل Wellsaid Labs
تأكد من أن لديك Python 3.6+ و Pytorch 1.0+. يمكنك بعد ذلك تثبيت pytorch-nlp باستخدام PIP:
pip install pytorch - nlpأو لتثبيت أحدث رمز عبر:
pip install git + https : // github . com / PetrochukM / PyTorch - NLP . git تتوفر الوثائق الكاملة لـ Pytorch-NLP عبر موقع ReadTheDocs الخاص بنا.
ضمن خط أنابيب بيانات NLP ، ستحتاج إلى تنفيذ هذه الخطوات الأساسية:
قم بتحميل مجموعة بيانات IMDB ، على سبيل المثال:
from torchnlp . datasets import imdb_dataset
# Load the imdb training dataset
train = imdb_dataset ( train = True )
train [ 0 ] # RETURNS: {'text': 'For a movie that gets..', 'sentiment': 'pos'}قم بتحميل مجموعة بيانات مخصصة ، على سبيل المثال:
from pathlib import Path
from torchnlp . download import download_file_maybe_extract
directory_path = Path ( 'data/' )
train_file_path = Path ( 'trees/train.txt' )
download_file_maybe_extract (
url = 'http://nlp.stanford.edu/sentiment/trainDevTestTrees_PTB.zip' ,
directory = directory_path ,
check_files = [ train_file_path ])
open ( directory_path / train_file_path )لا تقلق سنتعامل مع التخزين المؤقت لك!
رمز وترميز النص الخاص بك كموتر.
على سبيل المثال ، يقوم أحد WhitespaceEncoder بتقسيم النص إلى رمز كلما واجهت شخصية مسافة بيضاء.
from torchnlp . encoders . text import WhitespaceEncoder
loaded_data = [ "now this ain't funny" , "so don't you dare laugh" ]
encoder = WhitespaceEncoder ( loaded_data )
encoded_data = [ encoder . encode ( example ) for example in loaded_data ]من خلال بياناتك المحملة والتشفير في متناول اليد ، ستحتاج إلى دفع مجموعة البيانات الخاصة بك.
import torch
from torchnlp . samplers import BucketBatchSampler
from torchnlp . utils import collate_tensors
from torchnlp . encoders . text import stack_and_pad_tensors
encoded_data = [ torch . randn ( 2 ), torch . randn ( 3 ), torch . randn ( 4 ), torch . randn ( 5 )]
train_sampler = torch . utils . data . sampler . SequentialSampler ( encoded_data )
train_batch_sampler = BucketBatchSampler (
train_sampler , batch_size = 2 , drop_last = False , sort_key = lambda i : encoded_data [ i ]. shape [ 0 ])
batches = [[ encoded_data [ i ] for i in batch ] for batch in train_batch_sampler ]
batches = [ collate_tensors ( batch , stack_tensors = stack_and_pad_tensors ) for batch in batches ] يبني Pytorch-NLP أعلى torch.utils.data.sampler و torch.stack و default_collate لدعم المدخلات المتسلسلة بأطوال مختلفة!
مع دفعتك في متناول اليد ، يمكنك استخدام Pytorch لتطوير وتدريب النموذج الخاص بك باستخدام نزول التدرج. على سبيل المثال ، تحقق من رمز هذا المثال للتدريب على مجموعة ستانفورد للاستدلال الطبيعي (SNLI).
لدى Pytorch-NLP حزم أدوات مركزة على NLP لدعمك! ؟
الآن يمكنك إعداد خط الأنابيب الخاص بك ، قد ترغب في التأكد من أن بعض الوظائف تعمل بشكل محدد. لف أي رمز عشوائي ، مع fork_rng وستكون على ما يرام ، مثل ذلك:
import random
import numpy
import torch
from torchnlp . random import fork_rng
with fork_rng ( seed = 123 ): # Ensure determinism
print ( 'Random:' , random . randint ( 1 , 2 ** 31 ))
print ( 'Numpy:' , numpy . random . randint ( 1 , 2 ** 31 ))
print ( 'Torch:' , int ( torch . randint ( 1 , 2 ** 31 , ( 1 ,))))هذا سوف يطبع دائمًا:
Random: 224899943
Numpy: 843828735
Torch: 843828736
الآن بعد أن قمت بحساب المفردات الخاصة بك ، قد ترغب في الاستفادة من ناقلات الكلمات المدربة مسبقًا لتعيين تضميناتك ، مثل ذلك:
import torch
from torchnlp . encoders . text import WhitespaceEncoder
from torchnlp . word_to_vector import GloVe
encoder = WhitespaceEncoder ([ "now this ain't funny" , "so don't you dare laugh" ])
vocab_set = set ( encoder . vocab )
pretrained_embedding = GloVe ( name = '6B' , dim = 100 , is_include = lambda w : w in vocab_set )
embedding_weights = torch . Tensor ( encoder . vocab_size , pretrained_embedding . dim )
for i , token in enumerate ( encoder . vocab ):
embedding_weights [ i ] = pretrained_embedding [ token ] على سبيل المثال ، من حزمة الشبكة العصبية ، قم بتطبيق أحدث طراز LockedDropout :
import torch
from torchnlp . nn import LockedDropout
input_ = torch . randn ( 6 , 3 , 10 )
dropout = LockedDropout ( 0.5 )
# Apply a LockedDropout to `input_`
dropout ( input_ ) # RETURNS: torch.FloatTensor (6x3x10)حساب مقاييس NLP المشتركة مثل درجة Bleu.
from torchnlp . metrics import get_moses_multi_bleu
hypotheses = [ "The brown fox jumps over the dog 笑" ]
references = [ "The quick brown fox jumps over the lazy dog 笑" ]
# Compute BLEU score with the official BLEU perl script
get_moses_multi_bleu ( hypotheses , references , lowercase = True ) # RETURNS: 47.9 ربما قد يساعدك النظر في أمثلة أطول في examples/ .
هل تحتاج إلى مزيد من المساعدة؟ يسعدنا الإجابة على أسئلتك عبر دردشة Gitter
لقد أصدرنا Pytorch-NLP لأننا وجدنا نقصًا في مجموعات أدوات أساسية لـ NLP في Pytorch. نأمل أن تتمكن المنظمات الأخرى من الاستفادة من المشروع. نحن ممتنون لأي مساهمات من المجتمع.
اقرأ دليلنا المساهمين للتعرف على عملية التطوير الخاصة بنا ، وكيفية اقتراح عمليات الإعدادات والتحسينات ، وكيفية إنشاء التغييرات الخاصة بك واختبارها على Pytorch-NLP.
يختلف Torchtext و Pytorch-NLP في الهندسة المعمارية ومجموعة الميزات ؛ خلاف ذلك ، فهي متشابهة. يوفر Torchtext و Pytorch-NLP ناقلات الكلمات المدربة مسبقًا ومجموعات البيانات والتكرار وعمليات الترميز النصية. يوفر Pytorch-NLP أيضًا وحدات ومقاييس الشبكة العصبية. من وجهة نظر الهندسة المعمارية ، يكون Torchtext موجهًا موجهًا مع اقتران خارجي بينما يكون Pytorch-NLP موجهًا مع اقتران منخفض.
تم تصميم Allennlp ليكون منصة للبحث. تم تصميم Pytorch-NLP ليكون مجموعة أدوات خفيفة الوزن.
إذا وجدت Pytorch-NLP مفيدًا في منشور أكاديمي ، فيرجى استخدام bibtex التالي للاستشهاد به:
@misc{pytorch-nlp,
author = {Petrochuk, Michael},
title = {PyTorch-NLP: Rapid Prototyping with PyTorch Natural Language Processing (NLP) Tools},
year = {2018},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/PetrochukM/PyTorch-NLP}},
}