8

平均 2000 語 (それぞれ) のテキストを含む何百万ものレコードがあり、約 100000 項目の別のリストがあるとします。

例: キーワード リストに「オバマ大統領」のような項目があり、テキスト レコードの 1 つに「..... オバマ大統領....」のような項目があるので、このキーワードを検索したい「..... {オバマ大統領} ....」のように置き換えて、テキスト内のキーワードを強調表示すると、キーワード リストには例のような複数名詞の単語が含まれます。

何百万ものテキスト レコードを含む膨大なリストで、これを行う最速の方法は何ですか?

ノート:

  1. 今、私はこの作業を貪欲に行い、単語ごとにチェックして一致させますが、テキスト レコードごとに約 2 秒かかり、0 時間に近い何かが必要です。

  2. また、これは名前付き実体認識のようなものであり、Gate や ... などの多くの NER フレームワークを使用していることも知っていますが、フレームワークでサポートされていない言語でこれが必要なため、手動でこれを行います.

4

2 に答える 2

2

キーワードの完全一致については、次のとおりです。

10^6 * 2*10^3 単語 = 数十億の可能な一致。これを 10^5 の可能な一致と比較すると、10^6 * 2^3 * 10^5 = 2 * 10^14以上の操作につながります (最悪の場合: 一致しない可能性、一致しない可能性: 大きい (100000 はすべての可能性に比べて小さいため)言葉?)

and i want some thing near zero time

ありえない。

NER に関しては、キーワード リストを削除し、強調したいカテゴリに文法を分類する必要があります。

次のようなもの:

  • 動詞
  • 副詞
  • 名詞
  • 名前

識別できます。それが終わったら、カテゴリごとに特別な単語を含む特別なリストを定義できます。例:President特別なプロパティで強調表示するために、そのような(名詞)リストにある可能性があります。あなたははるかに小さいspecial listで終わるので、いくつかに吐き出されcatagoriesます。必要な操作の数を減らすことができます。

(NERについてはすべて知っているので、すでに知っていることに注意してください。)

したがって、対象とする言語の NER のようなロジック (またはその他の非 100% 一致アルゴリズム) を抽出できます。

別の試みは次のとおりです。

すべてのキーワードをハッシュテーブルまたは他の (索引付けされた) 辞書に入れ、対象の単語がそのハッシュテーブルに存在するかどうかを確認します。インデックス化されているため、通常のマッチングよりも大幅に高速になります。キーワードの追加情報をハッシュテーブルに保存できます。

于 2013-11-26T08:22:36.813 に答える
2

前提: ほとんどのキーワードは単一の単語ですが、いくつかの複数の単語のキーワードがあります。

私のおすすめ。

最初の単語に基づいてキーワードをハッシュします。したがって、「President」、「President Obama」、および「President Clinton」はすべて同じ値にハッシュされます。

次に、ハッシュを計算して単語ごとに検索します。ハッシュ一致では、複数単語のキーワードに一致するかどうかをチェックするロジックを実装します。

ハッシュの計算は、このソリューションの最もコストのかかる操作であり、入力文字列の長さに比例する必要があります。

于 2013-11-26T11:46:07.857 に答える