問題タブ [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 投票する
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の類似性を比較するアルゴリズムはありますか?

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

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

similarity - あるバージョンのファイルのテキスト ブロックが、以前のバージョンのどのファイルに由来するかを判断する方法は?

問題を以下に説明します: 1 つのバージョン (A、B、C、D など) のファイルのリストがあるとします。次のバージョンでは、次のファイル (A、E、F、G) があります。それらの内容にはいくつかの類似点があります。後のバージョンのファイルは、ファイル名の変更、コンテンツの追加、削除、または部分的な変更によって、または変更なし (たとえば、A は変更されていません) によって以前のバージョンから取得されます。

ファイル (E、2 番目のバージョン) からテキストのブロックを取得し、このテキスト ブロックが含まれているファイル (1 番目のバージョン) を確認します。B、C、D にテキスト フラグメントが含まれていることがわかりました。このテキストブロックが実際にどのファイル(Bまたはcまたはd)から来たかを判断したい(Eは、2番目のバージョンで名前が変更されたファイルであると想定しています)。

今後のバージョンで内容が変更・追加・削除される可能性があるので、類似性を判断するためにLCSアルゴリズムを使用しています。しかし、ファイルを以前のバージョンにマップすることはできません。考えられるアプローチの 1 つは、一致するテキスト ブロックの位置情報を使用することだと思います。しかし、このヒューリスティックが常に機能するとは限りません。それを見つけるための研究やアルゴリズムはありますか。どんな方向でも役に立ちます。前もって感謝します。

0 投票する
7 に答える
54263 参照

arrays - 2 つの配列間のコサイン類似度を求める

2 つの配列間のコサイン類似度 (またはコサイン距離) を見つけることができる組み込み関数が R にあるかどうか疑問に思っていますか?

現在、私は独自の機能を実装していますが、Rにはすでに機能があるはずだと思わずにはいられません。