আমরা কী ওয়ার্ড টুভেক মডেলদের প্রশিক্ষণ দেওয়ার সময় ট্রান্সফার শেখার সুবিধাটি নিতে পারি?


13

আমি গুগল নিউজ ডেটা ইত্যাদির মতো ইতিমধ্যে প্রশিক্ষিত মডেলগুলির প্রাক-প্রশিক্ষিত ওজনগুলি সন্ধান করতে চাই I সুতরাং, আমি স্থানান্তর শেখার থেকে সুবিধা নিতে চাই যাতে আমি প্রাক-প্রশিক্ষিত স্তর ওজন পেতে এবং আমার ডোমেনের নির্দিষ্ট শব্দগুলিতে সেই ওজনগুলি পুনরায় প্রশিক্ষণ করতে সক্ষম হতে পারি। সুতরাং, অবশ্যই প্রশিক্ষণে তুলনামূলকভাবে কম সময় লাগবে। যে কোনও ধরনের সহায়তা অত্যন্ত প্রশংসা করা হবে। আগাম ধন্যবাদ :)

উত্তর:


10

হ্যাঁ, আপনি প্রাক প্রশিক্ষিত মডেলগুলির সুবিধা নিতে পারেন। গুগল নিউজডাটা প্রশিক্ষিত মডেল হিসাবে সর্বাধিক বিখ্যাত একজন আপনি এখানে খুঁজে পেতে পারেন।

প্রাক-প্রশিক্ষিত শব্দ এবং বাক্যাংশের ভেক্টর https://drive.google.com/file/d/0B7XkCwpI5KDYNlNUTTlSS21pQmM/edit?usp=sharing

তারপরে আপনি নীচের মতন জেনসিম ব্যবহার করে আপনার মডেলটিতে বাইনারি ফর্ম্যাটে ভেক্টরগুলি লোড করতে পারেন।

>>> model = Word2Vec.load_word2vec_format('/tmp/vectors.txt', binary=False)  # C text format
>>> model = Word2Vec.load_word2vec_format('/tmp/vectors.bin', binary=True)  # C binary format

এখানে ইংরাজী উইকিপিডিয়াটির জন্য একটি আলাদা প্রাক-বিল্ট মডেল রয়েছে:

https://github.com/idio/wiki2vec/raw/master/torrents/enwiki-gensim-word2vec-1000-nostem-10cbow.torrent

সূত্র: https://github.com/idio/wiki2vec/

একটি প্রাক বিল্ট মডেল ব্যবহার করে

Get python 2.7
Install gensim: pip install gensim
uncompress downloaded model: tar -xvf model.tar.gz
Load model in gensim:
from gensim.models import Word2Vec
model = Word2Vec.load("path/to/word2vec/en.model")
model.similarity('woman', 'man')

আপনি স্ট্যানফোর্ড এনএলপি গ্লোভও ব্যবহার করতে পারেন

এখানে প্রাক-প্রশিক্ষিত ওয়ার্ড টু ওয়েভ মডেলগুলির একটি দুর্দান্ত সংকলন রয়েছে।

কিছু অতিরিক্ত প্রাক প্রশিক্ষিত মডেল:

জিন্সিম এবং কোড সম্পর্কে এখানে আরও: https://radimrehurek.com/gensim/models/word2vec.html

একই প্রশ্নের সাথে কোরা ফোরাম


2
ঠিক আছে, এটি ভাল কাজের তথ্য ভাল কাজ। তবে, নতুন মডেলটি আরম্ভ করার জন্য আমি কি পূর্ব প্রশিক্ষিত মডেল লেয়ার ওজন ব্যবহার করতে পারি এবং তারপরে আমার বাক্যগুলিতে সেই মডেলটিকে আরও টিউন করতে পারি?
নামলুকস

@ নমি হ্যাঁ [জিন্সিম ডকুমেন্টেশন] থেকে ( রেডিম্রেহুরেক.জেনসিম / মডেলস / ওয়ার্ডপ্রেস 2 টিএমএইচটিএমএল ) একবার আপনি মডেলটি লোড করুন,model = Word2Vec.load(fname) # you can continue training with the loaded model!
গুরু

1
উপরের ডকুমেন্টেশন লিঙ্কটিতে উল্লেখ করা হয়েছে: "দ্রষ্টব্য: সি ফর্ম্যাট থেকে লোড করা ভেক্টরদের প্রশিক্ষণ দেওয়া চালিয়ে যাওয়া অসম্ভব কারণ লুকানো ওজন, শব্দভাণ্ডারের ফ্রিকোয়েন্সি এবং বাইনারি ট্রি অনুপস্থিত।"
trailblazer

3

একটি বৃহত কর্পাস প্রশিক্ষণের উপর ভিত্তি করে বিতরণ উপস্থাপনা (গ্লোভ) সরাসরি স্ট্যানফোর্ড এনএলপি গ্রুপ থেকে পাওয়া যায়। আপনি সরাসরি আপনার অ্যাপ্লিকেশনটিতে এই শব্দটি এম্বেডিংগুলি ব্যবহার করতে পারেন (1 টি হট এনকোডেড ভেক্টর ব্যবহার না করে এবং তারপরে এম্বেডিংগুলি পেতে নেটওয়ার্কটিকে প্রশিক্ষণ দিন)। আপনার কাজটি যদি এম্বেডিংয়ের এই সেটটি দিয়ে শুরু করে খুব বেশি বিশেষায়িত না হয় তবে অনুশীলনে ভালভাবে কাজ করবে।

m×VVm


তবে, আমি আমার নতুন ওয়ার্ড টু ওয়েভ মডেলটি প্রাক প্রশিক্ষিত মডেল ওজন দিয়ে শুরু করতে চাই। নতুন মডেলটি আরম্ভ করার জন্য ইতিমধ্যে প্রাক প্রশিক্ষিত মডেল স্তর ওজন ব্যবহার করা কি সম্ভব? আরম্ভের পরে আমি সেই মডেলটিকে নতুন বাক্য দিয়ে প্রশিক্ষণ দিতে চাই। এটা কি সম্ভব?
নামলুকস

হ্যা, তুমি পারো. তবে আমি মনে করি না যে ওজন ম্যাট্রিক্স প্রকাশ্যে পাওয়া যায়
wabbit

হ্যাঁ, ঠিক ...? আমরা যদি কোনও মডেলকে নিজেরাই প্রশিক্ষিত করি এবং জেনসিম লাইব্রেরি ব্যবহার করে প্রশিক্ষিত মডেল ওজনগুলি অ্যাক্সেসের চেষ্টা করি। এটি কি সম্ভব
নামিলুকস

জেনসিম সম্পর্কে নিশ্চিত নন তবে কারণ এটি বেশিরভাগ সফ্টওয়্যারকে অনুকূলিতকরণের জন্য একটি প্যারামিটারের অনুমতি দেওয়া উচিত
wabbit

@ হৃষীকেশগানু এই লিঙ্কটি কি এখনও কাজ করছে? github.com/idio/wiki2vec/raw/master/torrents/... উত্স: github.com/idio/wiki2vec
Anish

1

এই কাগজটি দেখুন [পিডিএফ] । মূল ফোকাসটি এনইআর টাস্ক সম্পর্কে তবে ধারণাটি একই - প্রাক-প্রশিক্ষিত ওয়ার্ড টুভেেক্টর ভেক্টর নিন এবং একটি নির্দিষ্ট অ্যাপ্লিকেশনের জন্য সেগুলি মানিয়ে নিন।

এনএলপির জন্য অনেকগুলি সাধারণ নিউরাল নেটওয়ার্ক ভিত্তিক অ্যাপ্লিকেশন প্রায়শই প্রাক প্রশিক্ষিত ভেক্টরগুলির সাথে শুরু হয়। উদাহরণস্বরূপ খুব সাম্প্রতিক একটি কাগজ [পিডিএফ] (NER এবং POS ট্যাগিংয়ের কাজগুলি) কেবল এটি করে।


-1
from gensim.models import Word2Vec 
# Word2Vec is full model which is trainable but takes larger memory

from gensim.models import KeyedVectors  
# KeyedVectors is reduced vector model which is NOT trainable but takes less memory

model = KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True) #load pretrained google w2v 

sen1 = 'w1 w2 w3'    
sen2 = 'word1 word2 word3'    
sentences = [[word for word in sen1.split()],[word for word in sen2.split()]]    
total_examples = model_2.corpus_count    

model_2 = Word2Vec(size=300, min_count=1) #initiate a full model    
model_2.build_vocab(sentences) #add words in training dataset

#load words from pretrained google dataset    
model_2.build_vocab([list(model.vocab.keys())], update=True)    
model_2.intersect_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True, lockf=1.0)

#retrain pretrained w2v from new dataset    
model_2.train(sentences, total_examples=total_examples, epochs=model_2.iter)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.