差分

166 バイト追加 、 2023年6月15日 (木) 02:41
編集の要約なし
1行目: 1行目:  
'''ロボウサコ'''(英: robo usako)は、ますとどんちほーに存在するbotである。[https://www.kemov-project.com/ けものフレンズVぷろじぇくと]の[https://www.kemov-project.com/%E3%82%A6%E3%82%B5%E3%82%AE%E3%82%B3%E3%82%A6%E3%83%A2%E3%83%AA ウサギコウモリ](ウサコ)を模倣したものであり、[[利用者:Nanase|Nanase]]によって開発された。'''ウサコbot'''(英: usako bot)とも呼ばれる。
 
'''ロボウサコ'''(英: robo usako)は、ますとどんちほーに存在するbotである。[https://www.kemov-project.com/ けものフレンズVぷろじぇくと]の[https://www.kemov-project.com/%E3%82%A6%E3%82%B5%E3%82%AE%E3%82%B3%E3%82%A6%E3%83%A2%E3%83%AA ウサギコウモリ](ウサコ)を模倣したものであり、[[利用者:Nanase|Nanase]]によって開発された。'''ウサコbot'''(英: usako bot)とも呼ばれる。
 +
 +
{{Bot
 +
| bot_name = ロボウサコ
 +
| author = [[利用者:Nanase]]
 +
| published_at = 2023年4月29日
 +
| is_active = 稼働中
 +
| is_reacted_with_ltl = 間接的
 +
| development_lang = Node.js
 +
}}
    
==概要==
 
==概要==
57行目: 66行目:  
|}
 
|}
   −
== 発言プロセス ==
+
==発言プロセス==
   −
=== ワードの抽出 ===
+
===ワードの抽出===
 
候補となるワードはLTL(ローカルタイムライン)から抽出される。botアカウントではないユーザのがおーをMeCab(形態素解析エンジン)によって分解し、以下の品詞のみ選択する。
 
候補となるワードはLTL(ローカルタイムライン)から抽出される。botアカウントではないユーザのがおーをMeCab(形態素解析エンジン)によって分解し、以下の品詞のみ選択する。
   −
* '''名詞'''
+
*'''名詞'''
* '''形容詞''' - かわいい、大人しい など
+
*'''形容詞''' - かわいい、大人しい など
* '''接頭辞''' - 大当たりの「大」の部分 など
+
*'''接頭辞''' - 大当たりの「大」の部分 など
* '''助詞'''の「'''の'''」
+
*'''助詞'''の「'''の'''」
* '''助動詞'''の「'''な'''」
+
*'''助動詞'''の「'''な'''」
    
分解された品詞が助詞の「の」で接続されている場合、これを1ワードとみなして結合する。たとえば以下のテキストを入力とする。<syntaxhighlight lang="text">
 
分解された品詞が助詞の「の」で接続されている場合、これを1ワードとみなして結合する。たとえば以下のテキストを入力とする。<syntaxhighlight lang="text">
74行目: 83行目:  
</syntaxhighlight>ワードの有用性を上げるため、さらに以下の条件により適切なワードのみを選択する。
 
</syntaxhighlight>ワードの有用性を上げるため、さらに以下の条件により適切なワードのみを選択する。
   −
* ワードの長さが2文字以上、20文字以内
+
*ワードの長さが2文字以上、20文字以内
* ワードに適さない特定の文字、文字列を含んでいない
+
*ワードに適さない特定の文字、文字列を含んでいない
* 語頭が促音(っ)で開始していない
+
*語頭が促音(っ)で開始していない
* 指示語を含んでいない
+
*指示語を含んでいない
* ワードが重複していない
+
*ワードが重複していない
    
さらに以下の規則により、ワードの不適切な部分が除去される。
 
さらに以下の規則により、ワードの不適切な部分が除去される。
   −
* URLやハッシュタグ部分
+
*URLやハッシュタグ部分
* 語頭の「ような」「的な」部分
+
*語頭の「ような」「的な」部分
* 記号や約物(!や?など)。ただし絵文字のための記号(:)は除外せず、両端にゼロ幅スペースが挿入される
+
*記号や約物(!や?など)。ただし絵文字のための記号(:)は除外せず、両端にゼロ幅スペースが挿入される
    
上記の規則により、最終的には以下のようなワードが抽出される。<syntaxhighlight lang="text">
 
上記の規則により、最終的には以下のようなワードが抽出される。<syntaxhighlight lang="text">
90行目: 99行目:  
</syntaxhighlight>
 
</syntaxhighlight>
   −
=== ワードの抽選 ===
+
===ワードの抽選===
 
抽出されたワードはワードプールに溜められる。各ワードにはどのユーザによるものかが判別できるようになっている。
 
抽出されたワードはワードプールに溜められる。各ワードにはどのユーザによるものかが判別できるようになっている。
    
発言を行う際にはまず、ランダム(一様分布)にユーザの抽選が行われる。ユーザに紐づいたワードが空ではない場合、さらにランダムでワードを抽選を行う。このようにユーザとワードの2段階で抽選を行うことで、発言回数の多いユーザの当選確率が上昇しないしくみになっている。
 
発言を行う際にはまず、ランダム(一様分布)にユーザの抽選が行われる。ユーザに紐づいたワードが空ではない場合、さらにランダムでワードを抽選を行う。このようにユーザとワードの2段階で抽選を行うことで、発言回数の多いユーザの当選確率が上昇しないしくみになっている。
   −
=== ロボウサコ発言の生成 ===
+
===ロボウサコ発言の生成===
 
発言文は以下の規則で生成される。
 
発言文は以下の規則で生成される。
   −
* '''序文'''。「見て見て眷属たち~!」のほか、稀に「眷属たち見て見て~!」が選択される。
+
*'''序文'''。「見て見て眷属たち~!」のほか、稀に「眷属たち見て見て~!」が選択される。
* '''提示部'''。抽選されたワードを用いて「○○でちゅ。」を生成する。ただし20%ほどの確率で「○○でちゅ!」が選択される。
+
*'''提示部'''。抽選されたワードを用いて「○○でちゅ。」を生成する。ただし20%ほどの確率で「○○でちゅ!」が選択される。
* '''説明部'''。ChatGPTによる自動生成が行われる。生成方式は'''印象'''と'''要約'''の2種類があり、印象を説明する文を生成する確率がやや高くなっている。「○○でちゅね~!」または「○○ってワケ!」のどちらかが選択され、稀に両方とも選択される。ChatGPTのAPI呼び出しに失敗した場合は説明部ごと省略される。
+
*'''説明部'''。ChatGPTによる自動生成が行われる。生成方式は'''印象'''と'''要約'''の2種類があり、印象を説明する文を生成する確率がやや高くなっている。「○○でちゅね~!」または「○○ってワケ!」のどちらかが選択され、稀に両方とも選択される。ChatGPTのAPI呼び出しに失敗した場合は説明部ごと省略される。
    
以下はヴァイオリンというワードが抽選された場合の発言の例である。<syntaxhighlight lang="text">
 
以下はヴァイオリンというワードが抽選された場合の発言の例である。<syntaxhighlight lang="text">
106行目: 115行目:  
</syntaxhighlight>
 
</syntaxhighlight>
   −
== 名言 ==
+
==名言==
 
<blockquote>''「[[ロボウサコの名言一覧]]」を参照''</blockquote>
 
<blockquote>''「[[ロボウサコの名言一覧]]」を参照''</blockquote>
  
52

回編集