スペルミスの可能性を生成する方法を知っている人はいますか?
例 : unemployment - uemployment - oneemploymnet - など
スペルミスの可能性を生成する方法を知っている人はいますか?
例 : unemployment - uemployment - oneemploymnet - など
スペルミスの可能性のあるリストを生成したいだけの場合は、このようなツールを試してみてください。それ以外の場合、SASでは、COMPGEDなどの関数を使用して、誰かが入力した文字列と入力したい文字列との類似性の尺度を計算できる場合があります。2つが標準で「十分に近い」場合は、それらのテキストを必要なものに置き換えます。
これは、「失業」とさまざまなもっともらしいスペルミスの間の一般化された編集距離を計算する例です。
data misspell;
input misspell $16.;
length misspell string $16.;
retain string "unemployment";
GED=compged(misspell, string,'iL');
datalines;
nemployment
uemployment
unmployment
uneployment
unemloyment
unempoyment
unemplyment
unemploment
unemployent
unemploymnt
unemploymet
unemploymen
unemploymenyt
unemploymenty
unemploymenht
unemploymenth
unemploymengt
unemploymentg
unemploymenft
unemploymentf
blahblah
;
proc print data=misspell label;
label GED='Generalized Edit Distance';
var misspell string GED;
run;
基本的に、単語から 1 文字が抜けている、文字が間違った場所に配置されている、1 文字が間違って入力されているなど、経験則に基づいてテキスト文字列のリストを作成しようとしています。問題は、これらのルールは、SAS またはその他の言語でコードを記述する前に、明示的に定義する必要があります (これは Chris が言及していたものです)。要件がこの 1 字間違いのシナリオに縮小される場合、これは管理可能である可能性があります。そうでなければ、コメント者は正しく、間違ったスペルの大量のリストを簡単に作成できます (結局のところ、「unemployment」以外のすべての組み合わせは、その単語のスペルミスを構成します)。
そうは言っても、SAS にはこのテキスト操作を実行する方法がたくさんあります (rx 関数、他のテキスト文字列関数の組み合わせ、マクロ)。ただし、おそらくこれを達成するためのより良い方法があります。SAS に読み込むことができるテキスト ファイルを生成するための外部 Perl プロセスをお勧めしますが、他のプログラマーにはより良い代替手段があるかもしれません。
一般的なスペル チェッカーを探している場合、SAS にはproc spell
.
状況に合わせて機能させるには、微調整が必要です。それは非常に古くて不格好です。この場合はうまくいきませんが、別の辞書を使ってみるとうまくいくのではないでしょうか? Google で検索すると、他の例が表示されます。
filename name temp lrecl=256;
options caps;
data _null_;
file name;
informat name $256.;
input name &;
put name;
cards;
uemployment
onemploymnet
;
proc spell in=name
dictionary=SASHELP.BASE.NAMES
suggest;
run;
options nocaps;