Для этой задачи подойдет реляционная СУБД, например PostgreSQL, так как она хорошо справляется с хранением структурированных данных и поддерживает сложные запросы. Для выделения именованных сущностей можно использовать библиотеку spaCy с моделью en_core_web_sm / en_core_web_md Векторное представление можно построить с использованием библиотеки gensim, конкретно Word2Vec.
Пример использования spaCy для выделения сущностей:
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("Ваш текст здесь.")
for ent in doc.ents:
print(ent.text, ent.label_)
Для векторного представления и определения близости между сущностями используйте gensim:
from gensim.models import Word2Vec
# Предположим, у вас есть список предложений (corp)
model = Word2Vec(corp, vector_size=100, window=5, min_count=1, workers=4)
# Пример получения вектора слова
vector = model.wv['word']
Загрузите данные в PostgreSQL и затем обработайте их с помощью приведенного кода для анализа.
Далее с помощью функций одной из библиотек машинного обучения выделите именованные сущности и попробуйте в результате построения векторного представления определить близость между сущностями в корпусе статей.
Подскажите пожалуйста, какую СУБД удобнее использовать для этой задачи. Какую функцию м.о. лучше использовать и как добавить?