問題タブ [stringdist]

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 投票する
4 に答える
17444 参照

r - Rでの速いレーベンシュタイン距離?

CまたはFortranコードとして実装されているレーベンシュタイン距離カウント機能を含むパッケージはありますか?比較する文字列がたくさんありますが、これstringMatchMiscPsychoは遅すぎます。

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

r - 距離測定の for ループの結果を R の行列形式で書き出す

次のベクトルのようなものがあるとします。

これらの文字列のすべての可能な組み合わせ (例: 文字列 1 から文字列 2、文字列 1 から文字列 3 など) の編集距離をペア単位で比較するループを実行したいと考えています。出力は、行が文字列の数に等しく、列が文字列の数に等しい行列形式である必要があります。

私は以下のコードを持っています:

stringdist() 関数は stringdist{} パッケージに含まれていますが、この関数はベース utils パッケージにも adist() としてバンドルされています。

私の質問は、ループが結果を行列として書き込んでいないのはなぜですか、ループが個々の距離計算を上書きしないようにするにはどうすればよいですか (つまり、すべての結果を行列形式で保存します)。

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

text - スペルチェックのための機械学習アルゴリズム

私は薬の名前のリスト (regular_list) と新しい名前のリスト (new_list) を持っています。これらの名前を通常のリストとの一致と見なしたいと考えています。stringdist を使用することが問題の解決策であることはわかっていますが、機械学習アルゴリズムが必要です

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

r - R で 'stringdist' と 'amatch' を使用した文字列マッチング

これは、「stringdist」パッケージに詳しい方への質問です。

次のことを行う関数を作成しようとしています。

次のような文字の非常に長いリストを検索します (約 100 万個のうちの 16 個のみが表示されます)。

このように構造化されたクエリ シーケンス リストの各シーケンスのインスタンス。

元:

クエリ シーケンスが「stripList」のいずれかに表示される回数 (存在する場合) を確認し、1 回の挿入、1 回の削除、1 回の置換、および 1 回の転置を許可し、次のような出力を得たいと考えています。

そのために、「stringdist」パッケージの「amatch」関数を次のように使用しています。

いくつかの質問を聞きたいんです:

  1. 'amatch' 関数で、method = "osa" を使用する場合、"weight" 引数はどのように解釈されますか? 例として、私が使用する場合:

    「querySeqs」の 90% の一致が必要だと言っているのですか? つまり、これらの分数は「querySeqs」または私のテーブル (stripList) に関連していますか?

  2. 「maxDist」にはどのような機能がありますか? (パーセントとしても解釈されますか?)

  3. 上記のコードの実行時効率を最大化する方法はありますか (おそらく data.table などを使用して)? 私の実際のデータセットは、約 1,000,000 のシーケンス リストから検索される約 2,000 のシーケンス クエリであるため、質問するだけです。

  4. シーケンス全体を検索する「amatch」よりも良い方法はありますか (「agrep」のように部分文字列だけでなく)?

これらが基本的な質問である場合はお詫び申し上げます。これに関するドキュメントは私には曖昧であり、率直に言って、私はまだ学んでいます。

前もって感謝します。

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

r - R での (重み付きレーベンシュタイン距離) のスクリプトのパフォーマンスの向上

レーベンシュタイン距離測定を使用して大量の文字列比較を行っていますが、文字列の潜在構造の空間的隣接性を考慮する必要があるため、重み関数を含む独自のスクリプトを作成する必要がありました。

私の問題は、私のスクリプトが非常に非効率的であることです。約 600,000 回の比較を行う必要があり、スクリプトが完了するまでに数時間かかります。そのため、スクリプトをより効率的にする方法を探していますが、独学のナブであるため、これを自分で解決する方法がわかりません。

関数は次のとおりです。

私のレーベンシュタイン測定のパフォーマンスを stringdist パッケージのパフォーマンスと比較すると、パフォーマンスは 83 倍悪いです。

私のスクリプトを改善するアイデアを持っている人はいますか?

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

r - Jaro String Similarity アルゴリズムを適用するときに、共通の文字列で重複した文字を処理する方法

Jaro 文字列類似度アルゴリズムを適用するときに、2 つの文字列間の共通文字列の定義に苦労しています。

私たちが持っていると言う

BY Jaro 類似性、半分の長さはfloor(11/2) - 1 = 4であり、アルゴリズムによって定義され、s1[i] = s2[j]共通であるとカウントされます。abs(i-j)<=4

マッピング行列は

したがって:

現在、一般的な char 文字列の長さが等しくない場合がありますが、これにどう対処すればよいですか?

R 'stringdist' パックで 'stringdist' 関数を適用すると、次の結果が得られます。

次のように見えます:

1/3*(8/9+8/11+(8-2)/8) [1] 0.7887205

上記の結果は、stringdist が長さ 8 の共通文字列をカウントしたことを示しています。この事実に従って、char_ins1_canfound_ins2「rojohnde」になるようにメッセージを送信すると、6 つの転置があるはずであり、1/3*(8/9+8/11+(8- 3)/8) char_ins1_canfound_ins2「rojhndoe」になるようにマッサージすると、2 つの転置があり、1/3*(8/9+8/11+(8-1)/8) になるはずです。

Rstringdist関数は上記の状況にどのように対処しますか?

何百万もの感謝!

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

r - rの同様の文字列に基づくdata.frame行のマージ

複数の列を持つ 1 つの data.frame があります。最初の列には会社名が含まれています。これらはユーザーによって入力されたもので、多くの値には同じエンティティを表す同様の文字列が含まれています。たとえば、Company A Pty. Company A Pty. Ltd. Company A Georgia.

これらのバリエーションを、別の列の単一の共通文字列 Company A に置き換えたいと思います。stringdist やその他の関数を見てきましたが、このユースケースをサポートしていないようです。

これにより、その共通の文字列に基づいて要約/集計することができます。

Google Refine などのサードパーティ ツールも機能しますが、R 内で操作することをお勧めします。

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

r - R 文字列類似度行列

私は、大量の苦情データに関するテキスト分析プロジェクトで忙しくしています。データの問題の 1 つは、同じ単語の同義語が複数あることです。たとえば、bill、billing、billed、bills などです。通常、単語の頻度リストを作成し、明らかなものを手動で照合してから、主な単語を適用します。請求、請求、請求 -> 請求など、すべての類義語インスタンスの元のコーパス (すべて請求関連であるため)。ここの誰かが私を助けてくれた気の利いたコードがあります。

最近、文字列距離アルゴリズムを使用して、考えられる類義語を特定することで作業を楽にするというアイデアをいじっています。stringdist パッケージを使用していますが、テストを効率的に実装するにはどうすればよいか途方に暮れています。基本的に、すべての単語の行列と、交差部分に stringdist 関数の結果が必要です。

次のように stringdist 関数を使用します。

0.955 の類似性スコアを与える

したがって、a、b、c の単語リストから、次のようになります (値は純粋に指標です)。

交点は stringdist 関数の結果です。

または、次のものも使用できます。

後者の唯一の問題は、同じ結果が得られるため、a、b、b、a などの重複があることです。

賢いRコーダーの皆さん、助けてください。答えは行列関数のどこかにあると思いますが、私は十分な R コーダーではありません。

乾杯