問題タブ [similarity]

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 に答える
2919 参照

ruby - 類似性による文字列のグループ化

私は文字列の配列を持っています。多くはありませんが(おそらく数百文字)、多くの場合長い文字列です(数百文字)。

これらの文字列は、一般的に意味がなく、互いに異なります。しかし、これらの文字列のグループでは、おそらく300のうち5つで、大きな類似性があります。実際、これらは同じ文字列です。異なるのは、書式設定、句読点、およびいくつかの単語です。

その文字列のグループをどのように計算できますか?

ちなみに、私はルビーで書いていますが、他に何もなければ、擬似コードのアルゴリズムで十分でしょう。

ありがとう

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

search - ドキュメント類似性検索システムを効率的に実装するにはどうすればよいですか?

タグのセットで記述されたアイテムの「類似アイテム」システムをどのように実装しますか?

私のデータベースには、Article、ArticleTag、および Tag という 3 つのテーブルがあります。各記事は、多対多の関係を介して多数のタグに関連付けられています。記事ごとに、「この記事が好きなら、これらも好きになる」システムを実装するために、最も類似した 5 つの記事を見つけたいと考えています。

私はコサインの類似性に精通し ており、そのアルゴリズムを使用すると非常にうまく機能します。しかし、それは遅くする方法です。記事ごとに、すべての記事を反復処理し、記事のペアのコサイン類似度を計算してから、類似度が最も高い 5 つの記事を選択する必要があります。

200,000 件の記事と 30,000 件のタグを使用すると、1 つの記事の類似記事を計算するのに 30 分かかります。したがって、コサイン類似度とほぼ同じくらい良い結果を生成するが、リアルタイムで実行でき、毎回ドキュメント コーパス全体を反復処理する必要がない別のアルゴリズムが必要です。

多分誰かがこれに対する既製の解決策を提案できますか? 私が調べた検索エンジンのほとんどは、ドキュメントの類似性検索を有効にしていません。

0 投票する
5 に答える
16490 参照

java - テキスト類似アルゴリズム

2 つの字幕ファイルがあります。それらが同じテキストを表しているか、類似のテキストを表しているかを示す関数が必要です

「風が吹いている...音楽が流れている」のようなコメントが1つのファイルだけにある場合があります。ただし、内容の 80% パーセントは同じになります。関数は TRUE を返す必要があります (ファイルは同じテキストを表します)。また、次のように l (one - L) の代わりに 1 のようなスペルミスがある場合もあります: She 1eft the bug . もちろん、関数が TRUE を返さなければならないことを意味します。

私のコメント:
関数は、テキストの類似性のパーセンテージを返す必要があります - AGREE

「all the people was happy」と「all the people were not happy」 - ここではスペルミスと見なされるため、同じテキストと見なされます。正確には、関数が返すパーセンテージは低くなりますが、フレーズが類似していると言えるほど高くなります

レーベンシュタインをファイル全体に適用するか、検索文字列だけに適用するかを検討してください。レーベンシュタインについてはわかりませんが、アルゴリズムはファイル全体に適用する必要があります。ただし、非常に長い文字列になります。

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

java - 厳密な文書類似性のためのテキスト類似性関数

私は、UTF-8 でエンコードされた 2 つのドキュメントの類似性について最終的な判断を下さなければならない Java ソフトウェアを作成しています。

2 つのドキュメントは、日付、場所、作成者などの多くの共通点があるため、同じか、互いにわずかに異なる可能性が非常に高くなりますが、それらのテキストが本当にそうであるかどうかを決定します。

2 つのドキュメントのテキストは非常に似ているか、まったく似ていないことが予想されるため、類似性のしきい値をかなり厳密に設定できます。たとえば、2 つのドキュメントは、90% の単語が共通している場合にのみ類似していると言えますが、短いテキストでも長いテキストでも同じように機能する、より堅牢なものが必要です。

要約すると、私は持っています:

  • 非常に似ているか、まったく似ていない 2 つのドキュメント。
  • 2 つのドキュメントが類似している可能性が高い
  • ドキュメントは長いもの (いくつかの段落) と短いもの (数文) の両方があります。

文字列マッチング関数の大きな配列を持つsimmetricsを試しましたが、使用可能なアルゴリズムについての提案に最も興味があります。

私が持っている可能性のある候補は次のとおりです。

  • レーベンシュタイン: その出力は短いテキストの場合により重要です
  • 重複する係数: たぶん、しかし、異なる長さのドキュメントをうまく区別できますか?

また、2 つのテキストがまったく同じである場合にのみ類似していると見なすのはうまくいきません。なぜなら、いくつかの単語だけが異なる文書が類似性テストに合格することを望んでいるためです。

0 投票する
5 に答える
53744 参照

c# - 公差のある文字列の比較

文字列を文字列の配列と比較する方法を探しています。もちろん、正確な検索を行うのは非常に簡単ですが、スペルミスや文字列の一部の欠落などをプログラムに許容させたいと思っています。

そのような検索を実行できるフレームワークはありますか? 私は、検索アルゴリズムが一致のパーセンテージなどでいくつかの結果の順序を返すことを念頭に置いています。

0 投票する
5 に答える
1021 参照

similarity - 「関連記事」の実装方法は?

ユーザーが現在読んでいる記事に関連する (類似した) 記事を見つけるコードを作成するにはどうすればよいですか?

たとえば、次の記事があるとします。

(タイトルは今思いつきました。)

データベースにクエリを実行して、それらがすべて関連していることを確認するにはどうすればよいですか?

提案をいただければ幸いです。

ありがとう、ボダ・シド。

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

python - 協調フィルタリング:パーソナライズされていないアイテム間の類似性

私は、Amazonの「Xを表示/購入した顧客はYとZも表示/購入した」という方針に沿って、商品間の類似性を計算しようとしています。私が見たすべての例と参照は、ランク付けされたアイテムのアイテムの類似性を計算するため、ユーザーとユーザーの類似性を見つけるため、または現在のユーザーの履歴に基づいて推奨アイテムを見つけるためのものです。現在のユーザーの好みを考慮に入れる前に、ターゲットを絞らないアプローチから始めたいと思います。

Amazon.comの推奨事項に関するホワイトペーパーを見ると、オフラインの商品と商品の類似性について次のロジックを使用しています。

正しく理解できれば、「I1とI2の類似性を計算する」までに、単一の値I1(外側のループ)と組み合わせて購入したアイテム(I2)のリストがあります。

この計算はどのように実行されますか?

もう1つのアイデアは、これを考えすぎて、必要以上に難しくしているということです。I1と組み合わせて購入したI2の数についてトップnのクエリを実行するだけで十分でしょうか。

このアプローチが正しいかどうかについての提案にも感謝します。私の製品データベースには、いつでも約15万のアイテムがあります。私が見た読み物の大部分は、ユーザーとアイテムの類似性、さらにはユーザーとユーザーの類似性を示しているので、代わりにそのルートを探す必要があります。

私は過去に類似性アルゴリズムを使用しましたが、それらには常にランクまたはスコアが含まれていました。これが機能する唯一の方法は、購入/購入していない場合に0/1のスコアを付ける顧客と製品のマトリックスを作成することだと思います。購入履歴とアイテムサイズを考えると、これは非常に大きくなる可能性があります。

編集:Pythonをタグとしてリストしましたが、できればOracle PL / SQLを使用して、ロジックをデータベース内に保持したいと思います。

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

java - 類似度分析 (Java)

次の状況があります。

String a = "Web クローラーは、World Wide Web インターネットを自動的に閲覧するコンピューター プログラムです"; String b = "Web Crawler コンピュータ プログラムが World Wide Web をブラウズ";

類似度を計算するためのアイデアや標準アルゴリズムはありますか?

たとえば、上記のケースでは、手動検索で推定された類似性は 90%++ である必要があります。

私の考えは、両方の文字列をトークン化し、一致したトークンの数を比較することです。(7 トークン / 1 0 トークン) * 100 のようなものですが、もちろん、この方法ではまったく効果がありません。一致した文字数の比較も効果がないようです....

誰でもガイドラインを教えてもらえますか???

上記は私のプロジェクト、Plagiarism Analyzer の一部です。

したがって、一致する単語は同義語なしでまったく同じになります。

この場合の唯一の問題は、類似性の非常に正確なパーセンテージを計算する方法です。

助けてくれてありがとう。

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

design-patterns - n個のテキストドキュメントから類似した単語を検出する

n個のドキュメントがあり、これらのドキュメントに含まれている一般的な単語を見つけたいと思います。たとえば、(n-3)ドキュメントには「web」という単語が含まれていると言いたいです。

確かに私は基本的なデータ構造でこれを行うことができますが、おそらく効率的なアルゴリズムまたは異なる接尾辞を持つ同じ単語を処理する方法があります。そのような目的のためのアルゴリズムはありますか?

私はデータマイニングの世界に慣れていません。一般的に、異なるドキュメント間の類似点を見つけるための取り組みに使用される用語はありますか?もしあれば、簡単に研究していきます。

ありがとう。

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

dom - 異なるページのDOMの類似性を比較するアルゴリズムはありますか?

これについて誰か経験がありますか?