sas генерирует все возможные пропуски - PullRequest
1 голос
/ 13 апреля 2011

Кто-нибудь знает, как создать возможную опечатку?

Пример: безработица - безработица - onemploymnet - и т. д.

Ответы [ 3 ]

3 голосов
/ 13 апреля 2011

Если вы просто хотите сгенерировать список возможных орфографических ошибок, вы можете попробовать такой инструмент, как this .В противном случае в 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;
1 голос
/ 22 апреля 2011

По сути, вы пытаетесь составить список текстовых строк на основе некоторого эмпирического правила, например, отсутствует одна буква в слове, что буква не в том месте, что одна буква была опечатана и т. Д. Проблема в том, что эти правила должны быть явно определены, прежде чем вы сможете написать код на SAS или любом другом языке (это то, на что ссылался Крис). Если ваше требование сводится к этому сценарию с одной неправильной буквой, то это может быть управляемым; в противном случае, комментаторы верны, и вы можете легко создавать массивные списки неправильных написаний (в конце концов, все комбинации, кроме «безработица», составляют неправильное написание этого слова).

Сказав это, в SAS есть много способов выполнить эту текстовую манипуляцию (функции rx, некоторая комбинация других функций текстовой строки, макросы); однако, вероятно, есть лучшие способы сделать это. Я бы предложил внешний процесс Perl для генерации текстового файла, который можно прочитать в SAS, но другие программисты могли бы иметь более лучшие альтернативы.

0 голосов
/ 13 апреля 2011

Если вы ищете общий инструмент проверки орфографии, у 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;
...