このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

extract

検索範囲(軸)、リミット、Next-sibling範囲

情報抽出(extraction)の検索範囲とは、基本的にノード集合(空集合のときもある)だが、次の構造を持つ。 侵入的順序構造:パターンマッチングの失敗時と、侵入的パターンによるマッチングの成功時に「次」を決めるために使用する順序。線形順序である。 …

出現性とマッチングのキャンセル

抽出式は、マッチングに失敗してもnullまたは[]を戻す。エラーや例外はない。これだと、特定の要素や属性の出現を必須(required)とすることができない。必須の出現性を表すために '!' を導入したが、'!' を付けても抽出に関して特に何の変化もない。抽出と…

組み込み変数/関数

組み込み変数は $:text のような形だが、$text() と関数形式がいいような気もする。いざとなったら引数も付けられるし。追加したいのは: $nodeName() DOMのnodeName。要素のときは $tagName() と同じ。他は、#text, #comment, #document。コメントとPIの区…

空セレクターを持つパターン

空セレクターは <> の形、中身がない。空セレクターを持つ原子パターンは <> ... となる。空セレクターはどんなノードともマッチするが、<(node)> とはまったく違う。非空であるセレクターと空セレクターは別物と考えたほうがよい。空セレクターを持つパタ…

導入したい機能

パターンの侵入性 空セレクターを持つパターン 組み込み変数から関数に 関数(組み込み変数)の追加 マッチングのキャンセル機構 シーケンスパターンの導入 「パターンの侵入性」は既に論じた。他の項目を別々な記事にする。

侵入性のデフォルトはやっぱり侵入的か

パターンの侵入性に関して、デフォルトは非侵入的にすると書いた(→「非侵入的パターンと侵入的パターン - 檜山正幸のキマイラ飼育記 メモ編」)。しかし、やっぱり侵入的かもしれない。侵入的パターンだと、意図しない重複出力が生じる。これが問題なので非…

非侵入的パターンと侵入的パターン

新しい用語法によれば、パターンは次のいずれかの形である。 原子パターン(atomic pattern) 原子パターンのOrElse結合 デフォルトで、パターンは非侵入的であるとする。つまり、あるノードにマッチングした場合(成功時)、次のノードは水平順序により決定…

抽出操作

Eが抽出式のとき、extract(a, E) は次のように評価される。 aとEから決まる検索範囲のノードセット(XPathで言う軸)をSとする。Sが空のときもある。 Eから決まるパターンをPとする。 概念的には(実装とは違う)、検索範囲Sをスキャンして配列として結果を…

パターンマッチング

パターンは、ノードaに対してマッチングされ、マッチングが成功すると内容が評価されてパターン全体の値を得る。マッチング失敗のときは、内容の評価に進まず、評価は中止される。説明の便宜上の話であるが、マッチングの失敗を表すためにundefinedを使う。…

概念と用語法

従来(うちわで)使っていた用語法を幾分変える。情報抽出に使う式を抽出式(extract expression)と呼ぶ。次のBNFでパターンを定義する。 原子パターン ::= セレクター 条件式? 内容? 終端子 パターン ::= 原子パターン | '(' 原子パターン ('|' 原子パター…

ツリーの水平順序とパターンの侵入性

Information Extractorとでも呼ぶべきソフトウェアについて、[extract]タグを付けて書く。系統的には書けないが、そのとき重要だと思ったことを書く。Information Extractorのおよその構造は既に分かっている。式(expression)を使って文書ツリーから情報を…