Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

GPTsによる執筆支援Botとtextlintによる校正Botをつくってみた

本記事は、Sansan Advent Calendar 2023の1日目の記事です。

こんにちは。 技術本部研究開発部の高橋寛治です。 毎年恒例のアドベントカレンダーの時期がやってきました。

今回は、技術ブログの執筆を技術で支援するツールを用意したため、その内容を紹介したいと思います。 なお、本記事はそのツールを用いて書かれたものです。

技術ブログを書きやすくしたい

技術に関する知見を共有することは、知見を元にした新しい技術を生むことや、類似の事象の早期解決につながることなど、様々な利点があると私は考えています。 ある知見が新しい知見を呼び、新しい知見が更なる新しい知見を呼ぶ、というように循環するものだと思います。

技術ブログを書きやすくするために、執筆支援を行うことにしました。 今回は、2種類の執筆支援に取り組みます。 一つは草稿作成に向けた技術ネタと草案の作成支援、もう一つは草稿の校正支援です。 これらの支援により必要な労力が小さくなり、技術に関する知見を共有しやすくなると考えています。

GPTsによる執筆支援Bot

GPTsとは、何か特定の目的を実現するためにカスタムされたChatGPTのことです。 カスタムには、プラグインの設定や情報源の挿入、独自プロンプトの設定など様々な手段を取ることができます。 Webブラウザ上で設定が可能です。

技術ブログを書く際に、何をネタにしたらいいかわからないことや、筆が進まないことをしばしば耳にします。 これらの壁に感じていることを無くすことを目的に、GPTsを用いて執筆支援Botを作成します。

執筆支援Botの起動画面

上記のスクリーンショットは、執筆支援Botの起動画面です。 このBotは、ネタの考案や記事の草案を出力します。

Instructionsとして、ブログの要件や草案の内容について指示します。

何か作業をしている以上は技術ネタを持っていると仮定します。 そのネタを対話により引き出せると考えています。 意外と質問されないと、ネタを引き出せないものです。

textlintによる校正Bot

textlintとは、自然言語のための静的解析ツールです。 設定したルールに沿っているかどうかの確認や、修正を提案できます。

textlintの導入による効果は様々あると思います。 今回狙ったのは、他者レビューが必要なブログ執筆の体制において、レビューに対する抵抗感を小さくすることと、レビュアーの負荷を軽減することです。

自己レビューできることで、記事の様式がある程度大丈夫だと自信を持てると思います。 そうすることで、レビューに対する抵抗感が小さくできると考えました。

また指摘箇所が減ることで、レビュアーの負荷軽減につながります。 誤字、脱字や表記が揃っていない箇所は、指摘や確認が大変です。 これらが不要になり、内容のレビューに時間や集中力を使うことができるようになると想定しています。

Slack Botとして実装

Slack Botとして実装しました。 偶然ですが、以前に自分が書いた記事の延長線上で実現できました。

内部は以下のようになっています。

  • Botへのメンションをフックにし、URLを抽出する
  • URLをもとにWebページを取得する
  • Webページから必要な箇所をBeautifulSoupで抽出する
  • HTMLからmarkdownに変換する
  • textlintでチェックする
  • textlintの結果をSlackで返信する

いくつか、工夫した点の紹介です。 BeautifulSoupでprettifyにより必要箇所のHTMLを抽出しています。 その際にタグの前後に改行が入らないように、preserve_whitespace_tagsを設定しています。 また、textlintの結果をわかりやすくするために、原文を表示するようにしています。 執筆者を圧迫しないように、textlintによる提案にとどめています。まずは、ゆるいルールを設定しました。

使ってみた

本記事は、本記事内で紹介したGPTsとtextlintを用いて書かれました。

ネタと構成はGPTsにより10分ほどで作ることができました。

GPTsとの対話により、ネタと構成ができあがっていく様子

textlintによる指摘3や指摘4は、レビュアーの体力を削る軽微な指摘だと思います。 こういったものが事前に修正できるのは良いと感じます。

一方で、指摘1や指摘2のように、過剰な検出が見られます。 今後の課題として、ルールの調整をしていくこととなりそうです。

textlintによる指摘

おわりに

技術ブログを書きやすくするための技術的な取り組みとして、GPTsによる執筆支援Botとtextlintによる校正Botを作った取り組みを紹介しました。

現在は、アドベントカレンダーを執筆する人に向けて、利用可能な状態にしています。 まだ効果測定はできていません。 アドベントカレンダー企画の終了後にアンケート調査をするなど、書きやすくなったかどうかは聞いてみようと思います。

執筆者プロフィール

高橋寛治 Sansan株式会社 技術本部 研究開発部 Data Analysisグループ

阿南工業高等専門学校卒業後に、長岡技術科学大学に編入学。 同大学大学院電気電子情報工学専攻修了。 在学中は、自然言語処理の研究に取り組み、解析ツールの開発や機械翻訳に関連する研究を行う。 大学院を卒業後、2017年にSansan株式会社へ入社。 キーワード抽出など自然言語処理を生かした研究に取り組む。

▼執筆者による連載記事はこちら

buildersbox.corp-sansan.com

© Sansan, Inc.