У меня есть датафрейм, который состоит из двух столбцов, одного Int и другого
Строка:
+-------------+---------------------+
|user_id |token |
+-------------+---------------------+
| 419| Cake|
| 419| Chocolate|
| 419| Cheese|
| 419| Cream|
| 419| Bread|
| 419| Sugar|
| 419| Butter|
| 419| Chicken|
| 419| Baking|
| 419| Grilling|
+-------------+---------------------+
Мне нужно найти 250 ближайших токенов в словаре Word2Vec, для каждого токена в столбце «токен». Я попытался использовать метод findSynonymsArray
в udf:
def getSyn( w2v : Word2VecModel ) = udf { (token : String) => w2v.findSynonymsArray(token, 10)}
Однако этот udf вызывает NullPointerException
при использовании с withColumn
. Это исключение возникает, даже если токен жестко запрограммирован, и независимо от того, выполняется ли код локально или в режиме кластера. Я использовал try-catch внутри udf, чтобы поймать нулевой указатель, и он поднимается в каждой строке.
Я запросил фрейм данных для нулевых значений, ни в одном столбце их нет.
Я также пытался извлечь слова и векторы из Word2VecModel
с помощью getVectors
, запустив свой udf для слов на этом кадре данных и выполнив внутреннее соединение с моим кадром данных. Возникает то же исключение.
Буду очень признателен за любую помощь.