- sgrep은 단어 임베딩을 사용하여 텍스트 입력에 대한 시맨틱 검색을 수행하는 명령줄 도구
- 단순한 문자열 매칭을 넘어 쿼리에 대해 시맨틱적으로 유사한 일치를 찾음
- grep과 유사한 경험을 제공하도록 설계됨
- 기능
- Word2Vec 임베딩을 사용한 시맨틱 검색
- 유사성 임계값 설정 가능
- 일치하는 줄 전후의 문맥 표시
- 일치하는 단어와 줄 번호에 대한 색상 코드 출력
- 파일 또는 표준 입력에서 읽기 지원
- JSON 파일 및 명령줄 인수를 통한 구성 가능
- 사용 예제
- 헤밍웨이의 "노인과 바다"에서 "death"와 유사한 단어를 문맥과 줄 번호와 함께 검색:
curl -s 'https://gutenberg.ca/ebooks/hemingwaye-oldmanandthesea/…' \ | sgrep -C 2 -n -threshold 0.55 death - 이 명령어는 다음을 수행함:
- "노인과 바다" 텍스트를 Project Gutenberg Canada에서 가져옴
- 텍스트를 sgrep에 파이프함
- "death"와 시맨틱적으로 유사한 단어를 검색함
- 유사성 임계값을 0.55로 설정함 (-threshold 0.55)
- 각 일치 항목 전후로 2줄의 문맥을 표시함 (-C 2)
- 줄 번호를 표시함 (-n)
- 출력은 유사성 점수, 강조된 단어, 문맥 및 줄 번호를 보여줌
- 헤밍웨이의 "노인과 바다"에서 "death"와 유사한 단어를 문맥과 줄 번호와 함께 검색:
- Word2Vec 모델
- sgrep은 이진 형식의 Word2Vec 모델이 필요함. Google의 Word2Vec 모델과 같은 사전 학습된 모델을 사용하거나 gensim과 같은 도구를 사용하여 직접 학습할 수 있음
- .bin 파일을 로컬에 다운로드하고 config.json을 업데이트함
- Google의 Word2Vec: https://github.com/mmihaltz/word2vec-GoogleNews-vectors
- 슬림 버전: GoogleNews-vectors-negative300-SLIM.bin.gz 모델 https://github.com/eyaler/word2vec-slim/ (eyaler 덕분에)
- download-model.sh는 eyaler가 호스팅하는 작은 word2vec 모델을 models/googlenews-slim/ 디렉토리에 저장하는 간단한 도우미 스크립트임
GN⁺의 정리
- sgrep은 단어 임베딩을 사용하여 텍스트에서 시맨틱적으로 유사한 단어를 검색하는 도구임
- grep과 유사한 사용 경험을 제공하면서도 단순한 문자열 매칭을 넘어서는 기능을 제공함
- Word2Vec 모델을 사용하여 유사성을 판단하며, 다양한 설정 옵션을 통해 유연하게 사용할 수 있음
- 텍스트 분석 및 자연어 처리 작업에서 유용하게 사용될 수 있으며, 특히 문맥 기반 검색이 필요한 경우에 강력한 도구임