如何从 nltk 中的 freqDist 获取元组列表
How to get a list of tuple from freqDist in nltk
我有一个包含两列 id
和 text
的数据框
我想添加一个新列,其中包含每行文本的字数。
我创建了一个 userdefinedFunction,其中我从 nltk
实现了 word_tokenizer
和 freqDict
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
并希望获得包含单词及其频率的元组列表。而是在列
中得到这个
[[Ljava.lang.Object;@9b4c4d5, [Ljava.lang.Object;@6a5d7d39, ...
您需要为 UDF 指定 return 类型。
像这样定义模式
schema = ArrayType(StructType([StructField("word",StringType(), True), StructField("freq",LongType(), True)]))
并将udf更改为
f.udf(word_count, schema)
我有一个包含两列 id
和 text
我想添加一个新列,其中包含每行文本的字数。
我创建了一个 userdefinedFunction,其中我从 nltk
word_tokenizer
和 freqDict
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
并希望获得包含单词及其频率的元组列表。而是在列
[[Ljava.lang.Object;@9b4c4d5, [Ljava.lang.Object;@6a5d7d39, ...
您需要为 UDF 指定 return 类型。 像这样定义模式
schema = ArrayType(StructType([StructField("word",StringType(), True), StructField("freq",LongType(), True)]))
并将udf更改为
f.udf(word_count, schema)