Возможно, вам будет интересно посмотреть Weaviate , чтобы помочь вам решить эту проблему. Это умный график, основанный на векторизации объектов данных .
Если у вас есть домен-специфический c язык (например, сокращения), вы можете расширить Weaviate с помощью пользовательских концепций .
Возможно, вам удастся решить проблему с помощью функций поиска semanti c (т. Е. Explore{}
) или функций классификации c.
Функция изучения
Поскольку все объекты данных векторизованы, вы можете выполнить поиск по семантике c, как показано ниже (этот пример из документов , вы можете попробовать здесь используя GraphQL):
{
Get{
Things{
Publication(
explore: {
concepts: ["fashion"],
certainty: 0.7,
moveAwayFrom: {
concepts: ["finance"],
force: 0.45
},
moveTo: {
concepts: ["haute couture"],
force: 0.85
}
}
){
name
}
}
}
}
Если вы структурируете вашу схему графа на основе, например, имени класса «Предложение», аналогичный запрос может выглядеть примерно так:
{
Get{
Things{
Sentence(
# Explore (i.e., semantically) for "Buying Experience"
explore: {
concepts: ["Buying Experience"]
}
# Result must include the word "car"
where: {
operator: Like
path: ["content"]
valueString: "*car*"
}
){
content
}
}
}
}
Примечание:
Вы также можете исследовать график семантически в целом.
Automati c классификация
Альтернативой может быть работа с контекстным или KNN классификацией функции ication.
В вашем случае вы можете использовать класс Sentence и связать их с классом Experience, который будет иметь свойство: buying
(есть, конечно, много других конфигураций и стратегий, которые вы можете выбрать from).
PS:
Это видео дает немного больше контекста, если хотите.