Skip to main content
QUICK REVIEW

[論文レビュー] Memoization of Top Down Parsing

Mark Johnson|ArXiv.org|Apr 25, 1995
Natural Language Processing Techniques参考文献 10被引用数 44
ひとこと要約

この論文は、トップダウンパーサーの継続渡しスタイル(CPS)関数的形式化を提示し、集合を返すのではなく文字列位置を段階的に列挙することで、左再帰文法においてもメモ化が終了するようにしている。主な貢献は、チャートパーサーの挙動をエミュレートする新規なメモ化技術であり、左再帰があっても終了保証と多項式時間計算量を達成する。

ABSTRACT

This paper discusses the relationship between memoized top-down recognizers and chart parsers. It presents a version of memoization suitable for continuation-passing style programs. When applied to a simple formalization of a top-down recognizer it yields a terminating parser.

研究の動機と目的

  • 左再帰文法においてメモ化されたトップダウンパーサーが非終了する問題を解消すること。
  • 入力位置の段階的列挙を可能にする関数型の継続渡しスタイル(CPS)によるトップダウンパーサーの形式化。
  • このCPSフレームワークにおけるメモ化が、チャートパーサーと同等の挙動を示すことを示すこと。
  • 文脈自由文法、特に左再帰文法に対しても効率的で終了保証のあるパーサーの構築を可能にすること。
  • このアプローチを完全な構文木の構築や意味値の伝搬に拡張する基盤を構築すること。

提案手法

  • パーサーを集合を返すのではなく、文字列位置のストリームとして表現する継続渡しスタイル(CPS)を用いる。
  • 入力位置とカテゴリごとに結果をキャッシュするメモ化機構を導入し、重複計算を防ぐ。
  • 「エントリ」セルに継続と結果を格納するテーブルベースのメモ化構造を採用し、効率性のためのミューテーションを活用する。
  • 「seq」、「alt」、「opt」、「k*」などの高階関数コンビネータを定義し、端末記号および非端末記号関数から構文を構成的に構築する。
  • CPS変換を施したパーサー関数にメモ化を適用し、各関数が引数ペア(カテゴリ、位置)に対して最大1回ずつしか呼ばれないように保証する。
  • Schemeにおけるパフォーマンス向上のため、破壊的代入(set-car!, set-cdr!)を用いてメモテーブルを効率的に更新する。

実験結果

リサーチクエスチョン

  • RQ1関数型プログラミング技法を用いて、左再帰文法においてもメモ化されたトップダウンパーサーが終了するようにできるか?
  • RQ2継続渡しスタイル(CPS)は、トップダウンパーサーにおけるより効率的で終了保証のあるメモ化をどのように実現できるか?
  • RQ3CPSベースのメモ化は、予測と完了のステップにおいて、チャートパーサーの挙動をどの程度エミュレートできるか?
  • RQ4同じメモ化技術を、完全な構文木や意味値の生成に拡張できるか、かつ終了保証を失わないか?
  • RQ5純粋関数型でメモ化されたトップダウンフレームワークにおいて、チャートに類似した効率性と完全性を達成できるか?

主な発見

  • CPSベースのメモ化パーサーは、(35)のNP規則のような左再帰文法に対しても終了する。これは従来のメモ化トップダウンパーサーでは非終了を引き起こしていた。
  • メモ化機構により、各パーサー関数が入力位置とカテゴリごとに最大1回ずつしか呼ばれないため、無限再帰が防止される。
  • パーサーの挙動は予測的チャートパーサーに類似しており、メモテーブルエントリが予測済みおよび完了済みエッジに対応する。
  • 文脈自由文法、特に左再帰がある場合でも、多項式時間で効率的な認識が可能である。
  • 整数の位置とベクタベースのメモ化を用いた最適化により、Schemeで効率的で動作する認識器の構築が可能である。
  • 追加の継続引数を追加することで、構文木の構築や意味値の伝搬への拡張が可能である。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。