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
|
||||
|
||||
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
|
||||
|
||||
|
@ -40,7 +40,7 @@ sections = {
|
|||
You can classify all sections as follows:
|
||||
|
||||
```python
|
||||
from classification import do_classify
|
||||
from p1_classifier import do_classify
|
||||
|
||||
result = do_classify(sections)
|
||||
```
|
||||
|
@ -67,5 +67,4 @@ Each section will have a new field `ai_codes` with the classification results:
|
|||
## Notes
|
||||
|
||||
- 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/`.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# اسکریپت کلاسبندی سکشنها
|
||||
# اسکریپت کلاسیفیکیشن سکشنهای قانون
|
||||
|
||||
این پروژه شامل یک اسکریپت پایتون (`classification.py`) برای کلاسبندی بخشهای متنی با استفاده از یک مدل ترنسفورمر آموزشدیده است. این اسکریپت برای پیشنهاد مرتبطترین کلاسها برای هر بخش از متن طراحی شده و برای اسناد حقوقی، دستهبندی محتوا و وظایف مشابه در پردازش زبان طبیعی (NLP) کاربرد دارد.
|
||||
این پروژه شامل یک اسکریپت پایتون (`p1_classifier.py`) برای کلاسبندی بخشهای متنی با استفاده از یک مدل ترنسفورمر آموزشدیده است. این اسکریپت برای پیشنهاد مرتبطترین کلاسها برای هر بخش از متن طراحی شده و برای اسناد حقوقی، دستهبندی محتوا و وظایف مشابه در پردازش زبان طبیعی (NLP) کاربرد دارد.
|
||||
|
||||
## پیشنیازها
|
||||
|
||||
|
@ -10,21 +10,21 @@
|
|||
pip install transformers pandas
|
||||
```
|
||||
|
||||
همچنین به یک مدل کلاسبندی آموزشدیده و توکنایزر آن نیاز دارید. مسیر مدل (`model_checkpoint`) را در اسکریپت به مدل خودتان تغییر دهید.
|
||||
همچنین به یک مدل کلاسیفیکیشن آموزشدیده و توکنایزر آن نیاز دارید. مسیر مدل (`model_checkpoint`) را در اسکریپت به مدل خودتان تغییر دهید.
|
||||
|
||||
## نحوه عملکرد
|
||||
|
||||
- اسکریپت یک مدل ترنسفورمر آموزشدیده را برای کلاسبندی متن بارگذاری میکند.
|
||||
- اسکریپت یک مدل ترنسفورمر آموزشدیده را برای کلاسیفیکیشن متن بارگذاری میکند.
|
||||
- هر بخش از متن را پردازش میکند و در صورت طولانی بودن متن، آن را به پنجرههایی تقسیم میکند تا با اندازه ورودی مدل سازگار شود.
|
||||
- برای هر بخش، بهترین کلاسها را پیشبینی و نتایج را ذخیره میکند.
|
||||
|
||||
## توابع اصلی
|
||||
|
||||
- `get_class(sentences, top_k=4)`: یک جمله یا متن را کلاسبندی میکند و برترین کلاسها را برمیگرداند.
|
||||
- `get_class(sentences, top_k=4)`: یک جمله یا متن را کلاسیفای میکند و برترین کلاسها را برمیگرداند.
|
||||
- `mean_classes(input_classes)`: نتایج کلاسبندی چند پنجره از یک متن طولانی را تجمیع میکند.
|
||||
- `get_window_classes(text)`: تقسیم متنهای طولانی به پنجره و تجمیع نتایج کلاسبندی آنها را مدیریت میکند.
|
||||
- `get_window_classes(text)`: تقسیم متنهای طولانی به پنجره و تجمیع نتایج کلاسیفیکیشن آنها را مدیریت میکند.
|
||||
- `single_section_classification(id, section_source)`: یک بخش را کلاسبندی کرده و بهترین و سایر کلاسهای پیشنهادی را برمیگرداند.
|
||||
- `do_classify(sections)`: همه بخشها را کلاسبندی کرده و نتایج را در یک فایل JSON ذخیره میکند.
|
||||
- `do_classify(sections)`: همه بخشها را کلاسیفای کرده و نتایج را در یک فایل JSON ذخیره میکند.
|
||||
|
||||
## مثال استفاده
|
||||
|
||||
|
@ -40,7 +40,7 @@ sections = {
|
|||
میتوانید همه بخشها را به شکل زیر کلاسبندی کنید:
|
||||
|
||||
```python
|
||||
from classification import do_classify
|
||||
from p1_classifier import do_classify
|
||||
|
||||
result = do_classify(sections)
|
||||
```
|
||||
|
@ -49,7 +49,7 @@ result = do_classify(sections)
|
|||
|
||||
## ساختار خروجی
|
||||
|
||||
برای هر بخش، یک فیلد جدید به نام `ai_codes` با نتایج کلاسبندی اضافه میشود:
|
||||
برای هر بخش، یک فیلد جدید به نام `ai_codes` با نتایج کلاسیفیکیشن اضافه میشود:
|
||||
|
||||
```json
|
||||
"1": {
|
||||
|
@ -67,5 +67,4 @@ result = do_classify(sections)
|
|||
## نکات
|
||||
|
||||
- مطمئن شوید مسیر مدل (`model_checkpoint`) صحیح است و فایلهای مدل در دسترس هستند.
|
||||
- این اسکریپت بسته به مدل شما از زبان فارسی و سایر زبانها پشتیبانی میکند.
|
||||
- فایل خروجی JSON در مسیر `./data/classification/` ذخیره خواهد شد.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 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
|
||||
|
||||
|
@ -22,7 +22,7 @@ pip install sentence-transformers numpy
|
|||
### 1. Get Embedding for a Single Sentence
|
||||
|
||||
```python
|
||||
from embedding import single_section_embedder
|
||||
from p3_words_embedder import single_section_embedder
|
||||
|
||||
sentence = "This is a sample sentence."
|
||||
embedding = single_section_embedder(sentence)
|
||||
|
@ -43,7 +43,7 @@ sections = {
|
|||
You can generate and save embeddings as follows:
|
||||
|
||||
```python
|
||||
from embedding import do_word_embedder
|
||||
from p3_words_embedder import do_word_embedder
|
||||
|
||||
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
|
||||
from embedding import single_section_embedder
|
||||
from p3_words_embedder.py import single_section_embedder
|
||||
|
||||
sentence = "این یک جمله نمونه است."
|
||||
embedding = single_section_embedder(sentence)
|
||||
|
@ -43,12 +43,12 @@ sections = {
|
|||
سپس میتوانید امبدینگها را به شکل زیر تولید و ذخیره کنید:
|
||||
|
||||
```python
|
||||
from embedding import do_word_embedder
|
||||
from p3_words_embedder.py import do_word_embedder
|
||||
|
||||
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/` را ایجاد کنید.
|
||||
- این اسکریپت از زبان فارسی نیز پشتیبانی میکند.
|
||||
- این اسکریپت از زبان فارسی پشتیبانی میکند.
|
||||
|
|
Loading…
Reference in New Issue
Block a user