Coder Social home page Coder Social logo

jiro4989 / ojosama Goto Github PK

View Code? Open in Web Editor NEW
381.0 3.0 11.0 391 KB

テキストを壱百満天原サロメお嬢様風の口調に変換します

Go 98.68% Makefile 0.46% Shell 0.86%
cli go joke kagome morphological-analysis hyakumantenbara-salome

ojosama's Issues

過去形に対応する

「〇〇する」は対応したので、「〇〇した」に対応する。

  • 野球した
    • 野球 名詞,一般 野球
    • し 動詞,自立 する
    • た 助動詞 た
  • 野球やった
    • 野球 名詞,一般 野球
    • やっ 動詞,自立 やる
    • た 助動詞 た

トークン進行方法の改善

現状forループとループ変数を色んな関数に引き回している。

関数が前後のトークンを必要とする場合はループ変数とトークンを必要とし、関数内で位置を進めたりしている。

正直実装が分かりづらいし、汚いし、似たようなコードが色んなとこに散らばっていて良くない。

もっと良い実装にできないか考える

「。」をランダムで「!」とかに置き換える

ハイテンションさを表現できるようにしたい。
現状、元の文に!や?がある時にそれをトリガーに強調するような処理を入れた。

ネットの記事とかだと!とか?とかはあんまり多用しないで、淡々とした文章で書かれることは多いので
こういう文も強制的にお嬢様な感じにしていきたい

!が出現したときに ❗ などの絵文字に変換する

‼️‼️‼️‼️とか ❗ 要素がやはり欲しいので、ランダムに絵文字に変換したい、が。
その場合その後ろに続くやつをどうするかが問題になる。

「バナナはおやつです!!!」とかを変換したときに「おバナナはおやつですわ❗!!」とかになる可能性がある。
つまり、絵文字に変換したあとはその後ろの文字列も合わせて変換しないとおかしくなる。

❗ を採用したら?も❓ に変換してしかるべき

二人称の変換ルールを追加する

変換前 変換後
あなた 貴方
あんた 貴方
おまえ 貴方
お前 貴方
てめぇ 貴方
てめえ 貴方
おめー 貴方
貴様 貴方
きさま 貴方
そなた 貴方
貴方

「お」が付きすぎる

もう少し実際の話し方を拝聴して、どういう単語に「お」を付ける傾向があるのか分析が必要そう

Go 1.19のテストを追加

たしか go fmt がコケてたので、一旦 1.19 のテストを止めた。
フォーマット処理が変更になったのかな

終助詞を使用した文章

例文は以下。

  • 野球しようぜ
    • しよ/動詞,自立/する
    • う/助動詞/う
    • ぜ/助詞,終助詞/ぜ
  • 野球やろうよ
    • やろ/動詞,自立/やる
    • う/助動詞/う
    • よ/助詞,終助詞/よ
  • 野球やるか
    • やる/動詞,自立/やる
    • う/助動詞/う
    • か/助詞,副助詞、並立助詞、終助詞/か
  • 野球やるな
    • やる/動詞,自立/やる
    • な/助詞,終助詞/な
  • 野球すんな
    • すん/動詞,自立/する
    • な/助詞,終助詞/な
  • 野球するぞ
    • する/動詞,自立/する
    • ぞ/助詞,終助詞/ぞ
  • 野球やるべ
    • やる/動詞,自立/やる
    • べ/助詞,終助詞/べ

終助詞の定義は以下。

助詞の種類の一。種々の語に付き、文の終わりにあってその文を完結させ、希望・禁止・詠嘆・感動・強などの意を添える助詞。現代語では、「か(かい)」「かしら」「な」「ぞ」「ぜ」「とも」「の」「わ」「や」など。古語では「か(かな)」「てしか(てしかな)」「にしか(にしかな)」「もが(もがな)」「かし」「な」「そ」「なむ」「ばや」など。

コトバンクより引用。

こういった終助詞の絡む文は組み合わせが多彩なので、読み決め打ちのルールで実現するには難しい。
大量のルールが必要になるし、おそらく漏れが発生する。

品詞の法則性を特定して、そのパターンで文を変換するようにしたい。

半角の!や?も扱うようにする

現状、!のときに~~!!をつけたりするけれど、半角の ! のときは付けていない。
?の場合も同様。やる。

おまけ程度で、!のときは ❗ とかの絵文字のビックリマークを混ぜる機能も付けたい

変な変換

気づいたものをひらすら加筆して修正する

  • 2022年7月5日 -> 2022年7お月5日
  • を発表した。 -> 発表したわ!
  • 成果だとされており -> お成果ですのとされており
  • 効率的に -> お効率的に
  • 発揮するという。 -> 変化せず
  • ~~ができるため -> 変化せず
  • 1つである -> 変化せず
  • 緊急事態宣言 -> 緊急お事態宣言
  • 注目されました -> 注目されおりました

笑いの表現を「おほほ」に変換する

ネットスラングを含む、笑いの表現を「おほ+」に変換する。

  • あはは
  • ははは
  • うふふ
  • えへへ
  • いひひ
  • げへへ
  • ぐふふ
  • にしし
  • へへへ

笑いのネットスラングにはいくつかバリエーションがある。

  • (笑)
  • www

これらの表現を「おほ+」に変換する方法を考える。

「おハーブですわ~~!!!」にするか否か

「草」を「おハーブですわ~~!!!」にするかどうかは悩む。

配信を拝聴している限り、ハーブを見つけた時に「おハーブですわ~~!!!」とおっしゃっている。
あとは配信内で「おほほ」と短く感動を表現されていた。

どちらかというと「おハーブですわ~~!!!」は
サロメイトが「草」のお嬢様表現としての言い回しのようにも感じる。

基本的に壱百満天原サロメお嬢様の言い回しに近い変換を目指すので
「草」を「おハーブですわ~~!!!」に変換するのは適当ではないのではないかもしれない。

パイプ対応

おパイプに対応していただければ、おコマンドのお用途が広がりますわ。

ojichat 'サロメ' | ojosama

「お腹」が二重丁寧語になる

「お腹が空きました」が「おお腹が空きましたですわ」に変換されますわ。お墓やお姉さま、お言葉などは余計な「お」が付きませんでしたわ。

image

お嬢様らしい文の終わり方を追加する

終わり方など

  • ~まして
  • ~ましてよ
  • ~ございますわ
  • ~かしら(疑問系)

文の終わり

以下が文の終わり。

  • 入力文字列の終端
  • 動詞文(例:私はカレーを作る)
    • 動詞+終助詞
      • 終助詞が来た時は文の終わり
    • 動詞+(。|!|?)
      • 動詞単独の場合、文の終わりかどうか判定できないため、句点や感嘆符が来た時に文の終わりと判断する
      • 「勉強する前に手を洗おう」の「勉強する」を「勉強いたしますわ」とかに変換してはいけない
    • 名詞+(する|やる)(+助動詞)+終助詞 #17
      • 野球しようぜ、野球すんな、など
    • 名詞+(した|やった)+終助詞 #53
      • バスケしたぜ、など
      • 「食事した後は歯を磨こう」の「食事した」を「食事いたしましたわ」とかに変換してはいけない
  • 形容詞文(例:幽霊が恐ろしい)
    • 形容詞+(。|!|?) #68
    • 形容詞+終助詞
      • 汚いね、怖いよ、楽しいな、騒がしいぞ、など
  • 名詞文(例:彼はシェル芸人だ)
    • 名詞+(だ|である)+(。|!|?)
      • 彼は役者だ、彼女は医師である、など

乱数の初期化をしないようにする

現状パッケージを呼び出したときに自動で乱数のシード値が設定されるようになっている。

https://github.com/jiro4989/ojosama/blob/81519582f901d03cb66845fd95c6a3dd59e192f9/ojosama.go

これだとパッケージをimportするだけでパッケージ呼び出し側に副作用が発生してしまう。
ライブラリ的にこれはよろしくないので、呼び出し側で制御できるようにする。

方法は2種類考えられる。

  1. シード値の設定をそもそもしない。呼び出し側に委ねる
  2. オプションパラメータでシード値の設定を無効化する

1はライブラリ的に自然できれいなアプローチになるが、破壊的変更になってしまう。
2は非破壊的変更だが、ライブラリを使う側はオプションパラメータの存在を知っていないと制御できない。

まぁジョークライブラリなので 1 のアプローチを取りつつマイナーバージョンアップで良いのでは。
(メジャーバージョンアップをするとパッケージを v2 パスに変更しないといけなくて、ライブラリを使う側の修正も発生して面倒くさい。本来であれば破壊的変更の場合はメジャーバージョンアップをするのが適当だけれど、このライブラリの利用用途的にそこまで厳密でなくても良いのでは)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.