0

私の関数はテキストを解析し、「a」、「the」、「in」、「on」、「at」などの短い単語を削除します。

これらの単語のリストは、将来変更される可能性があります。また、異なるリスト間(つまり、異なる言語用)の切り替えもオプションになる場合があります。

では、そのようなリストはどこに保存すればよいのでしょうか。

  • 約50〜200語
  • 毎分多くの読み取り
  • 書き込み(変更)はほとんどありません-たとえば、数か月に1回

私はこれらのオプションを心に留めています:

  1. コード内のリスト(最速ですが、良い習慣のようには聞こえません)
  2. 別のファイル「stop_words.txt」(ファイルからの読み取り速度はどれくらいですか?同じ関数を呼び出す数秒ごとに同じファイルから同じデータを読み取る必要がありますか?)
  3. データベーステーブル。単語のリストがほとんど静的であると想定される場合、それは本当に効率的でしょうか?

私はRubyonRailsを使用しています(それが違いを生む場合)。

4

2 に答える 2

2

ストップワードの検索は高速である必要があるため、ストップワードをハッシュテーブルに格納します。このように、単語がストップワードであるかどうかを検証することで、O(1)の複雑さが償却されます。

現在、ストップワードのリストは変更される可能性があるため、リストをテキストファイルに保持し、プログラムの開始時(または、プログラムが継続的に実行されている場合は数分ごと/ファイルの変更時に)にそのファイルを読み取ることは理にかなっています。

于 2011-01-25T10:33:32.943 に答える
2

約50〜200語の場合は、ハッシュマップなどの高速ルックアップをサポートするデータ構造のメモリに格納します(Rubyでそのような構造が何と呼ばれるかはわかりません)。

オプション2または3を使用して(どちらが簡単かによって、ファイルまたはデータベーステーブルにデータを保持します)、アプリケーションの開始時にデータをメモリに読み込みます。データが読み取られた時刻を保存し、要求が着信し、データがX分間更新されていない場合は、永続ストレージからデータを再読み取りします。

これは基本的にキャッシュです。Ruby on Railsがすでにそのようなメカニズムを提供している可能性はありますが、私はそれについてほとんど知らないので、それに答えることはできません。

于 2011-01-25T10:34:15.797 に答える