記事中のノイズ削除方式 - ChatGPTとの比較
Stockmark は自社開発の軽量モデルと ChatGPT を比較し、プロダクト実装における精度、コスト、安定性の観点から汎用 LLM よりも特化型モデルが適していることを示した。
キーポイント
ノイズ削除の必要性と課題
Web ニュース記事には広告やメタデータなどのノイズが含まれており、HTML 構造に依存しない汎用的な抽出手法が必要である。
自社モデルの実装アプローチ
Sklearn の MLPClassifier とファインチューニング済みの日本語 BERT モデルを組み合わせ、文レベルでノイズ度をスコアリングして除去する。
ChatGPT(GPT-4) との比較分析
Zero-shot プロンプトでの試行では、不要情報の完全削除が困難、トークン制限による出力途中終了、そして実行ごとの結果不安定さが確認された。
プロダクト実装における結論
汎用 LLM はコストと遅延が高く信頼性に欠けるため、特定のタスクに特化し高速・低コストで安定した自社モデルの採用が推奨される。
影響分析・編集コメントを表示
影響分析
この記事は、ChatGPT や GPT-4 のような汎用 LLM が万能ではないという現実を、具体的なノイズ除去タスクを通じて実証しています。開発者やプロダクトマネージャーに対して、コストと信頼性を考慮した上で、汎用モデルではなく特化型軽量モデルを選択するべきという重要な判断基準を提供しており、AI 導入の現場における意思決定に役立つ示唆を含んでいます。
編集コメント
ChatGPT の能力を過信せず、実務環境での「安定性」と「コスト効率」を重視する視点を持つべきだという示唆に富む記事です。特に、プロダクション環境で LLM を利用する際のリスク管理の重要性が具体的に描かれています。
本記事執筆時点の2023年4月において、ChatGPTのニュースを見ない日はないほど、世の中にChatGPTに関する記事が溢れています。「こんなことに使える」「あんなことに使える」と応用範囲が広いChatGPTですが、「あたかも当然のように嘘をつく」こともあり、決して万能ではなく得手不得手があります。このようなChatGPTについて、プロダクト開発に携わる方々が気になるのは「実際にプロダクトに組み込めるのだろうか?」という点でしょう。
そこで本記事では、ストックマークのプロダクトで実現している「記事中のノイズ削除」に焦点を当て、自社で利用するモデルとChatGPTを比較していきます。なお、プロダクトに組み込む場合はChatGPTではなくAPIを利用するのが一般的ですが、執筆時点でGPT-4ベースのAPIを利用できなかったため、ChatGPT Plus(GPT-4)を使用しています。
本記事では以下の3点を中心に紹介します。
- 前提: 記事中のノイズ削除はなぜ必要なのか?
- ストックマークではどのようにノイズ削減を実現しているか?
- ChatGPTとの比較
前提: 記事中のノイズ削除はなぜ必要なのか?
ストックマークの自社プロダクトでは、Web上のニュース記事から「意味のあるテキストの抽出」を実現しています。Webに溢れるコンテンツは、広告や記事のメタデータなど、さまざまな理由でノイズを含んでいます。
たとえば、次の画像では段落の間に外部リンクが挿入されており、これは記事の本旨からやや外れた内容になっています。
ノイズを含む記事イメージ
このまま活用すると、必ずしも読み手にとって最適な情報を提供できるわけではありません。そのため、ユーザーにより価値のある情報を提供するために、記事中のノイズを削除する必要があります。
ストックマークではどのようにノイズ削減を実現しているか?
特定のWebサイトに限れば、HTMLのスタイリング情報(CSS)やセマンティックタグを活用し、ノイズを含まない情報抽出は可能です。しかし、膨大なニュースサイトに対して統一的なルールセットを用意・適用するのは現実的ではありません。Webサイトの構造は変化しますし、誤ったHTMLタグの使用により、記事の重要コンテンツを見落としてしまうことさえあるからです。
そこで別の方法として、HTMLから文字列を抽出し、その文字列に対してノイズを削除する手法があります。ストックマークではこの方法を採用しています。単にテキストを抽出すると構造情報が完全に失われると思われがちですが、ここでは一工夫を加えています。具体的には、異なる対象から抽出されたテキストを、2つの連続する改行(\n\n)などの区切り文字で区切っています。
上記で抽出したテキストを入力として、自社開発のモデルを用いてノイズを除去しています。具体的には、2つのモデルを活用しています。1つはScikit-learnのMLPClassifier、もう1つは日本語BERTモデルである「BERT base Japanese (IPA dictionary)」をファインチューニングした言語モデルです。
これらのモデルを用いて、さまざまな区切り文字列を基準に「この文はノイズかどうか?」を0から1の間でスコアリングし、ノイズ度を出力します。文章の階層構造など、文字列以外の上位情報を活用して文脈を考慮すれば精度向上が図れますが、多くの場合は文脈を考慮しなくても判断できるため、ここでは文そのものに着目しています。
ChatGPT Plus(GPT-4)との比較
ChatGPTの効果的な活用方法として、プロンプトエンジニアリングガイドなども公開されていますが、ここではZero-shot方式でノイズ削除を試みた例を紹介します。プロンプトは「本文の箇所だけを、文字を変更せずに出力してください。」とシンプルなものとしました。
試行例は複数ありますが、分かりやすいものを1つキャプチャで紹介します。
ChatGPT(GPT-4)によるノイズ削除キャプチャ
赤枠①で示したように、不要な情報が完全には削除されていません。また赤枠②から分かるように、ChatGPTには出力トークン数の制限があり、文が途中で終わっています。さらに、キャプチャでは明示していませんが、実行ごとに出力結果が変動することがあります。
その他の点も含めてまとめると、以下のようになります。
| 項目 | ストックマークのモデル | ChatGPT |
|---|---|---|
| 正確さ | 常に元の記事を維持したままノイズ削除可能 | 元の記事の内容が失われ、短い要約になることがある |
| 速度とコスト | 10億パラメータのBERTベースで高速に実行可能。文レベルの推論であり効率的 | より長い処理時間と高いコストがかかる |
| ロバスト性 | 同じ入力に対して常に同じ結果が得られる | 厳密なプロンプト調整が必要で、応答が一定せず、プロダクション環境での利用が難しい |
まとめ
本記事では、プロダクトへの応用を視野に、ChatGPTと自社モデルの比較を紹介しました。ChatGPTは非常に強力なサービスですが、適用範囲には得手不得手があります。そのため、実際の本番プロダクトに組み込む場合には、スコープを限定したより効率的なモデルの構築が効果的です。
原文を表示
本記事執筆時点の2023年4月時点で、ChatGPTのニュースを見ない日はないほど、世の中にChatGPTの記事が溢れています。「こんなことに使える」「あんなことに使える」と応用範囲が広いChatGPTですが、「あたかも当然のように嘘をつく」ように決して万能なわけではなく得手不得手があります。そんなChatGPTに対して、プロダクト開発側に立つ方にとって気になるのは「実際にプロダクトに組み込めるのだろうか?」という点でしょう。
そこで、本記事ではストックマークのプロダクトで実現している「記事中にあるノイズ削除」にフォーカスして、自社で利用するモデルとChatGPTとを比較していきます。なお、プロダクトに組み込む場合は、ChatGPTではなくAPIを利用するケースが自然ですが、GPT-4ベースのAPIを執筆時点で利用できなかったことから、ChatGPT Plus(GPT-4)を利用しています。
本記事は以下の3点を中心に紹介します。
前提: 記事中のノイズ削除がなぜ必要なのか? どのようにストックマークでノイズ削減を実現しているか? ChatGPT との比較 前提: 記事中のノイズ削除がなぜ必要なのか? ストックマークの自社プロダクトでは、Web上にあるニュース記事からの「意味のあるテキストの抽出」を実現しています。Webに溢れるコンテンツはさまざまな理由からノイズ(広告、記事のメタデータ)を含んでいます。
たとえば、次の画像では段落の間に外部へのリンクが挿入されており、これは記事の本旨からするとやや外れた内容になっています。
ノイズを含む記事イメージ そのまま活用すると、必ずしも読み手にとって最適な情報を提供できるわけではありません。そのため、ユーザーにとってより価値のある情報提供するために、記事中にあるノイズを削除する必要があります。
どのようにストックマークでノイズ削減を実現しているか? 特定のWebサイトに限れば、HTMLのスタイリング情報(CSS)やセマンティックタグの活用によるノイズを含まない情報抽出は可能です。しかし、膨大なニュースサイトに対して統一的なルールセットを用意・適用するのは現実的ではありません。Webサイトの構造は変化しますし、なにより誤ってHTMLタグが利用されていると、記事中の重要コンテンツを落としてしまうことすらあります。
そこで別の方法として、HTMLから文字列を抽出して、その文字列に対してノイズを削除する方法があります。ストックマークではこちらの方法を活用しています。なお、単にテキストを抽出というと、完全に構造情報が失われるように思われますが、ここは一工夫を加えています。具体的には、異なる対象から抽出されたテキストは、2つの連続する改行である \n\n で区切りを設けるなどいくつかの区切りを設けています。
上記で抽出されたテキストを入力として、自社で開発したモデルを利用してノイズを除去しています。具体的に言えば、2つのモデルを活用しています。1つはSklearn MLPClassifierです。もう1つの言語モデルには、日本語のBERTモデルである BERT base Japanese (IPA dictionary) をファインチューニングしたものを利用しています。
これらのモデルを活用して、さまざまな区切り文字列を活用して「この文はノイズかどうか?」を0から1の間でスコアリングして、ノイズ度を出力します。文章の階層構造などの文字列以外のより上位の情報の活用により、文脈を考慮した精度向上も狙えますが、たいていは文脈を考慮せずとも判断できるため、ここでは文そのものに着目しています。
ChatGPT Plus(GPT-4) との比較 ChatGPT の効果的な活用方法として、プロンプトエンジニアリングガイドなども公開されていますが、ここでは Zero-shot 方式でノイズ削除を試みた例を紹介します。プロンプトはシンプルに 本文の箇所だけを、文字を変更せずに出力してください。 としています。
試行例は複数ありますが、わかりやすいものを1つキャプチャにて紹介します。
ChatGPT(GPT-4)によるノイズ削除キャプチャ 赤枠①で明示したように、不要な情報が削除しきれていません。また赤枠②の箇所から分かるようにChatGPTの制約から、出力トークン数に制限があり文が途中で終わっています。さらに、キャプチャでは明示していませんが、実行ごとに出力結果が変わることがあります。
その他の点も含めてまとめると次のようになります。
項目 ストックマークのモデル ChatGPT 正確さ 常に元の記事を維持したままノイズ削除可能 元の記事が失われ、短い要約になることがある 速度とコスト 10億パラメータのBERTであり高速で実行可能。また文レベルの推論であり効率的 より長い処理時間および高いコストがかかる ロバスト性 複数回の同じ入力に対して常に同じ結果が得られる 厳密なプロンプト調整が必要であり、応答が一定せずプロダクション環境での利用に難しさがある まとめ 本記事では、プロダクトの応用に向けてChatGPTと自社モデルとの比較を紹介しました。ChatGPTは非常に強力なサービスですが、適用範囲に得手不得手があります。そのため、実際の本番プロダクトに組み込む場合には、スコープを限定したより効率的なモデル作成が効果的です。
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み