Semantic Grep - herramienta de búsqueda basada en Word2Vec
(github.com/arunsupe)sgrepes una herramienta de línea de comandos que realiza búsquedas semánticas sobre texto usando embeddings de palabras- Va más allá de la coincidencia simple de cadenas y encuentra coincidencias semánticamente similares a la consulta
- Está diseñada para ofrecer una experiencia similar a
grep
- Funciones
- Búsqueda semántica usando embeddings de Word2Vec
- Posibilidad de configurar un umbral de similitud
- Muestra el contexto antes y después de las líneas coincidentes
- Salida con códigos de color para las palabras coincidentes y los números de línea
- Soporte para leer desde archivos o desde la entrada estándar
- Configuración posible mediante archivos JSON y argumentos de línea de comandos
- Ejemplo de uso
- Buscar palabras similares a "death" en "El viejo y el mar" de Hemingway, con contexto y números de línea:
curl -s 'https://gutenberg.ca/ebooks/hemingwaye-oldmanandthesea/…' \ | sgrep -C 2 -n -threshold 0.55 death - Este comando hace lo siguiente:
- Obtiene el texto de "El viejo y el mar" desde Project Gutenberg Canada
- Envía el texto por tubería a
sgrep - Busca palabras semánticamente similares a "death"
- Establece el umbral de similitud en 0.55 (
-threshold 0.55) - Muestra 2 líneas de contexto antes y después de cada coincidencia (
-C 2) - Muestra los números de línea (
-n)
- La salida muestra el puntaje de similitud, las palabras resaltadas, el contexto y los números de línea
- Buscar palabras similares a "death" en "El viejo y el mar" de Hemingway, con contexto y números de línea:
- Modelo Word2Vec
sgreprequiere un modelo Word2Vec en formato binario. Puedes usar un modelo preentrenado, como el de Google Word2Vec, o entrenar uno tú mismo con herramientas comogensim- Descarga el archivo
.binlocalmente y actualizaconfig.json- Word2Vec de Google: https://github.com/mmihaltz/word2vec-GoogleNews-vectors
- Versión slim: modelo
GoogleNews-vectors-negative300-SLIM.bin.gzhttps://github.com/eyaler/word2vec-slim/ (gracias a eyaler)
download-model.shes un script auxiliar simple que guarda un modelo pequeño deword2vecalojado por eyaler en el directoriomodels/googlenews-slim/
Resumen de GN⁺
sgrepes una herramienta para buscar palabras semánticamente similares en texto usando embeddings de palabras- Ofrece una experiencia de uso parecida a
grep, pero con capacidades que van más allá de la coincidencia simple de cadenas - Usa modelos Word2Vec para determinar similitud y puede utilizarse de forma flexible mediante varias opciones de configuración
- Puede ser útil en tareas de análisis de texto y procesamiento de lenguaje natural, especialmente cuando se necesita búsqueda basada en contexto
1 comentarios
Comentarios en Hacker News
Mientras leía el código, compartió algunos consejos pequeños
Esta idea parece muy útil y se pregunta por qué no se le ocurrió antes
Ya existe una herramienta y una empresa llamadas semgrep
Esta herramienta sería muy útil si pudiera manejar frases descriptivas o compuestas
Es una herramienta muy genial
Esta herramienta está muy buena y le gustaría probarla sí o sí
Propone fltr como una herramienta similar
Está muy bueno, y se pregunta si también puede buscar nombres de archivos
Le parece una herramienta muy genial