3 Punkte von GN⁺ 2024-07-28 | 1 Kommentare | Auf WhatsApp teilen
  • sgrep ist ein Kommandozeilenwerkzeug, das mithilfe von Word Embeddings eine semantische Suche für Texteingaben durchführt
    • Es geht über einfaches String-Matching hinaus und findet semantisch ähnliche Treffer zur Anfrage
    • Es wurde so entwickelt, dass es ein grep-ähnliches Nutzungserlebnis bietet
  • Funktionen
    • Semantische Suche mit Word2Vec-Embeddings
    • Konfigurierbarer Ähnlichkeitsschwellenwert
    • Anzeige des Kontexts vor und nach passenden Zeilen
    • Farbcodierte Ausgabe für übereinstimmende Wörter und Zeilennummern
    • Unterstützung für das Lesen aus Dateien oder von der Standardeingabe
    • Konfiguration über JSON-Dateien und Kommandozeilenargumente möglich
  • Anwendungsbeispiel
    • In Hemingways "Der alte Mann und das Meer" nach Wörtern suchen, die "death" semantisch ähnlich sind, inklusive Kontext und Zeilennummern:
      curl -s 'https://gutenberg.ca/ebooks/hemingwaye-oldmanandthesea/…' \  
      | sgrep -C 2 -n -threshold 0.55 death  
      
    • Dieser Befehl führt Folgendes aus:
      • Er lädt den Text von "Der alte Mann und das Meer" von Project Gutenberg Canada herunter
      • Er leitet den Text per Pipe an sgrep weiter
      • Er sucht nach Wörtern, die "death" semantisch ähnlich sind
      • Er setzt den Ähnlichkeitsschwellenwert auf 0.55 (-threshold 0.55)
      • Er zeigt jeweils 2 Zeilen Kontext vor und nach jedem Treffer an (-C 2)
      • Er zeigt die Zeilennummern an (-n)
    • Die Ausgabe zeigt den Ähnlichkeitswert, hervorgehobene Wörter, Kontext und Zeilennummern
  • Word2Vec-Modell
    • sgrep benötigt ein Word2Vec-Modell im Binärformat. Es kann ein vortrainiertes Modell wie das Word2Vec-Modell von Google verwendet oder mit Werkzeugen wie gensim selbst trainiert werden
    • Die .bin-Datei lokal herunterladen und config.json aktualisieren
    • download-model.sh ist ein einfaches Hilfsskript, das ein kleines von eyaler gehostetes word2vec-Modell im Verzeichnis models/googlenews-slim/ speichert

Zusammenfassung von GN⁺

  • sgrep ist ein Werkzeug, das Word Embeddings verwendet, um in Texten nach semantisch ähnlichen Wörtern zu suchen
  • Es bietet eine grep-ähnliche Nutzungserfahrung und geht zugleich über einfaches String-Matching hinaus
  • Es verwendet Word2Vec-Modelle zur Bestimmung von Ähnlichkeiten und lässt sich mit verschiedenen Optionen flexibel einsetzen
  • Es kann für Textanalyse- und Natural-Language-Processing-Aufgaben nützlich sein und ist besonders stark, wenn kontextbasierte Suche erforderlich ist

1 Kommentare

 
GN⁺ 2024-07-28
Hacker-News-Kommentare
  • Beim Lesen des Codes wurden ein paar kleine Tipps geteilt

    • Vektoren können auf einmal eingelesen werden
    • Mit BLAS lässt sich die Ähnlichkeit schneller berechnen
    • Wenn die Vektoren beim Laden normalisiert werden, wird die Kosinus-Ähnlichkeit zum Skalarprodukt der Vektoren
    • Es wird gefragt, ob mehrere CPUs unterstützt werden können
    • Das word2vec-Repository hat sein Datenkontingent überschritten
    • Als alternative Quellen werden Stack Overflow und Hugging Face vorgeschlagen
  • Die Idee ist sehr nützlich, und man fragt sich, warum man nicht selbst darauf gekommen ist

  • Es gibt bereits ein Tool und ein Unternehmen namens semgrep

  • Wenn dieses Tool beschreibende Phrasen oder zusammengesetzte Phrasen verarbeiten kann, wäre es sehr nützlich

    • Der größte Nachteil aktueller Suchmaschinen ist derzeit die Suche nach einzelnen Treffern
  • Ein sehr cooles Tool

    • Es scheint, als würde jede Zeile in Wörter aufgeteilt und für jedes Wort dessen Embedding verwendet
    • Es wird gefragt, ob sich lange Textsequenzen semantisch durchsuchen lassen
    • Die Verwendung von Wortvektoren dürfte schneller und leichtgewichtiger sein als der Einsatz eines Transformer-Modells
    • Man könnte auch überlegen, wie sich schlecht getrennte Wörter erkennen und alle Wörter finden lassen, die als Teilstring vorkommen
  • Dieses Tool ist wirklich sehr cool und man möchte es unbedingt ausprobieren

    • Semantische Suche über den gesamten Text hinweg würde in vielen Anwendungen für eine bessere User Experience sorgen
  • Als ähnliches Tool wird fltr vorgeschlagen

    • Ähnlich wie grep für natürlichsprachige Fragen
  • Sehr cool, und es wird gefragt, ob auch Dateinamen durchsucht werden können

  • Ein wirklich cooles Tool wurde entdeckt

    • Da semgrep bereits verwendet wird, sollte ein anderer Name in Betracht gezogen werden