Как правильно подобрать еду с помощью word2vec и как мне разработать параметры word2vec для этой задачи? - PullRequest
0 голосов
/ 04 июня 2019

Я имею дело с проблемой подобия пищи, в которой мне нужно найти аналогичную индийскую еду для данного индийского блюда.Итак, может ли кто-нибудь помочь мне эффективно справиться с этой проблемой?хорошо ли использовать word2vec для этой задачи?

Для этой задачи я начал с поиска векторов для ингредиентов, а затем применил средневзвешенное значение tf-idf к ингредиентам, чтобы получить векторы для блюд.Я собрал данные для ингредиентов разных блюд, затем применил wor2vec, но я не нашел удовлетворительных результатов.

#Setting values for NN parameters 
num_features = 300    # Word vector dimensionality                      
min_word_count = 3                       
num_workers = 4       # Number of CPUs
context = 10          # Context window size ie. avg recipe size                                                                                
downsampling = 1e-3   # threshold for configuring which 
                      # higher-frequency words are randomly downsampled

#Initializing and training the model 
 model = word2vec.Word2Vec(sentences, workers=num_workers, \
            size=num_features, min_count = min_word_count, \
            window = context, sample = downsampling) '''

#using init_sims to make the model much more memory-efficient.
model.init_sims(replace=True) 

model.most_similar('ginger')

Вывод:

[('salt', 0.9999704957008362),
 ('cloves garlic', 0.9999628067016602),
 ('garam masala', 0.9999610781669617),
 ('turmeric', 0.9999603033065796),
 ('onions', 0.999959409236908),
 ('vegetable oil', 0.9999580383300781),
 ('coriander', 0.9999570250511169),
 ('black pepper', 0.9999487400054932),
 ('cumin seeds', 0.999948263168335),
 ('green chile pepper', 0.9999480247497559)]

1 Ответ

0 голосов
/ 04 июня 2019

Word2vec может быть разумным для этой задачи. Для получения наилучших результатов вам может потребоваться больше данных или настройка параметров.

Для меня не очевидно, что не так с результатами вашего примера, поэтому вам следует добавить больше деталей к вашему вопросу и больше примеров / объяснений о том, почему вы не удовлетворены результатами.

Если у вас есть определенные идеальные результаты, которые вы можете собрать в повторяемых тестах модели, это поможет вам настроить модель. Например, если вы знаете, что «корица» лучше подходит для «имбиря», чем «соли», вы бы закодировали это (и десятки, сотни или тысячи других «предпочтительных ответов») в автоматический метод оценки, который мог бы набрать модель.

Затем вы можете отрегулировать («мета-оптимизировать») параметры модели, чтобы найти модель, которая лучше всего оценивает вашу оценку.

  • меньше или больше измерений (size) может помочь, в зависимости от богатства ваших данных
  • меньшее или большее window может помочь
  • больше тренировок epochs может помочь
  • большее min_count (отбрасывание более низкочастотных слов) часто помогает, особенно с большими наборами данных
  • может помочь более агрессивное значение sample (меньшее, например 1e-04 или 1e-05) с очень большими наборами данных
  • не по умолчанию ns_exponent значения могут помочь, особенно для рекомендательных приложений
...