Skip to content
forked from mmasaki/Reudy19

Dockerコンテナで動くようにした人工無脳ロイディ。Ruby 3.4.7+Mecab対応

License

Notifications You must be signed in to change notification settings

kuwa2005/Reudy2025

 
 

Repository files navigation

Reudy2025

改変した人

  • 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に対応

使い方

Dockerを使用する場合(推奨)

詳細は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.rb

ローカルで実行する場合

IRCボットとして使う場合

public/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.rb

Dockerを使用する場合:

# コンテナを起動
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

 

Mastodonボットとして使う場合(推奨)

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ボットとして使う場合(非推奨)

注意: 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」というファイル名で保存されます。

Lingrボットとして使う場合

動作にはSinatraが必要です。

gem install sinatra

でインストールして下さい。

デフォルトではWEBrickが4567番ポートで動作するはずです。
Lingrにアクセスし、SettingsのBotsからcreate a new botをクリックして、Callback URLにWEBrickへ到達可能なURLを指定して下さい。

改変の内容

Ruby 3.4対応(kuwa2005)

  • Ruby 3.4系で動作するように互換性修正
    • File.exists?File.exist?
    • File#linessplit(Ruby 3.4で削除されたメソッド)
    • Kernel.openFile.open
    • YAML.loadYAML.unsafe_load(Psych 5.0対応)
    • require 'thread'削除(標準ライブラリに統合済み)

Dockerコンテナ化(kuwa2005)

  • Dockerfileとdocker-compose.ymlを追加
  • Gemfileで依存関係を管理
  • docker execで簡単に実行可能

Mastodon API対応(kuwa2005)

  • Twitter APIの代替としてMastodon APIに対応
  • mastodon_reudy.rbを追加

コード

ソースコードをできる限りRubyコーディング規約に沿うように改変しました。

DBM周りの変更

本家ロイディは文尾辞書の保持にRuby/GDBMを使用していましたが、PStoreをデフォルトのDBMとしました。
また、[],[]=などの数個のメソッドを定義したrbファイルを作成して lib/reudy/以下に置くだけで、利用出来るDBMを簡単に追加できるようになっています。

Twitter用インターフェースの追加

twitter_reudy.rbというTwitter用インターフェースを追加しています。

Lingr用インターフェースの更新

Lingrの仕様変更に対応しました。

コマンドラインオプションの解釈

コマンドラインオプションのパースにOptionParserを使うようになりました。

単語の抽出にMeCabを使用(デフォルト)

単語の抽出に形態素解析エンジンMeCabデフォルトで使用します。
これにより、正規表現ベースの単語抽出よりも高精度な形態素解析が可能になります。

MeCabを使用しない場合は、--no-mecabオプションを指定してください:

ruby stdio_reudy.rb --no-mecab

DockerコンテナにはMeCabとmecab-ipadic-utf8辞書が組み込まれています。
ローカル環境で使用する場合は、MeCabとMeCabから利用可能な辞書、MeCabのRuby用バインディングmecab-rubyが必要です。

About

Dockerコンテナで動くようにした人工無脳ロイディ。Ruby 3.4.7+Mecab対応

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 74.0%
  • HTML 23.1%
  • CSS 1.5%
  • Other 1.4%