我有两个数据集。一是假设维修说明
Electric Component keyboard replacement
Run Code Online (Sandbox Code Playgroud)
第二个数据集是所有客户的所有维修描述,这些客户之前有维修短语,后来有一些维修描述。例如:
Electric Keyboard replace
Monitor Component Replacement
Mouse component
Wire Replacement
PIN part
Run Code Online (Sandbox Code Playgroud)
所以对于这个例子,我希望它从第二组中选择“Electric Keyboard replace”作为与“Electric Component keyboard replacement”最相似的短语
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;
Run Code Online (Sandbox Code Playgroud)
它使用类似运算符的声音工作,我很兴奋。但是当我尝试这个时,例如我更改为“键盘组件替换”而不是“电子键盘替换”。它没有识别它给了我空白数据集。我也尝试过“比较”,但无法实现。我尝试了这种方法,因为我看到了一些姓名和电子邮件 ID 更正或匹配的示例。但是也可以使用这些功能来匹配相似的短语吗?有没有其他解决方案来实现这一目标?通常我的匹配项会重新排列单词或额外的单词或较短的单词(如替换替换)
小智 1
我也设法使用 compged 对名称和地址执行类似的操作!使用您需要从初始表中扫描的字段创建一个数据集,这样您就可以将要扫描的每条记录乘以您需要匹配的修复类型所以您最终会得到类似这样的结果(抱歉,无法在此处显示表格): - 字段 1 - 字段 2 : 电气元件键盘更换 - 电气元件键盘更换 电气元件键盘更换 - 显示器元件更换 电气元件键盘更换 - 鼠标元件 电气元件键盘更换 - 电线更换 电气元件键盘更换 - PIN 部分
从那里,您在这些字段上运行 compged,它将为您提供与您尝试获取的所有单词匹配的数字输出
compged(string1, string2);
Run Code Online (Sandbox Code Playgroud)
然后对 compged 的结果进行排名,然后对该表进行查询以仅获取 compged 值最低的记录
请注意,这并不意味着您的 2 个句子将是真正匹配的,但它只会保留最有可能匹配的句子!