問題タブ [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.
r - Windows と Linux での stringdist のパフォーマンス (red Hat)
私は最近、R の Windows ボックスでファジー文字列マッチング ルーチンを開発しました。その速度には本当に満足しています。今、仮想 Redhat サーバーで同じ手順を実行しようとしましたが、かなり遅くなりました。100. Windows マシン (6 コア、Intel、3.4Ghz) では、手順全体で 1 時間かかります。
私が基本的にやっていることはこれです:
Redhat マシン (14 コア、AMD、2.6 GHz) で、openblas を有効にして R を実行しています。バージョン 0.9.4.1 の r パッケージ stringdist は両方のマシンにあります。上記のコマンドは数百万回実行されます。奇妙なことに、速度が低下しているようにさえ見えます。プロセスを開始すると、ログに次のように表示されます。
数時間後、次のように表示されます。
Windows マシンでは、これは次のようになります (6 つのプロセスがログに書き込みます)。
Windows マシンでは、RevolutionR (またはその R-open-MS バリアント) は使用しません。mkl を使用しているかどうかはわかりませんが、実際には、R で文字クラスを操作する場合は問題になりません。何らかのエンコーディングの問題が原因でしょうか? Rprof でプロファイリングする場合、かかる絶対時間は、Windows と Linux で同じように報告されません。相対時間に関しては、enc2utf8 のみが Linux でより顕著に見えるようです。
他のアイデアはありますか?thnxマーティン
python - 大きな文字列とベクトルを扱うことができるレーベンシュタイン実装
レーベンシュタイン文字列距離を計算するための関数を含む R で名前が付けられたパッケージがあります。stringdistこのパッケージには 2 つの問題があります。
1st大きな文字列では機能しません。例:
ベクトルの2 番目の距離は、ベクトル全体ではなく、ベクトル要素の文字ごとに計算されます。
最後のコマンド 4 の結果が必要です: 4 つの置換が必要なためです (対応する位置の 4 つのベクトル要素が異なります)。この場合、0 以外の値を取得してカウントできますr <- stringdist(a.vec, b.vec, method = "lv"); length(r[r!=0])。ただし、次の例では機能しません。
最後のコマンド 1 の結果が必要です (1 番目のベクトルの 1 番目の位置に 2 を挿入します)。
PS実装も組み込まれていますが、大きな文字列では機能しません(正直なところ、出力が理解できないため、ベクトルでどのように機能するのかわかりません):
私の要件を満たす実装 (できれば python、perl、または R) はありますか? どうもありがとうございました。
PPS各行に1〜500の数字が含まれる複数のファイルがあります(これが、たとえば347を3、4、7で構成される文字列としてではなく、1つの要素として扱う必要がある理由です。3、4、7は別の別の数字だからです)。これらのファイルには ~ 250000 行あります。そして、これらのファイルが互いにどの程度類似しているかを知りたいです。10k*10k サイズが問題だと思います。ただし、ここでは、2*10k サイズのみを使用するレーベンシュタイン アルゴリズムについて説明します (両方の文字列の長さが 10k の場合)。トリックは、結果のみを計算し、結果がどのように計算されたかを忘れることだと思いますが、これは私にとっては問題ありません。挿入、削除、置換を考慮する必要があるため、ハミング距離では十分ではありません。ハミングではこれら 2 つの文字列1234567890 0123456789は完全に異なりますが、レーベンシュタインでは類似しています。
r - 文中の特定の単語のバリエーションをプログラムで見つける方法は?
取得したデータがクリーンでなく、使用されている単語のバリエーション、スペルミス、または操作されている場合があります。文中の単語が最も似ている例を見つけることができるでしょうか?
たとえば、次のような文のバリエーションとして使用されている「Awesome」という単語を探している場合
r - 2 つのベクトル内の各単語間の Jaccard 類似度を計算する
2 つのベクトルの各単語間の Jaccard 類似度を計算する必要があります。一言一句、一句一句。そして最も類似した単語を抽出します。
これが私の悪い悪い遅いコードです:
大きなデータ フレーム用にこのコードを改善して美しくするのを手伝ってください。