[자동 보팅 봇 만들기-3] 화이트 리스트, 블랙 리스트! 키워드로 필터링하기 with Python
안녕하세요, 입니다. 좀 더 똑똑한 자동 보팅을 위해, 화이트 리스트와 블랙 리스트로 필터링하는 방법을 알아봅시다.
화이트 리스트란?
화이트 리스트는 행동을 취하기 위해 필요한 키워드의 집합입니다. 예를 들자면..
[평화를 불러오기 위해선 '마사' 한마디면 충분]
라던가,
[우주명작 바이오쇼크는 저 3단어로 조종당하는 사람의 일대기를 다룹죠. would you kindly vote?]
이런 것처럼, 특정한 키워드를 들었을 행동을 취하는 것들의 집합이 화이트 리스트 입니다.
블랙 리스트란?
화이트 리스트의 반대입니다. 특정한 키워드를 들었을 때, 아무런 행동을 취하지 않는 것 입니다. 혹은 음(negative)적인 행동을 하기도 하지요.
예를 들자면,
[설마했던 그런 일이 있었죠]
뭐.. 이런거겠죠..
코딩 타임~
1. 보팅 규칙 확장
먼저 보팅 규칙을 확장해봅시다. 우리에게 추가적으로 필요한 것은 화이트 리스트, 블랙 리스트 단어 집합입니다. 그리고 문서는 제목과, 본문으로 이루어져 있으므로 이들 각각에 대해서 받도록 합시다.
"rule":[
{"id":"tmkor",
"mode":"vote",
"delay":5,
"title_white":[],
"title_black":[],
"body_white":[],
"body_black":[]}
],
예를 들어, 님의 [척] 시리즈를 보팅하고 싶다면
id는 shiho title_white는 ["[척]"] 이렇게 입력받으면 되겠지요. 혹은 님의 이더레이싱 혹은 이더 연예인 시리즈가 너무 슬퍼 빨리 빠져나오시게 보팅을 안하려고 한다면
id에 twinbraid, body_black에 `["이더레이싱", "이더 연예인"] 이런식의 입력을 받게 됩니다.
2. 블랙리스트, 화이트리스트 처리 규칙
블랙리스트는 리스트에 포함된 어떠한 단어라도 1개 이상 나타나면 아웃입니다. 즉, 한정명제 중 존재명제(existential proposition)를 이용하면 됩니다. 반대로 화이트 리스트는 전칭명제(universal proposition)를 이용하면 됩니다.
이를 코드로 표현하면..
def universal(W, text):
if len(W) == 0:
return True # for whitelist check
return reduce(lambda x,y:x&y,map(lambda w:w in text, W))
def existential(W, text):
if (len(W) == 0):
return False # for blacklist check
return reduce(lambda x,y:x|y,map(lambda w:w in text, W))
def white_black_check(post,rule):
t, b = get_title_body(post)
white = universal(rule['title_white'],t) & universal(rule['body_white'],b)
black = existential(rule['title_black'],t) | existential(rule['body_black'],b)
return white and not black
이렇게 됩니다.
결론
화이트 리스트와 블랙 리스트를 이용하면 자동 보팅을 좀 더 똑똑하게 만들 수 있습니다. 물론, 사용자가 지정해놓은 키워드로 움직이니 제한적이긴 하지만, 만약에 마음에 드시는 작가님의 연재글이 있다고 하면 정기적인 후원이 가능해집니다.
참고자료
- 실행 가능한 소스코드는 https://github.com/taeminlee/steem.autovote 에서 확인 가능합니다. ^^
- 자동 보팅 딜레이 주기 with Python
- steem API로 자동 보팅 봇 만들어보기 with Python
Leave [자동 보팅 봇 만들기-3] 화이트 리스트, 블랙 리스트! 키워드로 필터링하기 with Python to:
Read more #kr-dev posts
Best Posts From tmkor
We have not curated any of tmkor's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From tmkor
- 음원 분리 기법에 대하여.. (about singing voice separation)
- 아파트 실거래가 가격 예측 후기
- [IT용어] IPC (Inter-processing communication)
- [블록체인 기반 기술] 부인방지 (non-repudiation)
- [디자인패턴] 옵저버 패턴 (observer pattern)
- [디자인패턴] 팩토리 메소드 패턴 (Factory Method Pattern)
- loss, cost, objective function
- [ 공간 DB - 2 ] MySQL vs PostGIS (Postgresql) 범위 질의 성능 비교
- [SteemKR Discord] 스팀잇 태그 및 소모임 모니터링 도구 공개합니다.
- 스팀잇 댓글 모니터링 with Python
- [공간 DB-1] 위치 기반 서비스의 핵심 컴포넌트, 공간 DB (Spatial DataBase)
- [자동 보팅 봇 만들기-3] 화이트 리스트, 블랙 리스트! 키워드로 필터링하기 with Python
- 자동 보팅 딜레이 주기 with Python
- [STEEM PEACE] 최근 일련의 사태로 다운보팅을 받은 사람들을 위해..
- steem-python API 노드 변경법
- CPDAX 상장 예정 코인 3종 세트 : GTO, EOS, KNC 살펴보기
- steem API로 자동 보팅 봇 만들어보기 with Python
- 윈도우 10 환경에서 steem API 라이브러리 설치하기 with python
- 7 DAY BLACK&WHITE PHOTO CHALLENGE / @tmkor / DAY 7
- 7 DAY BLACK&WHITE PHOTO CHALLENGE / @tmkor / DAY 6