Skip to content
isdnetworks
Go back

원시 이벤트가 남기는 노이즈

작업 기록을 지식 그래프로 쌓으면서 초기에는 원시 이벤트를 가공 없이 그대로 올렸다. 노드가 3천 개를 넘긴 시점에 훑어보니 쓸모없는 것이 상당수 섞여 있었다.

Table of contents

Open Table of contents

다섯 종류의 노이즈

여러 조회로 나눠 패턴을 분류해 보니 노이즈가 다섯 종류로 갈렸다. 파일 절대경로가 통째로 하나의 노드가 돼 있었고 컨테이너 환경변수 이름까지 개체로 뽑혀 있었다.

작업 도구와 이벤트 훅의 이름도 있었는데 그것은 일의 내용이 아니라 일하는 방식에 해당한다. 추상 개념과 명령 문자열이 섞여 있었고 대소문자만 다른 중복과 아무거나 다 담는 광범위 항목도 함께 있었다.

왜 생기는가

원인을 따라가면 하나로 모이는데 추출이 텍스트에서 개체처럼 보이는 명사를 전부 뽑기 때문이다.

파일 경로도 대문자로 된 변수명도 추출 입장에서는 개체처럼 보인다. 특히 도구 응답이 문제였는데 명령 출력이 통째로 들어가면 거기 있는 온갖 문자열이 후보가 된다.

제외를 명시하고 앞에서 빼기

그래서 추출 지시에 무엇을 뺄지를 항목으로 명시했다. 파일 경로와 일반 프로그래밍 용어와 도구 이름과 사소한 세부와 환경변수 이름을 건너뛰게 했다.

뽑으라는 지시만 있고 빼라는 지시가 없으면 다 뽑는다. 더 앞에서도 막았는데 이벤트를 넣을 때 도구 응답 자체를 제외했다. 무엇을 했는지는 의미가 있지만 그 결과 출력은 대부분 노이즈이고 입력에서 빼는 것이 추출 지시로 거르는 것보다 확실하다.

초기에 지우는 값

삭제 대상을 세니 37개였고 경로와 환경변수와 도구 이름과 추상 개념과 중복과 저가치 메타로 나뉘었다. 이 시점에 지우는 것이 나중에 지우는 것보다 훨씬 싸다.

노이즈 노드가 중복 판정 후보 풀에 그대로 들어가기 때문이다. 새 항목이 들어올 때마다 기존 것과 같은지를 비교하는데 후보가 많을수록 비용이 늘고 비교에는 한계가 있다. 초기에 쳐 내면 그 뒤로 계속 이득이다.

광범위 항목과 정규화

다섯 종류 중에서도 일반 명사 하나가 특히 나빴다. 아무 내용이나 그 항목에 붙으므로 연결이 계속 많아지고 검색에서 항상 나오는데 정작 아무것도 알려 주지 않는다.

너무 일반적인 개체는 관계를 흐리므로 없는 편이 낫다. 대소문자만 다른 중복은 넣을 때 정규화해서 막았고 사후에 병합하는 것보다 그쪽이 맞다. 막는 지점은 입력과 추출과 정규화와 사후 삭제 순으로 앞쪽일수록 싼데 마지막만 하면 계속 쌓이는 것을 계속 지워야 한다.

정리


Share this post on:

Previous Post
다섯 번 따로 고친 같은 문제
Next Post
이관이 바꾼 ID와 모르던 밖