首页 > 解决方案 > 寻找最相似的短语

问题描述

我有两个数据集。一是假设维修说明

Electric Component keyboard replacement

第二个数据集是所有之前有维修短语和后来有一些维修描述的客户的所有维修描述。例如:

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

所以对于这个例子,我希望它从第二组中选择“电子键盘替换”作为与“电子元件键盘替换”最相似的短语

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;

它使用类似操作符的声音工作,我很兴奋。但是当我尝试这个时,例如我更改为“键盘组件替换”而不是“电子键盘替换”。它没有识别它给了我空白数据集。我也尝试过“比较”,但未能实现。当我看到一些姓名和电子邮件 ID 更正或匹配的示例时,我尝试了这种方法。但是也可以使用这些函数来匹配相似的短语吗?有没有其他解决方案可以实现这一目标?通常我的匹配项将是重新排列的单词或额外的单词或更短的单词(例如替换替换)

标签: sas

解决方案


我也设法使用 compged 对名称和地址进行了类似的操作!创建一个数据集,其中包含您需要从初始表中扫描的字段,这样您就可以将要扫描的每条记录乘以您需要匹配的修复类型所以您最终会得到类似这样的结果(抱歉无法在此处制作可视化表): - 字段 1 - 字段 2 :更换电子元件键盘 - 更换电子键盘 更换电子元件键盘 - 更换显示器元件 更换电子元件键盘 - 更换鼠标元件 更换电子元件键盘 - 更换电线 更换电子元件键盘 - 更换 PIN 部件

从那里您在这些字段上运行 compged,它会为您提供一个数字输出,以匹配您尝试获取的所有单词

compged(string1, string2);

然后对 compged 的​​结果进行排名,然后对该表进行查询以仅获取具有最低 compged 值的记录

请注意,这并不意味着您的 2 个句子将是真正的匹配,但它只会保留那些最有可能匹配的句子!

这是关于compged的文档


推荐阅读