▲neo 10달전 | parent | favorite | on: GN⁺: 파이썬 80줄로 만든 검색 엔진(alexmolas.com)Hacker News 의견 Pandas를 이용한 BM25 검색 엔진 개발 개발자가 Pandas에서 작동하는 빠른 BM25 검색 엔진을 개발 중임. Pandas를 사용하는 이유는 BM25 알고리즘 외에도 최신성, 인기도 등 다른 요소들을 쉽게 결합할 수 있기 때문. 문구 매칭에는 많은 예외 사례가 있으며, 가능한 한 적은 메모리를 사용하여 위치 정보를 압축하는 것이 중요함. 코드 리뷰: SearchEngine 클래스 k1과 b라는 파라미터의 의미를 모르겠으며, 코드에 주석이 전혀 없음. _documents는 URL을 키로, 해당 URL의 내용을 값으로 가질 것으로 추정. 코드에 문서화가 잘 되어 있지 않아 아쉬움. 문서화가 잘 되어 있었다면 검색 엔진 구축 학습 자료로 유용할 수 있었을 것. 검색 엔진의 복잡성 검색 엔진의 주된 어려움은 데이터의 양을 다루는 것임. 로직 자체는 의외로 간단하며, 프로젝트는 불필요한 부분을 대부분 제거하여 성공적임. 검색 엔진을 크게 만드는 것이 아니라 데이터를 더 작게 만들거나 신호 대 잡음 비율을 높이는 접근이 중요함. 코드 행 수에 대한 의견 외부 의존성을 사용하는 상황에서 코드 행 수를 자랑하는 것의 의미에 의문을 제기함. 코드베이스에 대한 SI 단위는 없지만, 인지 부하를 어떻게든 측정해야 한다는 의견. 코드 내의 표현에 대한 농담 코드 내의 chunk for chunk in chunks if chunk 표현을 보고 나무꾼에 관한 농담이 떠오름. 추천 엔진 코드 예시 검색 엔진과 함께 사용할 수 있는 파이썬으로 작성된 20줄 미만의 추천 엔진 코드 제공. 세션 로그에서 클릭된 URL을 기반으로 추천을 생성함. 로그에 입력된 쿼리와 클릭된 URL을 혼합하여 사용하면 맞춤법 검사 제안도 얻을 수 있음. 파싱 라이브러리 성능 비교 lxml.html과 lxml.html.clean이 BeautifulSoup보다 훨씬 빠를 수 있음을 언급함. 키워드 사용에 대한 조언 영어 검색 결과의 품질을 높이기 위해 1-gram 대신 2-gram과 3-gram을 사용할 것을 권장함. n-gram은 문맥을 유지하는 데 도움이 됨. 교육적인 프로젝트에 대한 의견 프로젝트가 매우 멋지고 교육적이지만, 실제 배포는 하지 말 것을 권함. 몇 만 개의 문서를 다루는 더 큰 규모의 프로젝트에는 SQLite의 FTS5를 사용하는 것이 해답임. 파이썬을 이용한 대규모 데이터 처리에 대한 의문 대규모 데이터를 빠르게 처리해야 하는 작업에 파이썬(느린 언어)을 사용하는 것이 정말 좋은 생각인지에 대한 의문 제기.
Hacker News 의견
Pandas를 이용한 BM25 검색 엔진 개발
코드 리뷰:
SearchEngine
클래스k1
과b
라는 파라미터의 의미를 모르겠으며, 코드에 주석이 전혀 없음._documents
는 URL을 키로, 해당 URL의 내용을 값으로 가질 것으로 추정.검색 엔진의 복잡성
코드 행 수에 대한 의견
코드 내의 표현에 대한 농담
chunk for chunk in chunks if chunk
표현을 보고 나무꾼에 관한 농담이 떠오름.추천 엔진 코드 예시
파싱 라이브러리 성능 비교
lxml.html
과lxml.html.clean
이BeautifulSoup
보다 훨씬 빠를 수 있음을 언급함.키워드 사용에 대한 조언
교육적인 프로젝트에 대한 의견
파이썬을 이용한 대규모 데이터 처리에 대한 의문