3 puan yazan GN⁺ 2024-07-28 | 1 yorum | WhatsApp'ta paylaş
  • sgrep, metin girdisi üzerinde anlamsal arama yapmak için kelime gömmelerini kullanan bir komut satırı aracıdır
    • Basit dize eşleştirmenin ötesine geçerek sorgu için anlamsal olarak benzer eşleşmeler bulur
    • grep benzeri bir deneyim sunacak şekilde tasarlanmıştır
  • Özellikler
    • Word2Vec gömmeleriyle anlamsal arama
    • Benzerlik eşiği ayarlanabilir
    • Eşleşen satırların öncesi ve sonrasındaki bağlamı gösterme
    • Eşleşen kelimeler ve satır numaraları için renk kodlu çıktı
    • Dosyadan veya standart girdiden okuma desteği
    • JSON dosyaları ve komut satırı argümanlarıyla yapılandırılabilir
  • Kullanım örneği
    • Hemingway'in "The Old Man and the Sea" eserinde "death" sözcüğüne benzer kelimeleri bağlam ve satır numaralarıyla birlikte arama:
      curl -s 'https://gutenberg.ca/ebooks/hemingwaye-oldmanandthesea/…' \  
      | sgrep -C 2 -n -threshold 0.55 death  
      
    • Bu komut şunları yapar:
      • Project Gutenberg Canada'dan "The Old Man and the Sea" metnini alır
      • Metni sgrep'e pipe eder
      • "death" ile anlamsal olarak benzer kelimeleri arar
      • Benzerlik eşiğini 0.55 olarak ayarlar (-threshold 0.55)
      • Her eşleşmenin öncesi ve sonrasında 2 satırlık bağlam gösterir (-C 2)
      • Satır numaralarını gösterir (-n)
    • Çıktı; benzerlik puanını, vurgulanan kelimeleri, bağlamı ve satır numaralarını gösterir
  • Word2Vec modeli
    • sgrep, ikili biçimde bir Word2Vec modeli gerektirir. Google'ın Word2Vec modeli gibi önceden eğitilmiş modelleri kullanabilir veya gensim gibi araçlarla kendi modelinizi eğitebilirsiniz
    • .bin dosyasını yerel olarak indirip config.json dosyasını güncelleyin
    • download-model.sh, eyaler tarafından barındırılan küçük bir word2vec modelini models/googlenews-slim/ dizinine kaydeden basit bir yardımcı betiktir

GN⁺ özeti

  • sgrep, metin içinde anlamsal olarak benzer kelimeleri aramak için kelime gömmelerini kullanan bir araçtır
  • grep'e benzer bir kullanım deneyimi sunarken basit dize eşleştirmenin ötesine geçen yetenekler sağlar
  • Benzerliği belirlemek için Word2Vec modeli kullanır ve çeşitli yapılandırma seçenekleri sayesinde esnek biçimde kullanılabilir
  • Metin analizi ve doğal dil işleme çalışmalarında yararlı olabilir; özellikle bağlam tabanlı aramanın gerektiği durumlarda güçlü bir araçtır

1 yorum

 
GN⁺ 2024-07-28
Hacker News görüşleri
  • Kodu okurken birkaç küçük ipucu paylaşmış

    • Vektörler tek seferde okunabilir
    • Benzerlik, BLAS kullanılarak daha hızlı hesaplanabilir
    • Vektörler yüklenirken normalize edilirse kosinüs benzerliği, vektörlerin iç çarpımı olur
    • Birden fazla CPU desteği olup olmadığını merak etmiş
    • word2vec deposunun veri kotasını aştığını söylemiş
    • Alternatif kaynak olarak Stack Overflow ve Hugging Face'i önermiş
  • Bu fikrin çok faydalı olduğunu ve neden daha önce aklına gelmediğini düşündüğünü söylemiş

  • Zaten semgrep adında bir araç ve şirket bulunduğunu belirtmiş

  • Bu aracın açıklayıcı ifadeleri ya da birleşik ifadeleri işleyebilmesi durumunda çok faydalı olacağını söylemiş

    • Şu anki arama motorlarının en büyük dezavantajının tekil eşleşme araması olduğunu belirtmiş
  • Çok havalı bir araç olduğunu söylemiş

    • Her satırı kelimelere ayırıp her kelimenin embedding'ini kullandığı izlenimini vermiş
    • Uzun metin dizilerini anlamsal olarak arayıp arayamadığını merak etmiş
    • Transformer modeli kullanmaktansa kelime vektörleri kullanmanın daha hızlı ve hafif olacağını söylemiş
    • Ayrıca iyi ayrılmamış kelimeleri tespit edip alt dize olarak görünen tüm kelimeleri bulmanın bir yolunun da düşünülebileceğini söylemiş
  • Bu aracın çok havalı olduğunu ve mutlaka denemek istediğini söylemiş

    • Metin genelinde anlamsal aramanın birçok uygulamada daha iyi bir kullanıcı deneyimi sağlayacağını belirtmiş
  • Benzer bir araç olarak fltr önermiş

    • Doğal dil sorguları için grep benzeri olduğunu söylemiş
  • Çok havalı olduğunu ve dosya adlarını da arayıp arayamadığını merak etmiş

  • Çok havalı bir araç keşfettiğini söylemiş

    • semgrep adı zaten kullanımda olduğu için başka bir isim düşünülmesi gerektiğini belirtmiş