- Registriert
- 3 Aug. 2014
- Beiträge
- 28.573
- Thread Starter Thread Starter
- #61
Ich bin mit eine zeichenbasiertem Aufbau bei 25,3 kb... da ist dann aber schon etwas Code enthalten um die Daten in Datenstrukturen einzulesen.
Aber das meiste wird nur in die Konsole ausgegeben, damit ich erst sicherstellen kann das die Analyse der Daten korrekt funktioniert.
Momentan vergleiche ich "möglicherweise problematische Stellen" mit dem Konsolen-Output aus der Probedatei. Schon das ist eine Heidenarbeit und Kostet viel Zeit.
Eine ungefähre Einschätzung wie viel eingespart werden kann, kann man hier finden:
http://mattmahoney.net/dc/textdata.html
Dort findet man zum Beispiel folgende Analyse mit Replacement/Stripping und ähnlichem eines anderen Tools:
Links die Größe der Datei, rechts der Schritt der durchgeführt wird...
Indirekt gehe ich diese Schritte ja schon ein wenig ab, nur das der Inhalt nicht auf wichtige Information heruntergekürzt wird, aber etwas Boilerplate entfernt wird. Auf die 70 MB werde ich damit aber nicht kommen und ich vermute das der Gewinn wirklich um einiges geringer ausfällt. Man könnte sich auch Fragen ob es die Arbeit und investierte Zeit überhaupt wert sein wird...
Der Parser hilft aber zumindest dabei, die Inhalte in logische und bedeutungsvolle Einheiten zu überführen. Daraus erhoffe ich mir eigentlich die Chance Worte anders als WikiTags behandelt zu können oder HTML-Entities direkt umzuformatieren (eine Tabelle dafür habe ich nicht, aber die stehen zum Beispiel hier: https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references), letzteres sind in der oberen Liste ganze 2 MB - aber ich glaube das wäre dann die "größte" Optimierung der Rohdaten die man on-the-fly vornehmen kann.
Zu mal ein Wikitag ja nun doch andere Tags wie zum Beispiel Links oder Anchors beinhalten kann und diese bestehen soweit ich das einschätzen kann leider nicht alle nur aus einem Wort, sondern gern auch 2-3 Wörtern.
Ich habe aber auch schon feststellen müssen dass das Wiki-Markup auch zum Teil Fehler enthält, das verändert das Resultat ein wenig beim einlesen... zwar nicht optimal, aber ich vermute (ich konnte dies leider nicht mehr auf dem entsprechen Wikipedia Artikel feststellen) das es auch die Wikipedia Engine verunsichert hatte - schade das sich nicht mehr nachvollziehen lässt wie das Ergebnis online ausgesehen hat. Hätte ich mal gern verglichen!
Und dann irgendwann, wenn das einlesen funktioniert, versuche ich mal die hier genannten Algorithmen und Techniken anzuwenden und ich hoffe durch das etwaige minimieren von Corner Cases in Texten lässt sich dann etwas gescheites damit anstellen...
Aber das meiste wird nur in die Konsole ausgegeben, damit ich erst sicherstellen kann das die Analyse der Daten korrekt funktioniert.
Momentan vergleiche ich "möglicherweise problematische Stellen" mit dem Konsolen-Output aus der Probedatei. Schon das ist eine Heidenarbeit und Kostet viel Zeit.
Eine ungefähre Einschätzung wie viel eingespart werden kann, kann man hier finden:
http://mattmahoney.net/dc/textdata.html
Dort findet man zum Beispiel folgende Analyse mit Replacement/Stripping und ähnlichem eines anderen Tools:
Links die Größe der Datei, rechts der Schritt der durchgeführt wird...
[src=text]enwik8 Step
----------- ------------
100,000,000 Original size
96,829,911 Discard all outside <text...> ... </text>
96,604,864 Discard #REDIRECT text
96,210,439 Discard XML tags (<text...> and </text>)
95,287,203 URL-decode < > and & to < > and &
95,087,290 Remove <ref> ... </ref> (citations)
93,645,338 Remove other XHTML tags
91,399,021 Replace [http:... anchor text] with [anchor text]
90,868,662 Replace [[Image:...|thumb|left/right|NNNpx|caption]] with caption
90,770,617 Replace [[category:text|title]] with [[text]]
88,385,654 Remove [[language:link]] (links to same page in other languages)
85,443,983 Replace [[Wiki link|anchor text]] with [[anchor text]]
83,420,173 Remove {{...}} (icons and special symbols)
80,943,967 Remove { ... } (tables)
77,732,609 Remove [ and ]
75,053,443 Replace &...; with space (URL-encoded chars)
70,007,945 Convert to lower case, replace all sequences not in a-z,0-9 with a single space
74,090,640 Spell digits, leaving a-z and unrepeated spaces[/src]
The conversion was done by the Perl program given in Appendix A. [....]
Indirekt gehe ich diese Schritte ja schon ein wenig ab, nur das der Inhalt nicht auf wichtige Information heruntergekürzt wird, aber etwas Boilerplate entfernt wird. Auf die 70 MB werde ich damit aber nicht kommen und ich vermute das der Gewinn wirklich um einiges geringer ausfällt. Man könnte sich auch Fragen ob es die Arbeit und investierte Zeit überhaupt wert sein wird...
Der Parser hilft aber zumindest dabei, die Inhalte in logische und bedeutungsvolle Einheiten zu überführen. Daraus erhoffe ich mir eigentlich die Chance Worte anders als WikiTags behandelt zu können oder HTML-Entities direkt umzuformatieren (eine Tabelle dafür habe ich nicht, aber die stehen zum Beispiel hier: https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references), letzteres sind in der oberen Liste ganze 2 MB - aber ich glaube das wäre dann die "größte" Optimierung der Rohdaten die man on-the-fly vornehmen kann.
Zu mal ein Wikitag ja nun doch andere Tags wie zum Beispiel Links oder Anchors beinhalten kann und diese bestehen soweit ich das einschätzen kann leider nicht alle nur aus einem Wort, sondern gern auch 2-3 Wörtern.
Ich habe aber auch schon feststellen müssen dass das Wiki-Markup auch zum Teil Fehler enthält, das verändert das Resultat ein wenig beim einlesen... zwar nicht optimal, aber ich vermute (ich konnte dies leider nicht mehr auf dem entsprechen Wikipedia Artikel feststellen) das es auch die Wikipedia Engine verunsichert hatte - schade das sich nicht mehr nachvollziehen lässt wie das Ergebnis online ausgesehen hat. Hätte ich mal gern verglichen!
Und dann irgendwann, wenn das einlesen funktioniert, versuche ich mal die hier genannten Algorithmen und Techniken anzuwenden und ich hoffe durch das etwaige minimieren von Corner Cases in Texten lässt sich dann etwas gescheites damit anstellen...