প্রাক-প্রশিক্ষিত মডেল ওজন সহ একটি নতুন ওয়ার্ড টুভেল মডেলকে কীভাবে সূচনা করবেন?


14

ওয়ার্ড টু ওয়েક્ટર মডেলটি ব্যবহার এবং প্রশিক্ষণের জন্য আমি পাইথনে জেনসিম লাইব্রেরিটি ব্যবহার করছি। সম্প্রতি, আমি কিছু প্রাক প্রশিক্ষিত ওয়ার্ড টু ওয়েভ মডেল (গুগল নিউডাটাসেট প্রিটেইনড মডেল) দিয়ে আমার মডেল ওজন সূচনা করার দিকে তাকিয়ে ছিলাম। আমি কয়েক সপ্তাহ ধরে এটির সাথে লড়াই করে যাচ্ছি। এখন, আমি সবেমাত্র অনুসন্ধান করেছি যে gesim এ এমন একটি ফাংশন রয়েছে যা আমাকে প্রাক-প্রশিক্ষিত মডেল ওজনের সাহায্যে আমার মডেলের ওজন সূচনা করতে সহায়তা করতে পারে। এটি নীচে উল্লেখ করা হয়েছে:

reset_from(other_model)

    Borrow shareable pre-built structures (like vocab) from the other_model. Useful if testing multiple models in parallel on the same corpus.

আমি জানি না যে এই ফাংশনটি একই জিনিস করতে পারে বা করতে পারে। সাহায্য করুন!!!


মডেলগুলির ভোকাবুলারি কি একই?
হিমা বর্ষ

প্রতিটি রানের জন্য এলোমেলোভাবে উত্পন্ন সংখ্যার সাথে প্রতিটি ওয়ার্ড ওয়েভ প্যারামিটার কেন শুরু করবেন না? আমি এটি করতে পেরেছিলাম এবং প্রতিটি প্যারামিটারের জন্য এলোমেলো সংখ্যার সতর্কতার সাথে নির্বাচন করতে পেরেছি (নাম্বার ফিচারস, কনটেক্সট উইন্ডো, বীজ) আমি আমার ইউজকেসটির জন্য যা চেয়েছিলাম তা এলোমেলোভাবে মিল খুঁজে পেতে সক্ষম হয়েছি। একটি নকশা করা নকশা নকশা। অন্যেরা এ সম্পর্কে কী ভাবেন? প্লিজ উত্তর দেয়।
21:24

আপনার সাহায্যের জন্য ধন্যবাদ. এটি আমাকে অনেক সহায়তা করে
ফ্রিহেম

উত্তর:


18

অভিষেককে ধন্যবাদ। আমি এটা খুঁজে বের করেছি! এখানে আমার পরীক্ষা নিরীক্ষা।

1)। আমরা একটি সহজ উদাহরণ প্লট:

from gensim.models import Word2Vec
from sklearn.decomposition import PCA
from matplotlib import pyplot
# define training data
sentences = [['this', 'is', 'the', 'first', 'sentence', 'for', 'word2vec'],
            ['this', 'is', 'the', 'second', 'sentence'],
            ['yet', 'another', 'sentence'],
            ['one', 'more', 'sentence'],
            ['and', 'the', 'final', 'sentence']]
# train model
model_1 = Word2Vec(sentences, size=300, min_count=1)

# fit a 2d PCA model to the vectors
X = model_1[model_1.wv.vocab]
pca = PCA(n_components=2)
result = pca.fit_transform(X)
# create a scatter plot of the projection
pyplot.scatter(result[:, 0], result[:, 1])
words = list(model_1.wv.vocab)
for i, word in enumerate(words):
    pyplot.annotate(word, xy=(result[i, 0], result[i, 1]))
pyplot.show()

এখানে চিত্র বর্ণনা লিখুন

উপরের প্লটগুলি থেকে আমরা দেখতে পাচ্ছি যে সহজ বাক্যগুলি বিভিন্ন শব্দের অর্থ দূরত্ব দ্বারা পৃথক করতে পারে না।

2)। পূর্ব প্রশিক্ষিত শব্দ এম্বেডিং লোড করুন:

from gensim.models import KeyedVectors

model_2 = Word2Vec(size=300, min_count=1)
model_2.build_vocab(sentences)
total_examples = model_2.corpus_count
model = KeyedVectors.load_word2vec_format("glove.6B.300d.txt", binary=False)
model_2.build_vocab([list(model.vocab.keys())], update=True)
model_2.intersect_word2vec_format("glove.6B.300d.txt", binary=False, lockf=1.0)
model_2.train(sentences, total_examples=total_examples, epochs=model_2.iter)

# fit a 2d PCA model to the vectors
X = model_2[model_1.wv.vocab]
pca = PCA(n_components=2)
result = pca.fit_transform(X)
# create a scatter plot of the projection
pyplot.scatter(result[:, 0], result[:, 1])
words = list(model_1.wv.vocab)
for i, word in enumerate(words):
    pyplot.annotate(word, xy=(result[i, 0], result[i, 1]))
pyplot.show()

এখানে চিত্র বর্ণনা লিখুন

উপরের চিত্র থেকে আমরা দেখতে পাচ্ছি যে শব্দ এম্বেডিংগুলি আরও অর্থবহ।
আশা করি এই উত্তরটি সহায়ক হবে।


1
এই উত্তরটি বেশ তথ্যমূলক এবং ভিসি ফাইলে মডেল এম্বেড করতে সহায়ক।
আকাশ কান্দপাল


পরিষ্কার পরিচ্ছন্ন সাথী !!!
বিজয় অ্যাথিথ্যা

আমি যখন এটি ব্যবহার করার চেষ্টা করেছি, তখন আমি দুটি অভিন্ন ডেটাসেট দিয়ে এটি পরীক্ষা করে দেখেছি। প্রতিটি মডেলের ফলাফল আলাদা ছিল। আমি আশা করছিলাম যেহেতু আমি একই আরম্ভীকৃত ওজন দিয়ে শুরু করব, তারপরে মডেলগুলি একই হবে। কীভাবে এ ঘটনাটি আসেনি?
এরিক ভিয়েনার

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

4

আসুন একটি নমুনা কোডটি দেখুন:

>>>from gensim.models import word2vec

#let us train a sample model like yours
>>>sentences = [['first', 'sentence'], ['second', 'sentence']]
>>>model1 = word2vec.Word2Vec(sentences, min_count=1)

#let this be the model from which you want to reset
>>>sentences = [['third', 'sentence'], ['fourth', 'sentence']]
>>>model2 = word2vec.Word2Vec(sentences, min_count=1)
>>>model1.reset_from(model2)
>>>model1.similarity('third','sentence')
-0.064622000988260417

সুতরাং, আমরা লক্ষ্য করেছি যে মডেল 1 মডেল 2 দ্বারা পুনরায় সেট করা হচ্ছে এবং তাই 'তৃতীয়' এবং 'বাক্য' শব্দটি এর শব্দভাণ্ডারে শেষ পর্যন্ত এর মিল দেখায়। এটিই প্রাথমিক ব্যবহার, আপনি ওজনকে প্রশিক্ষণপ্রাপ্ত / প্রাথমিক অবস্থায় পুনরায় সেট করতে রিসেটওয়েটস () টিও পরীক্ষা করতে পারেন।


2

আপনি যদি শব্দ-এম্বেডিংয়ের জন্য প্রাক প্রশিক্ষিত নেট খুঁজছেন তবে আমি গ্লোভের পরামর্শ দেব। কেরাসের নীচের ব্লগটি কীভাবে এটি বাস্তবায়ন করতে পারে সে সম্পর্কে খুব তথ্যপূর্ণ। এর প্রাক-প্রশিক্ষিত গ্লোভ এম্বেডিংগুলির একটি লিঙ্কও রয়েছে। এখানে 50-মাত্রিক ভেক্টর থেকে 300 ত্রিমাত্রিক ভেক্টর পর্যন্ত প্রাক-প্রশিক্ষিত শব্দ ভেক্টর রয়েছে। এগুলি উইকিপিডিয়া, প্রচলিত ক্রল ডেটা বা টুইটার ডেটাতে নির্মিত হয়েছিল। আপনি এগুলি এখানে ডাউনলোড করতে পারেন: http://nlp.stanford.edu/projects/glove/ । অতিরিক্তভাবে, কেরাস ব্লগটি কীভাবে সেগুলি প্রয়োগ করতে হয় সেগুলি পরীক্ষা করা উচিত। https://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.