myaun’s blog

今年の僕のScrapbox事情

はじめに

2018年から使い始めて恐らく最もお世話になったWebサービスであるScrapboxをどんな用途にどれくらい使ったを振り返ってみました。

Scrapboxとは

次世代の情報共有ツール、知のコラボレーションツールなどと表現されております。まさにその通りで、メモがカード型でフラットに保存され、非常に簡易に情報を入力、検索することができます。私は、今までにEvernoteやらGoogle Keepやら色々使ってきましたが、Scrapboxに出会ってからはもう他のツールには戻れない状態で心酔しています。(理由はうまく説明できない)
Scrapboxの使い方やコンセプトについては、「マンガでわかるScrapbox」や書籍「Scrapbox情報整理術, 倉下 忠憲」がわかりやすく、詳しいです。

今年作成したプロジェクト一覧

Scrapboxでは、プロジェクト単位でページ管理します。私が今年作成したプロジェクトの一覧は以下の通りです。*1

仕事用

  1. 前職の情報管理用 46pages
  2. 現職の情報管理用 278pages
  3. 副業の情報管理用 84pages

これらの仕事用は、社内共有用のものとは別に個人的なMTGの簡易議事やタスクのTodoリストや仕事上で行った調べ物のURLや書籍のまとめなどの情報整理を行うことが多いです。

プライベート用

  1. 個人的な情報管理全般用 116pages
  2. ポートフォリオ的な使い方 23pages

1は、調べものや勉強会に参加したときや社外の人と会う時のログや趣味の解析について、週末の予定などもここに書いています。
2は、仕事、趣味含めて自分が行ったタスク毎にページを作り、それぞれについてコードの場所や参考文献の場所などを整理しています。(ガバガバですが...)

終わりに

全部で550ぺージぐらい作成しているので、思っている以上に使っているなという印象でした。最近ではブラウザ起動して一番最初にアクセスするのは大体Scrapboxのいずれかのプロジェクトなのでまあ妥当な結果ではありますね。

これらの約550ページは基本的にはプライベートなものなのですが、外部の人に共有しても有益そうなものはしっかりブログやSNSで発信できれば良いなと思いました。

*1:これらの他にも国際会議論文をまとめ用途など、細かいのはありますが

年越し前に自分のYouTubeの視聴履歴を解析したよ【Python】

はじめに

今年もあと数週間で終わりますが、1年間の振り返り方は人それぞれ色々あると思います。 本記事では、私が最も使っているサービスであるYouTubeの視聴履歴という楽しげなデータを見つけたので、自分が1年間どんな動画どれだけ視聴したかを確認してみました。

やったこと

  1. YouTubeの視聴履歴データを取得
  2. 視聴履歴の動画タイトルからキーワードを抽出
  3. 各キーワードの期間ごとの遷移を確認

1. YouTubeの視聴履歴データを取得

以下のURLからYouTubeデータのアーカイブをダウンロードできます。(Google関連サービスの色んなデータとれるようですが、今回はYouTubeのみ)
自分のデータをダウンロード: https://takeout.google.com/settings/takeout

ダウンロードしたデータの中にwatch-history.htmlというファイルが含まれており、ブラウザで確認すると↓のようなページです。 f:id:myaun:20181215004351p:plain

今回はこちらのデータを扱いやすいように以下のように整形しました。
HTMLファイルをBeautifulSoupで読み込み、PandasのDataframeにしました。

import pandas as pd
from bs4 import BeautifulSoup

fname = './history/watch-history.html'
f = open(fname, 'r', encoding='utf-8')
text = f.read()

soup = BeautifulSoup(text, 'lxml')
body = soup.find("body")
items = body.find_all( "div", attrs={"class": "outer-cell mdl-cell mdl-cell--12-col mdl-shadow--2dp"} )

rows = []
for item in items:
    divs = item.find("div", attrs={"class": "content-cell mdl-cell mdl-cell--6-col mdl-typography--body-1"})
    tmp = [ i for i in divs ]
    links = divs.find_all("a")
    watchtime = tmp[-1]
    for l in links:
        url = l.get('href')
        if url.find('channel') == -1:
            rows.append( [ watchtime, l.text, url ] )

df = pd.DataFrame( rows, columns=['time', 'title', 'url'] )

f:id:myaun:20181215004228p:plain

各月の視聴動画数

各月の視聴動画数を確認してみました。
全ての動画を最後まで再生しているわけではないものの、多いときは月1000本以上視聴している...1日30本!? f:id:myaun:20181215003722p:plain

2. 視聴履歴の動画タイトルからキーワードを抽出

  • 各動画がどんなものであるかを特定するために、動画タイトルからキーワードを抽出しました。(すでに削除されている動画はタイトルが不明なため取り除いています)
  • キーワード抽出は、形態素解析により固有名詞のみを抽出+Wikipedia記事が存在するもの固有名詞のみを抽出、という方法を行いました。
  • 形態素解析のためにJanome+neologd, Wikipedia記事のみ抽出するためにWikipedia2vecをそれぞれ使いました
from janome.tokenizer import Tokenizer
t = Tokenizer(mmap=True) 

from wikipedia2vec import Wikipedia2Vec
wiki2vec = Wikipedia2Vec.load('./tools/jawiki_20180420_100d.pkl')

def get_entity( text ):
    entityWikipedia = []
    for token in t.tokenize( text ):
        tag = token.part_of_speech.split(',')[1]
        prop = token.part_of_speech.split(',')[2]
        if tag == '固有名詞':
            kEntity = wiki2vec.get_entity( token.base_form )
            if kEntity == None: continue
            entityWikipedia.append( kEntity.title )
    return entityWikipedia

df['keywords_wiki'] = df['title'].apply( get_entity )

f:id:myaun:20181215012907p:plain

3. 各キーワードの期間ごとの遷移を確認

頻出キーワードの出現回数の月ごとの遷移を確認しました。思い出と共に。

ゲーム部門

f:id:myaun:20181215003649p:plain

女性アイドル部門

f:id:myaun:20181215003557p:plain

よく聴いた歌手部門

f:id:myaun:20181215003757p:plain

  • 2018年3月 米津玄師:ハマる。きっかけは忘れた。
  • 2018年10-11月 RIP SLYME:ハマる。小学5,6年以来。最近色々あったけど。

最後に

本記事では、自分のYouTubeの視聴履歴を自然言語処理等により解析しました。 簡単な内容ではありましたが、自分のデータを解析するのは楽しいので超おすすめです! スマホ世代に私たちの自分の振り返り方の1つだな~と思いました。

... 楽しい解析だなーと思って記事を書きましたが、視聴履歴を晒すのって超恥ずかしい。