Я хочу создать словарный граф с векторами слов. Цель состоит в том, чтобы запросить ближайшее слово в словарном графике на основе сходства слов. Как мы можем добиться этого на neo4j?
Пример:
Предположим, словарь состоит из следующего:
Product Quality
Wrong Product
Product Price
Product Replacement
И слово запроса: Affordable Product
В одном запросе я должен быть в состоянии выяснить, что «Доступный продукт» более тесно связан с «Ценой продукта», чем любые другие.
Обратите внимание, что я сохраняю встраивание слов в граф, и, следовательно, проверка косинусного подобия для каждого слова в словаре по одному поможет мне достичь этого. Однако, когда словарный запас становится большим, выполнение запросов по одному снижает скорость и производительность.
Если есть какой-либо способ сохранить вложения слов для словаря предметной области в виде графа, который можно запросить для ближайшего узла на основе косинусного сходства, это может быть возможным решением. Однако пока ничего подобного найти не удалось.
С нетерпением жду указателей, если таковые имеются. Спасибо
'Affordable Product'
отсутствует в вашем словаре. (Технически даже не'Product'
, так как вы упомянули только токены, которые включают 2 слова.) На мгновение отложив в сторону любые проблемы со скоростью или возможные особенности (например, графическую базу данных), как вы ожидали, что код оценит неизвестный термин'Affordable Product'
ближе всего к'Product Price'
? (Есть ли у вас существующее решение для этого, которое слишком медленно, что вызывает ваш запрос о построении графика? - person gojomo   schedule 16.05.2020Affordable Product'
(эта точная строка из двух слов) отсутствует в вашем словаре, для него есть вектор для вычисления косинусного расстояния. - person gojomo   schedule 20.05.2020'Affordable Product'
сопоставимо с известным термином, таким как'Product Price'
). Если это проблема, графики не имеют значения, но было бы хорошо знать, что вы пробовали. Но если есть какая-то другая реальная причина для графика, это тоже было бы полезно знать. - person gojomo   schedule 20.05.2020new label
, то его нет ни в полном словаре векторов, ни в графе. Даже если каким-то неопределенным образом вы загрузите для него вектор, его все равно нет на графике. Если вы хотите найти одно существующее слово, которое ближе всего, это полная проверка всех известных слов. После того, как вы это сделаете, нет необходимости в графе кеша ближайших соседей каждого слова - вы уже сделали сложную часть. (Но также: если массовое сравнение один за другим кажется слишком трудоемким, возможно, вы делаете это плохо — отсюда и мой вопрос о том, что вы пробовали, и почему вы пришли к выводу, что это слишком медленно.) - person gojomo   schedule 21.05.2020