gpt4 book ai didi

python - 如何将 n-grams 组合成 Spark 中的一个词汇表?

转载 作者:太空狗 更新时间:2023-10-29 22:12:43 25 4
gpt4 key购买 nike

想知道是否有内置的 Spark 功能可以将 1-、2-、n-gram 特征组合到一个词汇表中。在 NGram 中设置 n=2,然后调用 CountVectorizer 会生成仅包含 2-gram 的字典。我真正想要的是将所有频繁的 1-gram、2-gram 等组合到我的语料库的一个字典中。

最佳答案

您可以训练单独的 NGramCountVectorizer 模型并使用 VectorAssembler 进行合并。

from pyspark.ml.feature import NGram, CountVectorizer, VectorAssembler
from pyspark.ml import Pipeline


def build_ngrams(inputCol="tokens", n=3):

ngrams = [
NGram(n=i, inputCol="tokens", outputCol="{0}_grams".format(i))
for i in range(1, n + 1)
]

vectorizers = [
CountVectorizer(inputCol="{0}_grams".format(i),
outputCol="{0}_counts".format(i))
for i in range(1, n + 1)
]

assembler = [VectorAssembler(
inputCols=["{0}_counts".format(i) for i in range(1, n + 1)],
outputCol="features"
)]

return Pipeline(stages=ngrams + vectorizers + assembler)

示例用法:

df = spark.createDataFrame([
(1, ["a", "b", "c", "d"]),
(2, ["d", "e", "d"])
], ("id", "tokens"))

build_ngrams().fit(df).transform(df)

关于python - 如何将 n-grams 组合成 Spark 中的一个词汇表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38839924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com