??? : "하... 뭐 고르지?", 기술 선택의 이유와 근거 (1)

2023. 7. 24. 20:42광고차단 머신러닝

728x90

뭐 먹을까요? 깔깔깔

 

산학협력 프로젝트, 광고 차단 오토로 돌리기 (졸업 하고 싶어요ㅠ)

1. 오늘의 주제 이번에 진행한 프로젝트는 산학협력 프로젝트입니다! 주제는 '기계 학습을 통한 광고 사이트 자동 차단 프로그램' 입니다. 이미 광고 사이트 차단해주는 프로그램 있지 않아요? Ad

xpmxf4.tistory.com

저번 글에 이어서 이번에는 전반적인 흐름과

전체적인 흐름에서 제가 선택한 기술들에 대한 이유와 근거에 대해 설명해보겠습니다!


1. 전반적인 흐름

프로젝트 흐름도

저번 글에서 보여드렸던 프로젝트의 전반적인 흐름도 입니다.

위 과정을 조금 단순하게 나누면은 다음과 같아집니다.

  1. Google Trend 로 최근 키워드 확보
    키워드들을 순열 조합, 검색을 실시해 URL 확보
  2. URL 들에 쿼리를 보내 HTML 에서 <body> 태그만 추출
  3. 태그 내부 자연어만 추출해 BERT 학습
  4. 구조적 특징 기반 학습

이렇게 정리를 해볼 수가 있을 텐데, 위 정리에서 3 가지 질문을 던져볼 수가 있습니다.

  1. 왜 키워드들을 가지고 순열 조합을 굴리냐?
  2. HTML <body> 못지않게 <head> 도 중요한 데 왜 그렇게 하지 않았나?
  3. 왜 굳이 자연어 기반 학습을 선택으로 했나?
  4. 구조적 특징은 왜? -> 이건 다음 글에서 답하도록 하겠습니다!

오늘은 위 3가지 질문들에 대해 선택에 대한 이유와 근거에 대해 설명해보는 글을 써보려고 합니다!

2. 왜 굳이 키워드들로 순열 조합을 돌릴까?

 

Google 트렌드

Google 트렌드에서 시간, 위치, 인기도순으로 검색 관심도 탐색

trends.google.co.kr

위 구글 트렌드에서 최근 트렌드들을 엑셀 파일로 담아오게 된다면 아래처럼 다운을 받을 수 있습니다.

 

저렇게 생긴 키워드가 50개 정도가 존재하고, 각각의 키워드들로 검색을 해도

최근 키워드에 맞춘 사이트를 볼 수 있을 것입니다.

하지만 이번 프로젝트의 목표는 광고 사이트를 구분하는 기계학습 모델을 만드는 것이고

그렇게 하기 위해서 일단 광고 사이트를 만들어야 합니다.

 

하지만 구글에서도 이런 광고 사이트를 막기 위한 노력을 하지 않는 게 아니기 때문에

위 키워드들을 단일 키워드로 검색을 하게 된다면 광고 사이트는 잘 나오지 않습니다.

그래서 처음에 이 부분부터 막히고

 

내가 악성 광고 사이트 주인이라면 어떻게 검색 엔진 최적화(?) 를 통해
사용자들이 내 광고 사이트에게 접근하게 만들까?
그것도 아주 적은 비용으로!

 

라는 고민에 휩싸였습니다.

 

그렇게 고민을 하다 문득 이런 생각이 들었습니다.

 

그냥 유행어를 사이트안에 다 때려박으면 뭐 하나는 걸리지 않을까?

 

이렇게 생각을 하고 구글 검색 엔진 공식 사이트에서 확인을 해보니

 

Google에서 검색하는 방법 - Google 검색 고객센터

Google에서 정보를 쉽게 찾는 데 도움이 되는 팁과 유용한 정보를 몇 가지 알아보세요. 팁 1: 기본적인 검색어로 시작 찾고 있는 내용이 무엇이든 가까운 공항과 같이 간단한 검색어로 시작하세요.

support.google.com

기본적으로 여러 키워드들을 조합하게 되면 모든 키워드가 포함된 문서를 최대한 찾게 된다.

따라서 여러 키워드들을 순열 조합을 시켜 광고 사이트를 찾도록 했고 결과는 

조합의 결과물

단일 키워드들로 검색했을 때보다 더 쉽게 광고 사이트를 찾을 수 있었다.

3. 왜 굳이 body 태그만 추출할까?

이 프로젝트를 시작하게 된 계기 중 하나가 아래와 같은 사이트들 때문이었다.

누가 봐도 광고 사이트,,,ㅋㅋㅋㅋ

아니 생긴 게 세상 광고 사이트처럼 생겼는 데

AdGuard 가 잡지 못한다는 것이다.

 

그래서 내가 잡아야 겠다라고 생각은 했는 데 고민이 생겼다.

광고 사이트처럼 생긴 게 대체 뭐지 그럼?
생겼다는 것을 개발자의 언어로 어떻게 풀어야 할까?

고민을 하다 보니 결국 유저, 즉 내가 보는 생긴 부분

body 안 태그들 내부에 존재하는 자연어들이 바로 개발에서의 생긴 것이라는 생각이 들었다.

 

좋은 결론이었다고 생각은 한다.

하지만 문제점은 의외의 곳에서 터졌다.

어우 자연어가 많네~

위는 트렌드 키워드에서 나온 URL 을 눌렀더니 접속하게 된 성인 광고 사이트중 하나인데

해당 사이트의 경우 자연어가 상당이 많다.

 

추후 다른 글을 통해 BERT 가 학습을 하는 방법에 대해 설명을 하겠지만

간단히 설명하자면 자언어처리 모델들은 문장에 존재하는 단어들을

특정 기준에 의거해 '토큰' 이라는 단위로 분리를 하게 된 다음

이를 미리 지정해둔 규칙을 통해 기계에게 학습을 시키게 된다.

 

이때 학습을 하기 위해 넣는 토큰의 갯수는 지정을 할 수 있지만

최대 512 개가 상한선이다.

가운데 max_length 가 집어넣는 토큰의 최대 갯수입니다!

즉, 위 같은 성인 광고 사이트의 경우 토큰이 너무 많아서

모든 토큰을 입력값으로 넣을 수 없다는 단점이 존재하기 때문에

모델이 제대로 학습을 안할 수 있다는 경우가 있다.

 

이 부분에 대해서도 고민을 했었는 데 내린 결론은

개발의 영역이 아니라 오히려 마케팅, 심리적 방법을 통해

주로 웹사이트의 핵심 내용이 어디에 담겨 있냐를 알아야 한다 라는 결론이 나왔다.

 

그러기에 일단 핵심 부분 추출하기는 보류중이다.

728x90