gpt4 book ai didi

java - 每行的词袋

转载 作者:可可西里 更新时间:2023-11-01 16:47:48 26 4
gpt4 key购买 nike

我目前有一个巨大的 csv 文件。其中包含 reddit 帖子标题。我想为每个帖子创建一个特征向量。

假设帖子图 block 是“to be or not to be”,它属于“some_category”。csv 文件采用以下格式。

"some_category1", "some title1"

"some_category2", "some title2"

"some_category1", "some title3"

我想创建一个特征向量,如下所示。

"some_category" : to(2) be(2) or(1) not(1).

我需要在 hadoop 上完成这一切。我卡在了第一步,如何将每一行转换为特征向量(我觉得它类似于字数统计,但我如何将它应用于每一行)。

我对这个问题的最初想法是每一行的关键(即每个帖子的标题和类别)是帖子的类别,值是标题的特征向量(即标题的字数)。

感谢任何有关如何解决此问题的帮助。

最佳答案

回答你的第一部分:Reading a csv linewise in Hadoop 已在这篇文章中得到解答:StackOverflow:how-to-read-first-line-in-hadoop-hdfs-file-efficiently-using-java .只需将最后一行更改为:

final Scanner sc = new Scanner(input);
while (sc.hastNextLine()) {
//doStuff with sc.nextLine()!
}

要创建特征向量,我会使用您提到的计数策略:

/**
* We will use Java8-Style to do that easily
* 0) Split each line by space separated (split("\\s")
* 1) Create a stream: Arrays.stream(Array)
* 2) Collect the input (.collect) and group it by every identical word (Function.identity) to the corresponding amount (Collectors.counting)
*
* @param title the right hand side after the comma
* @return a map mapping each word to its count
**/
private Map<String, Long> createFeatureVectorForTitle(String title) {
return Arrays.stream(title.split("\\s").collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
}

您将每个类别键控到创建的特征向量的想法听起来很合理。虽然我不太熟悉 Hadoop,但也许有人可以指出更好的解决方案。

关于java - 每行的词袋,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35426004/

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