From 5046f2bbe5259590f5708358cddbe415351211d4 Mon Sep 17 00:00:00 2001 From: vysitor Date: Mon, 17 Mar 2025 20:26:18 +0100 Subject: [PATCH] Front End - NLP - work in progress --- .DS_Store | Bin 0 -> 6148 bytes src/.DS_Store | Bin 0 -> 6148 bytes src/main/.DS_Store | Bin 0 -> 6148 bytes src/main/java/.DS_Store | Bin 0 -> 6148 bytes src/main/java/org/.DS_Store | Bin 0 -> 6148 bytes src/main/java/org/texttechnologylab/.DS_Store | Bin 0 -> 6148 bytes .../org/texttechnologylab/project/.DS_Store | Bin 0 -> 6148 bytes .../project/gruppe_05_1/.DS_Store | Bin 0 -> 8196 bytes .../project/gruppe_05_1/database/.DS_Store | Bin 0 -> 6148 bytes .../gruppe_05_1/database/MongoPprUtils.java | 10 ++++ .../gruppe_05_1/database/domainimp/.DS_Store | Bin 0 -> 6148 bytes .../project/gruppe_05_1/domain/.DS_Store | Bin 0 -> 6148 bytes .../gruppe_05_1/domain/html/HtmlSpeech.java | 44 +++++++++++++- .../gruppe_05_1/domain/nlp/NlpInfo.java | 32 +++++++--- .../project/gruppe_05_1/domain/nlp/Topic.java | 56 +++++++++++++++--- .../gruppe_05_1/rest/SpeechController.java | 11 ++++ .../templates/namedEntitiesSunburstChart.ftl | 0 .../gruppe_05_1/website/templates/nlp.ftl | 35 +++++++++++ .../website/templates/posBarChart.ftl | 0 .../templates/sentimentsRadarChart.ftl | 0 .../gruppe_05_1/website/templates/speech.ftl | 18 ++++-- .../website/templates/topicsBubbleChart.ftl | 0 src/main/resources/.DS_Store | Bin 0 -> 6148 bytes 23 files changed, 185 insertions(+), 21 deletions(-) create mode 100644 .DS_Store create mode 100644 src/.DS_Store create mode 100644 src/main/.DS_Store create mode 100644 src/main/java/.DS_Store create mode 100644 src/main/java/org/.DS_Store create mode 100644 src/main/java/org/texttechnologylab/.DS_Store create mode 100644 src/main/java/org/texttechnologylab/project/.DS_Store create mode 100644 src/main/java/org/texttechnologylab/project/gruppe_05_1/.DS_Store create mode 100644 src/main/java/org/texttechnologylab/project/gruppe_05_1/database/.DS_Store create mode 100644 src/main/java/org/texttechnologylab/project/gruppe_05_1/database/domainimp/.DS_Store create mode 100644 src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/.DS_Store create mode 100644 src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/namedEntitiesSunburstChart.ftl create mode 100644 src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/nlp.ftl create mode 100644 src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/posBarChart.ftl create mode 100644 src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/sentimentsRadarChart.ftl create mode 100644 src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/topicsBubbleChart.ftl create mode 100644 src/main/resources/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..149065c28033339f89a1ed78017b5d8c6c78a541 GIT binary patch literal 6148 zcmeHKJxc>Y5S=w=3`!t{h2@pn2x&#g8Dgmj!AcPGAu*76L1QBb*ZDV6`6Db;5G*YH z_ytxL{sr;P?&9rwiKPUYf!%jEvvcp}h1yFlADKCRN!ZhBE2!hjv|L zF)?V;Noi(0$1*E>LQ$F>{!lL`6&aLS6c7b`1#;%L#QlGB^7-FSk~>jA6!=#PsGwG_ zRZ)`dt(oGu*M=Ae7;L;QF{o28*>})bNS8ANOE}CMO0>B z_nV!+z5C#HZ-|H&&+9qSl!zu6f-K62hxXmKx1wUO)8hZluU>HOaFFYU!S~ z)Ez#5xV^eO^tF9et(txX8_3A#uW#?yL;w0)|L$?mP1r7xy5IMue(IXO+rS1MU7P`D zz!`7`oPnbr;;6fLac968_=^n4`4BM#lVMgYM+c_T0ssTdMW9PBAvw`78D>Rz zAgrlCO=W8_SkqyT7MBdOqNWpD^TD?BXY;~kchrw1oH!}^>{20ogpICUr&2PT_TF0jGY)wi?E-yA)R31JjG+=vtBl_#j+78 zhTqBn@13Sw8qtPEwf)mir&V8J({!BMF>KMx=kepi^V?*Ko}4Pb`0?OV4#diz|x~TI?%Wh0H|Shf^8#F5mxG z-`D^3BzY1Bgn@s>fYND}_VG&LZf(3A-?auhgtBm4>2a5Wj=PEx%UAI^)Cuf{JHRAh S=@Ax){0KN2q!9*wlz}e^yjE5K literal 0 HcmV?d00001 diff --git a/src/main/java/.DS_Store b/src/main/java/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5d85c268997d6344b213773b6d4f4f3d5d433a6c GIT binary patch literal 6148 zcmeHKOHRWu5FNLXNMTd4V(BaN2B8Wk$c|Oj76qg4vVTqLQvV z(Q5dQ4Dh=+f-?~EUG2^@%zL1a&F;s9g!SIF1ebJtb%yJ6k^o)DDqb04WrLO1ghX2Tb z?A-;)zCB^w-@gWXSkp5#bW2rJ&&p-D*`^e-*URIgHeFFvO;^DiA5c7dd3(P;HgfgL z$nARXO(zR1cT9ed<*seIwuU#pWEW?^8E^&$&VZeCFGHG&cM$Zkn#2pB0C{RP$S`5~3*n|1yhEY+&iLLoyTbZpx;j}uQ zACfz9uIQsP;0zoxaH5w}ssA_M_y31Me&q}}1A}6Kv!X2KNXcqzFFC2T0lI*Sh+kCv k48bIoV)#lazJex!J;(%@8%9M~ApRqeXz;-q_)`Wx0FFRM*Z=?k literal 0 HcmV?d00001 diff --git a/src/main/java/org/texttechnologylab/.DS_Store b/src/main/java/org/texttechnologylab/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..deb3b5ddf6a35ebe6efe3695bc1b7d3733f58b30 GIT binary patch literal 6148 zcmeHK%}N6?5T4O3t#~P(ddw^I4PsfJU|*oLm5OYerKsmTitpjUo6qGpnGsyO2caNR zW+3?{nV)1o*d#+lym;QsiKav}K@((A21KR@O&8`o0&>Z5PiuN=xASJ51`_?pDcSp& zIyz9INBXw^U01eSz1{4B?+O&cN#N_eo`^W8&*X9>q-Gi`Yt6eRT=I4H1n!~8;u!dtkm|rx^iW*LA#RuEUU&RZT)sa6GcjBn%y))np^clF+ z;Z*MbJNz<(MSefTN6vsVaApi}RX6nlA7yvz(dWrs8_y1L z6PTkwms&z{f?;mhDZ&F`O$BNyTZzG%4tub;+^|#BbYd$$*q;1eyl{Lv<_|HPI9K%E z8E^*r3`}%5ll%V)f0@A|zn|hGXTTZwXAE#sl*JsIvb*)m_T;V&XbUtEiR(mxK<|A7 jU?AtnS#+vDh>p12uv3&-#2(Xu{vi+v@y;3e1qR*#RNFay literal 0 HcmV?d00001 diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/.DS_Store b/src/main/java/org/texttechnologylab/project/gruppe_05_1/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e768681cc95ac274585453950e355b1e3a823f2a GIT binary patch literal 8196 zcmeHMJ#Q015S@(=VnLHKRk#$0f(A=Sv`6GnBU~T~q+mNrEZzC6H~}OIw%`ZQ@CWFq zpn?vBkW$i6Q-B0YL6IK-O5V;c>s{ZSpn)JUEA771&CI@c&-b-wB2sI6!w%6h5w+0` zE}g|t(@fm-N?UMyR)GrjM18tLQ`*e8I=xD^><|aU0dYVa5C_D8f58DfvrTI^Jojx> zMsYwK_%9tW_lFeSVCGO;bSL^eJzm+%H?({sTy|^p7?)G-Zc{$z!kGTz;hVGII=pND7 zd~@*i>io6&c&PXG@cq#Tt2dgXC}&!ma$=pAKtpF}lkU?1;{+~_plM9gNDrO*)RY(M zx^-jm+0(b|W9^)wzF*}=Iw1_L1zkB!Vr38ZXOU3LxuY)+6YG(y3)!pDnD4RSOK1n4 zOldb}y!<_kg`6v|{CVVSL)N-@%zNGP?(y%C$Gnd|GOvq;yz3iZe;#W>K0Z4aJ|DCP zhp+i}@$s1Vh2dSKdpO=cj(7xq{tD*LNV@R6nh|Os(oe3uVUD?ZLI;|&Vm<7C3uk3P zb1wY22^}sH@?Sjk$LOOo2ddGCZ$V>HZn!R&%my%Zm^suI5kZsZKieRKIB;SPv@G+o zS^uv$fB!!*eL^e_hy#D#0hM%n-8JyoM{||XypE^n8|bE)JZ+InFz_2YkeA~?|A!&A ZQ>2=j%%Qf3J!tYGz&6Mr4*XRIjsf-?7JC2y literal 0 HcmV?d00001 diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/.DS_Store b/src/main/java/org/texttechnologylab/project/gruppe_05_1/database/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0185c2548c4ceca15d25cd08b3bb698708121b02 GIT binary patch literal 6148 zcmeHKu};G<5IvV7rLc5lLY9~j>da!Q@C6xJpj2urC2@oVEBPA!0Twm}zJ-k+;GNG3 zsgejLRG~ZR{G9Wh<9m+m91)rM{c=V$C87k%IGUj85gupl$S7Jk&V)HORMLhDs`6FG zTMfI&0Po#|mgKQ(H`u#o|7O{(FDhB`@ngSN;nQ@H`vpdm{mwC!V%G{UymEp^ygKh?t=d1QiXHP?Z?JQ2u-TT!`$f9@7!hh%SlW$KZSb~Z& zpbRJjJHP;+oRH*DP+Mg{8Bhiq2KaoiP(~NA77RxRnot4&$1n#$pKA$@u@POwS`Z@; zBcVVEHL=7n5)QkKelB7yDB)yc@nPbdO{`E%csu5|!JUi~)K(c#2DTa4lgBCF|Cht{ z|8|f*DFe#Dzhc0Q(=44MrFge?lH{kmmA?Spw7`}WJA3=k_Zn*<=5oJ5S@V_t&}Du6>?3t7eFRjPOw6vMENKwlI)5ITJ{87f^#4`?n2E4c;gv9 ztGG&mP&6ai&z_Gx`=qr!M8xC!SxGb^q5@5jWsnh3XH7@ud;;XO#*~&cr|oJ{)|rL= zqe^lwXiF{fp3|@Vr_H+6gwGyxKI^8cCaY#5w)30#^!)mEnfIH0`@Mf$4=-Nwe(kcX zfA&mU@8tDR-)&aSW`TXcw~I623^)VMfHSZc19pcL!@Z(C$Qf`34w(Tt9|D?SH0%`9 z(Sa_N0Kfs%NiddLLSlkpH0%^%fv|=GHI%KyU=4>pm|ryP6g8aKiVwD(zls-5yJP*3 z+=-*2_s)Pb&}ZOSrz5%lukg!ci~N3w&zu2g;J_H*K~+~{e3ad-JD(?aZ9uz46A`~o o1`v#Uj{r>M963!!wFeo)FB*1=vWnb%7 literal 0 HcmV?d00001 diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/.DS_Store b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b62441a72f4f993368cef279aec6f655c84ce555 GIT binary patch literal 6148 zcmeHKy-veG4EB)-0xTWb$P=LU4MLSJNJvP1fzltf5)G*+?Ae)Ec!SFvpdfbP~|6~AX zHcPbcP^~hc3@8ID26%snp^S-O;m~d!F!l-n3^8p5WB#S!oLDdsEF8iEF)kJ8QjJ_O zj7!ISEOCio;n1a%k;{jX%0_M|##YDru?;7aI8>_)C<8tNfqQK5`QNF(|NBY$qzotn ze~JMUrrorSSCX@}@^XCE#?T&=h2si`HU&nGV>{rZ_yB4JzL*EVM6hs(8HoM}SQ^wQ I13${Z2PWl*O8@`> literal 0 HcmV?d00001 diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/HtmlSpeech.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/HtmlSpeech.java index 3b4080e..1e61039 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/HtmlSpeech.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/html/HtmlSpeech.java @@ -2,6 +2,8 @@ package org.texttechnologylab.project.gruppe_05_1.domain.html; import org.bson.Document; import org.texttechnologylab.project.gruppe_05_1.database.MongoDBHandler; +import org.texttechnologylab.project.gruppe_05_1.domain.nlp.NlpInfo; +import org.texttechnologylab.project.gruppe_05_1.domain.nlp.Topic; import java.util.ArrayList; import java.util.List; @@ -13,6 +15,7 @@ public class HtmlSpeech { String speakerName; String fraction; List content = new ArrayList<>(); + NlpInfo nlp = null; public HtmlSpeech() { } @@ -30,6 +33,32 @@ public class HtmlSpeech { addContent(new SpeechContent(contentDoc)); } } + + Document nlpDoc = (Document) doc.get("analysisResults"); + nlp = readNlpInfo(nlpDoc); + } + + private NlpInfo readNlpInfo(Document nlpDoc) { + if (nlpDoc == null) return null; + NlpInfo nlp = new NlpInfo(); + + // TODO: HERE + List tokensDocs = nlpDoc.get("tokens", MongoDBHandler.DOC_LIST_CLASS); + + List sentencesDocs = nlpDoc.get("sentences", MongoDBHandler.DOC_LIST_CLASS); + + List dependenciesDocs = nlpDoc.get("dependencies", MongoDBHandler.DOC_LIST_CLASS); + + List namedEntitiesDocs = nlpDoc.get("namedEntities", MongoDBHandler.DOC_LIST_CLASS); + + List sentimentsDocs = nlpDoc.get("sentiments", MongoDBHandler.DOC_LIST_CLASS); + + List topicsDocs = nlpDoc.get("topics", MongoDBHandler.DOC_LIST_CLASS); + nlp.setTopics(Topic.readTopicsFromMongo(topicsDocs)); + + // TODO: Video + + return nlp; } public String getSpeechKey() { @@ -68,16 +97,26 @@ public class HtmlSpeech { content.add(contentLine); } + public NlpInfo getNlp() { + return nlp; + } + + public void setNlp(NlpInfo nlp) { + this.nlp = nlp; + } + @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof HtmlSpeech that)) return false; - return Objects.equals(speechKey, that.speechKey) && Objects.equals(speakerName, that.speakerName) && Objects.equals(fraction, that.fraction) && Objects.equals(content, that.content); + return Objects.equals(speechKey, that.speechKey) && Objects.equals(speakerName, that.speakerName) + && Objects.equals(fraction, that.fraction) && Objects.equals(content, that.content) + && Objects.equals(nlp, that.nlp); } @Override public int hashCode() { - return Objects.hash(speechKey, speakerName, fraction, content); + return Objects.hash(speechKey, speakerName, fraction, content, nlp); } @Override @@ -87,6 +126,7 @@ public class HtmlSpeech { .add("speakerName='" + speakerName + "'") .add("fraction='" + fraction + "'") .add("content=" + content) + .add("nlp=" + nlp) .toString(); } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/NlpInfo.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/NlpInfo.java index 442bca8..de7ecd5 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/NlpInfo.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/NlpInfo.java @@ -1,7 +1,9 @@ package org.texttechnologylab.project.gruppe_05_1.domain.nlp; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.StringJoiner; public class NlpInfo { List tokens; @@ -10,7 +12,7 @@ public class NlpInfo { List namedEntities; Sentiment overallSentiment; // Sentiment for the whole text ; kann null sein! List sentiments; // sentiments for the respective sentences (eine Liste von 0..n Elementen) - List topic; + List topics; List posList; VideoInformation videoInformation; @@ -63,12 +65,12 @@ public class NlpInfo { this.sentiments = sentiments; } - public List getTopic() { - return topic; + public List getTopics() { + return topics; } - public void setTopic(List topic) { - this.topic = topic; + public void setTopics(List topics) { + this.topics = topics; } public List getPosList() { @@ -94,12 +96,28 @@ public class NlpInfo { return Objects.equals(tokens, nlpInfo.tokens) && Objects.equals(sentences, nlpInfo.sentences) && Objects.equals(dependencies, nlpInfo.dependencies) && Objects.equals(namedEntities, nlpInfo.namedEntities) && Objects.equals(overallSentiment, nlpInfo.overallSentiment) && Objects.equals(sentiments, nlpInfo.sentiments) - && Objects.equals(topic, nlpInfo.topic) && Objects.equals(posList, nlpInfo.posList) + && Objects.equals(topics, nlpInfo.topics) && Objects.equals(posList, nlpInfo.posList) && Objects.equals(videoInformation, nlpInfo.videoInformation); } @Override public int hashCode() { - return Objects.hash(tokens, sentences, dependencies, namedEntities, overallSentiment, sentiments, topic, posList, videoInformation); + return Objects.hash(tokens, sentences, dependencies, namedEntities, overallSentiment, sentiments, topics, posList, videoInformation); } + + @Override + public String toString() { + return new StringJoiner(", ", NlpInfo.class.getSimpleName() + "[", "]") + .add("tokens=" + tokens) + .add("sentences=" + sentences) + .add("dependencies=" + dependencies) + .add("namedEntities=" + namedEntities) + .add("overallSentiment=" + overallSentiment) + .add("sentiments=" + sentiments) + .add("topics=" + topics) + .add("posList=" + posList) + .add("videoInformation=" + videoInformation) + .toString(); + } + } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Topic.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Topic.java index 3a363e4..474f5aa 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Topic.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/domain/nlp/Topic.java @@ -1,18 +1,19 @@ package org.texttechnologylab.project.gruppe_05_1.domain.nlp; -import java.util.Objects; -import java.util.StringJoiner; +import org.bson.Document; + +import java.util.*; +import java.util.stream.Collectors; public class Topic { String topic; - double score; - // tags TODO + Double score; String text; public Topic() { } - public Topic(String topic, double score, String text) { + public Topic(String topic, Double score, String text) { this.topic = topic; this.score = score; this.text = text; @@ -26,11 +27,11 @@ public class Topic { this.topic = topic; } - public double getScore() { + public Double getScore() { return score; } - public void setScore(double score) { + public void setScore(Double score) { this.score = score; } @@ -62,4 +63,45 @@ public class Topic { .add("text='" + text + "'") .toString(); } + + + /** + * Die Topics-Dokumente (Speech --> analysisResults --> topics) aus der MongoDB lesen + * @param topicsDocs Eine Liste von Mongo-Dokumenten + * @return Eine Liste der Topics + */ + public static List readTopicsFromMongo(List topicsDocs) { + List topics = new ArrayList<>(); + for (Document doc : topicsDocs) { + topics.add(new Topic(doc.getString("topic"), + doc.getDouble("score"), + doc.getString("text") + )); + } + return topics; + } + + + /** + * Topic-Informationen "verdichten": + * Ausgangssituation: eine Liste mit mehreren Topics. Ein Topic kann in dieser Liste mehrfach vorkommen. + * Man will wissen, welche Score hat jeden Topic. Hier werden die Werte der jeweiligen Topics summiert. + * + * @param topicsList + * @return Map + */ + public static Map condenseTopicInformation(List topicsList) { + Map condensedTopicInfo = new HashMap<>(); + + for (Topic t : topicsList) { + Double oldValue = condensedTopicInfo.get(t.getTopic()); + if (oldValue != null) { + condensedTopicInfo.replace(t.getTopic(), oldValue + t.getScore()); + } else { + condensedTopicInfo.put(t.getTopic(), t.getScore()); + } + } + + return condensedTopicInfo; + } } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechController.java b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechController.java index df6e5cb..3d25851 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechController.java +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/rest/SpeechController.java @@ -5,12 +5,14 @@ import io.javalin.openapi.*; import org.texttechnologylab.project.gruppe_05_1.database.MongoPprUtils; import org.texttechnologylab.project.gruppe_05_1.domain.html.HtmlSpeech; import org.texttechnologylab.project.gruppe_05_1.domain.html.ParlamentarierDetails; +import org.texttechnologylab.project.gruppe_05_1.domain.nlp.Topic; import org.texttechnologylab.project.gruppe_05_1.domain.speech.SpeechMetaData; import org.texttechnologylab.project.gruppe_05_1.xml.speeches.Interfaces.Speech; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; public class SpeechController { /** @@ -68,6 +70,15 @@ public class SpeechController { HtmlSpeech speech = MongoPprUtils.getSpeechByKey(redeId); attributes.put("s", speech); + // NLP: Topic + if ((speech.getNlp() != null) && (speech.getNlp().getTopics() != null)) { + Map topics = Topic.condenseTopicInformation(speech.getNlp().getTopics()); // Daten "verdichten"... + speech.getNlp().setTopics( + topics.entrySet().stream() + .map(me -> new Topic(me.getKey(), me.getValue(), null)) + .collect(Collectors.toList())); + } + ctx.render("speech.ftl", attributes); } diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/namedEntitiesSunburstChart.ftl b/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/namedEntitiesSunburstChart.ftl new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/nlp.ftl b/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/nlp.ftl new file mode 100644 index 0000000..d5fc652 --- /dev/null +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/nlp.ftl @@ -0,0 +1,35 @@ + <#if s.nlp.topics??> +

Topics Information (als Bubble Chart)

+ <#assign condenseTopicInformation = s.nlp.topics> + <#include "topicsBubbleChart.ftl"> + <#else> +

Keine Topics Information für diese Rede verfügbar

+ + + + <#if s.nlp.posList??> +

POS Information (als Bar Chart)

+ <#assign posList = s.nlp.posList> + <#include "posBarChart.ftl"> + <#else> +

Keine POS Information verfügbar für diese Rede verfügbar

+ + + + <#if s.nlp.sentiments??> +

SentimentsInformation (als Radar Chart)

+ <#assign overallSentiment = s.nlp.overallSentiment> + <#assign sentiments = s.nlp.sentiments> + <#include "sentimentsRadarChart.ftl"> + <#else> +

Keine Sentiments Information für diese Rede verfügbar

+ + + + <#if s.nlp.namedEntities??> +

Named Entities Information (als Sunburst Chart)

+ <#assign nea = s.nlp.namedEntities> + <#include "namedEntitiesSunburstChart.ftl"> + <#else> +

Keine Named Entities Information für diese Rede verfügbar

+ \ No newline at end of file diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/posBarChart.ftl b/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/posBarChart.ftl new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/sentimentsRadarChart.ftl b/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/sentimentsRadarChart.ftl new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/speech.ftl b/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/speech.ftl index 8012ad4..9bf1058 100644 --- a/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/speech.ftl +++ b/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/speech.ftl @@ -22,11 +22,19 @@

Rede ${s.speechKey}

-
- <#list s.content as c> - <#include "speechContent.ftl"> - -
+ <#list s.content as c> + <#include "speechContent.ftl"> + + +

+ <#if s.nlp??> +

NLP Information

+ <#assign nlp = "${s.nlp}"> + <#include "nlp.ftl"> + <#else> +

Keine NLP Information verfügbar für diese Rede

+ +

diff --git a/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/topicsBubbleChart.ftl b/src/main/java/org/texttechnologylab/project/gruppe_05_1/website/templates/topicsBubbleChart.ftl new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/.DS_Store b/src/main/resources/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..41fcc308c2415c52420c2a9df433b8f2367e5231 GIT binary patch literal 6148 zcmeHKJ4*vW5dKz!1Z`4kcL*u$%nuMQ67kU(2sR30UM6Ca3yCQ##QR;Mm0)2dV&_k= zxAvReCArJPM-Y*)6K21?*_pkW@9uW90Mur$k^xcxl2pOOBAYQH5I>hhG!@fvVAJRZ%r z^xDriHb*qKNj~vBrEizg@uI+BlzRKJUfL`o^8+Z)C1$PM`V3^U6zJ zvo74TMUqPfUF#Td3^)e*49NQ6Q3ZXAp+UWLu+c{VVuEHZ?CUk1=!t>oTMP}-LQy7^ zXhM}eVki?%yJ!7;i=jai4yEtRdF-8)J)tOlciKJe4&@tktz*D35NBZCT&86I- zj|aIc$ADvCrWjC(Tp_o~lI-3(Qk?9y9`%GOB7UJk9m2+L$GRh1@iJ8l$2{o}eT$(% RS}5+1fTqDUj)6aA-~%1nzq0@U literal 0 HcmV?d00001