No description
- Dockerfile 55.4%
- Python 44.6%
|
|
||
|---|---|---|
| .vscode | ||
| tests | ||
| .dockerignore | ||
| .gitignore | ||
| .woodpecker.yml | ||
| Dockerfile | ||
| LICENSE | ||
| lid.176.bin | ||
| main.py | ||
| README.md | ||
| requirements.txt | ||
Language Detection API
Этот проект предоставляет REST API для определения языка текста с использованием модели FastText. Сервис построен на FastAPI и позволяет определить язык введенного текста с высокой точностью.
Особенности
- Определение языка для текста любой длины
- Возврат кода языка (ISO 639-1) и уровня уверенности модели
- Простая интеграция через REST API
- Высокая скорость обработки запросов
- Поддержка 176 языков
Требования
- Python 3.8+
- pip (менеджер пакетов Python)
Установка и запуск
1. Клонирование репозитория
git clone https://github.com/yourusername/language-detection-api.git
cd language-detection-api
2. Установка зависимостей
python -m venv .venv
source .venv/bin/activate # Для Linux/MacOS
# Или .venv\Scripts\activate для Windows
pip install fastapi uvicorn fasttext numpy==1.26.4
3. Загрузка модели
wget https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.bin
4. Запуск сервера
uvicorn main:app --reload --host 0.0.0.0 --port 8000
Сервис будет доступен по адресу: http://localhost:8000
Использование API
Определение языка текста
Endpoint: POST /detect-language
Пример запроса:
curl -X POST "http://localhost:8000/detect-language" \
-H "Content-Type: application/json" \
-d '{"text": "Bonjour le monde, ceci est un test en français"}'
Пример ответа:
{
"text": "Bonjour le monde, ceci est un test en français",
"language": "fr",
"confidence": 0.9999
}
Параметры ответа
| Параметр | Тип | Описание |
|---|---|---|
| text | string | Оригинальный текст из запроса |
| language | string | Код языка (ISO 639-1) |
| confidence | float | Уверенность модели (0.0 - 1.0) |
Документация API
После запуска сервера доступна интерактивная документация:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
Примеры использования
Python
import requests
response = requests.post(
"http://localhost:8000/detect-language",
json={"text": "Esta es una prueba en español"}
)
result = response.json()
print(f"Language: {result['language']}, Confidence: {result['confidence']:.4f}")
JavaScript
fetch('http://localhost:8000/detect-language', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text: "これは日本語のテストです" })
})
.then(response => response.json())
.then(data => console.log(data));
Технические детали
- Модель: FastText's LID 176 language identification model
- Поддерживаемые языки: 176 языков
- Среднее время обработки: < 10 мс на запрос
- Размер модели: 126 MB
Устранение проблем
Если возникает ошибка ValueError: Unable to avoid copy...:
pip uninstall numpy -y
pip install numpy==1.26.4
Лицензия
Этот проект распространяется под лицензией MIT. Модель языка распространяется по лицензии CC-BY-SA.