如何根据初始关键字增长相关词列表?

数据挖掘 nlp 文本挖掘 游离碱
2021-09-30 23:36:34

我最近在Google 表格中看到了一个很酷的功能:你首先在连续的单元格中写一些相关的关键字,比如:“blue”、“green”、“yellow”,它会自动生成类似的关键字(在这种情况下,其他颜色)。在此 YouTube 视频中查看更多示例

我想在我自己的程序中重现这一点。我正在考虑使用 Freebase,它会直观地像这样工作:

  1. 检索 Freebase 中给定单词的列表;
  2. 找到它们的“共同点”并在此基础上构建距离度量;
  3. 根据与原始关键字的“距离”对其他概念进行排名;
  4. 显示下一个最接近的概念。

由于我不熟悉这个领域,我的问题是:

  • 有一个更好的方法吗?
  • 每个步骤都可以使用哪些工具?
3个回答

word2vec 算法可能是为相似词列表检索更多元素的好方法。它是一种无监督的“深度学习”算法,之前已使用基于 Wikipedia 的训练数据进行了演示(帮助脚本在 Google 代码页上提供)。

目前有CPython实现。教程Gensim 主题建模库的作者Radim Řehůřek编写,是一个很好的起点。

本教程中的“单一主题”演示是一个很好的例子,可以将相似词检索到单个术语(尝试搜索“红色”或“黄色”)。应该可以扩展此技术以找到与一组输入单词具有最大整体相似性的单词。

您是否考虑过利用语料库中简单单词共现的基于频率的方法?至少,这是我看到的大多数人使用的。我认为曼宁和舒策的书中可能会简要介绍它,而且我似乎记得类似这样的事情,作为研究生院的家庭作业......

更多背景在这里

对于这一步:

根据与原始关键字的“距离”对其他概念进行排名;

您可以研究几个语义相似度指标。下面是一些幻灯片的链接,这些幻灯片是我为一个课堂项目使用 WordNet 中的一些相似性指标制作的。

这是一个很好的问题,其范围可能从家庭作业到 Google 大小的项目不等。

实际上,您可以从单词的共现开始(例如,条件概率)。您会很快发现,您获得了与大多数单词相关的停用词列表,这仅仅是因为它们非常受欢迎。使用条件概率的提升将处理停用词,但会使关系在少数情况下容易出错(大多数情况下)。您可以尝试Jacard,但由于它是对称的,因此将找不到许多关系。

然后你可能会考虑只出现在距离基本词很近的关系。您可以(并且应该)考虑基于一般语料库(例如,维基百科)和特定用户(例如,他的电子邮件)的关系。

很快你就会有很多相关性测量,当所有测量都很好并且比其他测量有一些优势时。

为了结合这些措施,我喜欢将问题简化为分类问题。

您应该建立一个巴黎单词的数据集并将它们标记为“相关”。为了构建大型标记数据集,您可以:

  • 使用已知相关词的来源(例如,好的旧维基百科类别)作为肯定词
  • 大多数不被称为相关的词都是不相关的。

然后使用您拥有的所有度量作为配对的特征。现在您处于监督分类问题的领域。在数据集上构建分类器,根据您的需求进行评估,并获得适合您需求的相似性度量。