テキストから概念とキーワードを自動抽出する (パート II: セマンティック アプローチ)
公開: 2022-09-20この記事は、テキストからのキーワードの自動抽出に関する最初の部分のフォローアップです。 前回の記事では、テキストからキーワードを抽出する、いわゆる「従来の」アプローチ (統計ベースまたはグラフ ベース) について説明しました。
ここでは、よりセマンティックなアプローチでメソッドを検討します。 まず、単語の埋め込みとトランスフォーマー、つまりコンテキスト埋め込みを紹介します。 次に、BERT モデルに基づく、ジョン コルトレーンのアルバム、Impressions (ソース francemusique.fr) に関する同じテキストの例を共有します。 最後に、 P@k
やf1-score
などの評価方法と、最新の最新技術によるベンチマークを紹介します。
従来のアプローチとは異なり、セマンティックアプローチでは、同じ語彙フィールドに属する単語が異なっていてもリンクできます。 このアプローチの背後にある考え方は、最も意味のある単語、つまりテキストに関連する最も関連性の高い情報を提供する単語を抽出するために、テキスト内の単語の出現頻度の計算を省くことです。
単語の埋め込み
この方法は、word2vec と呼ばれるモデルが導入された 2013 年にさかのぼります。 これは、語彙の単語のセットをベクトルとして表現することを提案する、いわゆる「深層学習」アーキテクチャとは異なり、「単純な」人工ニューラル ネットワーク アーキテクチャです。 つまり、各単語は 1 行の数字で表されます。 この一連のベクトルは語彙のセマンティック フィールドを表し、これらのベクトルを相互に比較することができます。 これらのベクトル間の距離を測定することで、単語が意味的に類似しているかどうかを判断できます。 数値の配列としての単語の表現は、埋め込みと呼ばれます。
単語セットのベクトル表現を取得したら、これらの単語を相互に比較できます。 2 つのベクトルの間の角度が非常に小さい場合、2 つの単語は近い意味を持ちます。これが意味的距離です。値は -1 と 1 の間です。値が 1 に近いほど、単語の「類似」度が高くなります。意味。 反対に、-1 に近い値は「反対」の意味を示します。たとえば、「良い」と「悪い」などです。
このモデルの目的は、無視できない量のテキスト ドキュメントからこれらの有名な埋め込みを「製造」することです。 数十万のテキストがあるとしましょう。モデルは、類似した単語に基づいて単語を予測することを学習します。
モデルは、いくつかの単語グループ (たとえばサイズ 5) を入力として受け取り、 <mask>
の最良の代替を見つけようとします。 コーパス内に、類似したフレーズまたは単語のグループがあります。 たとえば、「ジャズ」、「ロック」、「クラシック」、「レゲエ」などの単語を見つけることができます。 したがって、これらすべての単語は非常に類似したベクトルを持つことになります。 したがって、モデルは、類似した語彙フィールドにある概念と単語をまとめることができます。
[ケース スタディ] インデックス作成の問題を見つけて修正する
一方で、綴りが同じでも文脈上で同じ意味を持たない単語にはあいまいさがある場合があります。これらは同形異義語です。
例えば:
- 彼はセーヌ川のほとりに腰を下ろした。
- 彼女はそのお金をチェース銀行に預けた.
これは、このタイプのモデルの制限です。コンテキストに関係なく、単語は同じベクトル表現になります。
トランスフォーマー
より最近のアプローチは、主に 2017 年に Google の Attention Is All You Need で登場しました。 word2vecメソッドは、同じ意味を持たない 2 つの同一の単語を表現するのに苦労しましたが、トランスフォーマー型モデルは、コンテキストに基づいて単語の意味を区別できます。 RNN や LSTM などの単語のシーケンスを考慮できる NLP モデルもありますが、この記事では取り上げません。
トランスフォーマーは、ニューラル ネットワーク アーキテクチャの新しい概念であるアテンション メカニズムを普及させるでしょう。 これにより、文などの一連の単語内で、各単語が他の単語とどのように関連しているかを見つけることができます。
2018 年に Google によって作成された BERT モデルは、強力で人気のあるモデルです。 これらの言語モデルの利点は、事前にトレーニングされたモデルに基づいていることです。つまり、モデルは英語、フランス語などのかなりの量のテキストですでにトレーニングされています。より詳細な分析。 それをそのまま使用して、テキストを比較したり、質問から回答を生成したり、感情分析を行ったり、より具体的なテキスト本体の微調整を行ったりすることができます。
画像は、 exBERT視覚化ツールで生成されました。 選択された単語「money」は、「 deposited 」と「 bank 」に強く関連していることがわかります。 コンテキストのおかげで、モデルが「銀行」という単語のあいまいさを簡単に取り除くことができます。
KeyBERTの場合、文を意味的に簡単に比較できるSentence-BERTと呼ばれるBERTから派生したモデルです。
利用可能なすべてのオープン ソース モデルと事前トレーニング済みモデルについて詳しく知りたい場合は、Huggingface ハブにアクセスしてください。Huggingface ハブは、NLP に関連するデータセットとモデルの保存と共有を専門としています (最近では音声と画像にも関連しています)。
KeyBERTによるキーワード抽出
では、トランスフォーマーを使用して、テキストから関連するキーワードを抽出するにはどうすればよいでしょうか? KeyBERT を含むいくつかのプロジェクトがあります: BERT を使用した最小限のキーワード抽出、BERT モデルを使用するオープン ソースの Python ライブラリ。
デフォルトでは、KeyBERT は BERT ベースのセンテンス トランスフォーマーを使用して、単一の単語ではなくセンテンスをベクトルとして表します。 これは、文または単語のグループを比較する非常に効率的な方法です。 KeyBERT アルゴリズムの原理は非常に単純です。 次に、テキストの例を見てみましょう。
- このコードは、テキストからすべての一意の単語を抽出します。 このステップでは、多くの場合、ストップワードが削除されます。
- テキスト全体と各単語の埋め込みが計算されます。
- 次に、単語に由来するベクトルと、テキスト全体を表すベクトルとの間の意味距離を計算できます。
すべての距離が計算されると、テキストの全体的な意味に密接に関連する単語を抽出できます。これらは、アルゴリズムによって選択されたキーワードになります。
さらに、 KeyBERTはキーフレーズの長さを選択する機能を提供します。実際には、単一の単語、単語のペア、またはトリプルのいずれかを取ることができます。 さらに、このコードは、結果の多様性を高めるために、「最大限界関連性」(MMR) メソッドを実装する方法を提供します。 これにより、ドキュメントの内容に関連している可能性がある用語の繰り返しを避けることができますが、結果には頻繁に表示されます。たとえば、「ジャズ コンサート」、「ジャズ ミュージック」、「ジャズ スタイル」などです。など
結論として、spaCy や flair のモデルなど、KeyBERT に他の NLP モデルを使用することも可能です。
前回の記事と同様に、John Coltrane のアルバム Impressions に関する同じ記事から KeyBERT によって抽出されたキーワードの例を次に示します。
「コルトレーン・インプレッション」、「ミュージック・カルテット」、「ジャズ・トレジャー」、「ジョン・コンサート」、「パール・シークエンス」、「グラーツ・レパートリー」、「テナー・サックス」
評価方法
この記事と前回の記事では、ドキュメントからキーワードを抽出するために使用されるいくつかの方法を紹介しました: RAKE、Yake、TextRank、および KeyBERT。 ただし、状況に応じて適切なものを選択できることが重要です。
したがって、ある方法の結果を別の方法と比較するために、評価方法を検討することが重要です。 キーワードが人間によって定義され、検証されたデータ(document, keywords)
から、モデルからの結果をこの「現実」と比較することができます。 分類問題でよく使用される精度、再現率、f1 スコアなどのメトリックがあります。 したがって、モデルによって抽出された特定のキーワードが実際に関連するキーワードのリストにあるかどうかを知ることで、混同マトリックスを構築できます。
モデルは一連のキーワードを抽出できるため、最初のk 個のキーワードをグラウンド トゥルースと比較することがよくあります。 比較するキーワードの数によって結果が異なる可能性があるため、 k値に応じてモデルを数回評価します。 これらのメトリックはPrecision@k
と呼ばれます。これは、「上位 k の精度を計算する」という意味です。
[電子ブック] 内部リンク スキームが Inrank に与える影響
精度
これは、予測されたすべてのキーワードのうち、上位 k件に含まれる正しいキーワードの数です。
想起
これは、グラウンド トゥルースの全キーワードのうち、上位 kの正しいキーワードの数です。
f1スコア
これは、前の 2 つのメトリックの組み合わせです。つまり、適合率と再現率の調和のとれた平均です。
MAP@k
平均精度
MAPを計算する最初のステップは、平均精度を計算することです。 モデルによって見つかったすべてのキーワードを取得し、モデルによって見つかった関連するキーワードごとにP@k
を計算します。 例として、提案された 5 つのキーワードのうち 3 つの関連キーワードを使用してAP@5
を計算するには、次のようにします。
キーワード: ジャズ コンサート 音楽 サックス ラジオ 関連: 1 0 1 1 0 P@k: 1/1 2/3 3/4 AP: 1/3 (1 + 2/3 + 3/4) ~= 0.80
ここで、関連するキーワードの位置が重要であることに注意してください。 実際、5 つのキーワードのうち最初の 3 つのキーワードが関連性がない (それぞれ関連性がある) 場合、 APのスコアは同じではありません。
次に、各(document, keywords)
について、すべてのAPの平均を計算して、最終的にMAP を取得します。
これらのさまざまな指標は、ランキングモデルや紹介システムの評価にも広く使用されていることに注意してください。
これらの指標のいくつかに対する小さな批判の 1 つは、関連するグラウンド トゥルース キーワードの数に関するもので、データセットやドキュメントごとに異なる可能性があります。
- たとえば、
recall@k
: スコアは、グラウンド トゥルースの関連キーワードのサイズに大きく依存する可能性があります。 最大 20 個の関連キーワードがある場合、recall@10
の場合、この 20 個のキーワード セットの最初の 10 個のキーワードを比較します。 最良のケースでは、モデルによって提案されたすべてのキーワードが関連している場合、再現スコアは 0.5 を超えません。 - 一方、関連するグラウンド トゥルース キーワードの数が、モデルによって提案されたものと比較して非常に少ない場合、良好な
precision@k
スコアを取得することはできません。 関連する 5 つのグラウンド トゥルース キーワードの場合、precision@10
のスコアはせいぜい 0.5 ですが、それ以上にはなりません。
結果を評価するために使用されるメトリックが何であれ、テキストの作成者、読者、編集者などの人々によってキーワードが事前に定義されているデータセット (テキスト、キーワード) が必要です。いくつかのデータセットがあり、主に英語およびさまざまな主題: 科学記事、抄録、ニュース、IT など。たとえば、約 20 のデータセットをリストするこの Github KeywordExtractor-Datasets リポジトリがあります。
ベンチマーク
このさまざまな評価方法のプレゼンテーションに加えて、ベンチマークを提案するいくつかの研究論文の「ダイジェスト」も提供したいと思います。
最初のものは、ヤケを実装した研究者によるものです! 論文のメソッド、「YAKE! 複数のローカル機能を使用して、単一のドキュメントからキーワードを抽出します。 彼らは、約 20 の異なるデータセット ( P@k
、 recall@k
など) を使用して、最もよく知られているものについて、PubMed、WikiNews、SemEval2010、および KDD でメソッドを分析しました。 Rake、Text Rank などを含む約 10 の他の方法と比較されます。利用可能なすべてのデータセットを統合し、精度と再現率を計算することにより、Yake! この方法は、最先端の方法よりも優れているか、非常に近いです。 たとえば、 f1@10
の場合:
データセット | やけ! | ベストまたは2位 |
---|---|---|
ウィキニュース | 0.450 | 0.337 |
KDD | 0.156 | 0.115 |
検査 | 0.316 | 0.378 |
やけ! 多くの場合、最大 50 ~ 100% 優れており、これは主要な方法に近いものです。
別の最近の論文「TNT-KID: キーワード識別のためのトランスフォーマー ベースのニューラル タガー」でも、従来の方法とトランスフォーマーベースの方法を比較しています。 Transformersを使用した抽出方法の方がパフォーマンスが優れています。 ただし、これらは結果を生成するためにデータ本体でトレーニングする必要がない Rake、KeyBERT、および Yake とは異なり、いわゆる「教師あり」メソッドであるため、注意してください。
最後に、他の 2 つのベンチマークを見てみましょう。
- Sentence Embeddings を使用した単純な教師なしキーフレーズ抽出は、単語の埋め込みを使用し、Inspec や DUC などのデータセットで TextRank と比較して優れたパフォーマンスを発揮します。
- 7 つのアルゴリズム (Python) を比較するブログ投稿: Keyword Extraction — A Benchmark of 7 Algorithms in Python. 著者は、KeyBERT、RAKE、Yake メソッドの計算時間と、各メソッドが抽出できる関連単語の数の観点からパフォーマンスを比較します。
結論
この 2 つの記事で見てきたように、テキストから関連するキーワードを抽出する方法は実にさまざまです。 さまざまなベンチマークを見ると、メトリクスの点で他のすべてを実際に超えるものはないことに気付くでしょう。 文章や文脈にもよるでしょう。 さらに、7 つの抽出アルゴリズムに関するブログ記事の著者が指摘したように、長いテキストに直面した場合、アルゴリズムの処理時間も信頼できます。
今回は、アルゴリズムを実行に移し、何十万ものドキュメントを処理することになると、間違いなく重要な要素になります。 KeyBERT の場合、GPU を備えたインフラストラクチャを検討して、処理時間を大幅に増やす必要があります。 実際、この方法は、多くのコンピューティングを必要とするディープ ラーニング アーキテクチャを備えたトランスフォーマーに依存しています。
どちらかを選ばなければならないとしたら、きっとKeyBERTとYakeのどちらかでしょう。 前者はトランスフォーマーとセマンティックな側面のためであり、後者はその効率と実行速度のためです。
参考文献
- 2017年、必要なのは注目だけ
- BERT: 言語理解のためのディープ双方向トランスフォーマーの事前トレーニング、2019
- 自己ラベリングによる自己管理型のコンテキスト キーワードとキーフレーズの検索。 Sharma P. & Li Y. (2019)
- さまざまなキーワード エクストラクタの探索 — 評価指標と戦略