ner readme

This commit is contained in:
ajokar 2025-08-16 15:14:27 +03:30
parent 91d3f9be6c
commit 13fabcb940
6 changed files with 149 additions and 21 deletions

View File

@ -0,0 +1,65 @@
# Named Entity Recognition (NER) Script
This project provides a Python script (`p2_ner_recognizer.py`) for extracting named entities from text sections using a trained NER model. The script is designed to identify entities such as names, organizations, locations, and more, which is useful for information extraction and text analysis tasks.
## Requirements
Before using this script, please install the required libraries:
```bash
pip install flair
```
You also need a trained NER model. Update the `model` path in the script to point to your model file.
## How It Works
- The script loads a trained NER model using the Flair library.
- It processes each text section, splits long texts into smaller parts if needed, and extracts named entities.
- The results are saved in a JSON file for further use.
## Main Functions
- `single_ner_recognizer(input_sentence)`: Extracts named entities from a single sentence or text.
- `do_ner_recognize(sections)`: Processes all sections in a dictionary, extracts entities, and saves the results.
## Usage Example
Suppose you have your sections data as a dictionary:
```python
sections = {
"1": {"content": "First section text"},
"2": {"content": "Second section text"}
}
```
You can extract named entities for all sections as follows:
```python
from p2_ner_recognizer import do_ner_recognize
result = do_ner_recognize(sections)
```
After running, the results will be saved in a JSON file in the `./data/ner/` directory.
## Output Structure
Each section will have a new field `ners_v2` with the extracted entities:
```json
"1": {
"content": "First section text",
"ners_v2": [
{"key": "PERSON", "value": "John Doe", "begin": 0, "end": 2, "score": 0.98},
...
]
}
```
## Notes
- Make sure the model path is correct and the model file is available.
- The script supports Persian language if the model is trained for it.
- The output JSON file will be saved in `./data/ner/`.

View File

@ -0,0 +1,65 @@
# اسکریپت تشخیص موجودیت‌های نامدار (NER)
این پروژه شامل یک اسکریپت پایتون (`p2_ner_recognizer.py`) برای استخراج موجودیت‌های نامدار از بخش‌های متنی با استفاده از یک مدل آموزش‌دیده NER است. این اسکریپت برای شناسایی موجودیت‌هایی مانند نام افراد، سازمان‌ها، مکان‌ها و ... کاربرد دارد و برای استخراج اطلاعات و تحلیل متون مفید است.
## پیش‌نیازها
قبل از استفاده از این اسکریپت، کتابخانه زیر را نصب کنید:
```bash
pip install flair
```
همچنین به یک مدل آموزش‌دیده NER نیاز دارید. مسیر مدل را در اسکریپت به فایل مدل خودتان تغییر دهید.
## نحوه عملکرد
- اسکریپت با استفاده از کتابخانه Flair یک مدل NER آموزش‌دیده را بارگذاری می‌کند.
- هر بخش متنی را پردازش می‌کند، در صورت نیاز متن‌های طولانی را به بخش‌های کوچکتر تقسیم می‌کند و موجودیت‌های نامدار را استخراج می‌کند.
- نتایج در یک فایل JSON برای استفاده‌های بعدی ذخیره می‌شود.
## توابع اصلی
- `single_ner_recognizer(input_sentence)`: موجودیت‌های نامدار را از یک جمله یا متن استخراج می‌کند.
- `do_ner_recognize(sections)`: همه بخش‌ها را پردازش کرده، موجودیت‌ها را استخراج و نتایج را ذخیره می‌کند.
## مثال استفاده
فرض کنید داده‌های بخش‌های شما به صورت دیکشنری زیر است:
```python
sections = {
"1": {"content": "متن بخش اول"},
"2": {"content": "متن بخش دوم"}
}
```
می‌توانید موجودیت‌های نامدار همه بخش‌ها را به شکل زیر استخراج کنید:
```python
from p2_ner_recognizer import do_ner_recognize
result = do_ner_recognize(sections)
```
پس از اجرا، نتایج در یک فایل JSON در مسیر `./data/ner/` ذخیره می‌شود.
## ساختار خروجی
برای هر بخش، یک فیلد جدید به نام `ners_v2` با موجودیت‌های استخراج‌شده اضافه می‌شود:
```json
"1": {
"content": "متن بخش اول",
"ners_v2": [
{"key": "PERSON", "value": "علی رضایی", "begin": 0, "end": 2, "score": 0.98},
...
]
}
```
## نکات
- مطمئن شوید مسیر مدل صحیح است و فایل مدل در دسترس است.
- اگر مدل برای زبان فارسی آموزش دیده باشد، اسکریپت از زبان فارسی پشتیبانی می‌کند.
- فایل خروجی JSON در مسیر `./data/ner/` ذخیره خواهد شد.

View File

@ -1,6 +1,6 @@
# Section Classification Script # Section Classification Script
This project provides a Python script (`classification.py`) for classifying text sections using a fine-tuned transformer model. The script is designed to suggest the most relevant classes for each section of text, which is useful for legal documents, content categorization, and similar NLP tasks. This project provides a Python script (`p1_classifier.py`) for classifying text sections using a fine-tuned transformer model. The script is designed to suggest the most relevant classes for each section of text, which is useful for legal documents, content categorization, and similar NLP tasks.
## Requirements ## Requirements
@ -40,7 +40,7 @@ sections = {
You can classify all sections as follows: You can classify all sections as follows:
```python ```python
from classification import do_classify from p1_classifier import do_classify
result = do_classify(sections) result = do_classify(sections)
``` ```
@ -67,5 +67,4 @@ Each section will have a new field `ai_codes` with the classification results:
## Notes ## Notes
- Make sure the model path in `model_checkpoint` is correct and the model files are available. - Make sure the model path in `model_checkpoint` is correct and the model files are available.
- The script supports Persian language.
- The output JSON file will be saved in `./data/classification/`. - The output JSON file will be saved in `./data/classification/`.

View File

@ -1,6 +1,6 @@
# اسکریپت کلاسبندی سکشن‌ها # اسکریپت کلاسیفیکیشن سکشن‌های قانون
این پروژه شامل یک اسکریپت پایتون (`classification.py`) برای کلاسبندی بخش‌های متنی با استفاده از یک مدل ترنسفورمر آموزش‌دیده است. این اسکریپت برای پیشنهاد مرتبط‌ترین کلاس‌ها برای هر بخش از متن طراحی شده و برای اسناد حقوقی، دسته‌بندی محتوا و وظایف مشابه در پردازش زبان طبیعی (NLP) کاربرد دارد. این پروژه شامل یک اسکریپت پایتون (`p1_classifier.py`) برای کلاسبندی بخش‌های متنی با استفاده از یک مدل ترنسفورمر آموزش‌دیده است. این اسکریپت برای پیشنهاد مرتبط‌ترین کلاس‌ها برای هر بخش از متن طراحی شده و برای اسناد حقوقی، دسته‌بندی محتوا و وظایف مشابه در پردازش زبان طبیعی (NLP) کاربرد دارد.
## پیش‌نیازها ## پیش‌نیازها
@ -10,21 +10,21 @@
pip install transformers pandas pip install transformers pandas
``` ```
همچنین به یک مدل کلاسبندی آموزش‌دیده و توکنایزر آن نیاز دارید. مسیر مدل (`model_checkpoint`) را در اسکریپت به مدل خودتان تغییر دهید. همچنین به یک مدل کلاسیفیکیشن آموزش‌دیده و توکنایزر آن نیاز دارید. مسیر مدل (`model_checkpoint`) را در اسکریپت به مدل خودتان تغییر دهید.
## نحوه عملکرد ## نحوه عملکرد
- اسکریپت یک مدل ترنسفورمر آموزش‌دیده را برای کلاسبندی متن بارگذاری می‌کند. - اسکریپت یک مدل ترنسفورمر آموزش‌دیده را برای کلاسیفیکیشن متن بارگذاری می‌کند.
- هر بخش از متن را پردازش می‌کند و در صورت طولانی بودن متن، آن را به پنجره‌هایی تقسیم می‌کند تا با اندازه ورودی مدل سازگار شود. - هر بخش از متن را پردازش می‌کند و در صورت طولانی بودن متن، آن را به پنجره‌هایی تقسیم می‌کند تا با اندازه ورودی مدل سازگار شود.
- برای هر بخش، بهترین کلاس‌ها را پیش‌بینی و نتایج را ذخیره می‌کند. - برای هر بخش، بهترین کلاس‌ها را پیش‌بینی و نتایج را ذخیره می‌کند.
## توابع اصلی ## توابع اصلی
- `get_class(sentences, top_k=4)`: یک جمله یا متن را کلاسبندی می‌کند و برترین کلاس‌ها را برمی‌گرداند. - `get_class(sentences, top_k=4)`: یک جمله یا متن را کلاسیفای می‌کند و برترین کلاس‌ها را برمی‌گرداند.
- `mean_classes(input_classes)`: نتایج کلاس‌بندی چند پنجره از یک متن طولانی را تجمیع می‌کند. - `mean_classes(input_classes)`: نتایج کلاس‌بندی چند پنجره از یک متن طولانی را تجمیع می‌کند.
- `get_window_classes(text)`: تقسیم متن‌های طولانی به پنجره و تجمیع نتایج کلاسبندی آن‌ها را مدیریت می‌کند. - `get_window_classes(text)`: تقسیم متن‌های طولانی به پنجره و تجمیع نتایج کلاسیفیکیشن آن‌ها را مدیریت می‌کند.
- `single_section_classification(id, section_source)`: یک بخش را کلاسبندی کرده و بهترین و سایر کلاس‌های پیشنهادی را برمی‌گرداند. - `single_section_classification(id, section_source)`: یک بخش را کلاسبندی کرده و بهترین و سایر کلاس‌های پیشنهادی را برمی‌گرداند.
- `do_classify(sections)`: همه بخش‌ها را کلاسبندی کرده و نتایج را در یک فایل JSON ذخیره می‌کند. - `do_classify(sections)`: همه بخش‌ها را کلاسیفای کرده و نتایج را در یک فایل JSON ذخیره می‌کند.
## مثال استفاده ## مثال استفاده
@ -40,7 +40,7 @@ sections = {
می‌توانید همه بخش‌ها را به شکل زیر کلاسبندی کنید: می‌توانید همه بخش‌ها را به شکل زیر کلاسبندی کنید:
```python ```python
from classification import do_classify from p1_classifier import do_classify
result = do_classify(sections) result = do_classify(sections)
``` ```
@ -49,7 +49,7 @@ result = do_classify(sections)
## ساختار خروجی ## ساختار خروجی
برای هر بخش، یک فیلد جدید به نام `ai_codes` با نتایج کلاسبندی اضافه می‌شود: برای هر بخش، یک فیلد جدید به نام `ai_codes` با نتایج کلاسیفیکیشن اضافه می‌شود:
```json ```json
"1": { "1": {
@ -67,5 +67,4 @@ result = do_classify(sections)
## نکات ## نکات
- مطمئن شوید مسیر مدل (`model_checkpoint`) صحیح است و فایل‌های مدل در دسترس هستند. - مطمئن شوید مسیر مدل (`model_checkpoint`) صحیح است و فایل‌های مدل در دسترس هستند.
- این اسکریپت بسته به مدل شما از زبان فارسی و سایر زبان‌ها پشتیبانی می‌کند.
- فایل خروجی JSON در مسیر `./data/classification/` ذخیره خواهد شد. - فایل خروجی JSON در مسیر `./data/classification/` ذخیره خواهد شد.

View File

@ -1,6 +1,6 @@
# Sentence Embedding Generator # Sentence Embedding Generator
This project provides a Python script (`embedding.py`) for generating sentence embeddings using the [Sentence Transformers]library. This project provides a Python script (`p3_words_embedder.py`) for generating sentence embeddings using the [Sentence Transformers]library.
## Requirements ## Requirements
@ -22,7 +22,7 @@ pip install sentence-transformers numpy
### 1. Get Embedding for a Single Sentence ### 1. Get Embedding for a Single Sentence
```python ```python
from embedding import single_section_embedder from p3_words_embedder import single_section_embedder
sentence = "This is a sample sentence." sentence = "This is a sample sentence."
embedding = single_section_embedder(sentence) embedding = single_section_embedder(sentence)
@ -43,7 +43,7 @@ sections = {
You can generate and save embeddings as follows: You can generate and save embeddings as follows:
```python ```python
from embedding import do_word_embedder from p3_words_embedder import do_word_embedder
result = do_word_embedder(sections) result = do_word_embedder(sections)
``` ```

View File

@ -1,6 +1,6 @@
# تولید بردار جملات (امبدینگ) # تولید بردار جملات (امبدینگ)
این پروژه شامل یک اسکریپت پایتون (`embedding.py`) برای تولید بردارهای جملات با استفاده از کتابخانه [Sentence Transformers] است. این پروژه شامل یک اسکریپت پایتون (`p3_words_embedder.py`) برای تولید بردارهای جملات با استفاده از کتابخانه [Sentence Transformers] است.
## پیش‌نیازها ## پیش‌نیازها
@ -22,7 +22,7 @@ pip install sentence-transformers numpy
### ۱. دریافت امبدینگ برای یک جمله ### ۱. دریافت امبدینگ برای یک جمله
```python ```python
from embedding import single_section_embedder from p3_words_embedder.py import single_section_embedder
sentence = "این یک جمله نمونه است." sentence = "این یک جمله نمونه است."
embedding = single_section_embedder(sentence) embedding = single_section_embedder(sentence)
@ -43,12 +43,12 @@ sections = {
سپس می‌توانید امبدینگ‌ها را به شکل زیر تولید و ذخیره کنید: سپس می‌توانید امبدینگ‌ها را به شکل زیر تولید و ذخیره کنید:
```python ```python
from embedding import do_word_embedder from p3_words_embedder.py import do_word_embedder
result = do_word_embedder(sections) result = do_word_embedder(sections)
``` ```
پس از اجرا، فایلی با نامی مانند `sections_embeddings_سال-ماه-روز-ساعت.json` در مسیر `./data/embeddings/` ساخته می‌شود که شامل امبدینگ هر بخش است. پس از اجرا، فایلی با نامی مانند `sections_embeddings_year-month-day-hour.json` در مسیر `./data/embeddings` ساخته می‌شود که شامل امبدینگ هر بخش است.
## ساختار خروجی ## ساختار خروجی
@ -67,4 +67,4 @@ result = do_word_embedder(sections)
## نکات ## نکات
- قبل از اجرا، پوشه `./data/embeddings/` را ایجاد کنید. - قبل از اجرا، پوشه `./data/embeddings/` را ایجاد کنید.
- این اسکریپت از زبان فارسی نیز پشتیبانی می‌کند. - این اسکریپت از زبان فارسی پشتیبانی می‌کند.