ner readme
This commit is contained in:
parent
91d3f9be6c
commit
13fabcb940
65
readme/ner-recognizer-en.md
Normal file
65
readme/ner-recognizer-en.md
Normal 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/`.
|
65
readme/ner-recognizer-fa.md
Normal file
65
readme/ner-recognizer-fa.md
Normal 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/` ذخیره خواهد شد.
|
|
@ -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/`.
|
||||||
|
|
|
@ -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/` ذخیره خواهد شد.
|
||||||
|
|
|
@ -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)
|
||||||
```
|
```
|
||||||
|
|
|
@ -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/` را ایجاد کنید.
|
||||||
- این اسکریپت از زبان فارسی نیز پشتیبانی میکند.
|
- این اسکریپت از زبان فارسی پشتیبانی میکند.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user