Semantic Grep - Suchwerkzeug auf Basis von Word2Vec
(github.com/arunsupe)sgrepist 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
sgrepweiter - 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
- In Hemingways "Der alte Mann und das Meer" nach Wörtern suchen, die "death" semantisch ähnlich sind, inklusive Kontext und Zeilennummern:
- Word2Vec-Modell
sgrepbenötigt ein Word2Vec-Modell im Binärformat. Es kann ein vortrainiertes Modell wie das Word2Vec-Modell von Google verwendet oder mit Werkzeugen wiegensimselbst trainiert werden- Die
.bin-Datei lokal herunterladen undconfig.jsonaktualisieren- Googles Word2Vec: https://github.com/mmihaltz/word2vec-GoogleNews-vectors
- Schlanke Version: Modell
GoogleNews-vectors-negative300-SLIM.bin.gzhttps://github.com/eyaler/word2vec-slim/ (dank eyaler)
download-model.shist ein einfaches Hilfsskript, das ein kleines von eyaler gehostetesword2vec-Modell im Verzeichnismodels/googlenews-slim/speichert
Zusammenfassung von GN⁺
sgrepist 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
Hacker-News-Kommentare
Beim Lesen des Codes wurden ein paar kleine Tipps geteilt
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
Ein sehr cooles Tool
Dieses Tool ist wirklich sehr cool und man möchte es unbedingt ausprobieren
Als ähnliches Tool wird fltr vorgeschlagen
Sehr cool, und es wird gefragt, ob auch Dateinamen durchsucht werden können
Ein wirklich cooles Tool wurde entdeckt