‫در این پروژه با یک مدل query2vec ساخته ایم. این مدل، از یک پیکره متنی مدل word2vec را آموزش میدهد و همچنین idf کلمات را استخراج میکند.
‫سپس با استفاده از خروجی مدل word2vec و استفاده از idf کلمات به عنوان وزنها، برای کوئری یک بردار میسازیم.

‫نحوه استفاده از پکیج:  
‫یک لیست از جمله ها را برای آموزش باید به صورت لیستی از string ها برای آموزش مدل آماده کنیم. سپس با فراخوانی مدل به شکل زیر، مدل آموزش داده میشود.

from Query2Vec import Query2Vec   
model = Query2Vec(vector_size=100, min_count=5, window=5)  
‫پارامترهای vector_size و min_count و window برای ساخت مدل word2vec استفاده میشود.

model.train_model(sentences, update=False, workers=3, epochs=5)  
‫در این مرحله، مدل با داده sentences که لیستی از جمله هاست، آموزش داده میشود. پارامتر update مشخص میکند که آیا مدل قبلی آپدیت شود یا یک مدل جدید بدون درنظر گرفتن داده قبلی آموزش داده شود.   
‫در نهایت این method، یک مدل tfidf و یک مدل word2vec اموزش میدهد.

model.query_to_vec(query, tf_idf_enable=True, ner_enable=False)  
‫یک رشته را ورودی میگیرد و بردار آن را خروجی میدهد. اگر پارامتر tf_idf_enable را غیر فعال کنیم، وزن tfidf در ساخت بردار استفاده نمیشود. اگر ner_enable را فعال کنیم، به کلماتی که ner تشخیص داده شوند،‌ وزن خاصی داده میشود. در نهایت برای هرکلمه،‌ وزن نهایی از حاصلضرب وزنهای tfidf و ner ساخته میشود و از بردارهای کلمات با این وزنها، میانگین وزندار میگیریم تا بردار نهایی را برای کوئری بسازیم.

model.save_model(path)  
‫مدل را در ادرس ورودی ذخیره میکند.

Query2Vec.load_model(path)  
‫مدل را از ادرس ورودی لود میکند.

model.set_ner_tags_weights(ner_tags_weights)  
‫یک بردار به طول تعداد tag های مشخص شده در مدل در ورودی میگیرد و وزن آنها را به مقادیر ورودی تغییر میدهد