Semantic Grep - Outil de recherche basé sur Word2Vec
(github.com/arunsupe)sgrepest un outil en ligne de commande qui effectue une recherche sémantique sur une entrée texte à l’aide d’embeddings de mots- Il va au-delà de la simple correspondance de chaînes pour trouver des correspondances sémantiquement similaires à la requête
- Il est conçu pour offrir une expérience similaire à
grep
- Fonctionnalités
- Recherche sémantique avec des embeddings Word2Vec
- Possibilité de définir un seuil de similarité
- Affichage du contexte avant et après les lignes correspondantes
- Sortie en couleur pour les mots correspondants et les numéros de ligne
- Prise en charge de la lecture depuis un fichier ou l’entrée standard
- Configuration possible via un fichier JSON et des arguments en ligne de commande
- Exemples d’utilisation
- Rechercher, dans Le Vieil Homme et la Mer d’Hemingway, des mots similaires à "death" avec le contexte et les numéros de ligne :
curl -s 'https://gutenberg.ca/ebooks/hemingwaye-oldmanandthesea/…' \ | sgrep -C 2 -n -threshold 0.55 death - Cette commande effectue les opérations suivantes :
- Récupère le texte de Le Vieil Homme et la Mer depuis Project Gutenberg Canada
- Envoie le texte vers
sgrepvia un pipe - Recherche des mots sémantiquement similaires à "death"
- Définit le seuil de similarité à 0.55 (
-threshold 0.55) - Affiche 2 lignes de contexte avant et après chaque correspondance (
-C 2) - Affiche les numéros de ligne (
-n)
- La sortie affiche le score de similarité, les mots mis en évidence, le contexte et les numéros de ligne
- Rechercher, dans Le Vieil Homme et la Mer d’Hemingway, des mots similaires à "death" avec le contexte et les numéros de ligne :
- Modèle Word2Vec
sgrepnécessite un modèle Word2Vec au format binaire. Vous pouvez utiliser un modèle préentraîné comme celui de Google ou l’entraîner vous-même avec des outils commegensim- Téléchargez le fichier
.binen local et mettez à jourconfig.json- Word2Vec de Google : https://github.com/mmihaltz/word2vec-GoogleNews-vectors
- Version allégée : modèle
GoogleNews-vectors-negative300-SLIM.bin.gzhttps://github.com/eyaler/word2vec-slim/ (merci à eyaler)
download-model.shest un petit script utilitaire qui enregistre un modèleword2veccompact hébergé par eyaler dans le répertoiremodels/googlenews-slim/
Résumé de GN⁺
sgrepest un outil qui utilise des embeddings de mots pour rechercher, dans un texte, des mots sémantiquement similaires- Il offre une expérience proche de
greptout en allant au-delà de la simple correspondance de chaînes - Il utilise un modèle Word2Vec pour évaluer la similarité et peut être utilisé de façon flexible grâce à diverses options de configuration
- Il peut être utile pour l’analyse de texte et les tâches de traitement du langage naturel, en particulier lorsqu’une recherche fondée sur le contexte est nécessaire
1 commentaires
Avis Hacker News
En lisant le code, quelqu’un partage quelques petits conseils
Cette idée semble très utile, au point de se demander pourquoi personne n’y a pensé plus tôt
Il existe déjà un outil et une entreprise appelés semgrep
Cet outil serait très utile s’il pouvait gérer des formulations descriptives ou composées
Outil très sympa
Cet outil est vraiment très sympa et donne envie de l’essayer
fltr est proposé comme outil similaire
Très sympa, et quelqu’un se demande s’il peut aussi rechercher les noms de fichiers
Quelqu’un découvre un outil très sympa