如何从nltk

时间:2017-11-13 08:13:12

标签: python dataframe pyspark nltk word-count

我的数据框有两列idtext

我想添加一个新列,其中包含每行文本的字数。

我创建了一个userdefinedFunction,我在word_tokenizer

中实现了freqDictnltk
word = f.udf(lambda token: word_count)

def word_count(token):
    freq_dict = nltk.probability.FreqDist(token)
    return [(word, freq) for word, freq in freq_dict.most_common()]

df = df.withColumn('wordcount',word(nltk.word_tokenize(df['text']))

在tokenizer之后我调用word_count并希望得到一个带有单词及其freq的元组列表。而是在列

中得到这个
[[Ljava.lang.Object;@9b4c4d5, [Ljava.lang.Object;@6a5d7d39, ...

1 个答案:

答案 0 :(得分:1)

您需要指定UDF的返回类型。 定义这样的模式

schema = ArrayType(StructType([StructField("word",StringType(), True), StructField("freq",LongType(), True)]))

并将udf更改为

f.udf(word_count, schema)