我想使用网状软件包从R运行gensim。我不确定我是否完全理解网格的语法,因为我可以使用默认的函数设置,但是当我尝试传递时它会失败更多的论点。
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函数提供额外的args。
编辑:我明白了看起来R to python通信不能按预期处理数字。
matrix(unlist(model$wv$most_similar("queen",topn = as.integer(25))),ncol=2,byrow=T)
作品
答案 0 :(得分:0)
你是正确的,网状不处理自动类型转换。没有办法以编程方式确定这一点,除非特别了解特定的Python参数是否需要是整数或浮点数然后进行调解,这在Python中是不可能的,因为Python是无类型语言。
您可以使用as.integer(25)
将参数显式地转换为整数,或者使用25L
代替25
来绕过它。