ด้วยการครบกำหนดของเครื่องมือ Pytorch จึงถึงเวลาเก็บถาวร repos เช่นนี้ คุณจะสามารถค้นหาตัวเลือกที่พัฒนาขึ้นได้มากขึ้นสำหรับทุกส่วนของชุดเครื่องมือนี้:
มีความสุขในการพัฒนา!
อย่าลังเลที่จะติดต่อฉันหากใครต้องการเก็บ repo นี้และพัฒนาต่อไป คุณสามารถติดต่อฉันได้ที่ "Petrochukm [ที่] gmail.com"

Pytorch-NLP หรือ torchnlp สั้น ๆ เป็นห้องสมุดของยูทิลิตี้พื้นฐานสำหรับ Pytorch NLP torchnlp ขยาย Pytorch เพื่อให้คุณมีฟังก์ชั่นการประมวลผลข้อมูลข้อความพื้นฐาน
โลโก้โดย Chloe Yeo ผู้สนับสนุนองค์กรโดย 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 ] ตัวอย่างเช่นจากแพ็คเกจ Neural Network ใช้ 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}},
}