如何找到从多个文档中提取的标签之间的所有隐藏关系?
我的数据集基于一组文档,每个文档都是从标记组中提取的,我的任务是查找来自不同文档的不同标记之间的关系:
Doc_id tags
1 a, b, c
2 c, k, m
3 m, n, p
隐藏关系的结果应为:
a -> k using c
b -> m using c
a -> n using c, m (a->c->m->n)
等等。
答案 0 :(得分:0)
您用标记描述的是一个图形,其节点将是您的标记,并且您的关系是顶点。如果您愿意,可以阅读以下维基百科页面:
https://en.wikipedia.org/wiki/Graph_theory
您还可以阅读本文,更侧重于图表的实施:
https://en.wikipedia.org/wiki/Graph_(abstract_data_type)
你想知道的是两个标签(在图中,两个节点)是否相关,但不是直接相关(在同一个类中,而不是相邻的)。
您可以自己编写代码,或者寻找已经正常工作的良好实现。 这个例如:https://github.com/clue/graph(不知道它是否真的很好,只是在github上搜索并取得了第一个结果)。
自己实施图表可以很好的培训。我认为OOP是最好的方法。
您现在需要知道两个标签之间是否有道路。在您的示例中,每个标记都有一条通往另一个标记的道路,但情况并非总是如此。
在图中搜索路径不是一个简单的算法,实现可能很难。有很多方法可以做到。
一个天真的解决方案是保留一组已访问过的节点。您从节点开始,将此节点设置为 visited ,并将其所有邻居添加到可访问节点的数组中。然后你和所有的邻居做同样的事情。当您遇到已访问过的节点时,您不会执行任何操作(否则您将获得无限循环)。当算法停止时,您的开始标记中包含所有可访问标记的数组。
希望有所帮助,我会等你的回答,看看你是否还需要别的东西。请注意,此算法可能已在我链接的线索/图形存储库中实现。