- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我尝试使用 spark 1.1.0 提供的新 TFIDF 算法。我正在用 Java 编写 MLLib 的工作,但我不知道如何让 TFIDF 实现工作。由于某种原因IDFModel只接受 JavaRDD作为方法的输入 transform而不是简单的 vector 。 我如何使用给定的类为我的 LabeldPoints 建模 TFIDF vector ?
注意:文档行的格式为 [Label;文]
到目前为止,这是我的代码:
// 1.) Load the documents
JavaRDD<String> data = sc.textFile("/home/johnny/data.data.new");
// 2.) Hash all documents
HashingTF tf = new HashingTF();
JavaRDD<Tuple2<Double, Vector>> tupleData = data.map(new Function<String, Tuple2<Double, Vector>>() {
@Override
public Tuple2<Double, Vector> call(String v1) throws Exception {
String[] data = v1.split(";");
List<String> myList = Arrays.asList(data[1].split(" "));
return new Tuple2<Double, Vector>(Double.parseDouble(data[0]), tf.transform(myList));
}
});
tupleData.cache();
// 3.) Create a flat RDD with all vectors
JavaRDD<Vector> hashedData = tupleData.map(new Function<Tuple2<Double,Vector>, Vector>() {
@Override
public Vector call(Tuple2<Double, Vector> v1) throws Exception {
return v1._2;
}
});
// 4.) Create a IDFModel out of our flat vector RDD
IDFModel idfModel = new IDF().fit(hashedData);
// 5.) Create Labledpoint RDD with TFIDF
???
解决方案 来自 Sean Owen:
// 1.) Load the documents
JavaRDD<String> data = sc.textFile("/home/johnny/data.data.new");
// 2.) Hash all documents
HashingTF tf = new HashingTF();
JavaRDD<LabeledPoint> tupleData = data.map(v1 -> {
String[] datas = v1.split(";");
List<String> myList = Arrays.asList(datas[1].split(" "));
return new LabeledPoint(Double.parseDouble(datas[0]), tf.transform(myList));
});
// 3.) Create a flat RDD with all vectors
JavaRDD<Vector> hashedData = tupleData.map(label -> label.features());
// 4.) Create a IDFModel out of our flat vector RDD
IDFModel idfModel = new IDF().fit(hashedData);
// 5.) Create tfidf RDD
JavaRDD<Vector> idf = idfModel.transform(hashedData);
// 6.) Create Labledpoint RDD
JavaRDD<LabeledPoint> idfTransformed = idf.zip(tupleData).map(t -> {
return new LabeledPoint(t._2.label(), t._1);
});
最佳答案
IDFModel.transform()
接受 JavaRDD
或 RDD
的 Vector
, 如你所见。在单个 Vector
上计算模型没有意义,所以这不是您要查找的内容,对吗?
我假设您正在使用 Java,所以您的意思是您想将其应用于 JavaRDD<LabeledPoint>
. LabeledPoint
包含 Vector
和一个标签。 IDF 不是分类器或回归器,因此不需要标签。你可以map
一堆 LabeledPoint
只提取他们的 Vector
.
但是你已经有了一个JavaRDD<Vector>
多于。 TF-IDF 只是一种根据语料库中的词频将词映射到实值特征的方法。它也不输出标签。也许你的意思是你想从 TF-IDF 派生的特征向量和你已有的一些其他标签开发一个分类器?
也许这会把事情弄清楚,但否则你必须非常清楚你试图用 TF-IDF 实现什么。
关于java - 用于 LogisticRegression 的 Spark MLLib TFIDF 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26897908/
我正在尝试获取文本与数组中包含的文本之间的余弦相似度。 我一直在研究这段代码: import numpy as np from sklearn.feature_extraction.text impo
我有以下 python 笔记本,旨在根据文本之间的相似性对不同的摘要组进行聚类。我这里有两种方法:一种是在链接函数中使用 tfidf numpy 文档数组,第二种是查找不同文档的 tfidf 数组之间
假设我有两个文本文件。文件 1 包含训练集,主要用于定义词汇表。文件 2 是用户输入的单词。 d1 = ( "Project 1 details on Machine learning", "Proj
我正在尝试依次使用多种信息检索技术。对于每一个,我希望以完全相同的方式对文本进行预处理。我的预处理文本以单词列表的形式提供。不幸的是 scikit-learns TfidfVectorizer 似乎只
我正在尝试使用 TFIDF 和 SVM 对某些文件进行文本分类。一次要选择 3 个单词的特征。我的数据文件已经采用以下格式:angel eyes has, each one for, on its o
我正在使用以下代码: pipeline = Pipeline([('vect', TfidfVectorizer( ngram_range=(1,2),
您好,我有一个词形还原文本,其格式如 lemma 所示。我想获得每个单词的 TfIdf 分数,这是我编写的函数: import numpy as np import pandas as pd from
我在网上找到了下面这段计算TFIDF的代码: https://github.com/timtrueman/tf-idf/blob/master/tf-idf.py 我在函数 def idf(word,
我有一个包含大约 800 万篇新闻文章的语料库,我需要将它们的 TFIDF 表示为稀疏矩阵。对于相对较少数量的样本,我已经能够使用 scikit-learn 做到这一点,但我相信它不能用于如此庞大的数
我正在实现一个分类工具,并正在试验各种 TF 版本:两个对数(对数调用内部/外部的校正)、归一化、增强和对数平均。显然,由这些调制的分类器精度存在显着差异——高达 5%。然而,奇怪的是,我无法提前说出
我计算了 TFIdf(词频,逆文档频率),我已经看到在这一步之后,有必要使用 LSI ,卡方检验等方法来减少我的矩阵的维数..., 我不知道如何在 Java 中实现卡方检验以降低矩阵 TFIDF 的维
我需要计算具有已计算的 TFIDF 分数的文档之间的余弦相似度。 通常我会使用(例如)TFIDFVectorizer这将创建一个文档/术语矩阵,并计算 TFIDF 分数。我无法应用此方法,因为它将重新
在实习项目中,我必须对大量文件(~18000)执行 tfidf 分析。我正在尝试使用 sklearn 中的 TFIDF 矢量器,但我面临以下问题:如何避免一次将所有文件加载到内存中?根据我在其他帖子上
我正在尝试引入 LightGBM 进行文本多分类。pandas 数据框中有 2 列,其中“类别”和“内容”设置如下。 数据框: contents category
所以我正在创建一个 python 类来计算文档中每个单词的 tfidf 权重。现在我的数据集中有 50 个文档。在这些文档中,许多单词相交,因此具有多个相同的单词特征但具有不同的 tfidf 权重。所
这可能是一个奇怪的问题,但我忍不住想知道。如果我说有三个文档: d1 =“我叫斯特凡。” d2 =“我叫大卫。” d3 =“你好,你好吗?” 如果我将所有这 3 个文档转换为 TFIDF 值向量,在向
我正在使用 scikit-learn 从“词袋”文本(在单个词上标记化的文本)中提取文本特征。为此,我使用了 TfidfVectorizer还可以减少非常频繁出现的单词(即:“a”、“the”等)的权
我想在文本文件中将此 tfidf 过程的结果打印为 (word, 2.333)。目前它首先打印所有单词,然后打印分数。我该怎么做?我还希望文件按 idf 值排序,以便将最重要的词放在最前面。 from
我有如下文件 1 NAME LASTNAME DOB CITY 2 NAME ADDRESS CITY 3 NAM
我正在尝试将 tfidf 向量化器拟合到某个文本语料库,然后使用相同的向量化器来查找新文本的 tfidf 值的总和。但是,总和值并不符合预期。下面是示例: text = ["I am new to p
我是一名优秀的程序员,十分优秀!