Установка minDF и словарный размер CountVectorizerModel в спарк? - PullRequest
0 голосов
/ 30 апреля 2018

Я пишу искробезопасный код Scala, используя библиотеки CountVectorizerModel и MinHashLSH, чтобы найти сходство с Jaccard в двух наборах строк в datafarme. Перед передачей в MinHashLSH его следует преобразовать в векторы. Для этого я использую CountVectorizerModel.

Проблема в том, что я произвольно устанавливаю такие значения, как setVocabSize () и setMinDF (), как показано ниже в коде. Я получаю ошибку vocabulary size should be > 0. Lower minDF as necessary spark error.

Фрагмент кадра данных dfB выглядит следующим образом, и его размер изменяется в зависимости от ввода.

 +------------+-----------------+
|         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)

Приведенный выше строчный код работает для файлов размером менее 4 ГБ. Для 17 ГБ файла его выкидывает ошибка. Я просмотрел искровой документ и следующие ссылки, но мне это не помогло.

Spark MLib Word2Vec Ошибка: размер словаря должен быть> 0

1 Ответ

0 голосов
/ 06 ноября 2018

Ваш корпус содержит менее 100000 терминов. Обычно ваш документ содержит - в зависимости от размера ваших документов - миллионы терминов. Затем алгоритм ограничивает это пространство до vocabSize, исключая весьма уникальные значения.

Чтобы это работало, вам нужно уменьшить vocabSize <= total number terms in your corpus = 4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...