web-dev-qa-db-ja.com

テキスト検索/処理のためのドメイン固有言語?

私は政府のデータを扱う多くの仕事をしている組織で働いています。政治家の名前の表示方法を標準化するなど、一般的なテキスト検索/操作操作を再利用可能なライブラリに抽象化した2つの異なるプロジェクトがあります(たとえば、「MCDONALD、BOB(R-VA)」を「 Bob McDonald(R-VA) ")、またはテキスト内の法的な引用を検索する(たとえば、テキスト内の「1 USC 7」などの出現箇所を検索する、それが合衆国法典の引用であると判断する、およびタイトル7のセクション1を参照しているという構造)。これらは比較的単純な操作であり、私たちのスペースの多くの共同作業者がそれらを使用したいと思っていますが、それぞれを実装する言語を選択する必要があります(前者はPython(後者はJavascript)で、さまざまな言語で作業し、テキストを処理するためにノードプロセスにシェルアウトするようなハックに頼りたくない潜在的な消費者/寄稿者を凍結します。これはすべて残念なことのようです。私たちが表現しているのはとてもシンプルで、 ht、共有するのはかなり簡単だと思うでしょう。

理想的なのは、いくつかの基本的なテキスト処理操作を表現できる小さなDSLです。正規表現の検索/置換、マップやフィルターなどのいくつかのリスト処理操作、JSON風のデータ構造(マップ)にデータを格納する機能です。およびリスト)、およびこのDSLを変換するメカニズム、またはこのDSLを、私たちと共同作業者が使用したい実際の高級言語(Python、JS、Ruby、およびPHP areおそらく主なもの)。このようなものはありますか?

自分で構築することを検討しました... YAMLのようなものの上に宣言的なもの、SchemeやLuaの小さなサブセット、またはこの目的のために完全に発明されたものかもしれません。しかし、私は最初に何かがすでにそこにあるかどうかを見たかったのです。

3

私が知っているテキスト検索と処理に固有の最良の言語は awk です。 awkがニーズを満たさない場合は、自分で作成しない限り、何も起こらない可能性があります。

ただし、自分で作成する必要がある場合は、言語ごとに最初から完全に開始する必要はありません。 antlr のようなさまざまな言語にエクスポートできるツールを使用するか、1つの言語で作成し、それぞれのネイティブインターフェイスを使用して他の言語からアクセスできます。

3
Karl Bielefeldt

簡潔さがDSLの要件ではないと仮定すると、JSONまたはXMLドキュメント構造を定義することを検討し、新しい言語の発明を避けることができます。これにより、Python、Perl、およびその他の環境での解析がはるかに簡単になり、構文ではなく構造を理解するだけで済みます。

1
Kevin Hsu