我真的不确定这个问题在哪里发布,因为这更多的是数据治理问题,而不是编程问题,而且还有些主观。如果不合适,我将在其他地方删除/转发。
我正在使用一种自下而上的方法来建立术语表。即,我最初是根据来自不同数据库的所有唯一逻辑列名称生成术语的,并将它们汇总到一个中心位置,即词汇表。到目前为止,事实证明,清理和建立关系是一个非常困难和手动的过程。这篇特别的文章涉及自动在较大的术语表列表中自动创建分类法/层次分组。
让我们在下面的词汇表中列出十个术语。我知道词汇表中的相关术语不一定与任何命名约定统一,因此我使用以下列表对此进行了模拟:
['term a',
'second term',
'term 3',
'term d',
'term number five',
'sixth term',
'seventh term',
'term eight',
'ninth term',
'term 10']
我知道sixth term
是term a
,term number five
和term 10
的父项,因此理想情况下,我想以类似Python列表字典,如下所示:
{'sixth term': ['term a', 'term number five', 'term 10']}
所以基本上,我的问题是:
我最初对如何处理的想法是:
使用定义作为输入的问题是定义并不总是那么好,并且尝试检测语义相似性可能不会获得有用的结果。而且我对进行序列匹配表示怀疑,因为正如我提到的那样,相关术语不一定遵循相同的命名约定,并且序列匹配可能不会产生良好的结果。
如有必要,我可以手动创建关联,但是由于词汇表太大(约9,000个术语),我真的想避免这种情况。我还怀疑有一种方法可以通过机器学习来完成,因为这似乎是一个分类问题,但是老实说,我确实是ML的新手,并且真的不知道会使用哪种算法能够做到我想要的。
基本上,我有一个独特的问题,它是一个治理问题,已经蔓延到了编程问题中,现在我只能想到手动创建这些关联。对于库,工具或关于如何处理此类问题的一般性建议,我所寻找的代码不如我所希望的那样。