我如何利用 SRL、LSA、POS、NER、实体类型、关系类型等 NLP 特性与深度学习来查找文本的语义相似性?

数据挖掘 深度学习 nlp
2021-10-14 20:05:33

我有类似于下面的文本,我想找到这些文本和意图之间的语义相似性。

1)辞职的不同步骤是什么?

1) 辞职程序?

1)我必须遵循哪些流程才能辞职?

1)任何公司辞职的常见方案是什么!

2) 我辞职后需要联系谁?

3) 我今天确实辞职了。

4)如果你再犯错,我就辞职!!

4) 你的粗鲁行为让我辞职了。

5) 不同的公司有不同的离职政策!!

为了解决上述问题,我发现“处理重复问题的 Quoras 模型”很有趣。所以我想让我们试试这个,但有一些小的变化。而改变是做二分类,让我们做多类分类。所以我试图对“Quora 数据集”进行多类分类。我的意图是使用 LSTM、CNN 模型将每个问题及其重复问题分类到向量空间上的一个类中。如果序列保持不变,LSTM 工作。但正如您所知,问题结构可以改变保持意图相同(或者我们可以将它们称为重复问题。)。所以为了处理这样的问题,我尝试使用 CNN。CNN 适用于一些小数据集,但对于大数据集,它变得非常敏感或重叠。

所以我在想“我可以利用 NLP 和深度学习来寻找意图和语义关系吗?”

我有 POS 标签、NER、SRL、LST、实体类型、关系类型等功能。我如何在深度学习中利用 NLP 的这些特性来获得最先进的结果?

有一篇论文“何时需要树结构来进行深度学习表示? ”,它使用解析树作为递归神经网络模型的输入。有没有类似的作品?谁能给我本文中使用的数据集?

2个回答

TL;博士:

将单词表示为单词向量。然后为词向量添加额外的维度。在这些额外的维度中,以数字形式包含 POS、NER 等特征。

更长的版本:

假设您有一个 word2vec/Glove 模型,每个单词由一个 100 维向量表示。此外,每个单词都有 POS、NER 等特征。不是只用 100 个维度来表示每个单词,而是用维度来表示它,并用 nlp 特征100 + n填充这些槽。n

这将为向量赋予您手动定义的附加含义。

建议

您可以从使用其他模型(如 Doc2Vec/Sent2Vec)中受益,它们可以将整个句子表示为向量。使用这些向量,您可以查询句子的相似性。

所以说你已经对你的数据进行了训练,只需查询:

model.most_similar_cosmul(SENT_42)

其中 SENT_42 代表“我辞职后需要联系谁?”,你会得到一个类似的句子列表。

我建议你在 python 中使用gensim 的 doc2vec模型。

一种有前途的算法是“Word Mover 的距离”它将文档相似度视为词嵌入向量之间的优化问题。目标是最小化词向量集之间的“旅行”成本。鉴于词向量中固有的语义编码,它可以对意图和意义的各个方面进行建模。

Word Mover 的距离 (WMD) 实现起来相对简单。然而,由于它进行的比较次数,它的计算成本很高。

WMD 完全忽略了 POS、NER、解析树和所有其他相关的 NLP 技术。这些限制使它更容易应用,但是限制了它可以建模的语言的属性。