増井俊之Helpfeel(2019/8/13)https://gyazo.com/05ddaef205470d84377ae4e8dec8728bHelpfeelというヘルプシステムを最近よく宣伝している。これは展開ヘルプ(ExpandHelp)というタイトルで書いた論文のアイデアを実用化したもので、Q/AやFAQを圧倒的に簡単にすることを目標としている。ヘルプシステムはあらゆるパソコンOSやアプリに実装されているし、FAQサービスは世の中に沢山あるが、そういうものを便利に使ってる人は少ないと思われる。2018年3月にTwitterでアンケートをとった結果は以下のようなものであった。普通のテキスト検索を使う場合、ヘルプテキストに検索単語が含まれていない場合は検索に失敗する。「時刻をセットする」というヘルプエントリに対して「時計をあわせるには?」で検索してもヒットしない。Furnasの論文などで指摘されているが、現在でも解決していないのだろう。語彙問題を解決する方法はいろいろ考えられる。時刻も時計も似たようなものだと考えてシソーラスを使った検索することもできるだろうし、実際のクエリデータを解析処理して対策することもできるだろう。最近は膨大な検索履歴データをもとに機械学習を行なってチャットボットベースのヘルプシステムを提供しようとしている会社も多いようである。「時計をあわせたいんだけど?」という発話を認識して適切なヘルプエントリを返すのは確かに凄い技術だろうが、膨大なデータが存在するシステムでしか使えないし、ユーザは正確に質問文を発話しなければならないという面倒さもある。「とけ..」とか言っただけで、時刻をセットする方法がわかる方が嬉しいのではないだろうか?Helpfeelでは、語彙問題を解決するために「ユーザが質問しそうな文をあらかじめすべて用意しておく」という手法を採用している。「時刻をセットする」「時計をあわせる」「時間を設定する」などといった様々な表現を最初から用意しておけば、ユーザの質問にマッチするものがみつかる可能性が高いからである。本当にあらゆる表現を用意することはもちろん不可能だろうが、大抵のクエリにマッチする表現を用意しておくことは可能である。(時間|時刻|時計)を(セットする|あわせる|設定する)のような正規表現にマッチする文字列をすべて用意しておけば、「時刻をあわせる」でも「時計を設定する」でも検索に成功することになる。時間をあわせる...時計を設定するの9個を用意しておく。「時計を設定する」で検索してもヒットするというわけである。正規表現でテキストをパタンマッチ検索するのは普通であるが、あらかじめ展開しておいたデータを普通にテキスト検索するという方法が面白いところである。ある正規表現にマッチする文字列をすべて生成することは難しくない。いうRubyライブラリ(gem)を使えば簡単である。s.expandを実行すると以下のような結果が得られる。code:expand.txt時間をセットする時間をあわせる時間を設定する時刻をセットする時刻をあわせる時刻を設定する時計をセットする時計をあわせる時計を設定するHelpfeelは、このように正規表現を展開したテキストに対して高速な曖昧検索を行なうことによって柔軟なヘルプ検索を実現するシステムである。ただのテキスト検索なので部分的なキーワードでも検索に成功する。刻と入力するだけでもエントリがみつかる。チャットボットではそういうわけにいかない。いうわけで、最近Nota社ではHelpfeelを大々的に売り出そうとしている。LaunchpadというイベントでHelpfeelをNota社長がプレゼンしているところである。https://www.youtube.com/watch?v=GkL9bGRNuOwHelpfeelはSFCの情報を検索するサイトSFCHelpで実際に試してみることができる。データは/SFCHelpで編集できる。