私は、文字列のコレクションを分割するためのあらゆる可能な方法を繰り返し、それぞれに対して簡単な計算を実行することを含む統計プロジェクトに取り組んでいます。具体的には、考えられる各部分文字列には確率が関連付けられており、パーティション内の部分文字列の確率の積のすべてのパーティションの合計を取得しようとしています。
たとえば、文字列が「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')」は'word''abc'、 "L(S ='abc')"は文字列'abc'を観測する統計的尤度です。