ワイルドカードを含む多数の単語とフレーズ (辞書または辞書) があります。これらの単語とフレーズのすべてのインスタンスを、はるかに小さい文字列 (現時点では最大 150 文字) 内で見つける必要があります。
最初は、操作を逆に実行したかったのです。これは、短い文字列の各単語がレキシコン内に存在するかどうかを確認することです。レキシコンは、ハッシュ テーブルとして実装できます。問題は、私のレキシコンのこれらの値の一部が単一の単語ではなく、多くがワイルドカード (substri* など) であることです。
Rabin-Karp アルゴリズムを使用することを考えていますが、これが最良の選択であるかどうかはわかりません。
この操作を実行するための効率的なアルゴリズムまたは方法は何ですか?
サンプルデータ:
辞書には何百もの単語が含まれており、拡張される可能性があります。これらの単語は、ワイルドカード文字 (アスタリスク) で終わる場合があります。いくつかのランダムな例を次に示します。
- 良い
- 悪い
- 解放された*
- 不注意*
- 大きな損失
(この時点で)分析しているテキストは、短い非公式の(文法的に)英語のステートメントです。テキストの代表的な例 (この時点でも) は、Twitter のツイートです。これらは、およそ 140 文字に制限されています。例えば:
Just got the Google nexus without a contract. Hands down its the best phone
I've ever had and the only thing that could've followed my N900.
このテキストに対して非常に単純な感情分析を行っていることに注意してください。私たちの感情分析技術は私の関心事ではありません。既存のソリューションを「リアルタイム」処理システムに移行しているだけで、いくつかの最適化を実行する必要があります。