キーワードタイムラインは、トゥートした内容に特定のキーワードが含まれている投稿のみを厳選して表示することが出来るタイムラインのことである。

使い方

  1. 特定キーワードを含めた通常のトゥートと同様に投稿する。
  2. Webクライアントからキーワードタイムラインのボタンを選択する。
    もしくはキーワードタイムラインに割り当てられたハッシュタグタイムラインを開く。

設定済みのキーワード及びハッシュタグ

  1. スタッフ #mia_staff
    • キーワード
      つくし\s(あきひと|卿|先生)|小島\s正幸|垪\s和等|飯野\s慎也|吉成\s鋼|黄瀬\s和哉|高倉\s*武史|kevin\s+penkin|キネマシトラス\
    • 形態素解析
      竹書房
  2. 声優 #mia_cast
    • キーワード
      富田\s美憂|伊瀬\s茉莉也|井澤\s詩織|坂本\s真綾|大原\sさやか|豊崎\s愛生|喜多村\s英梨|森川\s智之|日高\s里菜|沼倉\s愛美|田村\s睦心|塙\s愛美|村田\s太志|稲田\s徹|生天目\s*仁美
    • 形態素解析
      'しーたむ'
  3. オース #mia_orth
    • キーワード
      殲滅卿
    • 形態素解析
      'きゆい', 'しぇるみ', 'しぎー', 'じるお', 'なっと', 'はぼるぐ', 'べるちぇろ', 'みお', 'めなえ', 'らいざ', 'らふぃー'
  4. 監視基地 #mia_seekercamp
    • キーワード
      監視基地|シーカーキャンプ|地臥せり|不動卿
    • 形態素解析
      'いぇるめ', 'おーぜん', 'ざぽ', 'しむれど', 'まるるく'
  5. 前線基地 #mia_idofront
    • キーワード
      祈手|アンブラハンズ|前線基地|黎明卿|カートリッジ
    • 形態素解析
      'いどふろんと', 'いりむ', 'ぐえいら', 'さおはぶ', 'ぼんどるど', 'めいなすといりむ', 'ぷるしゅか' |
  6. リコさん隊 #mia_rikos_party
    • 形態素解析
      'ななち', 'みーてぃ', 'めいにゃ', 'りこ', 'れぐ', 'ぷるしゅか' |
  7. 遺物 #mia_artifacts
    • キーワード
      暁に至る天蓋|命を響く石|遺物|おっぱい石|火葬砲|枢機に還す光|精神隷属機|千人楔|太陽玉|月に触れる|呪い針|呪い避けの籠|姫乳房|星の羅針盤|明星へ登る|無尽槌
    • 形態素解析
      'いんしねれーた', 'ぎゃんぐうぇい', 'しぇいかー', 'すぱらぐもす', 'ぞあほりっく', 'ふぁーかれす', 'ぶれいずりーぶ', 'ゆあわーす'
  8. イルブル #mia_ilblu
    • キーワード
      干渉器|先触れの獣|三賢
    • 形態素解析
      'いるぶる', 'しょうろう', 'どぶーぐ', 'はでぃ', 'はにーすく', 'ふぁぷた', 'ぶえこ', 'ぶえろえるこ', 'べらふ', 'まああ', 'まじかじゃ', 'わずきゃん'
  9. 原生生物 #mia_creature
    • キーワード
      [慣成な]れ[は果|て
    • 形態素解析
      'くおんがたり', 'たけぐま', 'たまうがち', 'ねりたんたん', 'べにくちなわ', 'りゅうさざい'
  10. 場所 #mia_place
    • キーワード
      ベルチェロ孤児院|シーカーキャンプ|監視基地|前線基地|[な成慣]れ[果は]て村|目の奥|[一二三四五六七1-71-7\層|アビスの淵|誘いの森|大断層|巨人の盃|なきがらの海|還らずの都|最果ての渦|奈落の底|船団キャラバン
    • 形態素解析
      'おーす', 'いどふろんと', 'どぐーぶ', 'しょうろう' |
  11. 奈落文字 #mia_nether_gryph
    • キーワード
      奈落文字|悠遠の文字|:nrk0-9a-f{4}:
    • 形態素解析
      'ねざーぐりふ', 'びよんどぐりふ'
  12. 全般 #メイドインアビス
    • キーワード
      竹書房|キネマシトラス|上昇負荷|呪い|[電伝]報船|力場|[な成慣]れ[果は]て|不屈の花|お祈り骸骨|鈴付き|[赤青蒼月黒白\笛|探窟家|度し難|奈落シチュー|ラストダイブ|絶界行
    • 形態素解析
      'アビス', 'とこしえこう', 'んなぁ', 'めいあび'

2018/2/6 現在の設定済みキーワード

※全般タイムラインは、その他のキーワードが見つかった場合にも同時に付与されます。

技術情報

形態素解析について

当キーワードタイムラインを実装するに伴い、正規表現によるテキスト検索と形態素解析を用いた単語検出を併用することで、キーワード検出の精度を高めています。

形態素解析については、京都大学 大学院情報学研究科 黒橋・河原研究室が開発している JUMAN++ ver1.02 を利用しています。
Juman++があまりにも重すぎたので、MeCabに移行しました。

MeCab導入手順

いろいろ苦戦したのでMeCab導入メモ

  1. 日本語パッケージを導入
    ロケールja_JP.UTF-8が入っていないと文字バケーションするみたいなので、事前に設定しておく
    $ locale
       System Locale: LANG=C.UTF-8
           VC Keymap: n/a
          X11 Layout: en
    $ localectl list-locales
    C.UTF-8
    en_US.utf8
    ※ロケール「ja_JP.UTF-8」が入っていない&設定されていない場合はパッケージを入れる
    $ sudo apt install -y language-pack-ja
    $ sudo localectl set-locale LANG=ja_JP.UTF-8
  2. ソースコードをダウンロード・展開
    mecab0.996とmecab-ipadicを落としてくる。コマンド省略。
    ※wget出来なそうなので、ローカルに落としてからアップロードしてください。
    wgetはできるけどオプションつけないとファイル名が汚い

    シングルクォートつけて-Oオプションを付与する
    $ wget 'https://....' -O mecab-0.996.tar.gz
  3. ビルド
    MeCabはデフォルトがEUC-JPなので、オプションでUTF-8にすることを忘れない。
    $ cd mecab-0.996
    $ ./configure --with-charset=utf8 --enable-utf8-only
    $ make
    $ sudo make install
    ※このときlibmecabも入るはずなのだが、なぜかライブラリが見つからないと怒られるので、aptから入れてしまう。
    $ sudo apt install libmecab-dev libmecab2
    /usr/local/lib が参照されていないみたいなので、ldconfigに追加しましょう
    $ sudo echo '/usr/local/lib/*' >> /etc/ld.so.conf
    $ ldconfig
    $
    $ cd ../mecab-ipadic-2.7.0-20070801
    $ ./configure --with-charset=utf8
    $ make
    $ sudo make install
  4. ユーザー辞書登録
    適当な場所にユーザー辞書登録用のディレクトリを掘ると楽な気がする。
    なお、ここで使われているユーザー辞書のCSVについては GitHubにて公開 している。
    $ # defファイルを文字コード変更しないと行けないので。
    $ sudo apt install nkf
    $
    $ # ユーザー辞書コンパイルに必要なipadicのデータを拾ってくる
    $ cp -r /usr/local/lib/mecab/dic/ipadic userdic
    $ cd userdic
    $
    $ # 文字コードをUTF-8に変換
    $ nkf -w --overwrite *.def
    $
    $ # ユーザー辞書データを作成
    $ vim mia.csv
    $
    $ # 必要に応じて改行コードを直す
    $ sed -i 's/\r//' mia.csv
    $
    $ # ユーザー辞書データをコンパイル
    $ /usr/local/libexec/mecab/mecab-dict-index -u mia.dic -c utf-8 -t utf-8 -f utf-8 mia.csv
    $
    $ # ユーザー辞書データを格納して設定ファイルに記述(場所はどこでもいいのだが。。。)
    $ sudo mkdir -p /usr/local/lib/mecab/dic/
    $ sudo vim /usr/local/etc/mecabrc
  5. テスト
    $ mecab
    ※コマンドを実行すると、プロンプトは帰ってきませんが入力待ち状態になっています。

juman++導入手順

(追記)一応メモとして残しておきますが、MeCabを利用する場合は導入する必要はありません。

以下、Juman++導入とユーザー辞書登録をするまでの手順メモ。(マニュアルと手順が若干異なったので)

  1. 上記リンクからアーカイブを落としてくる (githubリポジトリもあるが辞書データなどが足りないぽい)
    $ wget http://lotus.kuee.kyoto-u.ac.jp/nl-resource/jumanpp/jumanpp-1.02.tar.xz  
    $ tar xvf jumanpp-1.02.tar.xz  
    $ cd jumanpp-1.02
  2. 必要なパッケージをインストール
    $ sudo apt install -y zsh libboost-dev
  3. 何も考えずにmake
    $ ./configure  
    $ make  
    $ sudo make install
  4. 辞書ファイルの作成・登録
    $ cd dict-build  
    $  
    $ # →ユーザー辞書の作成  
    $ # →./userdic/*.dicならファイル複数作っても大丈夫そう  
    $ vim ./userdic/yourdicname.dic  
    $  
    $ # →既存の邪魔な単語を削除  
    $ # →ユーザー辞書の登録(下記ファイル参照)  
    $ vim ./userdic/yourdicname.dic  
    $  
    $ # →Wikipedia辞書の「メイドインアビス」項から検出している単語を削除する。  
    $ vim ./wikipediadic/wikipedia.dic.orig  
    $  
    $ # →助動詞「んだ」を削除する(これをしないとんなぁーが引っかからない)  
    $ vim ./dic/AuxV.dic  
    $  
    $ # →すべての辞書ファイルをコンパイルするのでむっちゃ時間かかる  
    $ make  
    $  
    $ # →すべての辞書データをライブラリ格納ディレクトリ(/usr/lib/share/jumanpp)にコピーする  
    $ sudo ./install.sh
  5. テスト
    $ # とりあえず試してみたい場合  
    $ jumanpp  
    $  
    $ # 解析データの詳細を見たい場合  
    $ jumanpp -B 5  
    ※コマンドを実行すると、プロンプトは帰ってきませんが入力待ち状態になっています。

リビジョン

当機能を実装したリビジョンは以下の通りです。

  • 正規表現実装 https://github.com/wd-shiroma/abyss.fun/commit/83d2c5e845baaefd2839f359636e2533b7fd1352
    https://github.com/wd-shiroma/abyss.fun/commit/0a6d1d169a46b8aa10adce6e7738ba99bc633b83
    https://github.com/wd-shiroma/abyss.fun/commit/8c228d7b9b02bfb48720f5bffee75fa79bf71881
  • 形態素解析実装
    https://github.com/wd-shiroma/abyss.fun/commit/cd0112398c3d9608ecd6523b7be1404427d97573
    https://github.com/wd-shiroma/abyss.fun/commit/80f59383176e699483ab3b2bbf0c4183c4acd475
    https://github.com/wd-shiroma/abyss.fun/commit/f4eaeee360c450188e47a888d6aa3fee1e36ffc2