Домашни > Време е да помислите за проектите си! > Решения > Решението на Милка Кръстева

Резултати
0 точки от тестове
4 точки от учител

4 точки общо

0 успешни теста
0 неуспешни теста
Код

 1"""
 2Интерактивен семантичен граф на знания с Python и Wikidata API
 3
 4[Description/Обрисовка]
 5Проектът представлява приложение за създаване на мини семантичен граф на знания.
 6Потребителят може да добавя понятия и връзки между тях 
 7
 8    пример: 
 9        Python --used_for--> Data Science
10        Data Science --includes--> Machine Learning
11
12Може да въвежда текст: 
13    Python is used for data science. 
14    Data science includes machine learning.
15    Machine learning is related to artificial intelligence.
16
17ИИ/NLP модулът извлича връзки: 
18    Python --used_for--> Data Science
19    Data Science --includes--> Machine Learning
20    Machine Learning --related_to--> Artificial Intelligence
21
22Или да ползва базата от знания Wikidata и да прави API calls към нея, за да търси реални понятия и да ги добавя в графа.
23
24Основната фунционалност е да се търси път между две понятия и да се показва как са свързани.
25
26[Functionalities/Надарености] 
27 + Добавяне на понятия и връзки ръчно
28 + Добавяне на понятия и връзки от въведен текст
29 + Търсене на понятие чрез Wikidata API
30     Разултатите се кешират ако е конфигурирано в .env file ( cache = True, cache_ttl, default  3600) 
31     Error logging ако има проблем с API call-a (ако в .env debug_mode = True, error_log_path = ... )
32
33 + Добавяне на намерени данни от API към графа.
34 + Показване на всички понятия.
35 + Показване на всички връзки.
36 + Търсене на най-кратък път между две понятия.
37 + Показване и разяснение на намерения път.
38 + Запис и зареждане на данни от CSV файл.
39 + Визуализация на графа като HTML файл.
40
41
42Milestones/Възлови точки / Модули
43- модул за четене и приемане на команди от command line.
44- Модул за добавяне на връзки и понятия ръчно
45- Модул за добавяне на връзки и понятия екстрактнати от текст
46- Модул за Комуникацията с Wikidata API
47- Модул за работа и операции в граф.
48        за създаване на графа, 
49        добавяне на нови понятия и връзки
50        показване на всички понятия/връзки
51        търсене между две поня 
52        Визуализация на графа като HTML файл
53- Модул за писане и четене от CSV файл.        
54
55[Estimate in man-hours/Времеоценка в човекочасове]
56
57https://www.youtube.com/watch?v=N68rAkmqA_A - сори, на този етап толкова :))) 
58
59
60[Usage of technologies/Потребление на технологии]
61spaCy        - за разпознаване на думи, съществителни фрази и entities
62dotenv       -  .env
63logging      - за логване на грешки
64requests     - заявки към API
65cachetools   - за кеширане на резултата от API
66networkx     - граф и graph algorithms
67pandas       - CSV export/import
68pyvis        - интерактивна визуализация
69"""


----------------------------------------------------------------------
Ran 0 tests in 0.000s

NO TESTS RAN

Дискусия
Милка Кръстева
18.05.2026 22:57

Здравей, благодаря за feedback-a. Понеже проектът ми по Невронни мрежи е с някои от компонентите и мислих да преизползвам част от модулите. Това да пренапиша нещата от готовите библиотеки звучи като интересно идея. Ще го обмисля и ще се консултирам с Йоан също :)
Виктор Бечев
17.05.2026 15:17

Няма да навлизам във всеки модул поотделно, просто ще индикирам една потенциална опасност - това, което си предложила като идея звучи доста професионално. Проблемът на това е, че има шанс всеки от модулите ти да се сведе до: ``` def some_function(...): (spacy|networkx|pandas|pyvis|wikidata).some_function_from_that_module(...) ``` Което е супер, така се пише код, не преоткриваме колелото. Проблем би било, ако се окаже, че почти не си написала [Python](https://www.youtube.com/watch?v=YP2KDUiBI-E), отвъд виканията на тези библиотеки. Това, разбира се е лека хипербола, ще трябва да си размяташ и променяш инпутите тук-таме, но предполагам схващаш идеята ми. Помня, че с Йоан коментирахте неща по темата, препоръчвам да поискаш второ мнение по темата наживо, защото може и да не съм прав. А ако търсиш решение, най-лесното - напиши си проекта както го мислиш, после махни една-две от готовите библиотеки (най-смислените за махане са spacy и networkx, защото предоставят най-интересен набор от проблеми за решаване) и си ги напиши сама.
История
Това решение има само една версия.