問題タブ [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 に答える
172 参照

nlp - ngramsの計算でゼロへの割引を防ぐにはどうすればよいですか?

Gutenberg コーパスのサブセットのトライグラム モデルを計算するために、SRILM の ngram-count コマンド ライン ユーティリティを使用しています。コマンドラインは次のとおりです。

ただし、私の行のいくつかは割引率が 0 になっています (または、少なくともそれが起こっていると私が信じている理由です。

これは、-gt1min 0 またはその他の値を使用していて、最小しきい値が実現されている場合にも発生します。これを防ぐにはどうすればよいですか?これを n-gram ベースの FST に変換しようとして、入力文にこれらの単語のいずれかを含む入力を観察しようとすると、問題が発生します。

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

autocomplete - NGrams を使用した Solr による自動補完検索

EdgeNGramsを使用してSolrで自動補完検索に取り組んでいます。ユーザーが従業員の名前を検索している場合は、オートコンプリートを適用する必要があります。つまり、結果を Google 検索のようにしたいのです。一部の検索では問題なく動作しています。

ファイルschema.xml:


結果:

それは私にとってはうまくいっています。で検索するとmichael f

次のような応答が返されます。

michael fそれから検索すると、私michael foretだけが得られるはずです。来るデータは で始まりfます。Solr の構成設定に何か問題がありますか?

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

solr - Solr の NGramFilterFactory を使用した類似検索

Solr で (Rails で Sunspot を使用して) NGramFilterFactory を使用して、同様のタイトルを見つけようとしています。次のように、solr schema.xml に新しいフィールドを追加することができました。

Railsアプリでsunpsotを使用しているため、動的フィールドを介して新しいフィールドをsunspotに追加しました。これはすべて機能し、NGramFilterFactory を使用してモデルを検索できるようになりました。よくわからないのは、同様のタイトルを検索するためにsolrを構成する方法です。ここに私の具体的な質問があります:

  1. 同様のタイトルをクエリしようとしているときに、dismax クエリ パーサーを使用する意味はありますか?
  2. (Minimum 'Should' Match)パラメーターは、類似のタイトルを見つけるのにどのように役立ちますか?
  3. 正確に何に基づいてngram minを選択しますか。そして最大。サイズ?

フィードバックをお寄せいただきありがとうございます。

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

hadoop - ハイブngramストップワードリスト?

使用例の 1 つとしてリストされていますが、Hive n-gram からジャンク ワード (and、or など) を除外する例は見つかりませんでした。

何か案は?ありがとう!

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

python - FASTAファイルからのジアミノ酸周波数(Bigram周波数)のカウント

大量のFASTAファイル(分泌ペプチドのさまざまな生物のペプチドーム)がある場合、Python(またはMatlab)を使用して(UNIProtから)FASTAファイルを読み取り、各アミノ酸とアミノ酸の頻度をカウントするにはどうすればよいですか? 「ダブル」ペアリング?

(IE-出力には、個々のアミノ酸の%(22文字/文字のうち)とアミノ酸のペアの頻度が含まれている必要があります。

事実上、文字ペアのバイグラム(または実装が簡単な場合はnグラム)の頻度をカウントしたいと思います。

22個のアミノ酸はそれぞれFASTAファイルで一意の文字で表され、各タンパク質の名前の前には>が付いています。(すでに解析されているため、関連する文字のみが残ります)

ファイルのサンプル:

FFKA

FLRN

MTTVSYVTILLTVLVQVLTSDAKATNNKRELSSGLKERSLSDDAPQFWKGRFSRSEEDPQ FWKGRFSDPQFWKGRFSDPQFWKGRFSDPQFWKGRFSDPQFWKGRFSDPQFWKGRFSDPQ FWKGRFSDGTKRENDPQYWKGRFSRSFEDQPDSEAQFWKGRFARTSSGEKREPQYWKGRF SRDSVPGRYGRELQGRFGRELQGRFGREAQGRFGRELQGRFGREFQGRFGREDQGRFGRE DQGRFGREDQGRFGREDQGRFGREDQGRFGREDQGRFGRELQGRFGREFQGRFGREDQGR FGREDQGRFGRELQGRFGREDQGRFGREDQGRFGREDLAKEDQGRFGREDLAKEDQGRFG REDIAEADQGRFGRNAAAAAAAAAAAKKRTIDVIDIESDPKPQTRFRDGKDMQEKRKVEK KDKIEKSDDALAKTS

どうもありがとうございます!

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

ruby-on-rails - Tire を使用した ElasticSearch は、「文字列」検索では nGrams と一致せず、「テキスト」のみと一致します

そのため、nGram マッチングを ElasticSearch インデックスに追加しようとしましたが、次の問題が発生しています。

標準の文字列クエリを実行すると、完全一致のみが返されます。特定のテストフィールドで一致クエリを実行すると、期待どおりの nGram 一致が生成されます。

これら(1) の例(2)に基づいて、フィールドに nGram フィルターとアナライザーをセットアップします。マッピング コードは次のとおりです。

エラスティックサーチ クエリ

結果を生成するクエリ:

結果を生成しないクエリ:

特定の列でテキスト/一致検索を実行するのではなく、一般的な query_string 検索ですべてのインデックス付きフィールドを調べて ngram と一致させる方法はありますか?

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

lucene - Lucene SingleFilter を使用して Lucene のバイグラムの周波数を抽出する

Lucene ShingleFilter を使用して、文字列をさまざまなサイズのシングル (ngram) にトークン化できる場合:

なる:

これを他のアナライザーと組み合わせて使用​​ して、見つかったバイグラムまたはトライグラムの周波数を返すことができるかどうかは誰にもわかりません。

「分割してください」に対して2を返しますか?

私の文字列はデータベースから構築され、メモリ内の Lucene によってインデックス付けされ、保持されないことを付け加えておきます。Solr などの他の製品の使用は意図されていません。

0 投票する
0 に答える
149 参照

ruby-on-rails - より大きな n-gram マッチを優先するように思考スフィンクスを作成できますか?

私は、Rails 2.3.8 と Ruby 1.8.7 で thinking-sphinx 2.0.1 gem を使用しています。

サイトの検索品質を向上させようとしています。連続していない複数単語の一致よりもバイグラムとトライグラムの一致を優先できるようにしたいと考えています。

用語が間違っている場合に備えて、ここに例を示します。「グリーン トマト」というクエリの場合、「グリーン トマトのフライド サンドイッチ」が「グリーン ビーンとトマトのサラダ」よりも適切に一致するものとして認識されるようにしたいと考えています。

理想的には、この効果の強さを制御し、構成単語の近接性を継続的に評価できるようにしたいと考えています (つまり、一致した単語が離れているほど、全体的な一致は弱くなります)。

0 投票する
6 に答える
37121 参照

python - Python を使用してファイル内のバイグラム (2 つの単語のペア) をカウントする

Python を使用して、ファイル内のすべてのバイグラム (隣接する単語のペア) の出現回数をカウントしたいと考えています。ここでは、非常に大きなファイルを扱っているので、効率的な方法を探しています。ファイルの内容に対して正規表現 "\w+\s\w+" を使用して count メソッドを使用しようとしましたが、効率的であることがわかりませんでした。

たとえば、次の内容を持つファイル a.txt からバイグラムの数を数えたいとしましょう:

上記のファイルでは、バイグラム セットとそのカウントは次のようになります。

ユニグラム (単一の単語) をカウントするために使用される Python の Counter オブジェクトの例に出くわしました。また、正規表現アプローチも使用します。

例は次のようになります。

上記のコードの出力は次のとおりです。

Counter オブジェクトを使用してバイグラムの数を取得できるかどうか疑問に思っていました。Counter オブジェクトまたは正規表現以外のアプローチも高く評価されます。

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

lucene - ngram 頻度を取得するときのストップ ワードを含む Lucene 出力のアンダースコア

現在、ngram 頻度のテキスト本文をフィルタリングするときに、ストップ ワードを含めるかどうかをユーザーに選択させるオプションを提供しています。通常、これは次のように行われます。

stopWords は、ngram に含めるか、ngram から削除する単語の完全なリストに設定されます。this.getnGramLength()); 現在の ngram の長さを最大 3 つまで格納するだけです。

トライグラムのテキスト「衛星は間違いなく地球に落ちています」をフィルタリングする際にストップワードを使用すると、出力は次のようになります。

しかし、トライグラムにストップワードを使用しない場合、出力は次のようになります。

アンダースコアが表示されるのはなぜですか? シンプルなユニグラム、「satellite fall」、「falling earth」、「satellite Falling Earth」を見て思ったでしょうか? 間違いなく、私が使用しているストップワード セットに含まれています。

アンダースコアで結果を除外することはできますが...