【问题标题】:Differentiate between sentences that have the same meaning but use different word combinations区分具有相同含义但使用不同单词组合的句子
【发布时间】:2017-01-20 14:13:43
【问题描述】:

我正在尝试学习自然语言处理,但遇到了一个开放式问题。我如何将意思相同的句子组合在一起。可以有一组有限的句子具有相同的含义。我使用什么样的算法来帮助他们?

例如:考虑以下句子:

There is a man. There is a lion. The lion will chase the man on seeing him. If the lion catches the man he dies.

There is a man and a lion. If the lion catches the man he dies. The lion will chase the man if he sees him.

You have a lion that chases men on seeing them. There is one man. If the lion catches the man he dies.

基本上所有这些句子都是这样说的:

 1 Lion. 1 Man. Lions chase men. If lion catches men the man dies.

我无法将有助于我实现类似目标的机器学习或深度学习算法归零。请指导我正确的方向或指出一些足以实现这一目标的算法。

另一个重要因素是拥有可扩展的解决方案。那里可能有很多这样的句子。然后会发生什么?

一种可能的解决方案是: 使用词性和句子中单词之间的关系作为某些机器学习算法的特征。但这在大量句子中是否实用?我们需要考虑更多的事情吗?

【问题讨论】:

    标签: machine-learning nlp deep-learning


    【解决方案1】:

    基于深度学习的解决方案之一是使用word embeddings(理想情况下,它应该用一个固定维度的向量来表示一个词,这样相似的词就靠近那个嵌入空间,甚至像Germany - Berlin ~= Italy - Rome这样的向量运算也可能成立),两个著名的词嵌入技术是Word2VecGlove,另一种选择是用一个固定维向量表示一个句子,这样相似的句子就靠近那个嵌入空间,检查Skip-Thought vectors。到目前为止,我们只尝试以更语义的数字方式表示文本(单词/句子),下一步是捕捉当前上下文(段落、文档)的含义,一种非常幼稚的方法是仅平均单词/句子嵌入(你必须尝试这个看看它是否有效),更好的方法是使用某种序列模型,如RNN(实际上是LSTMGRU)来捕获之前所说的任何内容。使用序列模型的问题在于它需要监督(你应该有一个标记数据,但如果你没有它,我猜是这种情况),那么只需在 language modelling 设置中使用序列模型并获取RNN/GRU/LSTM 在最后一个时间步的隐藏表示,即在读取最后一个单词或聚合单词嵌入之后,如果您使用的是幼稚方法。一旦你有了隐藏的表示,你就可以应用任何聚类技术来聚类不同的段落(你必须找到合适的distance metric),或者你可以手动应用一些距离度量并定义或学习一个阈值,以便将相似段落归类为一个。

    【讨论】:

    • 非常感谢。我会调查这些。
    猜你喜欢
    • 2021-09-14
    • 1970-01-01
    • 2022-01-19
    • 2023-03-08
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    相关资源
    最近更新 更多