bugfix> sas > 投稿

2つのデータセットがあります。 1つは修理の説明

Electric Component keyboard replacement

2番目のデータセットは、以前の修復フレーズがあり、後で修復の説明があったすべての顧客のすべての修復の説明です。 例えば:

Electric Keyboard replace
Monitor Component Replacement
Mouse component
Wire Replacement
PIN part

したがって、この例では、「Electric Keyboard replace」の最も類似したフレーズとして、2番目のセットから「Electric Keyboard replace」を選択します。

DATA NAME;
INFILE DATALINES DSD; 
length FIRST $ 1000;
INPUT FIRST $;
DATALINES;
Electric Component keyboard replacement
;
DATA COMPONENT;
INFILE DATALINES DSD; 
length FIRST_B $ 1000;
INPUT FIRST_B $;
DATALINES;
Electric Keyboard replace
Monitor Component Replacement
Mouse component
Wire Replacement
PIN part
;
PROC SQL;
CREATE TABLE Possible_Matches AS
SELECT *
FROM Name AS n, COMPONENT AS b
WHERE (n.FIRST  =* b.FIRST_B);
QUIT;

オペレータのような音を使って機能し、興奮しました。しかし、私がこれを試したとき、例えばどこで 「Electric Keyboard replace」ではなく「keyboard component replace」に変更しました。 空白のデータセットを与えたことが特定されませんでした。私も「比較」を試みましたが、達成できませんでした。名前と電子メールIDの修正または照合の例をいくつか見て、このアプローチを試しました。しかし、これらの関数を使用して、similairフレーズを一致させることはできますか?これを達成する他のソリューションはありますか?通常、私の試合は再配置された単語、余分な単語、または短い単語です(置換する置換など)

回答 1 件
  • 私もcompgedを使って名前と住所で似たようなことをすることができました! 最初のテーブルからスキャンする必要があるフィールドを使用してデータセットを作成し、スキャンするすべてのレコードに一致する必要がある修復のタイプを乗算するようにします そのため、次のような結果になります(申し訳ありませんが、ここでは表を視覚的に表示できません)。 -フィールド1-フィールド2: 電気コンポーネントのキーボードの交換-電気キーボードの交換 電気コンポーネントのキーボードの交換-モニターコンポーネントの交換 Electric Componentのキーボードの交換-マウスコンポーネント 電気部品のキーボードの交換-ワイヤーの交換 電気部品キーボードの交換-PINパーツ

    そこからそれらのフィールドも圧縮して実行すると、取得しようとしているすべての単語と一致する数の出力が得られます

    compged(string1, string2);
    
    

    次に、compgedの結果にランクを付け、そのテーブルでクエリを実行して、最も低いcompged値を持つレコードのみをフェッチします

    2つの文が実際に一致することを意味するわけではないことに注意してください。

    compgedに関するドキュメントはこちら

あなたの答え