寻找一种自动方式来生成词汇表的分类法

时间:2019-03-25 02:55:22

标签: data-structures glossary

我真的不确定这个问题在哪里发布,因为这更多的是数据治理问题,而不是编程问题,而且还有些主观。如果不合适,我将在其他地方删除/转发。

我正在使用一种自下而上的方法来建立术语表。即,我最初是根据来自不同数据库的所有唯一逻辑列名称生成术语的,并将它们汇总到一个中心位置,即词汇表。到目前为止,事实证明,清理和建立关系是一个非常困难和手动的过程。这篇特别的文章涉及自动在较大的术语表列表中自动创建分类法/层次分组。

让我们在下面的词汇表中列出十个术语。我知道词汇表中的相关术语不一定与任何命名约定统一,因此我使用以下列表对此进行了模拟:

['term a',
 'second term',
 'term 3',
 'term d',
 'term number five',
 'sixth term',
 'seventh term',
 'term eight',
 'ninth term',
 'term 10']

我知道sixth termterm aterm number fiveterm 10的父项,因此理想情况下,我想以类似Python列表字典,如下所示:

{'sixth term': ['term a', 'term number five', 'term 10']}

所以基本上,我的问题是:

  • 我有一系列的术语,我知道它们是分层的。
  • 相关术语不一定遵循标准的命名约定

我最初对如何处理的想法是:

  • 尝试在这些术语的定义上使用字符串匹配
  • 找到相关术语之间存在的 通用术语,并从此处开始
  • 使用difflib之类的库对术语及其定义进行序列匹配

使用定义作为输入的问题是定义并不总是那么好,并且尝试检测语义相似性可能不会获得有用的结果。而且我对进行序列匹配表示怀疑,因为正如我提到的那样,相关术语不一定遵循相同的命名约定,并且序列匹配可能不会产生良好的结果。

如有必要,我可以手动创建关联,但是由于词汇表太大(约9,000个术语),我真的想避免这种情况。我还怀疑有一种方法可以通过机器学习来完成,因为这似乎是一个分类问题,但是老实说,我确实是ML的新手,并且真的不知道会使用哪种算法能够做到我想要的。

基本上,我有一个独特的问题,它是一个治理问题,已经蔓延到了编程问题中,现在我只能想到手动创建这些关联。对于库,工具或关于如何处理此类问题的一般性建议,我所寻找的代码不如我所希望的那样。

0 个答案:

没有答案