我现在有一个巨大的csv文件。其中包含reddit post标题。我想为每个帖子创建一个特征向量。
假设post tile是 "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上做这一切。我被困在第一步,我如何将每一行转换成一个特征向量(我觉得它类似于字数计算,但我如何将它应用于每一行)。
我对这个问题的最初想法是:每一行(即每一篇文章的标题和类别)是文章的类别,值是标题的特征向量(即标题的字数)。
对于如何解决这个问题,我们非常感谢您的帮助。
2条答案
按热度按时间aiazj4mn1#
我使用两个map reduce函数解决了这个问题,并添加了索引,使每一行对进程都是唯一的。
第一个map的输出减少
其中索引和类别是值的键,即标题中的单词。
在第二个Map中,它的最终输出是这种格式的。
zvokhttg2#
回答您的第一部分:阅读hadoop中的csv linewise在本文中得到了回答post:stackoverflow:如何使用java高效地读取hadoop hdfs文件的第一行。只需将最后一行改为:
要创建特征向量,我将使用您提到的计数策略:
将每个类别的关键点设置为所创建的特征向量的想法听起来是合法的。虽然我对hadoop不太熟悉,但也许有人能指出更好的解决方案。