Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
| talit:retrieval [2024-08-13 05:10] – hof | talit:retrieval [2025-11-03 18:21] (aktuell) – hof | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| # Information Retrieval | # Information Retrieval | ||
| - | Beim _Information Retrieval_ geht es darum, aus einer potentiell riesigen Menge von Dokumenten (en. _corpus_) diejenigen herauszufinden, | + | Beim _Information Retrieval_ geht es darum, aus einer potentiell riesigen Menge von Dokumenten (en. _corpus_) diejenigen herauszufinden, |
| Es bestehen die folgenden Kapitel: | Es bestehen die folgenden Kapitel: | ||
| Zeile 7: | Zeile 7: | ||
| * [[indexing]] | * [[indexing]] | ||
| * [[spatial]] | * [[spatial]] | ||
| + | |||
| ## Build Your Own Google | ## Build Your Own Google | ||
| - | < | + | {{ .: |
| + | |||
| + | < | ||
| ++++Repo| | ++++Repo| | ||
| https:// | https:// | ||
| Zeile 22: | Zeile 25: | ||
| Um diese Aufgaben **schnell** zu lösen, ist es im allgemeinen nicht möglich, den ganzen Korpus für jede Anfrage zu durchsuchen. Stattdessen bauen wir einen **Index**, der es erlaubt, effizient die geforderten Dokumente zu finden. | Um diese Aufgaben **schnell** zu lösen, ist es im allgemeinen nicht möglich, den ganzen Korpus für jede Anfrage zu durchsuchen. Stattdessen bauen wir einen **Index**, der es erlaubt, effizient die geforderten Dokumente zu finden. | ||
| + | |||
| + | Im Unterschied zu einem _Dictionary_ hat in einem _Index_ nicht jedes Dokument einen eindeutigen Schlüssel, sondern für einen gegebenen Schlüssel können mehrere Dokumente erfasst sein, und ein Dokument kann für mehrere Schlüssel eingetragen sein. | ||
| + | |||
| + | In der nebenstehenden Abbildung sind beispielsweise für viele Einträge _mehrere_ Seitenzahlen aufgeführt, | ||
| ### Jupyter | ### Jupyter | ||
| Zeile 46: | Zeile 53: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | Der Corpus ist ein Dictionary, dessen Keys gerade die Dokumenten-Ids sind; jedes Dokument ist wiederum ein kleines Dictionary, wobei jedes dieselben Keys (`name`...) aufweist. | ||
| + | |||
| ### Aufgabe 1 - Lineare Suche | ### Aufgabe 1 - Lineare Suche | ||
| Zeile 72: | Zeile 82: | ||
| Mit dem `tqdm`-Modul lässt sich der Fortschritt bequem darstellen. Das Modul muss einmalig z.B. mit `%pip install tqdm` installiert werden. | Mit dem `tqdm`-Modul lässt sich der Fortschritt bequem darstellen. Das Modul muss einmalig z.B. mit `%pip install tqdm` installiert werden. | ||
| - | < | + | < |
| ++++Lösung| | ++++Lösung| | ||
| <code python> | <code python> | ||
| Zeile 88: | Zeile 98: | ||
| ++++ | ++++ | ||
| </ | </ | ||
| - | |||
| ### Aufgabe 2 - Ernsthafte Datasets | ### Aufgabe 2 - Ernsthafte Datasets | ||
| Zeile 107: | Zeile 116: | ||
| ++++Hinweise: | ++++Hinweise: | ||
| - | * https:// | + | * Zip-Dateien entpacken mit [[https:// |
| - | * https:// | + | * CSV-Dateien einlesen als Dictionaries mit [[https:// |
| + | * Binärdateien als Unicode-Text interpretieren mit [[https:// | ||
| + | * z.B. mit `csv.DictReader(TextIOWrapper(csv_file, | ||
| ++++ | ++++ | ||
| - | < | + | < |
| ++++Lösung| | ++++Lösung| | ||
| Zuerst muss die Datei in `data/ | Zuerst muss die Datei in `data/ | ||
| Zeile 182: | Zeile 193: | ||
| Probiert zuerst mit dem Toy-Dataset, | Probiert zuerst mit dem Toy-Dataset, | ||
| - | < | + | < |
| ++++Lösung| | ++++Lösung| | ||