文本挖掘实操|用文本挖掘剖析54万首诗歌,我发现了这些(8)
2024-06-15 来源:旧番剧
通过上述词嵌入模型,similarity(“甲兵”,“兵戈”) = 0.75,similarity(“甲兵”,“烽火”) = 0.37,similarity(“兵戈”,“烽火”) = 0.48。则在这三个词汇中,“甲兵”和“兵戈”之间的语义相关度最高,其次是“兵戈”和“烽火”,最次的“甲兵”和“烽火”。
这种给一个数值来识别词汇相关不相关的方法优点在于表达简洁、计算高效,比如接下来将要进行的热门诗歌题材发现/聚类。但是,这种词汇相关度的计算没有把词汇之间的相关度的“因果路径”直观的反映出来。
那么,有没有一种直观的方法来展示词汇之间的语义相关性,并且能看到为什么它们是存在这样的关联关系(也就是找到词汇关联路径或者语义演变路径)?
答案是---当然有。
我们需要把这个找寻词汇语义演变路径的任务转换成一个TSP问题(旅行商问题)。
3.2 利用A*算法找寻词汇之间的语义演变路径
TSP问题(Traveling Salesman Problem)又译为旅行推销员问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。
回到词汇相关度度量的问题上来,如果我们能在上述训练得到的词嵌入空间中找到两个词汇之间的最短“语义演变”线路,我们就能直观的呈现出这2个词汇之间产生语义关联的“前因后果”。
要实现这个目的,有一个很棒的算法可以实现 ---A*算法(A* search algorithm)。
A*算法,也叫A*(A-Star)算法,是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。下图中(点击图片可放大查看),网状结果即是之前构建的word2vec词嵌入空间,节点是其中分布的词汇,边由字词之间的余弦相关度构成。