Найти сходство с doc2vec как word2vec - PullRequest
0 голосов
/ 05 декабря 2018

Есть ли способ найти похожие документы, как мы делаем в word2vec

Как:

  model2.most_similar(positive=['good','nice','best'],
    negative=['bad','poor'],
    topn=10)

Я знаю, что мы можем использовать infer_vector, кормить их, чтобы иметь похожие, но я хочупривести много положительных и отрицательных примеров, как мы делаем в word2vec.

есть ли способ, которым мы можем это сделать!спасибо!

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Часть векторов документов модели Doc2Vec работает так же, как векторы слов, относительно вызова most_similar().Вы можете указать несколько тегов doc или полных векторов внутри параметров positive и negative.

Так что вы можете позвонить ...

sims = d2v_model.docvecs.most_similar(positive=['doc001', 'doc009'], negative=['doc102'])

... и это должно сработать.Элементами списков positive или negative могут быть теги doc, которые присутствовали во время обучения, или необработанные векторы (например, возвращаемые infer_vector(), или ваши собственные средние числа таких векторов).

0 голосов
/ 05 декабря 2018

Не верьте, что для этого есть заранее написанная функция.

Один из подходов состоит в том, чтобы написать функцию, которая перебирает каждое слово в положительном списке, чтобы получить первые n слов для конкретного слова.

Так что для положительных слов в вашем примере вопроса у вас будет 3 списка по 10 слов.

Затем вы можете идентифицировать слова, которые являются общими для всех 3 списков, как первые n, похожие на ваш положительный список.Поскольку не все слова будут общими для всех трех списков, вам, вероятно, понадобится получить 20 лучших похожих слов при итерации, чтобы в итоге вы получили 10 лучших слов, как вы хотите в своем примере.

Затем сделайте то же самое для отрицательногослова.

...