链接两个单独的数据代码集,没有公共标识符

时间:2015-06-30 18:26:53

标签: sql database excel ms-access

我有两大套数据。两组都是结构化编码系统的一种形式,用于根据他们的职业对人群进行分类。这两组数据没有通用标识符。除了包含唯一标识符的列之外,每个表都具有所述标识符的描述,但是尽管它们可能描述了类似的内容,但描述并不相同。

如何创建连接两组数据的表,而不必返回并手动尝试弄清楚如何在两个标识符之间建立连接。我不确定这是否可以在Access或SQL上完成。如果有办法做到这一点,我想知道那里有什么软件。

以下是一些示例数据:

Table 1:    
Z Identifier    DescriptionA
162000          Pharmacist
3123566         Electronic Repairman
143246          Banker
8444455         Doctor


Table 2:    
Q Identifier    DescriptionB
XX134556        COPY/PRINT/SCAN EQUIP
666Q1224        DRUGS
722WWYZ         Financial Svc 
8456435T        Medical Services
15666PP         Health Services

期望的输出:

Table 3:                     
Z Identifier    DescriptionA      Q Identifier  DescriptionB    
162000          Pharmacist        666Q1224      DRUGS                           
3123566         Electr Repairman  XX134556      COPY/PRINT/SCAN EQUIP           
143246          Banker            722WWYZ       Financial Svc           
8444455         Doctor            8456435T      Medical Services  

2 个答案:

答案 0 :(得分:0)

Table 1:    
Z Identifier    DescriptionA
162000          Pharmacist
3123566         Electronic Repairman
143246          Banker
8444455         Doctor


Table 2:    
Q Identifier    DescriptionB
XX134556        COPY/PRINT/SCAN EQUIP
666Q1224        DRUGS
722WWYZ         Financial Svc 
8456435T        Medical Services
15666PP         Health Services


Output:                     
Z Identifier    DescriptionA      Q Identifier  DescriptionB    
162000          Pharmacist        666Q1224      DRUGS                           
3123566         Electr Repairman  XX134556      COPY/PRINT/SCAN EQUIP           
143246          Banker            722WWYZ       Financial Svc           
8444455         Doctor            8456435T      Medical Services    

答案 1 :(得分:0)

您习惯使用的常规工具(如Access,Excel和SQL)只能通过比较单词的含义和用法来实现目标。

换句话说(原谅双关语),为了做到这一点,你需要某种natural language processing toolkit (NLPT)。除此之外,你还需要一些关于如何编程的知识,因为我不认为存在前端接口可以通过填写一些表单来给出你想要的输出,只给出你列出的输入。 / p>

因此,考虑到这一点,为了解决您的问题(我假设您知道如何编程并可以使用您选择的语言选择NLPT),您需要执行以下操作:

  1. 将两个数据集放在一些表格中。
  2. 操作DescriptionA和DescriptionB对您正在使用的NLPT有意义。他们不喜欢像#34; COPY / PRINT / SCAN / EQUIP"这样的字符串。他们希望删除斜杠并将单词分开。
  3. 通过在库中使用path_similarity类型的函数,以排列方式比较DescriptionA和DescriptionB。例如path_similarity('animal.definition1', 'dog.definition1')应该返回一个较高的值,比如说.60,而path_similarity('animal.definition1', 'book.definition1')应该返回一个较低的值,比如.10。
  4. 如果path_similarity高于某个值(由您自行决定),请将这两个项目连接在一起,并将它们作为单行附加到结果表中,同时将它们从各自的表中删除。继续执行此操作,直到列表用尽的DescriptionA大于与DescriptionB的某个相似性。然后使用表1和表2中剩余的行执行其他操作。
  5. 这应该都很容易以编程方式完成。您可能会发现在某些地方使用此方法无法获得正确匹配,因为您随机选择了两个单词进行比较。因此,您可能希望找到除排列之外的其他算法,或许可以查看每个数据的path_similarity的统计数据,并更恰当地采取行动。

    此外,您可能希望允许配对两个以上的单词。例如; "伐木工人","砍伐树木"和"树砍刀"更有意义的是,在创建另外两列的情况下将其分组在一行中,而不是将其中一列扔出去,而这些列可能会没有一对。我刚刚在本段中列出的所有问题 我确定 不是新问题,您可以在互联网上搜索以解决这些问题。祝你好运!