Я бы хотел использовать пакет reticulate для запуска gensim из R. Я не уверен, что полностью понимаю синтаксис reticulate, потому что могу заставить его работать с настройками функции по умолчанию, но он не работает, когда я пытаюсь передать больше аргументов.
library(reticulate)
gensim <- import("gensim")
model<-gensim$models$Word2Vec$load("word2vec_gensim")
matrix(unlist(model$wv$most_similar("queen")),ncol=2,byrow=T)
[,1] [,2]
[1,] "princess" "0.76466166973114"
[2,] "king" "0.728749990463257"
[3,] "prince" "0.653270363807678"
[4,] "lady" "0.611525416374207"
[5,] "consort" "0.609499335289001"
[6,] "duchess" "0.608054518699646"
[7,] "monarch" "0.606827557086945"
[8,] "lady-in-waiting" "0.605596661567688"
[9,] "empress" "0.602727890014648"
[10,] "wiki/margrethe_ii_of_denmark" "0.59738427400589"
но ...
matrix(unlist(model$wv$most_similar("queen",topn = 25)),ncol=2,byrow=T)
Error in py_call_impl(callable, dots$args, dots$keywords) :
TypeError: Partition index must be integer
Здесь "word2vec_gensim" - предварительно обученная модель, я не могу включить ее, потому что это большой файл, но выберите предпочитаемую предварительно обученную модель. Я думаю, что моя проблема в том, как я предоставляю дополнительные аргументы для функции python.
РЕДАКТИРОВАТЬ: я понял это
похоже, что связь R с python не обрабатывает числа, как ожидалось.
matrix(unlist(model$wv$most_similar("queen",topn = as.integer(25))),ncol=2,byrow=T)
работает