私は、文字列のコレクションを分割するためにあらゆる可能な方法を反復処理し、それぞれに簡単な計算を実行している必要統計的プロジェクトに取り組んでいます。具体的には、それぞれの可能な部分文字列にはそれに関連付けられた確率があり、パーティション内の部分文字列確率の積のすべての部分にわたって合計を取得しようとしています。文字列のパーティショニングのスペース上で計算を実行するための賢明な効率的なアルゴリズムはありますか?
例えば、文字列が 'ABC' である場合、 'A'、 'B'、 'C'、「AB、 'BC' と 'ABC' の確率が存在するであろう。文字列には、 'abc'、 'ab | c'、 'a | bc'、 'a | b | c'の4つのパーティションがあります。アルゴリズムは、各分割のための成分確率の積を見つけ、次に4つの結果の数を合計する必要がある。
現在、私は(上の例のために例えば00、01、10、11)のパーティションの整数のバイナリ表現を使用してPythonのイテレータを書いたし、単純に整数を介して実行されます。残念ながら、これは20文字以上の文字列では非常に遅いです。
は、誰もが簡単に一度にすべてのパーティション1を通じて実行せずにこの操作を実行するための巧妙な方法を考えることはできますか?私は今、これに数日間執着してきました。いくつかのコメントに応えて
はここにいくつかのより多くの情報です:
は、文字列は何でもすることができ、例えば、「foobarに(foo2は)」 - 私たちのアルファベットは小文字の英数字がプラス括弧のすべての3つのタイプ(「(」、 "["、 "{")、ハイフンとスペース。
目標は、個々の 'ワード' 尤度与えられた文字列の可能性を得ることである。したがって、L(S = 'ABC')= P( 'ABC')+ P ( 'AB')P( 'C')+ P( 'A')、P( 'BC')+ P( 'A')、P( 'B')、P( 'C')(ここで、「P( 'ABC 'abc')は、文字列 'abc'を観察する統計的尤度である)
p( 'ab | c')= p( 'ab')* p( 'c')? – balpha
文字を文字列に複数回表示できますか? – mbeckish
あなたのアルファベットにはいくつの文字がありますか? – mbeckish