71 lines
2.4 KiB
Markdown
71 lines
2.4 KiB
Markdown
# تولید بردار جملات (امبدینگ)
|
||
|
||
این پروژه شامل یک اسکریپت پایتون (`embedding.py`) برای تولید بردارهای جملات با استفاده از کتابخانه [Sentence Transformers] است.
|
||
|
||
## پیشنیازها
|
||
|
||
قبل از استفاده از این اسکریپت، کتابخانههای زیر را نصب کنید:
|
||
|
||
```bash
|
||
pip install sentence-transformers numpy
|
||
```
|
||
|
||
## نحوه عملکرد
|
||
|
||
- اسکریپت از مدل آماده `sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2` استفاده میکند.
|
||
- دو تابع اصلی دارد:
|
||
- `single_section_embedder(sentence)`: یک جمله (رشته متنی) را گرفته و بردار عددی متناظر با آن را برمیگرداند.
|
||
- `do_word_embedder(sections)`: یک دیکشنری از بخشها (هر بخش دارای فیلد `content`) را گرفته، برای هر بخش امبدینگ تولید میکند و نتیجه را به صورت فایل JSON ذخیره میکند.
|
||
|
||
## نحوه استفاده
|
||
|
||
### ۱. دریافت امبدینگ برای یک جمله
|
||
|
||
```python
|
||
from embedding import single_section_embedder
|
||
|
||
sentence = "این یک جمله نمونه است."
|
||
embedding = single_section_embedder(sentence)
|
||
print(embedding)
|
||
```
|
||
|
||
### ۲. تولید امبدینگ برای چند بخش و ذخیره در فایل
|
||
|
||
فرض کنید دادههای شما به صورت زیر است:
|
||
|
||
```python
|
||
sections = {
|
||
"1": {"content": "متن بخش اول"},
|
||
"2": {"content": "متن بخش دوم"}
|
||
}
|
||
```
|
||
|
||
سپس میتوانید امبدینگها را به شکل زیر تولید و ذخیره کنید:
|
||
|
||
```python
|
||
from embedding import do_word_embedder
|
||
|
||
result = do_word_embedder(sections)
|
||
```
|
||
|
||
پس از اجرا، فایلی با نامی مانند `sections_embeddings_سال-ماه-روز-ساعت.json` در مسیر `./data/embeddings/` ساخته میشود که شامل امبدینگ هر بخش است.
|
||
|
||
## ساختار خروجی
|
||
|
||
خروجی به صورت یک فایل JSON است که برای هر بخش، بردار امبدینگ اضافه شده است:
|
||
|
||
```json
|
||
{
|
||
"1": {
|
||
"content": "متن بخش اول",
|
||
"embeddings": [0.123, 0.456, ...]
|
||
},
|
||
...
|
||
}
|
||
```
|
||
|
||
## نکات
|
||
|
||
- قبل از اجرا، پوشه `./data/embeddings/` را ایجاد کنید.
|
||
- این اسکریپت از زبان فارسی نیز پشتیبانی میکند.
|