tmkor avatar

[자동 보팅 봇 만들기-3] 화이트 리스트, 블랙 리스트! 키워드로 필터링하기 with Python

tmkor

Published: 31 Jan 2018 › Updated: 31 Jan 2018[자동 보팅 봇 만들기-3] 화이트 리스트, 블랙 리스트! 키워드로 필터링하기 with Python

[자동 보팅 봇 만들기-3] 화이트 리스트, 블랙 리스트! 키워드로 필터링하기 with Python

안녕하세요, tmkorHive account@tmkor 입니다. 좀 더 똑똑한 자동 보팅을 위해, 화이트 리스트와 블랙 리스트로 필터링하는 방법을 알아봅시다.

화이트 리스트란?

화이트 리스트는 행동을 취하기 위해 필요한 키워드의 집합입니다. 예를 들자면..


[평화를 불러오기 위해선 '마사' 한마디면 충분]

라던가,


[우주명작 바이오쇼크는 저 3단어로 조종당하는 사람의 일대기를 다룹죠. would you kindly vote?]

이런 것처럼, 특정한 키워드를 들었을 행동을 취하는 것들의 집합이 화이트 리스트 입니다.

블랙 리스트란?

화이트 리스트의 반대입니다. 특정한 키워드를 들었을 때, 아무런 행동을 취하지 않는 것 입니다. 혹은 음(negative)적인 행동을 하기도 하지요.

예를 들자면,


[설마했던 그런 일이 있었죠]

뭐.. 이런거겠죠..

코딩 타임~

1. 보팅 규칙 확장

먼저 보팅 규칙을 확장해봅시다. 우리에게 추가적으로 필요한 것은 화이트 리스트, 블랙 리스트 단어 집합입니다. 그리고 문서는 제목과, 본문으로 이루어져 있으므로 이들 각각에 대해서 받도록 합시다.

"rule":[
        {"id":"tmkor",
        "mode":"vote",
        "delay":5,
        "title_white":[],
        "title_black":[],
        "body_white":[],
        "body_black":[]}
    ],

예를 들어, shihoHive account@shiho 님의 [척] 시리즈를 보팅하고 싶다면 idshiho title_white["[척]"] 이렇게 입력받으면 되겠지요. 혹은 twinbraidHive account@twinbraid 님의 이더레이싱 혹은 이더 연예인 시리즈가 너무 슬퍼 빨리 빠져나오시게 보팅을 안하려고 한다면 idtwinbraid, 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

이렇게 됩니다.

결론

화이트 리스트와 블랙 리스트를 이용하면 자동 보팅을 좀 더 똑똑하게 만들 수 있습니다. 물론, 사용자가 지정해놓은 키워드로 움직이니 제한적이긴 하지만, 만약에 마음에 드시는 작가님의 연재글이 있다고 하면 정기적인 후원이 가능해집니다.

참고자료

Leave [자동 보팅 봇 만들기-3] 화이트 리스트, 블랙 리스트! 키워드로 필터링하기 with Python to:

Written by

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