エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

ダジャレ TechTalk

エムスリーソフトウェアエンジニアの大瀧です。 AI・機械学習チームで自然言語処理/推薦システムの開発を行なっています。 スタンドアップ・ミーティングをダジャレで締め括る役割も担っている私が、M3 Tech Talkの雰囲気をお伝えしたいと思います。

エムスリーにおけるTech Talk

エムスリーでは毎月2回、TechTalk を開催しています。 テーマは非常に幅が広く、「クラウドSaas/Paas/Iaas」「セキュリティ」から「心構え・エモい話」まで様々!

過去数回分発表を振り返ってみると、こんなテーマがありました。

  • VTuberを支える技術
  • 非同期タスクの処理系を作ってみた
  • crazy-js Quiz
  • 5G(2020年のモバイル通信)
  • 問題解決入門
  • 消防で行なった業務改善の取り組み(Electron-Vueの利用)

発表の例として、私大瀧が6/20に発表した「ダジャレ判定における自然言語処理技術」を紹介させて頂きます。 M3 Tech Talkの雰囲気(の一部)を味わって頂き、M3 Tech Talk(もちろん、エムスリーにも)に興味を持って頂ければ幸いです

ダジャレ判定における自然言語処理技術

この発表で伝えたいこと

  1. 自然言語処理の難しい部分は、曖昧さの扱いの部分である
  2. 汎用ダジャレ判定アルゴリズム開発は、汎用人工知能開発に繋がっている(かもしれない)

発表の流れ

  1. 過去 :@oboenikui の身に起きた悲劇(この発表のキッカケ)
  2. 現在:ダジャレ判定アルゴリズムの改善
  3. 未来:ダジャレ判定アルゴリズムが超えるべき壁

過去編

あらすじ

最近、同僚のTwitterアカウントに悲劇が起きました。 ダジャレ検出機能を搭載したbotの誤作動に、巻き込まれたのです。

f:id:oboenikui:20180803174724p:plain

その後の彼のツイートを読んで、ここ(M3 Tech Talk)で話すことにしました。

f:id:g329:20180803173431p:plain

(なお、このあとすぐに社内のダジャレ第一人者に絡まれていました)

f:id:g329:20180803173455p:plain
従来のアルゴリズム

既存手法は、以下のような流れでダジャレを判定します。

参考:文章からダジャレのみを抜き出すコマンドを作ってみた

  1. 形態素解析
  2. 文中に登場する名詞と同じ「読み」の個数をカウント
  3. 文中に登場する名詞と同じ単語をカウント
  4. 読みの個数カウント > 単語の個数カウント ならダジャレ

従来のダジャレ判定アルゴリズムの優れた点は3. の同じ単語をカウントし判定の条件とした点で、 「人民の人民による人民のための政治」などの同じ単語が複数回出現する例をダジャレではないと判定することができます。

私は上記の参考記事と出会った際、感動し、多くのダジャレを入力して楽しみました。 とある(ダジャレだと信じている)例を入力した際に、私はこのアルゴリズムの改善を決意しました。 従来アルゴリズム布団が吹っ飛んだをダジャレではないと判定していたのです。

現在編

改善方法

私がアルゴリズムの改善に用いたアイデアは、ダジャレの領域知識と言っても良いものです。 ダジャレは、音の違いに関して非常に寛容なのです。 (音が少しぐらい異なっても同じものと見て良く、曖昧さの扱いを頑張るべきところです。)

f:id:g329:20180803123742p:plain

この特徴から、「2. 文中に登場する名詞と同じ「読み」の個数をカウント」の際に促音、撥音、拗音、聴音を除去することにしました。

f:id:g329:20180803123932p:plain

この処理により、布団が吹っ飛んだをダジャレであると判定することができるようになりました。

課題

しかし、(当然ながら)これですべてのダジャレが正しく判定できるようになったわけではありません。

f:id:g329:20180803124407p:plain

未来編

これからは「足湯で疲れをフットバス」を始めとした、 音の直接的な重なりがないダジャレの判定にチャレンジしていきます。

将来的には「ある人にとってのダジャレ感性/判定の再現」を目指していきたいのですが、 その際我々は「人間のダジャレの定義の曖昧さ」と戦うことになるでしょう。 ※ 我々:ダジャレ判定アルゴリズム開発者

f:id:g329:20180803124924p:plain

「どれほどのパターンがあるのか」「ダジャレの定義をアルゴリズムに記述しきれるのか」... ひとまず私自身の思考形態を模倣しながら、人間がどのように知識を表現する/物事を結び付けるのかを模倣/生成/学習できるようなものを目指していくつもりです

f:id:g329:20180803135315p:plain

(有り得るすべての知識の使い方に対処できない、「ダジャレのフレーム問題」との闘いになるような気がしています)

まだ見ぬダジャレに出会うため、私は究極のダジャレ判定/生成アルゴリズムを追い続けます。 どんな困難な道だとしても。

まとめ

以上が、M3 Tech Talk(6/20)での発表内容です。 M3 Tech Talkでの発表はどれも、アツい想いが込められたものだと感じています。 M3 Tech Talkの雰囲気が、少しでも伝わっていれば嬉しいです。

現在もダジャレ判定アルゴリズムは発展の気配を見せており、 そのアルゴリズムの一部は 8/10 のM3 Tech Talkで発表予定です。 少しでも興味を持ったなら、↓の応募フォームからTech Talkへの参加申し込みを!

1度だけでなく、ちょこちょこ聴講 して下さるとさらに嬉しいです

エンジニア募集

エムスリーでは、技術で医療の課題を解決するエンジニアを募集しています。 この記事を読んで興味を持った方はぜひ下記リンクよりご応募ください。 ダジャレ名人も、沢山所属していますよ!

jobs.m3.com

docs.google.com