Skip to content
Snippets Groups Projects
Commit 91c19849 authored by Ivan Condric's avatar Ivan Condric
Browse files

hoffentlich finaler push

parent 33fc9165
No related branches found
No related tags found
No related merge requests found
...@@ -24,7 +24,7 @@ public class Cleaner { ...@@ -24,7 +24,7 @@ public class Cleaner {
System.out.println(topLayerCleaned.length); System.out.println(topLayerCleaned.length);
writer.write("id; handle; text; is_retweet; original_author; time; in_reply_to_screen_name; retweet_count; favorite_count" + System.getProperty("line.separator")); writer.write("id; handle; text; is_retweet; original_author; time; in_reply_to_screen_name; retweet_count; favorite_count" + System.getProperty("line.separator"));
/** /**
* iteriere ueber die Elemente des Arrays * iteriere über die Elemente des Arrays
* jedes Element ist eine Zeile * jedes Element ist eine Zeile
*/ */
for(String line : topLayerCleaned) { for(String line : topLayerCleaned) {
...@@ -52,7 +52,7 @@ public class Cleaner { ...@@ -52,7 +52,7 @@ public class Cleaner {
/** /**
* initiiere reader * initiiere reader
* in unserem Fall nutzen wir einen CSVReader * in unserem Fall nutzen wir einen CSVReader
* der frei verfuegbaren opencsv-library, * der frei verfügbaren opencsv-library,
* was das Splitten der einzelnen Zeilen verinfacht, * was das Splitten der einzelnen Zeilen verinfacht,
* da CSVReader auch Angaben wie ";;" korrekt liest * da CSVReader auch Angaben wie ";;" korrekt liest
*/ */
...@@ -60,7 +60,7 @@ public class Cleaner { ...@@ -60,7 +60,7 @@ public class Cleaner {
reader = new CSVReader(bufferedReader, ';', '\"', '\\'); reader = new CSVReader(bufferedReader, ';', '\"', '\\');
/** /**
* ueberspringen der Bezeichner-Zeile * überspringen der Bezeichner-Zeile
*/ */
reader.readNext(); reader.readNext();
...@@ -74,16 +74,10 @@ public class Cleaner { ...@@ -74,16 +74,10 @@ public class Cleaner {
/** /**
* Iteriert ueber jede einzelne Zeile des CSV-files und * Iteriert über jede einzelne Zeile des CSV-files und
<<<<<<< HEAD * beurteilt, ob die relevanten Spalteneinträge korrekt sind.
* beurteilt, ob die relevanten Spalteneintraege korrekt sind. * Beinhaltet außerdem einen counter id, der zu jeder Tweet-
* Beinhaltet ausserdem einen counter id, der zu jeder Tweet- * Zeile hinzgefügt wird, um einen besseren Primärschlüssel zu haben
* Zeile hinzgefuegt wird, um einen besseren Primaerschluessel zu haben
=======
* beurteilt, ob die relevanten Spalteneintraege korrekt sind.
* Beinhaltet ausserdem einen counter id, der zu jeder Tweet-
* Zeile hinzgefuegt wird, um einen besseren Primaerschluessel zu haben
>>>>>>> 026c8d506e2fe3f7508be8129ff7c7d50c608900
*/ */
private String[] makeCleaned(CSVReader reader, String[] cleaned) throws IOException { private String[] makeCleaned(CSVReader reader, String[] cleaned) throws IOException {
String[] tweet; String[] tweet;
...@@ -98,13 +92,8 @@ public class Cleaner { ...@@ -98,13 +92,8 @@ public class Cleaner {
} }
/** /**
<<<<<<< HEAD * überprüft, ob das Handle tatsächlich einer der
* ueberprueft, ob das Handle tatsaechlich einer der * Präsidentschaftskandidaten ist
* Praesidentschaftskandidaten ist
=======
* ueberprueft, ob das Handle tatsaechlich einer der
* Praesidentschaftskandidaten ist
>>>>>>> 026c8d506e2fe3f7508be8129ff7c7d50c608900
*/ */
boolean validPolitician = false; boolean validPolitician = false;
...@@ -120,13 +109,13 @@ public class Cleaner { ...@@ -120,13 +109,13 @@ public class Cleaner {
/** /**
* entfernt Zeilenumbrueche aus den Texten * entfernt Zeilenumbrüche aus den Texten
*/ */
tweet[1] = splitFor(tweet[1], "\n"); tweet[1] = splitFor(tweet[1], "\n");
/** /**
* ueberprueft, ob is_retweet einen Boolean darstellt * überprüft, ob is_retweet einen Boolean darstellt
*/ */
boolean isRetweet = true; boolean isRetweet = true;
boolean validRetweet = false; boolean validRetweet = false;
...@@ -140,22 +129,18 @@ public class Cleaner { ...@@ -140,22 +129,18 @@ public class Cleaner {
} }
/** /**
<<<<<<< HEAD * überprüft, ob time einen tatsächlichen
* ueberprueft, ob time einen tatsaechlichen
=======
* ueberprueft, ob time einen tatsaechlichen
>>>>>>> 026c8d506e2fe3f7508be8129ff7c7d50c608900
* timestamp darstellt * timestamp darstellt
* Da alle Timestamps in der Form "yyyy-MM-ddT HH:mm:ss", * Da alle Timestamps in der Form "yyyy-MM-ddT HH:mm:ss",
* also mit einem T, das nicht geparset werden kann, gegeben sind, * also mit einem T, das nicht geparset werden kann, gegeben sind,
* splittet diese Methode den Timestamp nach dem T auf und fuegt ihn ohne * splittet diese Methode den Timestamp nach dem T auf und fügt ihn ohne
* das T wieder zusammen. * das T wieder zusammen.
*/ */
tweet[4] = splitFor(tweet[4], "T"); tweet[4] = splitFor(tweet[4], "T");
boolean validTP = isValidTimestamp(tweet[4]); boolean validTP = isValidTimestamp(tweet[4]);
/** /**
* ueberprueft, ob retweet_Count und favorite_Count * überprüft, ob retweet_Count und favorite_Count
* Integer darstellen * Integer darstellen
*/ */
boolean validRTCount = true; boolean validRTCount = true;
...@@ -188,8 +173,8 @@ public class Cleaner { ...@@ -188,8 +173,8 @@ public class Cleaner {
} }
/** /**
* versucht den angegebenen String mit dem gewuenschten Format * versucht den angegebenen String mit dem gewünschten Format
* zu parsen. Bei Erfolg wird true, bei Fehler false zurueckgegeben * zu parsen. Bei Erfolg wird true, bei Fehler false zurückgegeben
*/ */
public boolean isValidTimestamp(String timeString) { public boolean isValidTimestamp(String timeString) {
SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
...@@ -203,7 +188,7 @@ public class Cleaner { ...@@ -203,7 +188,7 @@ public class Cleaner {
/** /**
* Diese Methode splittet den gegebenen String * Diese Methode splittet den gegebenen String
* nach dem "splitfor" auf und fuegt ihn ohne * nach dem "splitfor" auf und fügt ihn ohne
* das "splitfor" wieder zusammen. * das "splitfor" wieder zusammen.
*/ */
private String splitFor(String timeString, String splitfor) { private String splitFor(String timeString, String splitfor) {
...@@ -216,4 +201,4 @@ public class Cleaner { ...@@ -216,4 +201,4 @@ public class Cleaner {
return together; return together;
} }
} }
\ No newline at end of file
import java.util.ArrayList;
public class Converttweet{
String[] tweetToHashtag(String text){
// Zu Beginn werden zwei Wahrheitswerte initialisiert um die Sonderfaelle zu beruecksichtigen
boolean readedChar = false;
boolean inHashtag = false;
// und zwei Array Listen um die Hashtags zusammenzufuegen und in eine Ausgabeliste zu speichern
ArrayList<Character> hashtaglist = new ArrayList<Character>();
ArrayList<String> ausgabeliste = new ArrayList<String>();
// Mithilfe dieser Schleife gehen wir durch jedes Zeichen im Tweet
// Die Wahrheitswerte helfen uns zu ueberrpuefen wann wir nach lesen eines # ein neuen Hashtag zu einem eintrag in unsere Liste umwandeln koennen, dafuer gibt es naehmlich folgende Regeln:
// Vor einem # kommt entweder beliebig viele Sonderzeichen oder Leerzeichen und wenn nicht dann ist es der tweetanfang
// Nach einem # kommt mindestens 1 nicht Sonderzeichen und wenn ein Sonderzeichen kommt oder das tweetende dann ist der Hashtag beendet
// Sonderfall 1: nach einem # kommt ohne Sonderzeichen ein weiteres # dann ist es kein Hashtag mehr
// Sonderfall 2: nach einem # kommt kein nicht Sonderzeichen dann auch kein Hashtag
// Sonderzeichen :
char[] tweet = text.toCharArray();
for(int i = 0; i< tweet.length;i++)
{
if(readedChar){
if(tweet[i]==' '){
readedChar = false;
}
}else{
if(inHashtag){
if(tweet[i]=='#' ){
inHashtag = false;
hashtaglist.clear();
}
else if(tweet[i]==' ' || tweet[i]== '.' || tweet[i]=='!' || tweet[i]=='$' || tweet[i]=='%' || tweet[i]=='^' || tweet[i]=='&' || tweet[i]=='*' || tweet[i]=='+')
{
inHashtag = false;
String hashtag = "";
for(int j = 0; j < hashtaglist.size();j++){
hashtag = hashtag + hashtaglist.get(j);
}
ausgabeliste.add(hashtag);
hashtaglist.clear();
}
else
{
hashtaglist.add(tweet[i]);
}
}else{
//inHashtag == false
if (tweet[i] == '#'){
inHashtag = true;
hashtaglist.add(tweet[i]);
}else if(tweet[i]==' '|| tweet[i]== '.' || tweet[i]=='!' || tweet[i]=='$' || tweet[i]=='%' || tweet[i]=='^' || tweet[i]=='&' || tweet[i]=='*' || tweet[i]=='+')
{
}else{
// wenn kein Sonderzeichen gelesen wird
readedChar = true;
}
}
}
}
if(hashtaglist.size()>1) // wenn die Liste nicht leer ist ;
{
String hashtag = "";
for(int j = 0; j < hashtaglist.size();j++){
hashtag = hashtag + hashtaglist.get(j);
}
ausgabeliste.add(hashtag);
}
String[] ausgabe = new String[ausgabeliste.size()];
ausgabe = ausgabeliste.toArray(new String[0]);
return ausgabe;
}
public static void main(String[] args){
String tweetnr1 = " !#Hilla #covfefer#covfefey is s#covfefeo c#covfefeool i #covfefemust invite her to #covfefe$";
Converttweet CT = new Converttweet();
String[] Hashtags = CT.tweetToHashtag(tweetnr1);
for(int i = 0;i < Hashtags.length;i++)
{
System.out.println(Hashtags[i]);
}
}
}
...@@ -103,16 +103,17 @@ public class HasRelation { ...@@ -103,16 +103,17 @@ public class HasRelation {
try { try {
String[] hashtags = hasRelation.tweetToHashtag(tweet[2]); String[] hashtags = hasRelation.tweetToHashtag(tweet[2]);
for (int i = counter; i < hashtags.length; i++) { int min = counter;
for (int i = min; i < (min + hashtags.length); i++) {
ausgabe[i] = tweet[0] + ";" + hashtags[i]; ausgabe[i] = tweet[0] + ";" + hashtags[i - min];
counter++; counter++;
} }
} }
catch(ArrayIndexOutOfBoundsException e){} catch(ArrayIndexOutOfBoundsException ignored){}
} }
return ausgabe; return ausgabe;
} }
......
iteration2/er.png

49.6 KiB

<?xml version="1.0" encoding="UTF-8"?> <mxfile userAgent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36" version="6.7.2" editor="www.draw.io" type="device"><diagram name="Page-1">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</diagram></mxfile>
<mxfile userAgent="Mozilla/5.0 (Linux; Android 5.1; XT1032 Build/LPBS23.13-56-2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36" version="6.7.2" editor="www.draw.io" type="google"><diagram name="Page-1">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</diagram></mxfile> \ No newline at end of file
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment