- Glass_saga (Ruby 1.9対応)
- kuwa2005 (Ruby 3.4対応、Docker化、MeCabデフォルト化)
東京工業大学 ロボット技術研究会の市川 宙(Gimite)さんが中心となって作成した日本語人工無脳ロイディを、Ruby 3.4系で動作するようにアップグレードし、Dockerコンテナ化したものです。
- Ruby 3.4対応: 最新のRubyで動作
- Dockerコンテナ化:
docker execで簡単に実行可能 - MeCabデフォルト使用: 形態素解析による高精度な単語抽出(
--no-mecabで無効化可能) - Mastodon対応: Twitter APIの代替としてMastodon APIに対応
詳細はREADME_DOCKER.mdを参照してください。
# ビルド
docker-compose build
# 起動
docker-compose up -d
# IRCボットとして実行
docker exec -it reudy ruby irc_reudy.rb
# Mastodonボットとして実行
docker exec -it reudy ruby mastodon_reudy.rb
# 対話型で実行
docker exec -it reudy ruby stdio_reudy.rbpublic/setting.ymlを編集してIRC接続情報を設定してください:
# IRCサーバー接続設定
:host: irc.ircnet.ne.jp # IRCサーバーのホスト名
:port: 6668 # ポート番号(通常は6667または6668)
:encoding: UTF-8 # 文字コード(UTF-8推奨)
:channel: "#reudy_test" # 参加するチャンネル
:info_channel: "#reudy_test" # 情報出力用チャンネル
# ボットの設定
:nick: ReudyTest # ボットのニックネーム
:nicks: # ボットが反応するニックネームのリスト
- Reudy
- reudy
- ロイディ
# 接続時のメッセージ
:joining_message: こんにちは。 # チャンネル参加時の挨拶
:leaving_message: さようなら。 # 退出時のメッセージ
# パスワードが必要な場合
:login_password: # サーバー認証パスワード(不要な場合は空)
:channel_key: # チャンネルキー(不要な場合は空)
# 動作モード(0:沈黙, 1:寡黙, 2:通常, 3:饒舌, 4:必ず応答)
:default_mode: 2
# 自動再接続
:auto_reconnect: true設定後、以下のコマンドでIRCクライアントが立ち上がります:
ruby irc_reudy.rbDockerを使用する場合:
# コンテナを起動
docker-compose up -d
# IRCボットを実行
docker exec -it reudy ruby irc_reudy.rbコマンドラインオプション:
# 設定ディレクトリを指定
ruby irc_reudy.rb -d /path/to/public
# DBMタイプを指定(デフォルト: pstore)
ruby irc_reudy.rb --db pstore
# MeCabを使用しない(デフォルトではMeCabを使用)
ruby irc_reudy.rb --no-mecab
Twitter APIの代替として、Mastodon APIに対応しています。
public/setting.ymlに以下を設定してください:
:mastodon:
:instance_url: "https://mastodon.example.com"
:access_token: "your_access_token_here"Mastodonのアクセストークンは、Mastodonインスタンスの「設定 > 開発 > アプリケーション」から取得できます(読み取り・書き込み権限が必要)。
ruby mastodon_reudy.rb注意: Twitter APIは現在容易に使用できません。Mastodonボットの使用を推奨します。
動作にはrubytterとhighlineが必要です
gem install rubytter highlineでインストールして下さい。
http://dev.twitter.com/apps/new から新しいアプリを作成して、取得したConsumer key/secretをtwitter_reudy.rbに記入して使って下さい。
初回にアクセストークンを取得する為のURLが示されるので、
そのURLにアクセスしてAllowをクリックし、表示された番号(PIN)を入力して下さい。
アクセストークンはtwitter_reudy.rbと同じフォルダに「token」というファイル名で保存されます。
動作にはSinatraが必要です。
gem install sinatra
でインストールして下さい。
デフォルトではWEBrickが4567番ポートで動作するはずです。
Lingrにアクセスし、SettingsのBotsからcreate a new botをクリックして、Callback URLにWEBrickへ到達可能なURLを指定して下さい。
- Ruby 3.4系で動作するように互換性修正
File.exists?→File.exist?File#lines→split(Ruby 3.4で削除されたメソッド)Kernel.open→File.openYAML.load→YAML.unsafe_load(Psych 5.0対応)require 'thread'削除(標準ライブラリに統合済み)
- Dockerfileとdocker-compose.ymlを追加
- Gemfileで依存関係を管理
docker execで簡単に実行可能
- Twitter APIの代替としてMastodon APIに対応
mastodon_reudy.rbを追加
ソースコードをできる限りRubyコーディング規約に沿うように改変しました。
本家ロイディは文尾辞書の保持にRuby/GDBMを使用していましたが、PStoreをデフォルトのDBMとしました。
また、[],[]=などの数個のメソッドを定義したrbファイルを作成して lib/reudy/以下に置くだけで、利用出来るDBMを簡単に追加できるようになっています。
twitter_reudy.rbというTwitter用インターフェースを追加しています。
Lingrの仕様変更に対応しました。
コマンドラインオプションのパースにOptionParserを使うようになりました。
単語の抽出に形態素解析エンジンMeCabをデフォルトで使用します。
これにより、正規表現ベースの単語抽出よりも高精度な形態素解析が可能になります。
MeCabを使用しない場合は、--no-mecabオプションを指定してください:
ruby stdio_reudy.rb --no-mecabDockerコンテナにはMeCabとmecab-ipadic-utf8辞書が組み込まれています。
ローカル環境で使用する場合は、MeCabとMeCabから利用可能な辞書、MeCabのRuby用バインディングmecab-rubyが必要です。