Установка minDF и словаря CountVectorizerModel в Spark?

Я пишу искровой код Scala с использованием библиотеки CountVectorizerModel и MinHashLSH для поиска сходства Жаккарда в двух наборах строк в 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 и переходил по ссылкам, но мне это не помогло.

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
806
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Другие вопросы по теме