【问题标题】:Natural Language Processing in PythonPython中的自然语言处理
【发布时间】:2018-08-14 14:16:40
【问题描述】:

如何使用 Python 中的自然语言处理根据过去训练的问题(包括问题的摘要和描述)为新的未见问题找到类似类型的问题

【问题讨论】:

    标签: nlp


    【解决方案1】:

    如果我对您的理解正确,您有一个新问题(查询)并且您想在您的数据库中查找其他类似的问题(文档)。如果是这样,那么您需要一种方法来查找查询与现有文档之间的相似性。一旦你拥有它们,你就可以对它们进行排名并选择最相关的那些。一种允许您执行此操作的方法是Latent Semantic Indexing (LSI)

    为此,您必须构建一个文档术语矩阵。您将使用现有文档并跨文档创建术语出现矩阵。这意味着您基本上记录了一个单词在文档中出现的次数(或其他一些复杂的度量,例如-tfidf)。这可以通过bag of words 表示或TFIDF 表示来完成。

    一旦你有了它,你就必须处理你的查询,使它与你的文档具有相同的形式。现在您已经有了可用形式的查询,您可以计算文档和查询之间的余弦相似度。余弦相似度最高的就是最接近的匹配。

    注意:您可能想阅读的主题是信息检索,而 LSI 就是这样一种方法。您还应该研究其他方法。

    【讨论】:

    • 感谢您的回复.. 我们面临的挑战是,当我们使用 tfidf 训练数据时,我们生成了许多文本特征,而新的看不见的测试数据只有一条记录,并且生成的特征这些数据的大小非常小,因此在进行余弦相似度时存在大小不匹配,因此无法计算新的未见问题与已经训练的数据之间的相似度。但是,如果这个新的看不见的数据是训练数据的一部分,我们能够计算余弦相似度。所以只是想知道是否有可能为看不见的数据得到类似的问题。
    • 大小不匹配可以处理。使用相同的矢量化器对其进行转换(顺便说一下,您使用的是 python 吗?)。这将把它带到所需的形式。它本质上可能会更稀疏,但您仍然可以计算余弦相似度。所以,是的,你可以在看不见的数据上使用它。只需确保遵循相同的预处理步骤即可。
    • 是的..我正在使用 python 并且对测试数据使用了相同的矢量化器(TfidfVectorizer)和预处理,但是在尝试使用为 train 创建的 fit 对象转换测试数据时出错数据..
    • 看看这是否有帮助:stackoverflow.com/questions/42068474/…
    猜你喜欢
    • 2019-06-28
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多