2011-04-12 29 views
1

是否有人知道如何生成可能的拼寫錯誤?sas生成所有可能的拼寫錯誤

如失業 - uemployment - onemploymnet - 等

+2

拼寫錯誤的定義是什麼? 「就業」是「失業」的變體嗎?沒有定義,該集合可以是無限的。 – 2011-04-12 21:49:44

+0

夥計。說真的,你應該不時地接受偶爾的答案。 0%是可怕的。 – riwalk 2011-04-12 21:59:28

+0

我正在尋找可幫助我生成有助於壓制客戶拼錯僱主名稱的代碼: – iamjeannie 2011-04-12 23:03:56

回答

3

如果你只是想生成可能拼寫錯誤的列表,你可以嘗試像this one的工具。否則,在SAS中,您可以使用類似COMPGED這樣的函數來計算某人輸入的字符串與您希望他們鍵入的字符串之間的相似性度量。如果你的標準兩者「足夠接近」,用你想要的文字替換它們的文字。

下面是一個計算「失業」和各種似是而非的拼寫錯誤之間的廣義編輯距離的例子。

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; 
+0

謝謝John,我實際上正在尋找所有可能的值作爲sas輸出。我應該更清楚..所以我要尋找一個SAS代碼,會給我輸出:nemployment uemployment unmployment uneployment unemloyment unempoyment unemplyment unemploment unemployent unemploymnt unemploymet 失業的 unemploymenyt unemploymenty unemploymenht unemploymenth unemploymengt unemploymentg unsloymenft unemploymentf .. p – iamjeannie 2011-04-13 14:25:09

+0

我不t h you you you you you want want want want generating generating generating mis mis and and mis what what what what what what what COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP COMP低。 – 2011-04-19 16:26:51

0

如果您正在尋找一般拼寫檢查器,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; 
+0

謝謝里奇,但是我本來應該更清晰。所以我要尋找一個SAS代碼,會給我輸出:nemployment uemployment unmployment uneployment unemloyment unempoyment unemplyment unemploment unemployent unemploymnt unemploymet 失業的 unemploymenyt unemploymenty unemploymenht unemploymenth unemploymengt unemploymentg unemploymenft unemplo ymentf .. – iamjeannie 2011-04-13 14:22:21

1

基本上你正在嘗試開發基於一些經驗規則文本字符串列表,如一個字母是從字不見了,一個字母錯放到錯誤的地方,是一個字母輸入錯誤,等等。問題是這些規則必須在寫代碼之前用SAS或任何其他語言明確定義(這就是Chris所指的)。如果您的要求降低到這種錯誤字母的情況,那麼這可能是可管理的;否則,評論者是正確的,你可以很容易地創建大量不正確拼寫的名單(畢竟,除「失業」之外的所有組合都構成拼寫錯誤的單詞)。儘管如此,SAS中有很多方法可以完成這種文本操作(rx函數,其他文本字符串函數的組合,宏)。但是,有可能有更好的方法來實現這一點。我會建議一個外部Perl進程來生成一個可以讀入SAS的文本文件,但其他程序員可能有更好的選擇。

相關問題