日本語要約の手法・サービスのまとめ

  • 日本語文章の自動要約について調べたのでまとめておく
  • 原文から一部を選択的に抜粋する抽出型と機械翻訳のように対応する要約文を生成する生成型がある
  • またウェブで公開されている要約サービスもある

生成型要約

モデル

  • DNN 言語モデル
    • BERTの文脈から派生した要約手法が多い
    • BART
    • T5
      • 学習をすべて自然言語で設定して行うことで複数のタスクへと柔軟に対応する、というコンセプトのモデル
      • T5がhugging face で公開されたモデルをファインチューニングして使うことが割と手軽にできた
      • 要約だけでなく単語の分散表現を得ることにも使える
  • 整数計画問題
    • ソルバーで厳密に解くことができる
      • 無償のソルバーはpythonだとpulp, Python-MIPが選択肢になる
      • 式を記述する際の挙動の軽さから私はPython-MIPを勧める
    • 制約条件として文の数、文字数を指定できる
    • 計算時間が短いというわけではない
      • 定式化の問題か?
    • 各モデル
      • 文全体が一つのトピックを扱っていると仮定して、その代表的な文を拾ってくるイメージ
      • McDonaldモデル
      • 最大被覆モデル
      • 施設配置モデル
        • 劣モジュラ最適化問題に帰着できる
        • 文の類似度を計算する必要がある
        • 原論文では単語の重複をスコアとしている
          • ROUGEみたいな
          • 2022年現在では文の分散表現を求めることもできるのでそこはケースバイケースで特徴量を選択する
  • LexRank
    • 文間の類似度からグラフ関係を計算して、重要な文をランキングする
    • 文字数の指定はできない
    • Sentence Transformersのサイトに実装例がある
      • 日本語に適用するには多少の修正が必要になる
    • 別に文の間の類似度が出せるならSBERTでなくてもいい
      • ROUGE, USEなど

サービス

  • イライザダイジェスト
    • 3文に要約
    • 割と内容を理解した出力をする印象
    • 生成型特有のゆらぎが見られる
      • 不自然な箇所に句読点など
  • タンテキ
    • 3文に要約
    • 抜粋型か?

参考文献

日本語の分散表現の計算方法まとめ

単語単位の分散表現

  • Word2vec
    • 自然言語処理における分散表現の一つのオリジナル
    • 基本原理くらいは知っていてもいいかもしれない
    • gensimがよく使われる
  • Fasttext で文書分類問題までやったった
    • fastと名前がついているだけあってfacebookが公開しているモデルは高速に動作する
    • 分散表現とクラス分類に対応していたり、利便性が高い
    • 特にこのモデルで利用されている分かち書きの特徴から未知語に強いとされている
  • 日本語Wikipediaで学習済みのBERTが公開されているので使い方メモ
    • Google の検索エンジンにも採用されている、らしい
    • 自然言語処理の研究を大きく変えたモデル
    • 関連する技術であるTransformerは自然言語処理だけでなく、画像処理の界隈にも流用された
    • huggingfaceで日本語版のBERTも色々と公開されている
  • 日本語に対応したT5
    • この日本語版のモデルの作者が公開しているサンプルがわかりやすい
    • また同じ作者がSBERTのモデルも公開している

文単位の分散表現

  • tf-idf
    • 最初の選択肢
    • 単語の出現頻度を計算してスコアを割り当てる
    • gensimがよく使われる
  • BM25
    • 単語の出現頻度を計算してスコアを出す
    • QAモデルの最初の大雑把な検索によく使われる印象
  • doc2vec
    • word2vecの文書版
    • gensimがよく使われる
  • Universal Sentence Encoder
    • 結構重宝する
    • そこそこ性能もよく使い勝手がいい
  • SBERT
    • GPUがないとしんどいかも
    • 性能自体は上のUSEよりも体感ではいい

日本語で学習済みのT5がhugging face で公開されたので使い方メモ

T5(Text-To-Text Transfer Transformer) とは

  • 事前学習における入出力を文に統一してしまうことで、 複数の形式の問題に対しても適応できる様式となった。
  • モデルの基本構造としては Transformer が使われており、その点はBERTと共通している。
  • 事前学習の形式をすべてテキストによる指定にするというアイデアはGPT-3などでも用いられている。
    • 0 shot learning など入力文で模範解答例を入力するだけで、出力を操作するということも行われている
    • “操作の指定:入力文1、出力に期待する文、操作の指定:入力文2"で、“出力文2"が得られるという次第

できること

  • 下流のタスクとして転移学習を行うことで以下のようなことが実行できる。
    • 文書分類
    • タイトル生成
    • 文章生成
    • 生成要約

生成要約の例

  • 一つの原文から2種類の要約文を生成するファインチューニングが思いの外うまく働いた。

データとしては

[Read More]

word2vecでteratailの検索システムっぽいものを作る

概要

分散表現を用いた検索システムを作る。

  1. teratailから質問をスクレイピングする。
  2. スクレイピングした文章をもとにword2vecを学習する。
  3. word2vecによって得られた分散表現をもとにcosine similarityを計算して、クエリと質問文の類似度を得る。
  4. 類似度をもとにソートする。

ソース

teratail_w2v_question.ipynb

[Read More]

ポートフォリオ

実績

word2vecのアルゴリズムを把握するためにnotebookで動かしながら挙動を理解しよう

word2vecを理解しよう!

  • word2vec のアルゴリズムについて、勉強しようとして苦戦していませんか?
    • アルゴリズムの基になる発想は意外に直観的なものですが、その直観をアルゴリズムの記述から読み取るのはコツが要るかもしれません。
    • 実際に動くモデルで遊んでみて、反応をみながら感覚を掴むといいと思います。
    • 一行単位で実行できるプログラムを自分の手で動かしながら、出力を確認できると分かりやすいと思いませんか?

環境構築不要!

  • そこでGoogle Colaboratory というサービスを利用して、手軽にword2vecを動かして、アルゴリズムの仕組みを理解しましょう!
    • Google Colaboratory はGoogleが提供しているサービスです。
    • Gmailのアカウントを持っていれば環境構築の手間が省け、Googleの計算資源を利用できるものです。
  • そこでword2vecを動かせるプログラムを用意しました。
  • このプログラムは技術書典というイベントで頒布させていただき、50以上の方に利用していただきました。

購入は以下のリンクから

深層学習でニュースタイトルの自動生成モデルつくったった

  • 深層学習モデルを使って、新聞記事から見出しを自動で生成するモデルが提案されている。
  • 朝日新聞が自動要約生成APIの提供を始めました。

追記

モデル概要

  • 朝日新聞が研究に協力して取り組んでおり、transformerを基礎にして、文字数制約を組み込んだモデルが論文で提案されています。
  • さすが朝日新聞というべきか、莫大な教師データを使ってモデルの学習を行っています。
  • また文字数制約についても、位置エンコーディングを工夫することによって、指定した文字数を生成するようになったようです。
  • この辺り、フリーの言語リソースが日本語に少ないことには歯がゆさを感じます。

## ニュースタイトルの自動生成モデルの作成

[Read More]