如何形成基于词汇表的 tfidf sparklyr 数据框
how to form a vocabulary based tfidf sparklyr dataframe
必须使用 sparklyr 构建一个 Tf-idf matrix/dataframe 并将 terms/words 作为列名而不是索引。我选择 ft_count_vectorizer 是因为它提供了存储词汇的功能。但是在找到 tf-idf 后我被卡住了,我无法将这些术语映射到它的 tf-idf values.Any 帮助中 space 将是高度 appreciated.Here 是我试过了。
tf_idf<-cleantext %>%
ft_tokenizer("Summary", "tokenized") %>%
ft_stop_words_remover(input.col = "tokenized", output.col = "clean_words",
ml_default_stop_words(sc,language = ("english"))) %>%
ft_count_vectorizer(input_col = "clean_words",output_col="tffeatures")%>%
ft_idf(input_col="tffeatures",output_col="tfidffeatures")
tf-idf 是一个 spark_tbl class,其中还包括 clean_words(词汇)和 tfidf features.Both,这些功能以列表的形式出现。我需要提供 tfidf 功能作为输入,并使用 clean_words 作为列标题。最好的方法是什么。我被困在这里。任何协助或帮助将不胜感激。
虽然像这样的技术上可行的操作没有多少实际应用。 Apache Spark 未针对处理具有宽数据的执行计划进行优化,例如可能通过扩展向量化列生成的执行计划。
如果您仍然继续阅读,则必须提取 CountVectorizer
保留的词汇。一种可能的方法是使用 ML 管道(您可以查看我对 的回答以获得详细解释)。
使用您拥有的转换器,您可以定义 Pipeline
和 fit
PipelineModel
:
model <- ml_pipeline(
ft_tokenizer(sc, "Summary", "tokenized"),
ft_stop_words_remover(sc, input.col = "tokenized",
output.col = "clean_words",
ml_default_stop_words(sc, language = "english")),
ft_count_vectorizer(sc, input_col = "clean_words",
output_col = "tff eatures"),
ft_idf(sc, input_col = "tffeatures",output_col = "tfidffeatures")
) %>% ml_fit(cleantext)
然后检索CountVectorizerModel
并提取词汇:
vocabulary <- ml_stage(model, "count_vectorizer")$vocabulary %>% unlist()
最后 transform
数据,应用 sdf_separate_column
和 select 感兴趣的列:
ml_transform(model, cleantext) %>%
sdf_separate_column("tfidffeatures", vocabulary) %>%
select(one_of(vocabulary))
必须使用 sparklyr 构建一个 Tf-idf matrix/dataframe 并将 terms/words 作为列名而不是索引。我选择 ft_count_vectorizer 是因为它提供了存储词汇的功能。但是在找到 tf-idf 后我被卡住了,我无法将这些术语映射到它的 tf-idf values.Any 帮助中 space 将是高度 appreciated.Here 是我试过了。
tf_idf<-cleantext %>%
ft_tokenizer("Summary", "tokenized") %>%
ft_stop_words_remover(input.col = "tokenized", output.col = "clean_words",
ml_default_stop_words(sc,language = ("english"))) %>%
ft_count_vectorizer(input_col = "clean_words",output_col="tffeatures")%>%
ft_idf(input_col="tffeatures",output_col="tfidffeatures")
tf-idf 是一个 spark_tbl class,其中还包括 clean_words(词汇)和 tfidf features.Both,这些功能以列表的形式出现。我需要提供 tfidf 功能作为输入,并使用 clean_words 作为列标题。最好的方法是什么。我被困在这里。任何协助或帮助将不胜感激。
虽然像这样的技术上可行的操作没有多少实际应用。 Apache Spark 未针对处理具有宽数据的执行计划进行优化,例如可能通过扩展向量化列生成的执行计划。
如果您仍然继续阅读,则必须提取 CountVectorizer
保留的词汇。一种可能的方法是使用 ML 管道(您可以查看我对
使用您拥有的转换器,您可以定义
Pipeline
和fit
PipelineModel
:model <- ml_pipeline( ft_tokenizer(sc, "Summary", "tokenized"), ft_stop_words_remover(sc, input.col = "tokenized", output.col = "clean_words", ml_default_stop_words(sc, language = "english")), ft_count_vectorizer(sc, input_col = "clean_words", output_col = "tff eatures"), ft_idf(sc, input_col = "tffeatures",output_col = "tfidffeatures") ) %>% ml_fit(cleantext)
然后检索
CountVectorizerModel
并提取词汇:vocabulary <- ml_stage(model, "count_vectorizer")$vocabulary %>% unlist()
最后
transform
数据,应用sdf_separate_column
和 select 感兴趣的列:ml_transform(model, cleantext) %>% sdf_separate_column("tfidffeatures", vocabulary) %>% select(one_of(vocabulary))