我建立了一个 fasttext 分类模型,以便对 facebook 评论进行情感分析(在 windows 上使用 pyspark 2.4.1)。当我使用预测模型函数来预测一个句子的类别时,结果是一个元组,其形式如下:
[('__label__positif', '__label__négatif', '__label__neutre', 0.8947999477386475, 0.08174632489681244, 0.023483742028474808)]
但是当我尝试将其应用于“文本”列时,我这样做了:
from pyspark.sql.types import *
from pyspark.sql.functions import udf, col
import fasttext
schema = StructType([
StructField("pos", StringType(), False),
StructField("neg", StringType(), False),
StructField("ntr", StringType(), False),
StructField("pr_pos", DoubleType(), False),
StructField("pr_neg", DoubleType(), False),
StructField("pr_ntr", DoubleType(), False)
])
udf_label = udf(lambda words : predictClass(words), schema)
df = df.withColumn("classe", udf_label(col('text')))
df.select('classe').show()
我收到此错误:
PicklingError: Could not serialize object: TypeError: can't pickle fasttext_pybind.fasttext objects