|
|
--- |
|
|
language: |
|
|
- ru |
|
|
tags: |
|
|
- ner |
|
|
- named-entity-recognition |
|
|
- russian |
|
|
- sports |
|
|
- fitness |
|
|
- work out |
|
|
license: mit |
|
|
--- |
|
|
|
|
|
# sculptor_NER: Модель для извлечения спортивных сущностей |
|
|
|
|
|
Модель для распознавания именованных сущностей (NER) в спортивных текстах на русском языке. Разработана для проекта **Sculptor Sport**. |
|
|
|
|
|
## Типы сущностей |
|
|
- `EXERCISE` - название упражнения (например: "приседания", "жим штанги лежа") |
|
|
- `QUANTITY` - количественные характеристики: |
|
|
- вес (кг) |
|
|
- количество подходов/повторений |
|
|
- время выполнения (секунды, минуты) |
|
|
- дистанция (метры, км) |
|
|
- угол наклона (градусы) |
|
|
|
|
|
## Использование |
|
|
|
|
|
```python |
|
|
from transformers import pipeline |
|
|
|
|
|
ner_pipeline = pipeline( |
|
|
"ner", |
|
|
model="ZPM07/sculptor_NER", |
|
|
aggregation_strategy="first", |
|
|
device=0 |
|
|
) |
|
|
|
|
|
text = "3 подхода по 10 приседаний с весом 50 кг" |
|
|
entities = ner_pipeline(text) |
|
|
|
|
|
def clean_results(entities): |
|
|
cleaned = [] |
|
|
for entity in entities: |
|
|
word = entity['word'].replace('Ġ', ' ').strip() |
|
|
if word: |
|
|
cleaned.append({ |
|
|
'word': word, |
|
|
'entity': entity['entity_group'], |
|
|
'score': round(entity['score'], 4), |
|
|
'start': entity['start'], |
|
|
'end': entity['end'] |
|
|
}) |
|
|
return cleaned |
|
|
|
|
|
cleaned_entities = clean_results(entities) |
|
|
print("Найденные сущности:") |
|
|
for entity in cleaned_entities: |
|
|
print(f"- {entity['word']} -> {entity['entity']} (доверие: {entity['score']:.2f}, позиция: {entity['start']}-{entity['end']})") |
|
|
``` |
|
|
|
|
|
## Пример вывода |
|
|
|
|
|
Найденные сущности: |
|
|
- 3 подхода -> QUANTITY (доверие: 1.00, позиция: 0-9) |
|
|
- 10 -> QUANTITY (доверие: 1.00, позиция: 13-15) |
|
|
- приседаний -> EXERCISE (доверие: 0.99, позиция: 16-26) |
|
|
- 50 кг -> QUANTITY (доверие: 1.00, позиция: 35-40) |