0

この質問は言語に依存せず、トライの実装方法を理解すること、またはトライが私のプログラムの想定に適しているかどうかを理解することに関するものです。このようなテキストの文字列があるとします。

string= "a tale about an ant and an android";

「a」に対応するトライは次のようになります

      a(7)      
     /    \     
    b(1)  n(4)
    /     /   \
  o(1)  t(1)  d(2)
  /              \
 u(1)            r(1)
 /                 \
t(1)               o(1)
                     \
                     i(1)
                       \
                        d(1)

そして、各単語の出現回数を見つけたいと思います。「a」は文章中に6回出てきますが、単語として使われているのは1回だけです。「an」と「and」にも同じ規則が適用されます。

最終的な周波数カウンターを次のようにします。

a: 7 ではなく 1 回発生 an: 2 and: 1 など..

完全な単語数を記録するにはどうすればよいですか?

私は大量のテキストを処理しようとしてphpで作業しており、この質問にアクセスしましたが、探しているものではありません。パフォーマンスは重要ですが、1兆語を解析しているので、メモリ効率がより望ましいです。ありがとうございます。ご意見をお待ちしております。

4

2 に答える 2

0

次の 2 つの方法で実行できます。

  1. 単語が通過するたびにノードをインクリメントするのではなく、そこで終了したときにのみインクリメントする

  2. 単語の末尾に疑似文字 (空白など) を付けます。これは、単語がそこで終わる場合にのみインクリメントされます。

于 2013-04-15T23:48:56.193 に答える
0

三項トライをお勧めします。次に、3 番目のエッジに単語を格納します。次に、単語カウンターを実装できます。

于 2013-04-15T23:17:58.957 に答える