embedding
کاربرد عملی
برای آشنایی با کاربرد این ماژول میتوانید به بخش کاربردهای هضم مراجعه کنید.
در پروژههای زیر از این ماژول استفاده شده است:
این ماژول شامل کلاسها و توابعی برای تبدیل کلمه یا متن به برداری از اعداد است.
WordEmbedding
¶
این کلاس شامل توابعی برای تبدیل کلمه به برداری از اعداد است.
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
model_type |
str
|
نوع امبدینگ که میتواند یکی از مقادیر |
اجباری |
model_path |
Optional[str]
|
مسیر فایل امبدینگ. |
None
|
load_model(model_path)
¶
فایل امبدینگ را بارگزاری میکند.
مثالها:
>>> wordEmbedding = WordEmbedding(model_type = 'fasttext')
>>> wordEmbedding.load_model('word2vec.bin')
...
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
model_path |
str
|
مسیر فایل امبدینگ. |
اجباری |
train(dataset_path, workers=multiprocessing.cpu_count() - 1, vector_size=200, epochs=10, min_count=5, fasttext_type='skipgram', dest_path='fasttext_word2vec_model.bin')
¶
یک فایل امبدینگ از نوع fasttext ترین میکند.
مثالها:
>>> wordEmbedding = WordEmbedding(model_type = 'fasttext')
>>> wordEmbedding.train(dataset_path = 'dataset.txt', workers = 4, vector_size = 300, epochs = 30, fasttext_type = 'cbow', dest_path = 'fasttext_model')
...
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
dataset_path |
str
|
مسیر فایل متنی. |
اجباری |
workers |
int
|
تعداد هسته درگیر برای ترین مدل. |
cpu_count() - 1
|
vector_size |
int
|
طول وکتور خروجی به ازای هر کلمه. |
200
|
epochs |
int
|
تعداد تکرار ترین بر روی کل دیتا. |
10
|
min_count |
int
|
حداقل تعداد تکرار یک کلمه برای قرارگیری آن در مدل امبدینگ. |
5
|
fasttext_type |
str
|
نوع fasttext مورد نظر برای ترین که میتواند یکی از مقادیر skipgram یا cbow را داشته باشد. |
'skipgram'
|
dest_path |
str
|
مسیر مورد نظر برای ذخیره فایل امبدینگ. |
'fasttext_word2vec_model.bin'
|
__getitem__(word)
¶
getitem.
doesnt_match(words)
¶
لیستی از کلمات را دریافت میکند و کلمهٔ نامرتبط را برمیگرداند.
مثالها:
>>> wordEmbedding = WordEmbedding(model_type = 'fasttext')
>>> wordEmbedding.load_model('word2vec.bin')
>>> wordEmbedding.doesnt_match(['سلام' ,'درود' ,'خداحافظ' ,'پنجره'])
'پنجره'
>>> wordEmbedding.doesnt_match(['ساعت' ,'پلنگ' ,'شیر'])
'ساعت'
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
words |
List[str]
|
لیست کلمات. |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
str
|
کلمهٔ نامرتبط. |
similarity(word1, word2)
¶
میزان شباهت دو کلمه را برمیگرداند.
مثالها:
>>> wordEmbedding = WordEmbedding(model_type = 'fasttext')
>>> wordEmbedding.load_model('word2vec.bin')
>>> wordEmbedding.similarity('ایران', 'آلمان')
0.72231203
>>> wordEmbedding.similarity('ایران', 'پنجره')
0.04535884
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
word1 |
str
|
کلمهٔ اول |
اجباری |
word2 |
str
|
کلمهٔ دوم |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
float
|
میزان شباهت دو کلمه. |
nearest_words(word, topn=5)
¶
کلمات مرتبط با یک واژه را به همراه میزان ارتباط آن برمیگرداند.
مثالها:
>>> wordEmbedding = WordEmbedding(model_type = 'fasttext')
>>> wordEmbedding.load_model('word2vec.bin')
>>> wordEmbedding.nearest_words('ایران', topn = 5)
[('ایران،', 0.8742443919181824), ('کشور', 0.8735059499740601), ('کشورمان', 0.8443885445594788), ('ایرانبه', 0.8271722197532654), ('خاورمیانه', 0.8266966342926025)]
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
word |
str
|
کلمهای که میخواهید واژگان مرتبط با آن را بدانید. |
اجباری |
topn |
int
|
تعداد کلمات مرتبطی که میخواهید برگردانده شود. |
5
|
خروجیها:
نوع | توضیحات |
---|---|
List[Tuple[str, str]]
|
لیستی از تاپلهای [ |
get_normal_vector(word)
¶
بردار امبدینگ نرمالایزشدهٔ کلمه ورودی را برمیگرداند.
مثالها:
>>> wordEmbedding = WordEmbedding(model_type = 'fasttext')
>>> wordEmbedding.load_model('word2vec.bin')
>>> result = wordEmbedding.get_normal_vector('سرباز')
>>> isinstance(result, ndarray)
True
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
word |
str
|
کلمهای که میخواهید بردار متناظر با آن را بدانید. |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
Type[ndarray]
|
لیست بردار نرمالایزشدهٔ مرتبط با کلمهٔ ورودی. |
get_vocabs()
¶
لیستی از کلمات موجود در فایل امبدینگ را برمیگرداند.
مثالها:
>>> wordEmbedding = WordEmbedding(model_type = 'fasttext')
>>> wordEmbedding.load_model('word2vec.bin')
>>> wordEmbedding.get_vocabs()
['و', '.', 'در', '،', ...]
خروجیها:
نوع | توضیحات |
---|---|
List[str]
|
لیست کلمات موجود در فایل امبدینگ. |
get_vocab_to_index()
¶
دیکشنری برمیگرداند که هر کلمه موجود در فایل امبدینگ را به ایندکس آن کلمه در لیست بردارها مپ میکند.
مثالها:
>>> wordEmbedding = WordEmbedding(model_type = 'fasttext')
>>> wordEmbedding.load_model('word2vec.bin)
>>> vocab_to_index = wordEmbedding.get_vocab_to_index()
>>> index = vocab_to_index['سلام']
>>> vocabs = wordEmbedding.get_vocabs()
>>> vocabs[index]
'سلام'
خروجیها:
نوع | توضیحات |
---|---|
dict
|
دیکشنری که هر کلمه را به ایندکس آن مپ میکند. |
get_vectors()
¶
وکتورهای توصیف کننده کلمات را برمیگرداند.(عناصر این وکتور با وکتور کلمات تابع get_vocabs هماندیس هستند.
مثالها:
>>> wordEmbedding = WordEmbedding(model_type = 'fasttext')
>>> wordEmbedding.load_model('resorces/word2vec.bin')
>>> vectors = wordEmbedding.get_vectors()
>>> all(vectors[wordEmbedding.get_vocab_to_index()['سلام']] == wordEmbedding['سلام'])
True
خروجیها:
نوع | توضیحات |
---|---|
Type[ndarray]
|
تمامی وکتور بیانکننده کلمات. |
get_vector_size()
¶
طول وکتور بیانکننده هر کلمه در مدل را برمیگرداند.
مثالها:
>>> wordEmbedding = WordEmbedding(model_type = 'fasttext')
>>> wordEmbedding.load_model('resorces/word2vec.bin')
>>> wordEmbedding.get_vector_size()
300
خروجیها:
نوع | توضیحات |
---|---|
int
|
طول وکتور بیانکننده کلمات. |
SentEmbedding
¶
این کلاس شامل توابعی برای تبدیل جمله به برداری از اعداد است.
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
model_path |
Optional[str]
|
مسیر فایل امبدینگ. |
None
|
load_model(model_path)
¶
فایل امبدینگ را بارگذاری میکند.
مثالها:
>>> sentEmbedding = SentEmbedding()
>>> sentEmbedding.load_model('sent2vec.model')
...
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
model_path |
str
|
مسیر فایل امبدینگ. |
اجباری |
train(dataset_path, min_count=5, workers=multiprocessing.cpu_count() - 1, windows=5, vector_size=300, epochs=10, dest_path='gensim_sent2vec.model')
¶
یک فایل امبدینگ doc2vec ترین میکند.
مثالها:
>>> sentEmbedding = SentEmbedding()
>>> sentEmbedding.train(dataset_path = 'dataset.txt', min_count = 10, workers = 6, windows = 3, vector_size = 250, epochs = 35, dest_path = 'doc2vec_model')
...
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
dataset_path |
str
|
مسیر فایل متنی. |
اجباری |
min_count |
int
|
حداقل تعداد تکرار یک کلمه برای قرارگیری آن در مدل امبدینگ. |
5
|
workers |
int
|
تعداد هسته درگیر برای ترین مدل. |
cpu_count() - 1
|
windows |
int
|
طول پنجره برای لحاظ کلمات اطراف یک کلمه در ترین آن. |
5
|
vector_size |
int
|
طول وکتور خروجی به ازای هر جمله. |
300
|
epochs |
int
|
تعداد تکرار ترین بر روی کل دیتا. |
10
|
dest_path |
str
|
مسیر مورد نظر برای ذخیره فایل امبدینگ. |
'gensim_sent2vec.model'
|
__getitem__(sent)
¶
getitem.
get_sentence_vector(sent)
¶
جملهای را دریافت میکند و بردار امبدینگ متناظر با آن را برمیگرداند.
مثالها:
>>> sentEmbedding = SentEmbedding()
>>> sentEmbedding.load_model("sent2vec.model")
>>> result = sentEmbedding.get_sentence_vector('این متن به برداری متناظر با خودش تبدیل خواهد شد')
>>> isinstance(result, ndarray)
True
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
sent |
str
|
جملهای که میخواهید بردار امبیدنگ آن را دریافت کنید. |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
ndarray
|
لیست بردار مرتبط با جملهٔ ورودی. |
similarity(sent1, sent2)
¶
میزان شباهت دو جمله را برمیگرداند.
مثالها:
>>> sentEmbedding = SentEmbedding()
>>> sentEmbedding.load_model("sent2vec.model")
>>> result = sentEmbedding.similarity('شیر حیوانی وحشی است', 'پلنگ از دیگر جانوران درنده است')
>>> isinstance(result, float)
True
>>> result = sentEmbedding.similarity('هضم یک محصول پردازش متن فارسی است', 'شیر حیوانی وحشی است')
>>> isinstance(result, float)
True
پارامترها:
نام | نوع | توضیحات | پیشفرض |
---|---|---|---|
sent1 |
str
|
جملهٔ اول. |
اجباری |
sent2 |
str
|
جملهٔ دوم. |
اجباری |
خروجیها:
نوع | توضیحات |
---|---|
float
|
میزان شباهت دو جمله که عددی بین |
get_vector_size()
¶
طول وکتور بیانکننده هر جمله در مدل را برمیگرداند.
مثالها:
>>> sentEmbedding = SentEmbedding()
>>> sentEmbedding.load_model("sent2vec.model")
>>> sentEmbedding.get_vector_size()
300
خروجیها:
نوع | توضیحات |
---|---|
int
|
طول وکتور بیانکننده جملات. |