diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/lda/DTMAnalyzer.java b/vipra-cmd/src/main/java/de/vipra/cmd/lda/DTMAnalyzer.java index 57c51a0dd21682441b35e4a6c98514b4484ee2bb..54d2a8b82ab9fc171cb9551f826da8dd19501242 100644 --- a/vipra-cmd/src/main/java/de/vipra/cmd/lda/DTMAnalyzer.java +++ b/vipra-cmd/src/main/java/de/vipra/cmd/lda/DTMAnalyzer.java @@ -10,6 +10,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import de.vipra.cmd.ex.AnalyzerException; +import de.vipra.cmd.file.DTMVocabulary; import de.vipra.util.Config; import de.vipra.util.Constants; import de.vipra.util.ConvertStream; @@ -108,13 +109,23 @@ public class DTMAnalyzer extends Analyzer { @Override public ConvertStream<TopicFull> getTopicDefinitions() throws AnalyzerException { - // TODO Auto-generated method stub + DTMVocabulary vocab; + try { + vocab = new DTMVocabulary(modelDir, false); + } catch (IOException e) { + throw new AnalyzerException(e); + } return null; } @Override public ConvertStream<List<TopicRef>> getTopics() throws AnalyzerException { - // TODO Auto-generated method stub + DTMVocabulary vocab; + try { + vocab = new DTMVocabulary(modelDir, false); + } catch (IOException e) { + throw new AnalyzerException(e); + } return null; } diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/lda/JGibbAnalyzer.java b/vipra-cmd/src/main/java/de/vipra/cmd/lda/JGibbAnalyzer.java index 1c4843f487cadc08c4eb194fc344e55e40305598..65d021a34b255bda3f08155be05838fb7bae48e0 100644 --- a/vipra-cmd/src/main/java/de/vipra/cmd/lda/JGibbAnalyzer.java +++ b/vipra-cmd/src/main/java/de/vipra/cmd/lda/JGibbAnalyzer.java @@ -98,10 +98,14 @@ public class JGibbAnalyzer extends Analyzer { } // get all lines that follow until the next topic is - // discovered (line does not start with a tab) + // discovered (line does not start with a tab). Cut off + // after k words are gathered. String nextLine; + int words = 0; while ((nextLine = nextLine()) != null) { if (nextLine.startsWith("\t")) { + if (words > Constants.K_TOPIC_WORDS) + continue; String[] parts = nextLine.trim().split("\\s+"); try { Word word = wordMap.get(parts[0]); @@ -109,6 +113,7 @@ public class JGibbAnalyzer extends Analyzer { Constants.LIKELINESS_PRECISION); TopicWord topicWord = new TopicWord(word, likeliness); topicWords.add(topicWord); + words++; } catch (NumberFormatException e) { log.error("could not parse number in line: " + nextLine); } catch (ArrayIndexOutOfBoundsException e) { diff --git a/vipra-cmd/src/main/resources/config.properties b/vipra-cmd/src/main/resources/config.properties index 0e38e80b1c6f0884f2a8e30b5de9fd4ec95999ff..ca312cfdab39ca456a9fd539ec23088496d59dac 100644 --- a/vipra-cmd/src/main/resources/config.properties +++ b/vipra-cmd/src/main/resources/config.properties @@ -2,6 +2,6 @@ db.host=localhost db.port=27017 db.name=test tm.processor=corenlp -tm.analyzer=dtm +tm.analyzer=jgibb tm.saveallwords=false tm.dtmpath=/home/eike/Downloads/dtm_release/dtm/main \ No newline at end of file diff --git a/vipra-rest/src/main/java/de/vipra/rest/resource/TopicResource.java b/vipra-rest/src/main/java/de/vipra/rest/resource/TopicResource.java index 7288668ba635b5b6178b19b7ca248f44c741734b..4383bd44a4680f9841f03a1274b87e34e0d3c916 100644 --- a/vipra-rest/src/main/java/de/vipra/rest/resource/TopicResource.java +++ b/vipra-rest/src/main/java/de/vipra/rest/resource/TopicResource.java @@ -32,6 +32,7 @@ import de.vipra.util.StringUtils; import de.vipra.util.ex.ConfigException; import de.vipra.util.ex.DatabaseException; import de.vipra.util.model.ArticleFull; +import de.vipra.util.model.Topic; import de.vipra.util.model.TopicFull; import de.vipra.util.service.MongoService; import de.vipra.util.service.Service.QueryBuilder; @@ -109,9 +110,6 @@ public class TopicResource { } if (topic != null) { - List<ArticleFull> articles = dbArticles.getMultiple(QueryBuilder.builder().criteria("topics.topic", topic)); - topic.setArticles(articles); - return res.ok(topic); } else { res.addError(new APIError(Response.Status.NOT_FOUND, "Resource not found", @@ -120,6 +118,24 @@ public class TopicResource { } } + @GET + @Produces(MediaType.APPLICATION_JSON) + @Consumes(MediaType.APPLICATION_JSON) + @Path("{id}/articles") + public Response getArticles(@PathParam("id") String id, @QueryParam("fields") String fields) { + Wrapper<List<ArticleFull>> res = new Wrapper<>(); + try { + Topic topic = new Topic(MongoUtils.objectId(id)); + List<ArticleFull> articles = dbArticles.getMultiple( + QueryBuilder.builder().criteria("topics.topic", topic).fields(true, StringUtils.getFields(fields))); + return res.ok(articles); + } catch (Exception e) { + e.printStackTrace(); + res.addError(new APIError(Response.Status.BAD_REQUEST, "Error", e.getMessage())); + return res.badRequest(); + } + } + @PUT @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) diff --git a/vipra-ui/app/html/topics/show.html b/vipra-ui/app/html/topics/show.html index 566856a5f93a3ecdc9b2356dfc324763d94270be..9ca80d168a892da0382fc54057687b90acad97bb 100644 --- a/vipra-ui/app/html/topics/show.html +++ b/vipra-ui/app/html/topics/show.html @@ -27,14 +27,6 @@ </tbody> </table> -<h3>Articles <hide-link target="#articles"/></h3> - -<ul class="dashed"> - <li ng-repeat="article in ::topic.articles"> - <article-link article="article"/> - </li> -</ul> - <h3>Words <hide-link target="#words"/></h3> <table class="table table-bordered table-condensed" id="words">