GLiNER-Finetune
gliner-finetune is a Python library designed to generate synthetic data using OpenAI's GPT models, process this data, and then use it to train a GLiNER model. GLiNER is a framework for learning and inference in Named Entity Recognition (NER) tasks.
Features
- Data Generation: Leverage OpenAI's powerful language models to create synthetic training data.
- Data Processing: Convert raw synthetic data into a format suitable for NER training.
- Model Training: Fine-tune the GLiNER model on the processed synthetic data for improved NER performance.
Installation
To install the gliner-finetune library, use pip:
pip install gliner-finetune
Quick Start
The following example demonstrates how to generate synthetic data, process it, and train a GLiNER model using the gliner-finetune library.
Make sure you have a .env file with your OPENAI_API_KEY set as a variable.
Step 1: Generate Synthetic Data
from gliner_finetune.synthetic import generate_data, create_prompt
import json
# Define your example data
example_data = {
"text": "The Alpine Swift primarily consumes flying insects such as wasps, bees, and flies. It captures its prey mid-air while swiftly flying through the alpine skies. It nests in high, rocky mountain crevices where it uses feathers and small sticks to construct a simple yet secure nesting environment.",
"generic_plant_food": [],
"generic_animal_food": ["flying insects"],
"plant_food": [],
"specific_animal_food": ["wasps", "bees", "flies"],
"location_nest": ["rocky mountain crevices"],
"item_nest": ["feathers", "small sticks"]
}
# Convert example data to JSON string
json_data = json.dumps(example_data)
# Generate prompt and synthetic data
prompt = create_prompt(json_data)
print(prompt)
# Generate synthetic data with specified number of API calls
num_calls = 3
results = generate_data(json_data, num_calls)
print(results)
Step 2: Process and Split Data
from gliner_finetune.convert import convert
# Assuming the data has been read from 'parsed_responses.json'
with open('synthetic_data/parsed_responses.json', 'r') as file:
data = json.load(file)
# Flatten the data list for processing
final_data = [sample for item in data for sample in item]
# Convert and split the data into training, validation, and testing datasets
training_data = convert(final_data, project_path='', train_split=0.8, eval_split=0.2, test_split=0.0,
train_file='train.json', eval_file='eval.json', test_file='test.json', overwrite=True)
Step 3: Train the GLiNER Model
from gliner_finetune.train import train_model
# Train the model
train_model(model="urchade/gliner_small-v2.1", train_data="assets/train.json",
eval_data="assets/eval.json", project="")
Documentation
For more details about the GLiNER model and its capabilities, visit the official repository:
Metadata
Release files for gliner-finetune 0.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| gliner-finetune-0.0.4.tar.gz | 6.8 kB | Without provenance | Details for gliner-finetune-0.0.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| gliner_finetune-0.0.4-py3-none-any.whl | Python 3 | none | any | Details for gliner_finetune-0.0.4-py3-none-any.whl |
Total release size: 14.6 kB
Release files / gliner-finetune-0.0.4.tar.gz
| Download URL | gliner-finetune-0.0.4.tar.gz |
|---|---|
| Size | 6.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
84e3f092bcd2db8a0d8f8d612d88d7b8d12907b50132c1bdd65b9c382a98a18c
|
|
BLAKE2b-256 checksum How to use checksums |
c7cc462e250237deeb562a23db455d14409744316114434f18e61ffe6010bcb8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.5
|
Release files / gliner_finetune-0.0.4-py3-none-any.whl
| Download URL | gliner_finetune-0.0.4-py3-none-any.whl |
|---|---|
| Size | 7.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8bf8d67286efa030da09706eab6feeb378a55a6f100d19302ac50b50cbf16acd
|
|
BLAKE2b-256 checksum How to use checksums |
03c2b6ab5dc4a8a3812e81f7f2b15bebf18e5c1bb2958c0a039d0ccc8306c39e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.5
|
Security for gliner-finetune 0.0.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.