当前位置: 首页 > 知识库问答 >
问题:

用scala和Java开发LDA

娄弘
2023-03-14

目前,我尝试用Apache Spark和scala实现LDA算法:

    // Filter out stopwords
val stopwords: Array[String] = sc.textFile("data/english_stops_words.txt").collect()
val filteredTokens = new StopWordsRemover()
  .setStopWords(stopwords)
  .setCaseSensitive(false)
  .setInputCol("words")
  .setOutputCol("filtered")
  .transform(tokens)

// Limit to top `vocabSize` most common words and convert to word count vector features
val cvModel = new CountVectorizer()
  .setInputCol("filtered")
  .setOutputCol("features")
  .setVocabSize(vocabSize)
  .fit(filteredTokens)
val countVectors = cvModel.transform(filteredTokens)
  .select("docId", "features")
  .map { case Row(docId: Long, countVector: Vector) => (docId, countVector) }
  .cache()
        // Filter out stopwords
    List<String> stopwords = sc.textFile("data/english_stops_words.txt")
            .collect();
    DataFrame filteredTokens = new StopWordsRemover()
            .setStopWords(stopwords.toArray(new String[0]))
            .setCaseSensitive(false).setInputCol("words")
            .setOutputCol("filtered").transform(tokens);

    // Limit to top `vocabSize` most common words and convert to word count
    // vector features
    CountVectorizerModel cvModel = new CountVectorizer()
            .setInputCol("filtered").setOutputCol("features")
            .setVocabSize(vocabSize).fit(filteredTokens);

    JavaRDD<TextId> countVectors = cvModel.transform(filteredTokens)
              .select("docId", "features").toJavaRDD()
              .map(new Function<Row, TextId>() {

                private static final long serialVersionUID = 1L;

                @Override
                public TextId call(Row row) throws Exception {

                    return new TextId(row.get(0).toString(), Long.parseLong(row.get(1).toString()));
                }
            }).cache();
        JavaPairRDD<Long, Vector> countVectors = cvModel.transform(filteredTokens)
              .select("docId", "features").toJavaRDD()
              .mapToPair(new PairFunction<Row, Long, Vector>() {
                public Tuple2<Long, Vector> call(Row row) throws Exception {
                    return new Tuple2<Long, Vector>(Long.parseLong(row.getString(0)), Vectors.dense(row.getDouble(1)));
                }
            }).cache();

共有1个答案

郎正初
2023-03-14

可以使用MaptoPair方法创建JavaPairrdd

假设textid有一个字符串和一个long字段,代码可以如下所示:

JavaPairRDD<Long, Vector> countVectors = cvModel.transform(filteredTokens)
  .select("docId", "features").toJavaRDD()
  .mapToPair(new PairFunction<Row, Long, Vector>() {
    public Tuple2<Long, Vector> call(Row row) throws Exception {
        return new Tuple2<String, Long>(row.getAs[Long](0), row.getAs[Vector](1)));
    }
}).cache();
 类似资料:
  • 贴一个timeline 8.25 一面 25min 自我介绍,简单问了下项目 手撕 lc零钱兑换2 无八股 8.31 二面 35min 1. 算法:手撕快排,对算法的优化有哪些,在生产环境中可以有哪些改进 2. 慢sql的查询,深入问,explain查询哪些信息,profile查询什么,在生产环境中怎么界定是不是慢sql 3. 有没有用过rabbitMQ?在哪里用到的? 4. Spring MVC

  • 本文向大家介绍使用Python和PyQT进行Java GUI开发,包括了使用Python和PyQT进行Java GUI开发的使用技巧和注意事项,需要的朋友参考一下 编程是为计算机科学专业学生培养不同技能的基础。当同龄人发现自己对编程技巧充满信心时,他们想进一步努力。他们可能会选择不同的选项,例如Web开发,GUI编程,游戏开发,数据科学,人工智能,人机交互等。GUI开发被视为这些热门话题中的最热门

  • 一、Scala简介 1.1 概念 Scala 全称为 Scalable Language,即“可伸缩的语言”,之所以这样命名,是因为它的设计目标是希望伴随着用户的需求一起成长。Scala 是一门综合了面向对象和函数式编程概念的静态类型的编程语言,它运行在标准的 Java 平台上,可以与所有的 Java 类库无缝协作。 1.2 特点 1. Scala是面向对象的 Scala 是一种面向对象的语言,每

  • 课程内容涵盖了Java互操作性。 Javap 类 异常 特质 单例对象 闭包和函数 变化性 Javap javap的是JDK附带的一个工具。不是JRE,这里是有区别的。 javap反编译类定义,给你展示里面有什么。用法很简单 [local ~/projects/interop/target/scala_2.8.1/classes/com/twitter/interop]$ javap MyTrai

  • 不得不的说,这笔好操作,本来投递的是北京经纬,结果给我搞到下面的子公司! 1、自我介绍 2、Redis的底层问题。 3、Java的数据类型,其中几个所占的字节长度。 4、问项目,其中Kafka的使用情况以及场景。 其它问的也没啥,全程五六分钟,妥妥浪费时间。 #北京润科通用技术有限公司##Java开发#

  • 情况如下:我试图在PostgreSQL数据库中存储/检索Byte[]数组和BLOB。 其中'image'列的类型为BYTEA,IMG.BinaryStream的类型为InputStream。 我得到这个错误: 在我的构建中有以下依赖项。sbt: PS:...试图git克隆PGJDBC。它需要ant 1.4.1来构建。这个ant版本已经有8年了,在Apache基金会的网站上已经没有了。是不是有点诡异