/markov4eb

EasyBotter 用日本語マルコフ連鎖ツイート関数

Primary LanguagePHPOtherNOASSERTION

markov4eb Build Status

v1.40 (2013-01-08; 2.1.1)

https://github.com/wktk/markov4eb
https://twitter.com/wktk

主な仕様

  • bot から見たタイムラインから、最新 30 件のツイートを取得して動作します。
  • タイムラインの他にもリストなどからの取得も可能です。
  • ツイート内の英字ハッシュタグや URL などは除去されます。
  • RT の内容は連鎖対象から除かれます。
  • 鍵アカウントのツイートは拾いません。
  • twittbot.net, EasyBotter 等からのツイートは拾いません。
  • マルコフ連鎖でのリプライも設定できます。
  • 単語への分割に Yahoo! JAPAN の 日本語形態素解析 Web API を利用しています。

注意

  • 拾うことに問題のないツイートだけを読み込む方がベターです。性質上ツイートの一部を引用するため、 許可を得ずに行うことは、場合によってはあまり好ましくありません。

導入手順

  1. EasyBotter の設置

  2. アプリケーション ID の取得

    • 「Yahoo! JAPAN デベロッパーネットワーク」のアプリケーション ID を、 https://e.developer.yahoo.co.jp/webservices/register_application から取得してください。
      • 取得には、Yahoo! JAPAN にログインできる ID が必要です。
      • 「アプリケーションの種類」は「認証を必要としないAPIを使ったアプリケーション」、「サイトURL」は「URLなし」を選択してください。
  3. EasyBotter.php の変更

    • EasyBotter.php の class EasyBotter { の中に、 markov.php の中身を全て貼り付けてください。
  4. bot.php の変更

    <?php
    require_once 'EasyBotter.php';
    $eb = new EasyBotter();
    $eb->appid = '上で取得したアプリケーション ID';
    
    // 通常 POST
    $eb->markov( 'タイムライン取得 URL' );
    
    // マルコフリプライ
    $eb->replymarkov( 'cron 間隔 (分)', 'タイムライン取得 URL' );
    
    // パターンマッチリプライ、マッチしないものはマルコフリプライ
    $eb->replypatternmarkov( 'cron 間隔 (分)', 'パターンファイル', 'タイムライン取得 URL' );
    • 値を省略するとデフォルト値が使用されます。
      • cron 間隔: 2 (分)
      • パターンファイル: reply_pattern.php
      • タイムライン取得 URL: https://api.twitter.com/1.1/statuses/home_timeline.json?count=30
    • 「タイムライン取得 URL」については後述します。省略すると home_timeline を取得します。
  5. Yahoo! デベロッパーネットワークのクレジット表示

  6. これで準備完了です。

タイムライン取得 URL の指定について

文章生成の素材用に取得するツイートの読み込み先を選択できます。
デフォルト (省略時) では、

  • タイムラインの最新 30 件
    https://api.twitter.com/1.1/statuses/home_timeline.json?count=30

のツイートを連鎖に使用します。

たとえば、以下のような指定が可能です。

  • タイムラインの最新 10 件
    https://api.twitter.com/1.1/statuses/home_timeline.json?count=10
  • 受け取った @ ツイート最新 30 件
    https://api.twitter.com/1.1./statuses/mentions_timeline.json?count=30
  • @wktk の最新 30 件のツイート
    https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=wktk&count=30
  • @wktk のリスト「my-accounts」から最新 30 件
    リスト名に全角文字や記号などが入っているとうまくいかないかも知れません
    https://api.twitter.com/1.1/lists/statuses.json?owner_screen_name=wktk&slug=my-accounts&per_page=30
  • @wktk の fav ったツイートから最新 30 件を読み込む
    https://api.twitter.com/1.1/favorites/list.json?count=30&screen_name=wktk

取得件数の最大値は 200 (Twitter API 側の仕様) ですが、多過ぎると処理の途中でタイムアウトしたり、 形態素解析 API のリクエスト数上限に達するおそれがあります。 取得件数は様子をみて調節してください。 markov4eb では、素材のツイート 1 つごとに形態素解析 API にリクエストが発生します。