クソアプリ Advent Calendar 2022 18日目の記事です。
はじめに
突然ですが、みなさん絵文字を使っていますか!?
ガラケー時代は今よりも絵文字がたくさん使われていたそうです。
絵文字の使用が減少した現代ですが、絵文字が並んでいるのを見ると、やはりワクワクしますよね?😉😉😉
通常、絵文字は文末等に付け加える形で使用されます。
しかし、もっとワクワクする使い方があることをご存知ですか?
それは「絵文字置きかえボット
→ 🎨文字置🌴🦟🎨ボッ🚪
」のような語彙を置換する使い方です!
この方法であれば、視覚的なワクワク感だけでなく、謎解き的なワクワク感も与えることができます。
しかし、このような変換を考えるのは少し難しいので、自動で変換してくれるボットを作りました!
グループラインに追加すると、LINE英語翻訳のように会話を逐一変換してくれます。
URLなど変換しなくていいものまで変換してくれます!
方針
大まかな方針は、下記のような「日本語 → 絵文字」辞書を用意しておき、一致する語句があれば絵文字に置換するというものです。
- カ → 🦟
- メ → 👀
- カメ → 🐢
よい絵文字置換とは?
上記の辞書がある場合、カメレオン
は、🦟メレオン
、カ👀レオン
、🦟👀レオン
、🐢レオン
に変換できます。
では、複数の絵文字置換が考えられる場合、どのような置換がよいのでしょうか?
- なるべく多くの文字が絵文字に置換されていた方がワクワクします(
🦟メレオン、カ👀レオン、🦟👀レオン、🐢レオン) - 連続する文字列は1つの絵文字で置換した方が賢さを演出できます(
🦟メレオン、カ👀レオン、🦟👀レオン、🐢レオン)
以上より、
- 絵文字に未置換の文字の数が少ない
- 1が同じ場合は、置換に使用した絵文字の数が少ない
ほど、よい絵文字置換ということにします。
実装
絵文字辞書
絵文字データはこちらを使用させていただきました。
アルゴリズム
貪欲法、全探索、動的計画法を考えましたが、
貪欲法では最適な絵文字置換を達成できず、全探索は計算量が大きいため、動的計画法を採用しました。
コードはこちらです。claspを用いて、GASにデプロイしています。
おわりに
🇯🇵語を🖼文字に置🌳🐸ボッ🚪を作りま👅。
⏬記の🔗、また🦷QRコー°🦟ら🧑🤝🧑追加で✂ので是非試💀🖐🫒🤚くだ🦏!