記事中のノイズ削除方式 - ChatGPTとの比較
本文の状態
日本語全文を表示中
詳細モードで約5分の本文を読めます。
ストックマーク社が自社製品で実装している記事中のノイズ削除技術を、ChatGPT Plus(GPT-4)と比較検証している。プロダクトへの組み込み可能性を探る実践的な比較記事である。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
本記事執筆時点の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は非常に強力なサービスですが、適用範囲に得手不得手があります。そのため、実際の本番プロダクトに組み込む場合には、スコープを限定したより効率的なモデル作成が効果的です。
同じ出来事を2媒体で確認
同じ出来事を扱う別媒体の記事です。見出しと公開時刻を比較できます。
関連記事
News to Guide
ニュースの次に確認する
発表内容を、現在の料金や仕様と照らし合わせられる関連ガイドです。
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み