- Для запуску API з кореня проекту необхідно виконати наступну команду:
docker-compose up
- Тести запускаються автоматичкно у момнет створення контейнеру. Для ручного запуску тестів необхідно виконати наступну команду після запуску проекту:
docker-compose exec api python -m pytest tests/
- Структура API
- Show urls with keywords
Повертає список url разом з ключовими словами
-
URL
/api/url/:url
-
Method:
GET
-
URL Params
Optional:
url=[alphanumeric]
-
Success Response:
- Code: 200
Content:{ "status": "success", "data": [ { "keywords": [ "DEV Challenge", "Challenge", "DEV" ], "url": "https://devchallenge.it/" } ] }
- Code: 200
-
Add urls with keywords
Добавляє новий url разом з ключовими словами
-
URL
/api/url/:url
-
Method:
POST
-
URL Params
Require:
url=[alphanumeric]
-
Success Response:
-
Code: 201 CREATED
Content:{ "status": "success", "data": { "keywords": [ "Technology BBC News", "Technology BBC", "Technology", "BBC News", "News", "BBC" ], "url": "https://www.bbc.com/news/technology" } }
-
Error Response:
-
Code: 400 BAD REQUEST
Content:{ "message": "Url already exists" }
-
-
Update urls with keywords
Оновлює ключові слова для заданого url
-
URL
/api/url/:url
-
Method:
PUT
-
URL Params
Require:
url=[alphanumeric]
-
Success Response:
-
Code: 204 CREATED
Content:{ {'message': 'Url already updated'}
-
Error Response:
-
Code: 400 BAD REQUEST
Content:{'message': 'Url does not exist'}
-
-
Delete urls with keywords
Видаляє ключові слова для заданого url
-
URL
/api/url/:url
-
Method:
DELETE
-
URL Params
Require:
url=[alphanumeric]
-
Success Response:
-
Code: 204 CREATED
-
Error Response:
-
Code: 400 BAD REQUEST
Content:{'message': 'No input data provided'}
-
- Опис алгоритму створення ключових слів.
У яскості основного методу ключових слів було використанно алгоримт генерування n-грам для попередньо підговоленого тексту. Процедура підготовки тексту полягає у видаленні спеціальних символів, цифр та стоп слів (слів союзів типу "a", "the") які не можуть бути ключовими словами. Після підготовки текст розбивається масив токенів з яких будується послідовність n-грам від 1 до n, де n-розмір масиву токенів. Ця послідовність є шуканим масивом ключових слів.
-
Шляхи подальшого поліпшення
-
Можна добавити обробку спеціальних для генерації ключових слів. Наприклад пошук дати в заданому форматі, або версіїї бібліотек у title
-
Скористатися методами обробки природних мов для пошуку іменованих сутностей (імен, назв що складаються біль ніж з одного токену) та фільтрації вихідного масиву ключових слів