小编Jun*_*hpc的帖子

如何加载 word2vec 模型并将其函数调用到映射器中

我想加载一个 word2vec 模型并通过执行单词类比任务来评估它(例如a 对 b 就像 c 对某事?)。为此,首先我加载我的 w2v 模型:

model = Word2VecModel.load(spark.sparkContext, str(sys.argv[1]))
Run Code Online (Sandbox Code Playgroud)

然后我调用映射器来评估模型:

rdd_lines = spark.read.text("questions-words.txt").rdd.map(getAnswers)
Run Code Online (Sandbox Code Playgroud)

getAnswers函数每次从questions-words.txt 中读取一行,其中每一行包含问题和评估我的模型的答案(例如,雅典希腊巴格达伊拉克,其中 a=雅典,b=希腊,c=巴格达和某事=伊拉克)。阅读该行后,我创建了current_questionactual_answer(例如:current_question=Athens Greece Baghdadactual_answer=Iraq)。之后,我调用getAnalogy用于计算类比的函数(基本上,给出它计算答案的问题)。最后,在计算完类比之后,我返回答案并将其写入文本文件。

问题是我收到以下异常:

Exception: It appears that you are attempting to reference SparkContext from a broadcast variable, action, or transformation. SparkContext can only be used on the driver, not in code that it run on workers.
Run Code Online (Sandbox Code Playgroud)

我认为它被抛出是因为我在 map 函数中使用了模型。这个问题与我的问题类似,但我不知道如何将该答案应用到我的代码中。我怎么解决这个问题?以下是完整代码:

def getAnalogy(s, …
Run Code Online (Sandbox Code Playgroud)

apache-spark word2vec pyspark apache-spark-mllib

5
推荐指数
1
解决办法
2315
查看次数

一个具有未知条件数的语句python

我有一个列表列表,其中包含if语句必须满足的所有条件,但问题是存储在列表列表中的条件数是未知的.例如,列表列表如下:

my_list: [["A", "0"], ["B", "1"], ["C", "2"]]
Run Code Online (Sandbox Code Playgroud)

所以if应该是:

if A==0 and B==1 and C==2:
      #do-something
else:
      pass
Run Code Online (Sandbox Code Playgroud)

既然我不知道列表列表中的元素数量,我不能这样做:

if my_list[0][0]==my_list[0][1] and my_list[1][0]==my_list[1][1] and my_list[2][0]==my_list[2][1]:
     #do-something
else:
      pass
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

这里提出类似的问题,但没有明确解释/实现这个问题.

谢谢.

python if-statement

3
推荐指数
1
解决办法
745
查看次数