0

twitterfeed ビジュアライゼーションに取り組んでいます。私は大きなデータセットを持っています。特定の文字列を含むツイート メッセージのみを使用したい。

私は今、この行を持っています:


data = data.filter(function(d, i) { return d.text.indexOf('new year')!=-1 ? true : false;});


文字列'new year'を含む twitterfeed 内のすべてのツイートを返します。正常に動作します!:)

しかし、複数の文字列を選択するにはどうすればよいでしょうか?

実際、この作品には、 「新年」や「明けましておめでとう」や「2013 年おめでとう」スペルミスなどのバリエーションを含むツイートも返してほしいと思っています。

誰かが私を助けてくれることを願っています..

ハッピー 2013!

4

2 に答える 2

0

検索語を独自の配列に配置し、チェックを実行するときにそれを循環します。

var searchTerms = ['new year', 'christmas', 'boxing day'];

data = data.filter(function(d, i) { 
   var termFound = false;
   for (x in searchTerms) {
      if (d.text.indexOf(searchTerms[x]) != -1) {
          termFound = true;
      }
   }
   return termFound;
   })
于 2013-01-09T15:20:33.557 に答える
0

これはかなり古典的な文字列検索/文字列マッチングの問題です。まず、いくつかの用語について説明します。文字列マッチング アルゴリズムは通常、検索スペースを「テキスト」と呼びます。この場合は、ツイートまたはツイートです。そして「パターン」 - あなたの検索用語。

ほとんどの文字列照合アルゴリズムの複雑さは、テキストの長さ、パターンの長さ、および一致の数で測定されます。

もちろん、単純なアプローチは、ネストされたループと線形検索です。擬似コード:

foreach text (tweet)
    foreach pattern (search term)
        linear search the text for the pattern

これは O(t * p) です。ここで、t はすべてのテキストの合計の長さであり、p はすべてのパターンの合計の長さです。特にテキストまたはパターンのいずれかが複数回の実行で修正され、効率的な検索のための前処理を行うことができる場合は、おそらくこれを大幅に改善できます。いくつかの可能性については、ウィキペディアの文字列検索アルゴリズムの説明を参照してください。

特定のアルゴリズムの選択は、おそらくメモリの制約と、前処理時間と実行時の複雑さの間のトレードオフに依存します。しかし、私は見ていくつかのものを捨てます. あなたのパターンはおそらく固定されており、テキストが異なる可能性があるようです (別の Twitter フィードを検索していますか?)。そのため、Aho-Corasick アルゴリズムを確認することをお勧めします。サフィックス ツリーも有用なデータ構造であることがわかるかもしれません。これらのウィキペディアのページからのリンクと、それらの用語の Google 検索は、開始するのに役立つはずです (実装されたコードが役立つかもしれませんが、私は JavaScript を使用していないため、そこで何を推奨すればよいかわかりません)。

于 2013-01-10T18:10:43.917 に答える