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

# 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` | طول وکتور بیان‌کننده جملات.

#### درخواست استفاده از کوکی

با پذیرش کوکی به ما اجازه می‌دهید تا با بررسی تعامل شما با سایت و شناسایی بازدیدهای بعدی‌‌تان، کیفیت مستندات را بهبود ببخشیم.
سپاس از همکاری شما. ❤️

- Google Analytics
- GitHub

مدیریت تنظیمات