ProfilProfil
 Registrieren
 Login
Bild der WocheBild der Woche

(von Backslider)
Kommentare (0)
****

Weitere
User onlineBenutzer online
Gäste online: 6
Mitglieder online: Keine
Registrierte Mitglieder: 2117
Neustes Mitglied: vitapen

Textkomprimierung

Neue Antwort erstellen
 

 

Autor Nachricht
 
 
FlySoft
Member


Anmeldedatum: 16.04.2009
Beiträge: 444
Wohnort: Nähe von Stuttgart

Antworten mit Zitat
BeitragVerfasst am: 23.06.2012, 13:49    Titel: Textkomprimierung

Hallo liebe XNAler,

ich habe eine Frage, die für mich recht komplex ist. Es geht um... Textkomprimierung.

Mein Ziel:
Ich will die Wikipedia (die deutsch) offline auf das Windows Phone bringen. Da ich bei E-Plus bin und oft in ländlichen Gegenden, fände ich das für mich ganz Praktisch.

Das Problem:
Wie Packe ich das Zeug am besten?

Meine Momentan struktur ist recht einfach. Jeder Artikel ist eine (Text-)Datei, in der nur der Inhalt drinsteht. Diese sind in Ordner umsortiert, also der Facebook-Artikel ist in "./F/A/C/Facebook.txt"; Alle anderen Artikel analog.

Jetzt sind das natürlich massenweise Ordner ([0-9;A-Z;!;%;...]), in denen die Datein sortiert sind.

Jetzt möchte ich die Dateien irgendwie für das Phone zugänglich Packen.

Meine bisherigen Versuche:
7Zip
7Zip ist ein tolles Format! Es packt den Inhalt auf 1,1GB (20%) runter, aaaaber:
Das Entpacken ist nicht trival. 7Zip speichert seinen Inhalt in "Solide Blöcke", die dann komplett entpackt werden, und dazu hat es noch ein paar weitere Verrenkungen. Kurz: Ich habe es werde mit LMZA noch mit LMZA2 hinbekommen, eine 7z-Datei zu erstellen, die keine OutOfMemory-Exception auf dem Phone liefert. Schade Sad
(Entpacker auf dem Phone: http://sharpcompress.codeplex.com/)

Zip
Zip sollte vermutlich funktionieren - doch es komprimiert (bei 7Zip) mit dem Deflate-Algorithmus mehr als doppelt so schlecht wie 7Zip! Eigentlich unakzeptabel.
(Entpacker auf dem Phone: Noch nichts probiert - aber die SharpZipLib von ICSharpCode sollte funktionieren=

Andere Formate
Hab ich nicht probiert, da sie alle Stream-basiert sind. Ich weiß einfach nicht, wie ich bei denen das Problem lösen sollte, schnell auf eine Datei am Ende zuzugreifen zu können.

Mehrere Archive (z.B. 7Zip)
Ist eine Idee, die ich auch schon überlegt habe. Geht aber zu lasten der Kompression :/ Ich könnte ja immer 20MB Artikel in eine Datei Packen, aber, und diese in eine Größere Datei Packen. Aber das geht, wie gesagt, zu lasten der Kompression. Es geht ja nicht nur um Bandbreite, sondern auch Speicherplatz ist ein rares gut.



Hat irgendjemand eine Idee, wie ich das Problem lösen sollte?


Viele Grüße und viel Dank im Vorras,

FlySoft
_________________
Wenn du es verstehen solltest, hätte ich es nicht "Code" genannt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen


Der Gorch
Member


Anmeldedatum: 15.02.2010
Beiträge: 118
Wohnort: Irgendwo

Antworten mit Zitat
BeitragVerfasst am: 23.06.2012, 16:33    Titel:

Mehrere Archieve plus einen Index werden glaube ich nicht schlecht sein. Soviel ich weiss musst du nämlich für besagte Algorithmen immer die ganze oder zumindestens einen großen Teil der Datei auslesen. Schreibst du die Algorithmen selber? Wenn ja kannst du dir ja selbst was einfallen lassen, um die Artikel kleiner zu machen. Zum Beispiel kannst du besonders häufigen Wörtern einen eigenen Platz im Huffman-Baum spendieren oder die Wörter indizieren.

EDIT: Sorry, ich sehe gerade das du Libaries verwendest. Wie gesagt, versuche eigene Algorithmen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


FlySoft
Member


Anmeldedatum: 16.04.2009
Beiträge: 444
Wohnort: Nähe von Stuttgart

Antworten mit Zitat
BeitragVerfasst am: 23.06.2012, 16:45    Titel:

Einen eigenen Komressionsalgorithmus... Klingt kompliziert, aber möglich... Ich muss mich da aber erst reinarbeiten.

Andere Ideen? Gibt es schon code?
_________________
Wenn du es verstehen solltest, hätte ich es nicht "Code" genannt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen


Der Gorch
Member


Anmeldedatum: 15.02.2010
Beiträge: 118
Wohnort: Irgendwo

Antworten mit Zitat
BeitragVerfasst am: 23.06.2012, 17:17    Titel:

Guck dir mal die theoretische Basis von ZIP bei Wikipedia an, konkret die Shannon-Fano-Kodierung und LZ77. Ich würde um ein Wort zu kodieren zunächst ein Bit als Flag nehmen, ob das Wort unter den 128 häufigsten der deutschen Sprache ist. Wenn ja, dann stellen die nächsten 7 Bits das gesamte Wort dar. Wenn nicht, dann ist das nächste Bit ein weiteres Flag, ob das Wort unter den 64 häufigsten dieses Textes ist. Wenn das auch nicht wahr ist, dann geben die nächsten Bits die Länge des Wortes an, und das Wort wird im Klartext gespeichert. Die genannten "häufigsten Wörter" sind dann für die gesamte Wikipedia bzw. den gesamten Artikel indiziert. Ich denke, wenn du dieses Verfahren noch verbesserst, könntest du damit sehr hohe Kompressionsraten erzielen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden


FlySoft
Member


Anmeldedatum: 16.04.2009
Beiträge: 444
Wohnort: Nähe von Stuttgart

Antworten mit Zitat
BeitragVerfasst am: 23.06.2012, 17:19    Titel:

Das habe ich mir auch überlegt. Wenn ich das nicht sogar mit Silben mache... Aber mal sehen, was ich machen kann Wink
_________________
Wenn du es verstehen solltest, hätte ich es nicht "Code" genannt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen


Beiträge der letzten Zeit anzeigen:   
 
Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de