View Code? Open in Web Editor
NEW
テキストを壱百満天原サロメお嬢様風の口調に変換します
Go 98.68%
Makefile 0.46%
Shell 0.86%
ojosama's Introduction
テキストを壱百満天原サロメお嬢様風の口調に変換して出力します。
任意のテキストを壱百満天原サロメお嬢様風の口調風に変換する非公式プログラムです。
コマンドラインとライブラリの2つの方法で使えます。
壱百満天原サロメお嬢様風の口調変換の例を以下に示します。
変換前 |
変換後 |
〇〇をプレイする |
〇〇をプレイいたしますわ |
ビデオテープはどこで使うんですか |
おビデオテープはどちらで使うんですの |
汚いです! |
きったねぇですわ~~!!! |
わたしも使ってました |
わたくしも使っておりましたわ |
文の区切れ目や、文の変換結果の終端で「わ!」あるいは「わ?」で終わる場合は、
ランダムで「~」と「!」または「?」を追加します。
「~」「!」「?」の数は0~3個のいずれかになります。
変換前 |
変換後 |
ハーブです! |
おハーブですわ~~!!! |
ハーブです? |
おハーブですわ~~??? |
変換では、単語の品詞や読み、特定の単語の前後にある単語、
特定の単語の連続などの変換ルールを順番に評価して変換しています。
文章に対して形態素解析を行っており、
形態素解析ライブラリの kagome を使用しています。
本当のお嬢様に憧れる一般女性です。
麗しいお姿と独特な言葉選びと高貴なお声
が魅力的な圧倒的お嬢様です。
毎回約1時間前後の枠で配信するスタイルなので、翌日が仕事の人にも視聴しやすいです。
また、配信冒頭に前回のあらすじを話してくださるため、
途中から配信を見始めた方も内容についていけるように配慮してくださっています。
サロメイトにも、そうでない方にも等しく配慮をしてくださる高貴なお嬢様であるため
ぜひ、まだ配信を見たことの無い方も配信を視聴してみてください。
Web版提供してます。特にツールのインストールは不要です。
ワンライナーでテキストを変換する場合は、以下のように実行します。
$ ojosama -t ハーブがありました!
おハーブがありましたわ~!!
# 標準入力
$ echo ハーブがありました! | ojosama
おハーブがありましたわ~!!
テキストファイルをまるごと変換する場合は、以下のように実行します。
ファイルの文字コードを指定する場合は -charcode
オプションを指定します。
現状 sjis
と utf8
のみサポートしています。(デフォルトでは utf8
)
$ ojosama -charcode sjis testdata/sample1_sjis.txt
Goのコードとして使う場合は以下のように使用します。
一部変換ロジックの中でランダムな選択を行うため、乱数のシード値を設定します。
package main
import (
"fmt"
"math/rand"
"time"
"github.com/jiro4989/ojosama"
)
func main() {
rand.Seed(time.Now().UnixNano())
s := "ハーブがありました!"
text, err := ojosama.Convert(s, nil)
if err != nil {
panic(err)
}
fmt.Println(text)
}
あるいは以下のコマンドでインストールしてください。
$ go install github.com/jiro4989/ojosama/cmd/ojosama@latest
bash-completion
がインストール済みであれば、
以下のコマンドでタブ補完を使えるようになります。
$ ojosama -completions bash | sudo tee /usr/share/bash-completion/completions/ojosama
$ ojosama -completions zsh | sudo tee /usr/share/zsh/functions/Completion/_ojosama
$ ojosama -completions fish | tee $HOME/.config/fish/completions/ojosama.fish
まだまだ実装途中なので、怪しい変換をする場合があります。
必ずしも、自分のイメージしているお嬢様の口調になっているとは限らないことをご了承ください。
壱百満天原サロメお嬢様、及びその所属の にじさんじ や、
その関係者、ファンコミュニティの方の迷惑にならないように使ってください。
本プログラムは、にじさんじ所属の壱百満天原サロメお嬢様のキャラクターを題材にした二次創作の一つです。
故に、本プログラムは以下二次創作ガイドラインに従います。
本プログラムを使う場合も上記ガイドラインを守ってお使いください。
$ ojosama -t お願いします | ojosama
お願いいたしますわですわ
-
Go 1.18.2
-
Ubuntu 22.04 on Docker
-
make (なくてもいい)
以下のコマンドでビルドします。
実行すると内部で単体テストも実施されるので、とりあえずこれがパスすればOK。
$ make
$ ls -lah ./bin/ojosama
git tag打ったらCIが走って自動でリリースする。
コミットメッセージにはなるべく絵文字プレフィックスを付けるようにします。
ただし忘れてもOKです。
使う絵文字は大体以下。
絵文字 |
GitHub上のマーク |
使うタイミング |
✨ |
:sparkles:
|
新機能、変換ルールの追加 |
🐛 |
:bug:
|
バグ修正 |
💯 |
:100:
|
リファクタリング |
💚 |
:green_heart:
|
テスト、CI系 |
📝 |
:memo:
|
ドキュメント系 |
ojosama's People
ojosama's Issues
変換前 |
変換後 |
あなた |
貴方 |
あんた |
貴方 |
おまえ |
貴方 |
お前 |
貴方 |
てめぇ |
貴方 |
てめえ |
貴方 |
おめー |
貴方 |
貴様 |
貴方 |
きさま |
貴方 |
そなた |
貴方 |
君 |
貴方 |
お母様とおママ上は使い分けているのでどうしようかな
ネットスラングを含む、笑いの表現を「おほ+
」に変換する。
- あはは
- ははは
- うふふ
- えへへ
- いひひ
- げへへ
- ぐふふ
- にしし
- へへへ
笑いのネットスラングにはいくつかバリエーションがある。
これらの表現を「おほ+
」に変換する方法を考える。
「おハーブですわ~~!!!」にするか否か
「草」を「おハーブですわ~~!!!」にするかどうかは悩む。
配信を拝聴している限り、ハーブを見つけた時に「おハーブですわ~~!!!」とおっしゃっている。
あとは配信内で「おほほ」と短く感動を表現されていた。
どちらかというと「おハーブですわ~~!!!」は
サロメイトが「草」のお嬢様表現としての言い回しのようにも感じる。
基本的に壱百満天原サロメお嬢様の言い回しに近い変換を目指すので
「草」を「おハーブですわ~~!!!」に変換するのは適当ではないのではないかもしれない。
たまにPRをいただくので、念のためテンプレを用意したほうが親切かもしれない
現状ルール定義をひたすら列挙して実装してる。
行数が増える一方なので、ある程度まとめて定義できるようにしたい。
正規表現的な記述ができると良いんだけれど。
READMEの文章が気になったのでtextlint入れたい
もう少し実際の話し方を拝聴して、どういう単語に「お」を付ける傾向があるのか分析が必要そう
ハイテンションさを表現できるようにしたい。
現状、元の文に!や?がある時にそれをトリガーに強調するような処理を入れた。
ネットの記事とかだと!とか?とかはあんまり多用しないで、淡々とした文章で書かれることは多いので
こういう文も強制的にお嬢様な感じにしていきたい
絵文字はフォントによっては対応してなかったりするので、変換に使わないように制御するオプションパラメータを用意する。
デフォルトでは絵文字を含む。
「お腹が空きました」が「おお腹が空きましたですわ」に変換されますわ。お墓やお姉さま、お言葉などは余計な「お」が付きませんでしたわ。
現状forループとループ変数を色んな関数に引き回している。
関数が前後のトークンを必要とする場合はループ変数とトークンを必要とし、関数内で位置を進めたりしている。
正直実装が分かりづらいし、汚いし、似たようなコードが色んなとこに散らばっていて良くない。
もっと良い実装にできないか考える
Twitterを見てるとやっぱり絵文字を多用されてるので、絵文字要素を取り入れたい。
問題は量と条件。
脈絡なくぶち込むと元の文が壊れてしまうが、でももとのテンションの高さ的にはそれくらいのほうがちょうど良いのかもしれない
現状、!のときに~~!!をつけたりするけれど、半角の ! のときは付けていない。
?の場合も同様。やる。
おまけ程度で、!のときは ❗ とかの絵文字のビックリマークを混ぜる機能も付けたい
‼️‼️‼️‼️とか ❗ 要素がやはり欲しいので、ランダムに絵文字に変換したい、が。
その場合その後ろに続くやつをどうするかが問題になる。
「バナナはおやつです!!!」とかを変換したときに「おバナナはおやつですわ❗!!」とかになる可能性がある。
つまり、絵文字に変換したあとはその後ろの文字列も合わせて変換しないとおかしくなる。
❗ を採用したら?も❓ に変換してしかるべき
罵倒の類では「お」を付けてないことを聞いてて気づいた
例文は以下。
- 野球しようぜ
- しよ/動詞,自立/する
- う/助動詞/う
- ぜ/助詞,終助詞/ぜ
- 野球やろうよ
- やろ/動詞,自立/やる
- う/助動詞/う
- よ/助詞,終助詞/よ
- 野球やるか
- やる/動詞,自立/やる
- う/助動詞/う
- か/助詞,副助詞、並立助詞、終助詞/か
- 野球やるな
- 野球すんな
- 野球するぞ
- 野球やるべ
終助詞の定義は以下。
助詞の種類の一。種々の語に付き、文の終わりにあってその文を完結させ、希望・禁止・詠嘆・感動・強意などの意を添える助詞。現代語では、「か(かい)」「かしら」「な」「ぞ」「ぜ」「とも」「の」「わ」「や」など。古語では「か(かな)」「てしか(てしかな)」「にしか(にしかな)」「もが(もがな)」「かし」「な」「そ」「なむ」「ばや」など。
コトバンクより引用。
こういった終助詞の絡む文は組み合わせが多彩なので、読み決め打ちのルールで実現するには難しい。
大量のルールが必要になるし、おそらく漏れが発生する。
品詞の法則性を特定して、そのパターンで文を変換するようにしたい。
- Webの記事を食わす
- echo-meme と連携する
- ojichat と連携する
など
全部が全部伸ばすのも適当ではないように思うので、「わ!」で終わってるときだけ伸ばすのが良いのかな
gocyclo を使うと循環的複雑度を計測できる。
21以上をNGにする。
「〇〇する」は対応したので、「〇〇した」に対応する。
- 野球した
- 野球 名詞,一般 野球
- し 動詞,自立 する
- た 助動詞 た
- 野球やった
- 野球 名詞,一般 野球
- やっ 動詞,自立 やる
- た 助動詞 た
現状パッケージを呼び出したときに自動で乱数のシード値が設定されるようになっている。
https://github.com/jiro4989/ojosama/blob/81519582f901d03cb66845fd95c6a3dd59e192f9/ojosama.go
これだとパッケージをimportするだけでパッケージ呼び出し側に副作用が発生してしまう。
ライブラリ的にこれはよろしくないので、呼び出し側で制御できるようにする。
方法は2種類考えられる。
- シード値の設定をそもそもしない。呼び出し側に委ねる
- オプションパラメータでシード値の設定を無効化する
1はライブラリ的に自然できれいなアプローチになるが、破壊的変更になってしまう。
2は非破壊的変更だが、ライブラリを使う側はオプションパラメータの存在を知っていないと制御できない。
まぁジョークライブラリなので 1 のアプローチを取りつつマイナーバージョンアップで良いのでは。
(メジャーバージョンアップをするとパッケージを v2 パスに変更しないといけなくて、ライブラリを使う側の修正も発生して面倒くさい。本来であれば破壊的変更の場合はメジャーバージョンアップをするのが適当だけれど、このライブラリの利用用途的にそこまで厳密でなくても良いのでは)
おパイプに対応していただければ、おコマンドのお用途が広がりますわ。
例
たしか go fmt
がコケてたので、一旦 1.19 のテストを止めた。
フォーマット処理が変更になったのかな
なん(じゃ|だ|や)(こ|そ|あ)(れは|りゃ)
全部対応しないといけない。
変換後は「なんですの(こ|そ|あ)れは
」
結構これ面倒なのでは