私は、動詞を保存して検索するためのハッシュが必要な製品に取り組んでいます。私のために物事を始めることができるいくつかのサンプルコードを入手できますか?私のここでの懸念は、それほど頻繁ではない検索と蓄積のスピードです。ハッシュを作成して英語の動詞を保存して検索する
更新:
探しa)は一定の時間検索O(1) b)は興味深いが
私は、動詞を保存して検索するためのハッシュが必要な製品に取り組んでいます。私のために物事を始めることができるいくつかのサンプルコードを入手できますか?私のここでの懸念は、それほど頻繁ではない検索と蓄積のスピードです。ハッシュを作成して英語の動詞を保存して検索する
更新:
探しa)は一定の時間検索O(1) b)は興味深いが
一つの問題は、多くの英語の単語が動詞と名詞の両方にできることである文字列のための機能(サンプルコード)を持っていますコンテキストだけがそれがどれであるかを決定する。たとえば、「あなたの状況はどうですか?」ここの「テイク」は動詞ではなく名詞です。多くの偽陽性を招くブルートフォースアプローチを受け入れる意思はありますか?
また、「動詞をストアして検索する」とはどういう意味ですか?文中の動詞を特定し、抽出して、ある種のデータベースに格納しますか?たぶん私はあなたの要件を誤解?
それは答えですか?むしろコメントのように聞こえる –
文脈の事はひびが入っています.Thx –
私は起こると言うように動詞の形を見ていました、起こっています、起こっています。理想的には、すべてのフォームを1ハッシュインデックスとして保存したいと考えています。 –
私たちの見地からすれば、これは多分(大学生)の宿題なので、それが「宿題」とタグ付けされるべきです。 C++ 0Bで
は新しい公式の標準順序なし地図があります: http://en.wikipedia.org/wiki/Unordered_map_%28C%2B%2B%29
しかし、これは宿題であるならば、あなたはこれを自分で実装する必要があります!配列を作成し、良いハッシュ関数が何であるかを考え、消え去ります。
"良いハッシュ関数が何であるか考えてください" - それは特に文字列のための最も単純なタスクではありません –
Thx、私は配列の部分を理解しました。実際に偉大な機能を持っているのを探していた。大学の宿題は正しいですから、私はちょうどより大きな製品の小さな部分を与えました。それ以来、wudはもっと多くの回答を集めています。しかし、それは見ていきます。 –
@Andy T:同意しました。これは問題に依存するため、すなわち、どの文字列OPが高速であるかを区別したい場合、およびどの文字列に対して衝突から生じる線形検索がOKであるかによる。 –
特定の動詞に一意の値を生成する関数を定義して、独自のハッシュマップを作成してみてください。値を配列のインデックスまたはmap
のキーとして使用します。
また、インターネットで単語リストの構造と辞書を検索します。単語リストと辞書を使用するプログラムの多くは、単語の長さによってデータ構造を分割するか、単語の長さがハッシュ計算に含まれます。
私はそれがここで重要な数字の拡張性/凄さだと考えます。私は数字に基づいて単純なhasindexを書くことができます。しかし、私たちは生産レベルのソリューションについて話しているので、メモリは問題になります。私は無限のハッシュを持つことはできません。 opensourceの生産ソリューションへのリンクは本当に興味深いでしょう。 –
Ideally I would like to store all of the [verb] forms as 1 hash index
あなたはそれが彼らのすべてに共通しているいくつかのチャンクを使用して、いわゆる通常の動詞でやることはほとんど可能だと思うかもしれません:
happen, happens, happened, happened, happening
確かに可能なことを行っていませんいわゆる不規則動詞:
eat, eats, ate, eaten, eating
sing, sings, sang, sung, singing
go, goes, went, gone, going
bring, brings, brought, brought, bringing
speak, speaks, spoke, spoken, speaking
とに対処するための正字置換のバリエーションもあります
try, tries, tried, tried, trying
cry, cries, cried, cried, crying
変動の他の種類:私は何を示唆している
miss, misses, missed, missed, missing
infintiveフォームを指し、すべての動詞形のために、このようなハッシュテーブルを作成することです。自身の不定詞の形のポイント:例えば
verb form
infinitive form
:
その後 happening
happen
went
go
happen
happen
go
go
ate
eat
は、動詞の形を考えると、あなたは非常に迅速にhashedkeyのルックアップを実行することによって、その不定詞を見つけることができる、そしてあなたが定義を格納することができあなたがそうしたければ、別のテーブルで、有害なフォームを(ハッシュ)キーとして使用します。
非常に頻繁に音が聞こえず、圧倒的に支配的なケースのように検索結果が極端に高いため、完全なハッシュをお勧めします。ハッシュ全体を再作成する必要があるため、格納にはまったく便利ではありませんが、検索の結果はO(1)が保証されます。 Googleで「完璧なハッシング」を検索すると、Bob Jenkinのウェブサイトが2番目に表示されます。
完璧なハッシュを実装していれば、うまく機能します。あなたのコードをリファレンスとして使用して、製品に完璧なハッシュを実装する方法を理解することができます。 (私は過去にこれを成功させましたが、生産のためではなく研究のために)
あなたはC++かCですか? – Puppy