問題タブ [n-gram]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2110 参照

elasticsearch - ElasticSearchは部分的な英数字の値を検索します

PA2456Uまたはのような値の文字列フィールドがPA23U-RBあり、部分一致を実行してPA24、最初の結果を検索して取得するかPA23U-RB、2番目の結果を検索して見つけることができます(完全一致になります)。

ngramを使ってみましたが、数値が無視されるので、入力するとpa111で始まるものが返されますpa

例については、この要点を参照してください。

これは別の質問であるか、関連している可能性がありますが、検索12345001も一致する必要があります12345-001

ありがとう

更新 私が使用した最終的なアナライザーはここにあります:https ://gist.github.com/3803180

0 投票する
1 に答える
1605 参照

python - 複数の重複するn-gramを単一の正規表現と照合する

ドキュメント内の複数のn-gramに一致する正規表現を実行しようとしています。最初にn-gramのリストを取得し、次のように正規表現にコンパイルします。

(n-gramを任意の空白文字のトークンに分割し、これらのトークンを再エスケープして'\ s +'-esで結合します(改行、ダブルスペース、タブなどでngramを一致させることができます)。正規表現に「|」が付いたn-gram)

私の正規表現は次のようになります。

現在、これはほとんどの場合に正常に機能しますが、n-gramが別のn-gramとオーバーラップする場合、一致するものは1つだけです。

  • これを解決する方法はありますか?ドキュメント内で一致するすべての(サブ)文字列を返すには?

  • さらに、速度/効率は非常に重要です(私はこれらの正規表現を何万も発射しています)、最適化するために私ができることはありますか?「オンザフライ」でコンパイルされた正規表現はとにかくキャッシュされるため、正規表現の事前コンパイルはあまり効果がないことを読みましたが、これらの式を高速化するために実行できる(他の)明らかな手順はありますか?

0 投票する
1 に答える
697 参照

database - Elasticsearch - リバーと nGrams

私はcouchDBを使用しており、クエリにnGramsを使用しようとしているため、リバープラグインでESを使用しています。誰かがスペースを入力すると、クエリが正しく機能しないという事実を除いて、基本的に必要なことはすべて実行しました。これは、ES がクエリのすべての要素をスペースで分割してトークン化するためです。

これが私がする必要があることです:

  • 文字列内のテキストの一部を照会します。

    クエリ: "Hello Wor" 応答: "Hello World, Hello Word" / 除外 "Hello, World, Word"

  • 指定した基準で結果を並べ替えます。

  • 大文字小文字を区別しません。

この質問に従って、私が行ったことは次のとおりです。ElasticSearchで単語の一部を検索する方法

次に、並べ替え用のマッピングを追加します。

完全にするために使用するすべての情報を追加しました。とにかく、このセットアップでは、結果を取得しようとするたびに、うまくいくはずだと思いますが、クエリを分割するためにスペースが引き続き使用されます。例:

"Hello" と "Wor" を含むものをすべて返します (通常、括弧は使用しませんが、例で見たことがありますが、結果は非常に似ているようです)。

これは私をかなり悩ませているので、どんな助けも本当に感謝しています。

更新: 最後に、nGram は必要ないことに気付きました。通常のインデックスで十分です。クエリの空白を「 AND 」に置き換えるだけでうまくいきます。

例:

0 投票する
2 に答える
1556 参照

java - Java Lucene Ngrams

Lucene APIを使用して、文からngramを抽出したいと思います。しかし、私は独特の問題に直面しているようです。JavaDocには、NGramTokenizerと呼ばれるクラスがあります。3.6.1と4.0の両方のAPIをダウンロードしましたが、このクラスの痕跡は見当たりません。たとえば、次のことを試してみると、シンボルNGramTokenizerが見つからないというエラーが表示されます。

ドキュメントでは、NGramTokenizerがパスorg.apache.lucene.analysis.NGramTokenizerにあるように見えます。これは私のコンピューターのどこにも見当たりません。3.6.1と4.0の両方のAPIで発生するため、ダウンロードやその他のエラーが発生した可能性は低いようです。

  1. NGramTokenizerクラスを取得するにはどうすればよいですか?
  2. lucene-core-3.6.1.jarをプロジェクトに追加しました
0 投票する
8 に答える
90853 参照

python - Python を使用した N グラムの計算

次のようなテキストを含むテキスト ファイルの Unigram、BiGrams、および Trigram を計算する必要がありました。

「嚢胞性線維症は、米国だけで 30,000 人の子供と若年成人に影響を与えています。塩水のミストを吸入すると、嚢胞性線維症患者の気道を満たす膿と感染症を減らすことができますが、副作用には不快な咳の発作と不快な味が含まれます。それが結論です。ニューイングランド・ジャーナル・オブ・メディスンの今週号に掲載された 2 つの研究のうちの 1 つです。」

Python で開始し、次のコードを使用しました。

http://www.daniweb.com/software-development/python/threads/39109/generating-n-grams-from-a-word

しかし、CYSTIC と FIBROSIS または CYSTIC FIBROSIS のように単語の間から必要な場合は、単語内のすべての n-gram で機能します。どうすればこれを行うことができるかについて、誰かが私を助けることができますか?

0 投票する
4 に答える
11554 参照

java - Java Lucene NGramTokenizer

文字列を ngram にトークン化しようとしています。不思議なことに、NGramTokenizerのドキュメントには、トークン化された個々の ngram を返すメソッドがありません。実際、NGramTokenizer クラスには、String オブジェクトを返すメソッドが 2 つしかありません。

これが私が持っているコードです:

  1. トークン化された ngram はどこにありますか?
  2. 文字列/単語で出力を取得するにはどうすればよいですか?

出力を次のようにしたい: This, is, a, test, string, This is, is a, a test, test string, This is a, is a test, a test string.

0 投票する
1 に答える
109 参照

solr - フィールドを Ngram に変更し、結果を返さなくなりました

テキスト フィールドのスキーマ マッピングを次のように更新しました。

ただし、これを実行してインデックスを再作成した後、クエリ文字列の検索結果がまったく得られません。*q パラメータに a を入力した場合にのみ結果が表示されます。

スキーマ マッピングが完全に間違っているのでしょうか、それとも単純なものが欠けているだけなのでしょうか?

0 投票する
1 に答える
718 参照

python - PythonNLTKNGramsエラー

テキストコーパスから困惑、ngramの数を取得するコードを実行しています。それをしている間、私は次のような奇妙なエラーが発生しました:

これを取得するために実行しているコードは次のとおりです。

すべてのインポートは適切なようです。

0 投票する
1 に答える
263 参照

autocomplete - ActiveModel/Record ごとに複数のマッピング?

たとえば、BlogPosts のようなものに 2 つの個別のインデックスを作成して、1 つのインデックスを使用して (たとえばオートコンプリート目的で) クイック検索を実行し、もう 1 つのインデックスを本格的な検索クエリに使用できるようにするとします。

それは私がタイヤでできることですか?このようなもの(少し原始的である場合は許してください)

コールバックが適切なインデックスから新しい投稿を追加および削除することを知っている場所

0 投票する
1 に答える
16571 参照

python - 単純ベイズ分類器を使用したnグラム

私はPythonを初めて使用し、助けが必要です!私はPythonNLTKテキスト分類で練習していました。これが私が http://www.laurentluce.com/posts/twitter-sentiment-analysis-using-python-and-nltk/で練習しているコード例です

私はこれを試しました

しかし、このエラーが発生するのはなぜですか?