# Инструмент Keyword Extractor
## Описание
Инструмент `keyword_extractor` — это gRPC-сервис на Python, который извлекает наиболее релевантные ключевые слова и именованные сущности (такие как люди, организации и местоположения) из заданного текста.
Он автоматически определяет язык текста (английский или русский) и применяет наилучшую NLP-модель для задачи:
* **Английский:** Использует библиотеку `KeyBERT` с моделью sentence-transformer.
* **Русский:** Использует библиотеку `Natasha`, оптимизированную для русской морфологии.
> **Примечание:** Этот инструмент загружает модели машинного обучения в память при запуске, что делает его ресурсоемким. Он считается модулем **R&D (Исследования и Разработка)** и по умолчанию отключен в основной конфигурации сервера для обеспечения стабильной и быстро запускающейся среды.
## Параметры
Инструмент принимает следующие аргументы в виде JSON-объекта:
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|----------------|----------|--------------|--------------|---------------------------------------------------------------|
| `text` | `string` | **Да** | | Текст, из которого необходимо извлечь ключевые слова. |
| `max_keywords` | `number` | Нет | `10` | Максимальное количество ключевых слов или фраз для возврата. |
## Ответ
* **Успешное извлечение:** Возвращает JSON-массив строк, где каждая строка — это извлеченное ключевое слово или именованная сущность.
* **Ошибка:** Если параметр `text` отсутствует или возникает ошибка при обработке, инструмент возвращает сообщение об ошибке.
## Пример использования
Вот пример использования инструмента `keyword_extractor` для извлечения ключевых терминов из технического описания.
**Запрос:**
```bash
curl -X POST http://localhost:8002/v1/tools:run \
-d '{
"name": "keyword_extractor",
"arguments": {
"text": "Язык программирования Go, также известный как Golang, был разработан в Google Робертом Гриземером, Робом Пайком и Кеном Томпсоном. Это статически типизированный, компилируемый язык со встроенной поддержкой конкурентности.",
"max_keywords": 5
}
}'
```
**Успешный ответ:**
```json
{
"result": {
"listValue": {
"values": [
{ "stringValue": "Golang" },
{ "stringValue": "язык программирования Go" },
{ "stringValue": "Кен Томпсон" },
{ "stringValue": "Роб Пайк" },
{ "stringValue": "Google" }
]
}
}
}
```
## Конфигурация
Конфигурация инструмента управляется через файл `config.json`.
**Пример `config.json`:**
```json
{
"port": 50073,
"command": ["python", "server.py"]
}
```
## Проверки состояния и логирование
* **Проверки состояния:** Реализует стандартный протокол gRPC Health Checking Protocol.
* **Логирование:** Использует стандартный модуль `logging` в Python.