No description
  • Dockerfile 55.4%
  • Python 44.6%
Find a file
2025-05-31 19:29:43 +03:00
.vscode first commit 2025-05-29 20:55:13 +03:00
tests Исправление переноса строки (сохранение переноса строки) 2025-05-31 19:29:43 +03:00
.dockerignore first commit 2025-05-29 20:55:13 +03:00
.gitignore Исправление переноса строки (сохранение переноса строки) 2025-05-31 19:29:43 +03:00
.woodpecker.yml first commit 2025-05-29 20:55:13 +03:00
Dockerfile Fix CI/CD 2025-05-29 21:49:20 +03:00
LICENSE first commit 2025-05-29 20:55:13 +03:00
lid.176.bin first commit 2025-05-29 20:55:13 +03:00
main.py Исправление переноса строки (сохранение переноса строки) 2025-05-31 19:29:43 +03:00
README.md first commit 2025-05-29 20:55:13 +03:00
requirements.txt first commit 2025-05-29 20:55:13 +03:00

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.