
NGワード判定システムを作ってみた!
突然ですがウーマンコミュニケーションというゲームはご存じでしょうか?簡単に言うと会話にうっかり含まれるNGワードを指摘するというゲームです!
詳しくは以下のサイトを読んでもらえればわかると思います!
〜閑話休題〜
このゲームを見て僕はこのくだらないシステムが面白くて似たようなプログラムを作りたくなったわけです!
以下、プログラムについての話です!
プログラムについて
今回はテキストを入力した時にその文に含まれるNGワードを針フキダシで返すプログラムを作ってみました!コードと実行結果は以下のようになります!



制作プロセス
今回のコードを作成するうえで
1.NGワードのデータ
2.データを使いやすい形にする手段
3.漢字をかなに変換する手段
4.テキスト内に特定の文字が含まれるかどうかを確認する手段
の四つが必要でした。そのためそれぞれに対応する方法を調べながら作りました。
コードの前に
今回のプログラムを作る上で必要となるNGワードのデータについてはwikipedeaの性風俗用語一覧というページから取り出しNGワード.csvというファイルに格納しました。
コード解説
私のようなぺーぺーが解説というのもなかなか恥ずかしいのですが一応プログラム紹介ということで解説をさせてもらいます。(まぁほとんど便利ライブラリを使って作ったから解説も何もないんだけど…ボソッ)
まず必要ライブラリについてですが

pykakasiというのは漢字をかなに変換するライブラリ、mecabというのは文字を単語(形態素)毎に分けるライブラリ(あれ?今回使ったっけ?)、unidecは単語などを識別する辞書です(あれ?これも今回使ったっけ?)です。これらがなかったら作れなかったので先人達には感謝ですほんと…(pykakasiはワンチャンもうそろサ終かもしれないらしいのでそしたら新しい手段考えます…)
そしてコードについてですがまずcsvファイルを読み込み配列化します。

テキストを打ち込んでそのテキストから邪魔な成分を削除します(元ネタに遵守して「あ、なるほどね」などもNGワード判定したいため)

漢字とひらがなをカタカナに変換して出力します。(NGワードがカタカナで定義されているため)

出力されたテキストデータにNGワードが含まれているかどうかをリストを回して確認し、含まれていたら針フキダシでprintします。

以上がコードの解説です。
まとめ
コードの拙さを見て分かるかもしれないのですが私自身授業でしかコードをいじったことのないぺーぺーなのでプログラミングを用いて個人で好きなものを作り上げるということをしてこなかったのですが、やってみると面白いですね。やりたいことを実現するためには何が必要かを考えるのも面白いし、調べてみると便利なライブラリが見つかるし、何よりプログラムが動いた瞬間がとてつもなくうれしいです!
これからもいろいろと下らないプログラムを作ってみたいなと思いつつ面白い案が出なくて困ってます…一応マルコフ連鎖を用いたローランド語生成プログラムはできているのでもう少ししたらその話も出来たらいいなと思っています!
ここまで読んでいただいてありがとうございます!「もっといい方法あるよ!」などの意見がありましたら是非教えていただきたいです!