2

すべての文は句読点のない小文字の英語であり、フレーズは 3 つの連続した単語として定義されているため、文が次の場合: i am jessica hunt

フレーズは「私はジェシカです」と「ジェシカ・ハントです」

ファイルのすべての文に存在する場合、フレーズは一般的です

この問題に適切なハッシュ関数を教えてください

4

2 に答える 2

1

何でもあり。(3*a + 5*b + 7*c) から始めます。{a,b,c} は 3 つの連続する単語の単語番号 (またはハッシュ値) です。(もちろんすべて符号なし、モジュロワードサイズ)

  • 空白と句読点を無視して単語にトークン化する
  • 結果の単語をハッシュ テーブル (dict) に入れる
  • 3 トークン ハッシュを計算するためのスライディング ウィンドウを維持しながら、ファイルをステップ実行する
  • これらを2番目のハッシュテーブルに配置/更新します。
  • 衝突を解決するために、この 2 番目のハッシュテーブルには、元の 3 つの単語への (ポインター、インデックス) アクセスが必要です。
于 2012-10-13T18:31:01.083 に答える
0

ジェシカ、文1ではなくn-gramハッシャーが必要だと思います(これはほとんど同じです)。私は C で書いた超高速の n-gram リッパーを以下から自由にダウンロードできます: http://www.sanmayce.com/Downloads/index.html#Leprechaun

レプラコーンは、「文」「私はジェシカ ハントです」を次の 2 つの 3 グラムに切り詰めます: i_am_jessica am_jessica_hunt

おそらく、n グラミングもあなたのものです。

于 2012-10-15T14:02:09.070 に答える