当前位置: 首页 > 知识库问答 >
问题:

用查找表在Pyspark中求平均向量

芮安顺
2023-03-14

我试图在PySpark中使用https://nlp.stanford.edu/projects/GloVe/预先训练的手套模型实现一个简单的Doc2Vec算法。

我有两个RDD:

共有1个答案

岳允晨
2023-03-14

假设您有一个函数tokenize将字符串转换为单词列表。然后您可以FlatMapDocuments获取元组的RDD(word,document id):

flattened_docs = documents.flatMap(lambda x: [(word, x[0]) for word in tokenize(x[1])])

然后与单词连接将得到(word,(document id,vector))元组,此时可以删除单词:

doc_vectors = flattened_docs.join(words).values

请注意,这是一个内部连接,因此您将丢弃一个没有嵌入的单词。因为您可能希望将这些单词计算在平均值中,所以左联接可能更合适,然后您必须用零向量(或您选择的任何向量)替换任何生成的none

final_vectors = doc_vectors.groupByKey().mapValues(average)

(请原谅我受Scala影响的Python。我已经有一段时间没有使用pyspark了,我还没有检查它是FlatMap还是Flat_Map等等。)

 类似资料:
  • 问题内容: 我必须在Python中找到列表的平均值。到目前为止,这是我的代码 我已经知道了,所以它可以将列表中的值相加,但是我不知道如何将其划分为它们? 问题答案: 在Python 3.4+上,你可以使用 statistics.mean() 在旧版本的Python上,你可以执行 在Python 2上,你需要转换len为浮点数才能进行浮点数除法 无需使用。它慢得多,并已在Python 3 中删除。

  • 我正在尝试使用用户输入将数字放入一个数组,然后找到这些数字的平均值,也找到哪些数字大于平均值。这些数字进入一个数组,但当我试图求平均数时,我无法求出平均数,以及哪些数字大于平均数,因为对于试图求出大于平均数的数字的部分,并非所有变量都是可见的。但是,当我允许这个部分看到所有的变量(don't But{}围绕某些部分)时,它会找到每一个数的平均值。现在,它为每个数字打印平均值,而为大于平均值的数字打

  • 我试图理解新的Java8流API。 http://docs.oracle.com/javase/tutorial/collections/streams/reduction.html 我找到了使用collect API查找数字平均值的示例。但我觉得,使用reduce()也可以做到这一点。

  • 我似乎无法从用户输入的分数中计算出平均分数。我也不能让它停止例外输入大于100或小于0。有人能告诉我我做错了什么吗?谢谢

  • avg 获得某个列字段的平均值avg($table, $column, $where) table [string] 表名. column [string] 列字段 where (optional) [array] WHERE 条件.avg($table, $join, $column, $where) table [string] The table name. join [array] Tab

  • avg 获得某个列字段的平均值avg($table, $column, $where) table [string] 表名. column [string] 列字段 where (optional) [array] WHERE 条件.avg($table, $join, $column, $where) table [string] The table name. join [array] Tab