3 điểm bởi GN⁺ 2024-07-28 | 1 bình luận | Chia sẻ qua WhatsApp
  • sgrep là công cụ dòng lệnh thực hiện tìm kiếm ngữ nghĩa cho đầu vào văn bản bằng cách sử dụng word embedding
    • Vượt qua việc khớp chuỗi đơn thuần để tìm các kết quả khớp tương đồng về mặt ngữ nghĩa với truy vấn
    • Được thiết kế để mang lại trải nghiệm tương tự grep
  • Tính năng
    • Tìm kiếm ngữ nghĩa bằng embedding Word2Vec
    • Có thể thiết lập ngưỡng độ tương đồng
    • Hiển thị ngữ cảnh trước và sau dòng khớp
    • Xuất kết quả có mã màu cho từ khớp và số dòng
    • Hỗ trợ đọc từ tệp hoặc đầu vào chuẩn
    • Có thể cấu hình qua tệp JSON và tham số dòng lệnh
  • Ví dụ sử dụng
    • Tìm các từ tương tự với "death" trong "Ông già và biển cả" của Hemingway, kèm ngữ cảnh và số dòng:
      curl -s 'https://gutenberg.ca/ebooks/hemingwaye-oldmanandthesea/…' \
      | sgrep -C 2 -n -threshold 0.55 death  
      
    • Lệnh này thực hiện:
      • Lấy văn bản "Ông già và biển cả" từ Project Gutenberg Canada
      • Pipe văn bản vào sgrep
      • Tìm các từ tương đồng về mặt ngữ nghĩa với "death"
      • Đặt ngưỡng độ tương đồng là 0.55 (-threshold 0.55)
      • Hiển thị 2 dòng ngữ cảnh trước và sau mỗi kết quả khớp (-C 2)
      • Hiển thị số dòng (-n)
    • Kết quả đầu ra hiển thị điểm tương đồng, các từ được tô sáng, ngữ cảnh và số dòng
  • Mô hình Word2Vec
    • sgrep yêu cầu mô hình Word2Vec ở định dạng nhị phân. Có thể dùng mô hình được huấn luyện sẵn như Word2Vec của Google hoặc tự huấn luyện bằng các công cụ như gensim
    • Tải tệp .bin về máy cục bộ và cập nhật config.json
    • download-model.sh là một script trợ giúp đơn giản để lưu mô hình word2vec nhỏ do eyaler host vào thư mục models/googlenews-slim/

Tổng hợp của GN⁺

  • sgrep là công cụ dùng word embedding để tìm các từ tương đồng về mặt ngữ nghĩa trong văn bản
  • Công cụ này mang lại trải nghiệm sử dụng tương tự grep nhưng cung cấp khả năng vượt ra ngoài việc khớp chuỗi đơn giản
  • Công cụ dùng mô hình Word2Vec để đánh giá độ tương đồng và có thể sử dụng linh hoạt nhờ nhiều tùy chọn cấu hình
  • Có thể hữu ích trong các tác vụ phân tích văn bản và xử lý ngôn ngữ tự nhiên, đặc biệt mạnh khi cần tìm kiếm dựa trên ngữ cảnh

1 bình luận

 
GN⁺ 2024-07-28
Ý kiến trên Hacker News
  • Chia sẻ một vài mẹo nhỏ khi đọc mã

    • Có thể đọc các vector cùng một lúc
    • Có thể dùng BLAS để tính độ tương đồng nhanh hơn
    • Nếu chuẩn hóa khi tải vector thì độ tương đồng cosine sẽ trở thành tích vô hướng của vector
    • Tò mò không biết có thể hỗ trợ nhiều CPU hay không
    • Kho lưu trữ word2vec đã vượt quá hạn ngạch dữ liệu
    • Đề xuất Stack Overflow và Hugging Face làm nguồn thay thế
  • Ý tưởng này rất hữu ích và khiến tôi tự hỏi sao mình lại không nghĩ ra

  • Đã có một công cụ và công ty tên là semgrep rồi

  • Công cụ này sẽ rất hữu ích nếu có thể xử lý các cụm từ mô tả hoặc cụm từ ghép

    • Nhược điểm lớn nhất của công cụ tìm kiếm hiện tại là chỉ tìm theo một hit đơn lẻ
  • Đây là một công cụ rất hay

    • Có vẻ nó chia mỗi dòng thành các từ và dùng embedding của từng từ
    • Tò mò không biết nó có thể tìm kiếm ngữ nghĩa trên các chuỗi văn bản dài hay không
    • Dùng vector từ có lẽ sẽ nhanh và nhẹ hơn so với dùng mô hình Transformer
    • Cũng có thể cân nhắc cách phát hiện các từ không được phân tách rõ ràng và tìm mọi từ xuất hiện dưới dạng chuỗi con
  • Công cụ này rất hay và tôi chắc chắn muốn thử dùng

    • Tìm kiếm ngữ nghĩa trên toàn bộ văn bản sẽ mang lại trải nghiệm người dùng tốt hơn trong nhiều ứng dụng
  • Đề xuất fltr như một công cụ tương tự

    • Nó giống grep dành cho các câu hỏi ngôn ngữ tự nhiên
  • Rất hay, và tôi tò mò không biết có thể tìm cả tên tệp hay không

  • Thật tuyệt khi phát hiện ra một công cụ rất hay

    • Vì semgrep đã được dùng rồi nên cần cân nhắc một cái tên khác