diff options
Diffstat (limited to 'app/src/main')
-rw-r--r-- | app/src/main/java/org/rssin/summaries/BablukiAPI.java | 46 |
1 files changed, 41 insertions, 5 deletions
diff --git a/app/src/main/java/org/rssin/summaries/BablukiAPI.java b/app/src/main/java/org/rssin/summaries/BablukiAPI.java index 782b54a..8d5a1af 100644 --- a/app/src/main/java/org/rssin/summaries/BablukiAPI.java +++ b/app/src/main/java/org/rssin/summaries/BablukiAPI.java @@ -5,10 +5,15 @@ */ package org.rssin.summaries; +import android.graphics.drawable.Drawable; +import android.text.Editable; import android.text.Html; import java.util.ArrayList; +import java.util.LinkedList; + import org.rssin.rss.FeedItem; +import org.xml.sax.XMLReader; /** * Java/SummaryAPI implementation of the Babluki summary tool. @@ -44,6 +49,8 @@ public class BablukiAPI implements SummaryAPIInterface{ String desc = f.getDescription(); if (stripHtml) desc = Html.fromHtml(desc).toString(); + + String title = f.getTitle(); String t = getSumText(desc,title); Summary s = new Summary(t); @@ -69,6 +76,9 @@ public class BablukiAPI implements SummaryAPIInterface{ */ private String getSumText(String content, String title) { + if (content.isEmpty()) + android.util.Log.d("No text to summarize", title); + SentenceScore[] ranks = getSentenceRanks(content); String[] paragraphs = splitIntoParagraphs(content); @@ -86,6 +96,8 @@ public class BablukiAPI implements SummaryAPIInterface{ sents.add(sentence); } } + + int senc = sents.size(); //reduce if neccesairy @@ -107,7 +119,16 @@ public class BablukiAPI implements SummaryAPIInterface{ o += sep; } } - + + if (o.isEmpty()) { + if (senc == 0) + android.util.Log.d("Empty summary", "No sentences could be found: " + title); + else if (sents.size() == 0) + android.util.Log.d("Empty summary", "None of the found sentences fits the summary limit: " + title); + else + android.util.Log.d("Empty summary", "all sentences are empty: " + title); + return title; + } return o; } @@ -163,21 +184,37 @@ public class BablukiAPI implements SummaryAPIInterface{ private String[] splitIntoSentences(String content) { + //ik word gek + String ends = "qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM"; + //String ends = "a"; content = content.replaceAll("\n", " "); String[] ss = content.split("(\\.|!) +"); - for(String s: ss) - s=s.trim(); + for(int i=0; i<ss.length; i++) { + String s = ss[i].trim(); + while (s.length() > 0) { + if (ends.indexOf(s.charAt(s.length()-1)) < 0) + s = s.substring(0, s.length() - 1); + else + break; + } + ss[i] = s; + } return ss; } private String[] splitIntoParagraphs(String content) { - return content.split("\n *\n"); + String[] ss = content.split("\n *\n"); + if (ss.length > 1) return ss; + return content.split("\n"); } private double sentenceIntersection(String sent1, String sent2) { + sent1 = sent1.trim(); + sent2 = sent2.trim(); + String[] s1 = sent1.split(" "); String[] s2 = sent2.split(" "); @@ -200,7 +237,6 @@ public class BablukiAPI implements SummaryAPIInterface{ } return ints; - } private String formatSentence(String sentence) |