如何利用语义自动标记一组单词的聚类?

10
上下文如下:我已经有了聚类的短语,这些短语是通过对互联网搜索查询应用kmeans并使用搜索引擎结果中的常见url作为距离(如果我简化��的话,就是url的共现而不是单词)得到的。
我希望能够使用语义自动标记这些聚类,换句话说,我想提取围绕一组短语的主要概念。例如 - 对于我的例子主题很抱歉 - 如果我有以下一堆查询:['我丈夫攻击了我','他被警察逮捕了','审判仍在进行中' ,'我丈夫因骚扰我而可能入狱?','免费律师'] 我的研究涉及家庭暴力,但显然这个聚类集中在问题的法律方面,因此标签可以是“法律”等。
我对NPL很陌生,但我必须明确,我不想使用POS标记提取单词(或者至少这不是预���的最终结果,但可能是必要的初步步骤之一)。
我读过Wordnet有关意义消歧的内容,我认为这可能是一个好方法,但我不想计算两个查询之间的相似性(因为聚类是输入),也不想通过整个一堆单词所提供的上下文来获得一个选定单词的定义(在这种情况下选择哪个单词?)。我想使用整个一堆单词提供上下文(可能使用synset或使用wordnet的xml结构进行分类),然后用一两个单词总结上下文。
有什么想法吗?我可以使用R或Python,我读过nltk但是我找不到在我的上下文中使用它的方法。

你看过 topicmodel 和 mallet 这两个包吗?你好像想要在聚类中识别主题。 - lawyeR
没有,谢谢您的建议,我会看一下! - Stéphanie C
@lawyerR,我看了一下发现LDA或者更普遍的建模方法都使用已经在初始集合中的单词。但这并不是我的情况,在我的例子中,法律维度来自于共享语义而不是法律单词本身的高频率。因此,我考虑使用WordNet的想法。 - Stéphanie C
问题有点哲学性质。例如,在您的示例中,主题可能是“犯罪”而不是“法律”。也许您应该有一组主题(几个单词作为主题)与您的短语集群并行。然后,您可以将排序后的单词列表分配为主题。这就是LDA的全部内容。据我理解,对于您来说,“语义”实际上是短语的主题。 - Mehdi
@Mehdi,我完全同意,但是“crime”也可以,我不在乎选择的词语,我关心的是全局语义。要并行获取一组主题,我想我必须手动创建它。为了使其自动化,我考虑使用WordNet和智能字典进行上下文消歧,但由于没有相关经验,我真的不知道从哪里开始。 - Stéphanie C
显示剩余4条评论
5个回答

5
您最好的选择可能是手动标记聚类,特别是如果聚类数量较少。这对于人类来说也是一个难题,因为您可能需要一个领域专家。声称他们可以自动可靠地完成这项任务(除非在某些非常有限的领域),否则他们可能正在创业并试图获取您的业务。
此外,自己浏览聚类也会有好处。 1)您可能会发现聚类数目错误(k参数)或输入中有太多垃圾。 2)您将获得关于数据中正在讨论什么以及有哪些主题的定性洞察力(在查看数据之前可能不知道)。因此,如果您需要定性洞察力,请手动标记。如果您还需要定量结果,则可以在手动标记的主题上训练分类器,以便1)预测其余聚类的主题,或2)用于未来使用,如果您重复聚类、获取新数据等。

1
谢谢你的回答,但你应该编辑并将其移动到评论中。这不是我想要的正确答案,因为我想要自动完成这个任务。也许现在还不可能,也许其他人有想法或者遇到了同样的问题。我没有足够的集群来训练算法,即使我必须先手动标记训练测试。所以...我并不是说这样做没有意义(实际上我会手动进行比较),但仍然不是我问题的正确答案...还是谢谢。 - Stéphanie C
Stéphanie,如果你没有足够的聚类来训练算法,请遵循第一段中的建议;如果你有足够的聚类或者准备好了,就遵循第二段中的建议 :-) - Darren Cook
@DarrenCook,还有其他的方法,不一定要手动或使用机器学习来处理;-)我正在跟踪一个轨迹[https://dev59.com/WmEh5IYBdhLWcg3w5243],如果它真正解决了我的问题,我会反馈的。 - Stéphanie C
这是@Alvas对一个封闭问题的非常启发性的开端回答(但是每个单词都识别一个域并不能完全解决我的问题,我还需要继续深入挖掘)。 - Stéphanie C

1

这篇论文《主题模型的自动标注》解释了作者对这个问题的方法。简单来说,他们利用从维基百科和谷歌中检索到的信息生成一些标签候选项,然后对这些候选项进行排名以找出最佳的标签。

我认为代码在网上不可用,但我没有查找过。


非常感谢您重新激活我的问题!我会查看您提供的参考资料,并在此回复。 - Stéphanie C

1
当我们在这个领域谈论语义时,我们指的是统计语义。统计或分布式语义与其他具有逻辑和推理背景的语义定义非常不同。统计语义基于分布假设,将上下文视为单词和短语的意义方面。在不同的文本中,抽象和一般意义上的含义称为主题。有几种无监督的建模主题的方法,例如LDA或者word2vec,它们基本上提供单词相似度度量或者作为另一个上下文建议一系列相似的单词。通常情况下,当你有这些无监督的聚类时,你需要一个领域专家来告诉每个聚类的意义。
然而,由于几个原因,您可能会接受将单词分配给短语列表作为一般主题(或者用您的话说,“全局语义”)的低精度任务。如果是这种情况,我建议看一下Word Sense Disambiguation任务,寻找粗粒度的词义。对于WordNet,它可能被称为超级标记任务。
这篇论文值得一看:More or less supervised supersense tagging of Twitter 关于你关于从当前短语中选择单词的问题,还有一个活跃的问题是“将短语转换为向量”,我对那个问题的回答以word2vec方式可能会有用:如何将句子或文档转换为向量? 如果我想起了更多相关的论文,我可以随后添加。

谢谢@Mehdi,我会查看这些参考资料! - Stéphanie C

1

0

一种可能的方法,如下面的论文所建议的那样,是从聚类中识别关键词集合,获取所有同义词,然后为每个同义词找到上位词。 这个想法是通过使用上位词来获得一个更抽象的聚类意义。 例如:一个包含单词dogwolf的词语聚类不应该被标记为任何一个单词,而应该标记为canids。他们使用同义词和上位词实现了这一点。

利用词嵌入和WordNet的上位词来进行聚类标签化

使用上位词的自动化文本聚类和标记


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接