Palantir 铸造厂使用导入的数据集使用 pyspark 执行 nlp 操作

问题描述

所以我在 Palantir Foundry 代码工作簿中运行了下面这个简单的代码,它运行了。现在我想向它传递一个我导入并位于我的图表中的数据集。数据集是一个 pyspark 数据框,其中一列包含 1000 行文本。所以我想用包含多行的 spark 数据集替换 text="some random text"

import nltk.tokenize as nt
import nltk
text="Being more Pythonic is good for health."
ss=nt.sent_tokenize(text)
tokenized_sent=[nt.word_tokenize(sent) for sent in ss]
pos_sentences=[nltk.pos_tag(sent) for sent in tokenized_sent]
pos_sentences

解决方法

在您的 python 转换中,您可以将代码包装在 udf 中。 udf 的性能不是很好,但它可以让您准确地编写该代码。即:

def tokenize(text):
   ss=nt.sent_tokenize(text)
   tokenized_sent=[nt.word_tokenize(sent) for sent in ss]
   return [nltk.pos_tag(sent) for sent in tokenized_sent]

tokenize_udf = F.udf(translate,T.StringType())

df.withColumn("result",tokenize_udf(F.col("text")))