如何解析CSV文件以便Mahout进行分类

4
我正在尝试使用Mahout对CSV文件进行分类。我的理解是,首先需要将CSV中的数据转换为向量,然后才能由Mahout分类算法使用。我的CSV文件包含文本和类似词语的值以及多个类别。
我在此处搜索并找到一些关于如何做到这一点的模糊解释,但找不到任何示例。请问是否有人可以提供一个简单的例子来完成这个任务?或者是否有可用的实用程序可以为您执行此操作?
我原以为这将是一个非常常见的任务,但实际上找不到任何清晰的例子。
任何帮助都将不胜感激。

2
显然,CSVVectorIterator 迭代一个 CSV 文件并生成 org.apache.mahout.math.Vector - Kenneth Clark
1个回答

0

你有一些文本和类似单词的值,因此最好使用20个新闻组示例来获得灵感。这是一个很好的例子,你可以轻松地使用你的csv文件复制代码。

这里是mahout的最新版本与20个新闻组的工作链接:

https://github.com/jpatanooga/MahoutExamples/blob/master/src/main/java/com/cloudera/mahout/classification/sgd/TwentyNewsgroups.java

只需要对countWords方法进行一些适应,以适应TokenSream对象的更改,这里是一个使用Mahout最新版本的可工作代码:

private static void countWords(Analyzer analyzer, Collection<String> words, Reader in) throws IOException {

        // use the provided analyzer to tokenize the input stream
        TokenStream ts = analyzer.tokenStream("text", in);
        ts.addAttribute(CharTermAttribute.class);
        ts.reset();

        // for each word in the stream, minus non-word stuff, add word to collection
        while (ts.incrementToken()) {
            String s = ts.getAttribute(CharTermAttribute.class).toString();
            words.add(s);
        }
        ts.end();
        ts.close();

        /*overallCounts.addAll(words);*/
    } 

我希望这对你有所帮助。我使用了这个例子来适应CSV文件,并且它成功了。


谢谢您。只有一个问题,您使用了什么方法来读取CSV文件?是一些Mahout库,例如CSVVectorIterator吗?还是您编写了自己的CSV阅读器?谢谢。 - PepeFloyd
我更喜欢使用普通的csv读取器,逐行读取每个输入并将其添加到mahout向量中。我认为这不是最优化的解决方案,你可以尝试使用mahout库。 - razafinr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接