0

自動構成ブラケットの学習アルゴリズムを書いています。アルゴリズムは最初から開始されるため、ブラケット(埋め込み)は最初はランダムである必要があります。その後、反復によって改善されます。ランダムブラケットを行う方法に固執しています。RまたはPythonでコードを提案するか、プログラミングのアイデア(擬似コード)を教えてください。また、ランダムブラケットを適切なブラケットと照合して正しいかどうかを確認する方法についてのアイデアも必要です。

これは、ランダムブラケットから始めて、学習プロセスを通じて最終的に到達しようとしているものです。

これは一文です。「彼」は「犬」を追いかけた。

各要素を文法要素N、V、D、Nに置き換えます。

ブラケット(第1フェーズ)(D、Nは構成要素):( N)(V)(DN)

ブラケット(第2フェーズ):( N)((V)(DN))

ブラケット(第3フェーズ):((N)((V)(DN)))

助けてください。ありがとうございました。

4

1 に答える 1

1

提供された情報で私が言えることは次のとおりです。

ブラケットの素朴な方法は、いくつかの木を生成し(すべてを生成すると、すぐに非常にスペースを消費する可能性があります)、単語(またはコンポーネント)と同じ数の葉を持ち、適切なものを(ランダムにまたは適切なパーティションに従って)選択することです。ブラケットパターンとして適用します。より効率的にするには、真のランダムツリー生成アルゴリズムを探してください(現時点では見つかりませんでした)。

さらに、遺伝的アルゴリズム/進化的プログラミング、特に適応度機能(「ランダムな結果が正しいかどうかを確認する」部分)について読むことをお勧めします。私があなたを理解している限り、あなたはプログラムが構文解析の方法を検出し、それを「学習済み」としてメモリに保持することを望んでいます。これは、「最も適切な」パターンの記憶(および変化要因としての突然変異のみ)を伴う遺伝的アルゴリズムと完全に一致します。

素晴らしい、非常に手の込んだ(機能している場合)が、おそらく非常に難しいアプローチは、遺伝的プログラミングを使用することです。しかし、それはおそらくあなたが望むものとはあまりにも異なっています。

そして最後に、括弧で囲まれたimoの正しさをチェックする最も簡単な方法は、文法/構文規則を含む表を保持し、それらと比較することです。(V D) Nまた、これらをツリーに保持し、実際のパターン( )から正しいパターン()までの距離を測定することで、これをより良い適応度関数に改善することもできますV (D N)。(これはランダムなアイデアですが、実際にこれを行ったことはありません。)

于 2012-06-11T07:26:02.417 に答える