축구 일본 대표전의 고조도를 시각화해 보았다
동기
오랫동안 Twitter를 사용하여 뭔가 만들어 보려고 생각한 것입니다.
단지, 소재가 생각나지 않는다. . .
그렇다면, 항구에서는 축구 월드컵 분위기가 난 것 같지 않습니까.
물론, 저도 밤에 밤인 축구 중계를 보면서 다음날 죽고 있는 배의 1명의 번역입니다만.
축구 관전 정보를 가시화해 보자☆라고 생각한 것입니다. (24일 17시경)
정확히 밤에는 일본 VS 세네갈이 앞둔 이유로 바로 Python과 MySQL을 사용하여 만들어 보았습니다.
실행 환경
막상 준비
일본전까지 시간도 없었기 때문에 우선, 움직이는 것을 만든다.
완성된 소스 코드는 Github 로 공개하고 있습니다.
실수나 개선점이 있으면 코멘트해 주세요.
시작 방법
이 근처의 설명에 관해서는 조사하면 무한히 나오므로 할애
docker-compose up -d
python twitter_stream.py
python analytics.py
아무튼 이 근처에 대해서는 희망이 있으면 자세하게 쓴다.
실행 결과
3시간 정도 실행해 약 38,000건 정도의 트윗 데이터가 모였다.
시각화한 결과가 아래의 이미지
꽤 재미 있습니다. 최악 중계 보지 않아도 무슨 일이 있었는지 알 수 있을 정도로는 된다.
향후 전망
트윗 내용도 보존하고 있으므로 자연 언어 해석이라고 하면 선수의 스코어 첨부도 할 수 있지 않을까는 생각하지만, 그런 능력 없기 때문에 이번은 여기까지.
다음의 일본전까지 또 무언가 아이디어 떠오르면 실장해 보라.
그 후 Part1
수집한 데이터에 대해 워드 카운트를 실시해, 어느 선수가 가장 중얼거리고 있는지를 취득해 보았다
# ------------------------------------------
# モジュールインポート
# ------------------------------------------
# sqlalchemy
from sqlalchemy.orm import *
# DB設定ファイル
from db.db_conf import ENGINE
from db.twitter import Tweet
# MeCab
import MeCab
# ワードカウント
from collections import Counter
# ------------------------------------------
# 変数宣言
# ------------------------------------------
# W杯の日本選手
japanese_player = ['本田', '香川', '長友', '乾', '岡崎', '長谷部', '大迫', '柴崎', '武藤', '吉田', '酒井', '宇佐美', '川島', '槙野', '原口', '大島', '山口', '昌子', '東口', '中村', '遠藤', '植田', '西野']
# セッション作成
Session = sessionmaker(bind=ENGINE)
db_session = Session()
# MeCab設定
mecab = MeCab.Tagger ("-Ochasen")
# 最終的な結果格納用
word_counter = Counter()
# tweets = db_session.query(Tweet).all()
tweets = db_session.execute("select * from tweet.tweets where tweetd_at between '2018-06-25 00:00:00' and '2018-06-25 01:45:00'")
# MeCabのリストから名詞だけ抜き出す
def fetch_norm(list):
if '名詞' in list[3]:
return list[0]
for tweet in tweets:
# 事前処理
target_str = tweet.tweet.split('https')[0]
# 形態素解析
# 改行で分けてリスト化
mecabed = mecab.parse(target_str).split('\n')
# 各単語を\tで分割してリスト化(最後の改行記号とか放置)
mecabed = list(map(lambda x: x.split('\t'), mecabed[:-2]))
# 単語の情報だけ抜き出し
mecabed = list(map(fetch_norm, mecabed))
# 名詞じゃないリスト要素を消去
mecabed = list(filter(None, mecabed))
# ワードカウント
word_counter += Counter(mecabed)
# 結果表示
print('{} : {}({})'.format(tweet.id, mecabed, tweet.tweetd_at))
# 最終結果
for word, cnt in word_counter.most_common():
# 日本人選手だったら
if word in japanese_player:
print('{} : {}'.format(cnt, word))
일본전이 행해지고 있던 시간만의 트윗을 취득해 중얼거리는 횟수가 많은 선수로부터 나란히 해본 결과가 이쪽
(중지된 횟수) : (선수명)
2179 : 乾
2145 : 本田
1836 : 川島
779 : 大迫
581 : 長友
575 : 柴崎
452 : 西野
451 : 長谷部
312 : 香川
289 : 岡崎
242 : 原口
168 : 宇佐美
92 : 吉田
92 : 昌子
76 : 酒井
52 : 武藤
41 : 中村
15 : 東口
12 : 山口
11 : 槙野
10 : 大島
9 : 植田
7 : 遠藤
음, 예상대로 결과가 느껴졌습니다.
코멘트 모집중
Reference
이 문제에 관하여(축구 일본 대표전의 고조도를 시각화해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yakult/items/8ac3ac2b0c7be7aacbb3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)