匹配相似的字符串

数据挖掘 nlp
2022-03-11 13:56:01

我有一份关于不同主题的会议列表,例如

Conference on genomics and neurosciences
Advances in string theory and astrophysics 
Genomics and neuroscience: 20 years of research
Swiss Physics society meeting on string theory and astrophysics
...

它们属于不同的类别,例如 1 和 3、2 和 4 一起。对这些标题进行分组的正确工具是什么?

2个回答

我假设你有一些带有标签的训练数据,即标题已经链接到给定类的数据?这就是监督学习(与无监督学习相反),因此您可以按照以下步骤操作:

第 1 步:您有单词作为输入,因此您需要一种方法来创建数字表示(向量)。为此,您可以研究诸如Word2Vec、Doc2VecGLoVETF-IDF之类的算法。如果您选择第一个,您可能会考虑在 python 中尝试spaCy 库这是使用 spaCy 的 Word2Vec 教程

第 2 步:一旦有了每个标题的数字表示,就需要以某种方式对它们进行分类。你可以通过几种方式做到这一点。最简单的可能是聚类算法之类的,例如SciKit Learn 中的 DB-Scan 算法- 这是一个演示您可以尝试更复杂的方法,例如支持向量机或神经网络,但最好从可以更快获得某些结果的方法开始。您正在对标题进行分类,因此请务必将您的问题形成为分类而不是回归问题

第 3 步:评估您的结果并尝试更改上述循环的一部分。


在上面,我假设您在谈论会议标题的语义,而不是字面单词/字母组合之间的相似性。这当然可以通过分析计算,而不使用学习的模型。


回应 OP 的评论: 根据我的经验,使用 TF-IDF 或称为最小新集的东西可能是将您的标题转化为允许聚类的表示的好方法。集群形成后,由您来解释它们并分配标签。如果您知道例如只有 10 个会议,那么得出结果应该不会太难。看看这个做类似事情的硕士论文 - 他们想要检测主题而不是会议。免责声明:我监督了该论文

如果您的数据没有标记并且您想将它们转换为数字特征,您可以尝试 Bourgain Embedding。为此,您需要两个会议标题之间的距离。这可能是 Jaccard 距离(词袋)和 Levenshtein 距离的组合(但这只有在您有以相似字符书写的单词时才有意义,例如物理和天体物理学)。在数字特征中具有这样的表示,允许进行 k-means 聚类,例如或在标记后进行监督学习。有关更多详细信息,您可以在这里查看:http ://www.orges-leka.de/automatic_feature_engineering.html (免责声明:我已经写了博客文章。)我在我的网站上对搜索查询做了类似的事情: https://www.kaggle.com/orgesleka/keywords-similarity-dataset 使用 Bourgain 算法的要点是如何定义两个会议标题的距离/相似性,这会影响表示。