پرش به محتویات

embedding

کاربرد عملی

برای آشنایی با کاربرد این ماژول می‌توانید به بخش کاربردهای هضم مراجعه کنید.

در پروژه‌های زیر از این ماژول استفاده شده است:

این ماژول شامل کلاس‌ها و توابعی برای تبدیل کلمه یا متن به برداری از اعداد است.

WordEmbedding

این کلاس شامل توابعی برای تبدیل کلمه به برداری از اعداد است.

پارامترها:

نام نوع توضیحات پیش‌فرض
model_type str

نوع امبدینگ که می‌تواند یکی از مقادیر ‍fasttext, keyedvector, glove باشد.

اجباری
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

طول وکتور بیان‌کننده کلمات.

SentenceEmbeddingCorpus

SentenceEmbeddingCorpus.

__init__(data_path)

init.

__iter__()

iter.

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

میزان شباهت دو جمله که عددی بین 0 و1 است.

get_vector_size()

طول وکتور بیان‌کننده هر جمله در مدل را برمی‌گرداند.

مثال‌ها:

>>> sentEmbedding = SentEmbedding()
>>> sentEmbedding.load_model("sent2vec.model")
>>> sentEmbedding.get_vector_size()
300

خروجی‌ها:

نوع توضیحات
int

طول وکتور بیان‌کننده جملات.