TL;DR
- InverSQL은 사용자가 선택한 CSV 셀을 기준으로 SQL을 생성하는 대화형 도구임.
- 사용자가 CSV를 업로드하고 SQL 결과에 포함할 셀을 선택하면 해당 선택이 입력 조건으로 사용됨.
- 데이터에
scikit-learn이진 결정 트리(Binary Decision Tree)를 과적합한 뒤 트리를 불리언 논리로 변환함. - 불리언 논리를
sympy로 단순화하고 조인과 조건을 각각 JOIN과 WHERE SQL 구문으로 변환함. - SQL 후보마다 결정 트리를 다시 학습해야 하지만 결정 트리 적합 속도가 빨라 UI에는 가장 짧은 쿼리가 표시됨.
작동 방식
- SQL을 직접 작성하지 않으려는 사용자가
InverSQLStreamlit 앱에 CSV를 업로드함. - 사용자가 셀을 선택하면 해당 셀이 SQL 쿼리에서 선택될 데이터로 지정됨.
- 업로드된 데이터에
scikit-learn이진 결정 트리를 과적합함. - 결정 트리를 분해하고 불리언 논리(Boolean Logic)로 변환해 설명 가능한 인공지능(Explainable AI) 표현을 구성함.
sympy로 불리언 논리를 단순화함.- 앞선 단계의 결과를 SQL로 생성하며, 조인은
JOIN, 불리언 조건은WHERE로 변환함. - 생성된 SQL을 사용자에게 표시함.
성능
- 개별 SQL 쿼리 후보마다 새로운 결정 트리를 다시 학습해야 함.
- UI에는 후보 중 가장 짧은 SQL 쿼리가 표시됨.
- 결정 트리 적합은 빠른 편이므로 성능을 크게 우려할 필요 없음.
기여
- 기여를 환영함.
- 기여 방법은
CONTRIBUTING.md를, 행동 규범은CODE_OF_CONDUCT.md를 참고함.
영감
regexgen의 처리 방식에서 영감을 얻음.- 정규 표현식 대신 SQL을 생성하고, 텍스트 선택 대신 레코드 선택을 사용함.
- 결정 트리 자체가 핵심적인 영감임.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요