From 08e1d67b6ed4f7f745f81e8aae94c366b8182a0a Mon Sep 17 00:00:00 2001 From: Eike Cochu <eike@cochu.com> Date: Wed, 24 Feb 2016 22:10:39 +0100 Subject: [PATCH] fixed topic shorting, share fixed topic sorting on article show fixed topic share calculation --- .../src/main/java/de/vipra/cmd/lda/JGibbAnalyzer.java | 11 ++++++++--- .../main/java/de/vipra/cmd/option/ImportCommand.java | 6 ++++-- vipra-ui/app/html/articles/show.html | 8 ++++---- vipra-ui/app/js/controllers.js | 4 ++-- vipra-ui/app/less/app.less | 4 ++++ .../src/main/java/de/vipra/util/model/TopicRef.java | 2 +- 6 files changed, 23 insertions(+), 12 deletions(-) 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 c2d35fb7..d6b339ca 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 @@ -180,12 +180,13 @@ public class JGibbAnalyzer extends Analyzer { } // create list of topics refs referencing topics with counted - // occurrences + // occurrences, sum accepted topic word count + long reducedCount = 0; List<TopicRef> newTopicRefs = new ArrayList<>(); for (Entry<String, Integer> entry : countMap.entrySet()) { // check if topic above threshold - double topicShare = entry.getValue() / totalCount; - if (topicShare >= Constants.TOPIC_THRESHOLD) { + if ((entry.getValue() / totalCount) >= Constants.TOPIC_THRESHOLD) { + reducedCount += entry.getValue(); TopicRef ref = new TopicRef(); ref.setCount(entry.getValue()); ref.setTopic(newTopicsMap.get(Integer.parseInt(entry.getKey()))); @@ -193,6 +194,10 @@ public class JGibbAnalyzer extends Analyzer { } } + // calculate each accepted topic share + for (TopicRef ref : newTopicRefs) + ref.setShare((double) ref.getCount() / reducedCount); + if (!newTopicRefs.isEmpty()) { // update article with topic references (partial update) ArticleFull article = new ArticleFull(); diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/option/ImportCommand.java b/vipra-cmd/src/main/java/de/vipra/cmd/option/ImportCommand.java index 55163b1a..062bd93a 100644 --- a/vipra-cmd/src/main/java/de/vipra/cmd/option/ImportCommand.java +++ b/vipra-cmd/src/main/java/de/vipra/cmd/option/ImportCommand.java @@ -94,11 +94,13 @@ public class ImportCommand implements Command { buffer.add(article); // add article to filebase if long enough - if (processedText.getReducedWordCount() >= Constants.DOCUMENT_MIN_LENGTH) + boolean imported = false; + if ((imported = processedText.getReducedWordCount() >= Constants.DOCUMENT_MIN_LENGTH)) filebase.add(article); log.info("imported \"" + object.get("title") + "\"\r\n └ text reduction: " - + (processedText.getReductionRatio() * 100) + "%"); + + (processedText.getReductionRatio() * 100) + "%, text length: [" + processedText.getWordCount() + + " -> " + processedText.getReducedWordCount() + "]" + (imported ? "" : " SKIPPED")); } catch (ProcessorException e) { log.error("could not preprocess text of article '" + article.getTitle() + "'"); } catch (DatabaseException e) { diff --git a/vipra-ui/app/html/articles/show.html b/vipra-ui/app/html/articles/show.html index fe66fe1e..06d1e784 100644 --- a/vipra-ui/app/html/articles/show.html +++ b/vipra-ui/app/html/articles/show.html @@ -53,16 +53,16 @@ </div> </div> - <h3>Topics <span ng-bind-template="({{article.topics.length}})" ng-show="article.topics.length > 0"></span> <hide-link target="#topics"/></h3> + <h3>Topics <hide-link target="#topics"/></h3> <div class="row" id="topics"> <div class="col-md-5"> <table class="table table-morecondensed" ng-show="article.topics.length > 0"> <tr> - <th sort-by="topic.topic.name" sort-type="topicSort" sort-reverse="topicSortRev"> + <th sort-by="topic.name" sort-type="topicSort" sort-reverse="topicSortRev"> Name </th> - <th sort-by="topic.share" sort-type="topicSort" sort-reverse="topicSortRev"> + <th sort-by="share" sort-type="topicSort" sort-reverse="topicSortRev" class="topic-share"> Share </th> </tr> @@ -70,7 +70,7 @@ <td> <topic-link topic="topic.topic"/> </td> - <td class="text-right" ng-bind-template="{{topic.share}}%"></td> + <td class="text-right" ng-bind-template="{{(topic.share*100).toFixed(1)}}%"></td> </tr> </table> <span class="text-muted" ng-hide="article.topics.length > 0">No topics</span> diff --git a/vipra-ui/app/js/controllers.js b/vipra-ui/app/js/controllers.js index 71e13c62..6526e52e 100644 --- a/vipra-ui/app/js/controllers.js +++ b/vipra-ui/app/js/controllers.js @@ -288,8 +288,8 @@ app.controller('ArticlesShowController', ['$scope', '$stateParams', 'ArticleFactory', function($scope, $stateParams, ArticleFactory, testService) { - $scope.topicSort = $scope.topicSort || 'topic.share'; - $scope.topicSortRev = typeof $scope.topicSortRev === 'undefined' ? false : $scope.topicSortRev; + $scope.topicSort = $scope.topicSort || 'share'; + $scope.topicSortRev = typeof $scope.topicSortRev === 'undefined' ? true : $scope.topicSortRev; ArticleFactory.get({id: $stateParams.id}, function(data) { $scope.article = data; diff --git a/vipra-ui/app/less/app.less b/vipra-ui/app/less/app.less index e48007ed..1fe52571 100644 --- a/vipra-ui/app/less/app.less +++ b/vipra-ui/app/less/app.less @@ -249,6 +249,10 @@ ul.dashed { margin-bottom: 0; } +.topic-share { + width: 75px; +} + revolve-select, [revolve-select] { .noselect; cursor: pointer; diff --git a/vipra-util/src/main/java/de/vipra/util/model/TopicRef.java b/vipra-util/src/main/java/de/vipra/util/model/TopicRef.java index 3277e56e..4cf31122 100644 --- a/vipra-util/src/main/java/de/vipra/util/model/TopicRef.java +++ b/vipra-util/src/main/java/de/vipra/util/model/TopicRef.java @@ -47,7 +47,7 @@ public class TopicRef implements Comparable<TopicRef>, Serializable { @Override public String toString() { - return TopicRef.class.getSimpleName() + "[topic: " + topic + ", count:" + count + "]"; + return TopicRef.class.getSimpleName() + "[topic: " + topic + ", count:" + count + ", share:" + share + "]"; } } -- GitLab