【问题标题】:Setting minDF and vocabularysize of CountVectorizerModel in spark?在火花中设置 CountVectorizerModel 的 minDF 和词汇大小?
【发布时间】:2018-11-06 23:17:39
【问题描述】:

我正在使用 CountVectorizerModel 和 MinHashLSH 库编写 Spark Scala 代码,用于在数据场中的两组字符串中查找 Jaccard 相似性。在将其提供给 MinHashLSH 之前,应将其转换为向量。为此,我正在使用 CountVectorizerModel。

问题是我随机设置了 setVocabSize() 和 setMinDF() 之类的值,如下代码所示。我收到一个错误vocabulary size should be > 0. Lower minDF as necessary spark error

dataframe dfB 的 sn-p 如下所示,其大小根据输入而变化。

 +------------+-----------------+
|         id1|          values1|
+------------+-----------------+
|         USA|  [Stat]|
|     Germany|[Country]|
| Clever_Hans|  [Horse]|
|       China|[Country]|
|       Japan|[Country]|
|     Halidae| [Family]|
|Real_Delight|  [Horse]|
|Bago_(horse)|  [Horse]|

val dfB = hashtoseq1.toDF("id1", "values1")

val cvModel1: CountVectorizerModel = new CountVectorizer()
  .setInputCol("values1")
  .setOutputCol("features1")
  .setVocabSize(100000)
  .setMinDF(1)
  .fit(dfB)

val kt1 = cvModel1.transform(dfB)
//  kt.show
val mh1 = new MinHashLSH()
  .setNumHashTables(5)
  .setInputCol("features1")
  .setOutputCol("hashes1")

val model1 = mh1.fit(kt1)

val dffilter1 = model1.approxSimilarityJoin(kt1, kt1, 0.4)

以上行代码适用于小于 4GB 的文件。对于 17 GB 的文件,它会引发错误。我浏览了 spark 文档和以下链接,但没有帮助我。

Spark MLib Word2Vec Error: The vocabulary size should be > 0

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    您的语料库包含少于 100000 个术语。通常,您的文档包含 - 根据文档的大小 - 数百万个术语。然后,该算法将该空间限制为您的vocabSize,从而消除高度唯一的值。

    为此,您需要减少您的vocabSize <= total number terms in your corpus = 4

    【讨论】:

      猜你喜欢
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 1970-01-01
      • 2023-01-16
      • 2021-01-28
      • 1970-01-01
      相关资源
      最近更新 更多