Twitter의 트렌드를 북돋우는 Bot 만들기
그럴 때 특정 태그에서 문장을 생성하고 자동 트윗하는 Bot을 Python으로 만들어 봅시다.
이번에는 Twitter에서 문장을 가져와 문장을 만드는 곳은 생략합니다.
또, 3회 정도 갱신하고 있습니다만,
제일 처음의 녀석이 간단하기 때문에 그쪽의 해설을 해 보려고 생각합니다.
구문 분석하기
우선 일본어에서 명사를 꺼내야 합니다. 이번에는
janome
라는 구문 분석 라이브러리를 사용합니다.janome
는 일본어를 구문으로 분해하는 도구입니다.from janome.tokenizer import Tokenizer
tokenizer = Tokenizer()
sentence = '本日のゲストは和田さんでした。'
for token in tokenizer.tokenize(sentence):
print(token)
# 本日 名詞,副詞可能,*,*,*,*,本日,ホンジツ,ホンジツ
# の 助詞,連体化,*,*,*,*,の,ノ,ノ
# ゲスト 名詞,一般,*,*,*,*,ゲスト,ゲスト,ゲスト
# は 助詞,係助詞,*,*,*,*,は,ハ,ワ
# 和田 名詞,固有名詞,人名,姓,*,*,和田,ワダ,ワダ
# さん 名詞,接尾,人名,*,*,*,さん,サン,サン
# でし 助動詞,*,*,*,特殊・デス,連用形,です,デシ,デシ
# た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
# 。 記号,句点,*,*,*,*,。,。,。
와 같이 일본어를 분해합니다.
중복 점검
이제 1 트윗을 분해해도 좋지만, 이것이라면 노이즈가 섞일 가능성이 있습니다.
그래서 여러 트윗에 같은 명사가 존재하는 경우에만 문장을 만들도록 합니다.
이런 사람도 있습니다.
우선, 중복 추출용의 클래스입니다.
class DuplicateChecker:
def __init__(self, tokenier: Tokenizer):
self.twitt_nouns = []
self.tokenier = tokenier
def extract_duplications(self) -> [str]:
return [x for x in set(self.twitt_nouns) if self.twitt_nouns.count(x) > 1]
def input_twitt(self, twitt: str):
tokens = self.tokenier.tokenize(twitt)
nouns = []
buffer = None
for token in tokens:
if token.part_of_speech.count("名詞"):
if buffer is None:
buffer = ""
buffer += token.surface
else:
if buffer is not None:
nouns.append(buffer)
buffer = None
self.twitt_nouns.extend(nouns)
이제 중복을 확인하면 다음과 같습니다.
tokenier = Tokenizer()
duplicateChecker = DuplicateChecker(tokenier)
duplicateChecker.input_twitt("縞模様に可能性を感じました")
duplicateChecker.input_twitt('もう可能性しか感じない')
duplicateChecker.input_twitt('可能性感じる')
nouns = duplicateChecker.extract_duplications()
nouns # ["可能性"]
(제작은 한층 더 유저라도 체크를 걸고 있었습니다.)
문장 생성
마지막으로 꺼낸 명사에서 문장을 만듭니다. (이번은 적당합니다.)
class SentenceGenerator:
def __init__(self, nouns:[str]):
self.nouns = nouns
self.senence_base = ["{}は草", "{}大切", "{}", "{}ね", "{}だね", "{}!"]
def generate(self) -> str:
index:int = int(random.uniform(0, 200)) % len(self.senence_base)
sentence = self.senence_base[index].format(self.nouns[0])
return sentence
실행하면 이런 느낌이 듭니다.
요약
이번에는 엉뚱한 간단한 것을 만들어 보았습니다.
만약, 반향이 있으면 어떻게 업데이트해 갔는지 쓰려고 합니다.
Reference
이 문제에 관하여(Twitter의 트렌드를 북돋우는 Bot 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ObuchiYuki/items/c3fd7bdaf18bcb999a0d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)