【发布时间】:2020-05-15 14:17:48
【问题描述】:
我正在尝试找到使用 AI 和机器学习方法比较两个文本文档的最佳方法。我使用了 TF-IDF-Cosine Similarity 和其他相似性度量,但这会比较单词(或 n-gram)级别的文档。
我正在寻找一种方法,可以让我比较文档的含义。最好的方法是什么?
【问题讨论】:
标签: machine-learning nlp artificial-intelligence text-mining
我正在尝试找到使用 AI 和机器学习方法比较两个文本文档的最佳方法。我使用了 TF-IDF-Cosine Similarity 和其他相似性度量,但这会比较单词(或 n-gram)级别的文档。
我正在寻找一种方法,可以让我比较文档的含义。最好的方法是什么?
【问题讨论】:
标签: machine-learning nlp artificial-intelligence text-mining
您应该开始阅读有关 word2vec 模型的内容。 使用gensim,获取google的pretrained model。 要对文档进行矢量化,请使用 Doc2vec() 函数。 获取所有文档的向量后,使用一些距离度量,如余弦距离或欧几里得距离进行比较。
【讨论】:
这是非常困难的。实际上没有“意义”的计算定义。您应该深入研究文本挖掘、摘要和 gensim、spacy 或模式等库。
在我看来,可用的库更容易使用,即。更高的投资回报率 (ROI),也就是说,如果您是新手,您可能想看看他们想要从自然语言结构化数据中提取的聊天机器人工具。这就是与“意义”最相似的东西。实现这一目标的一个示例免费软件工具是rasa natural language understanding。
此类工具的缺点是它们在一定程度上起作用,但仅限于它们接受过培训并准备工作的领域。尤其是它们的目标不是像您想要的那样比较文档。
我正在尝试找到使用 AI 比较两个文本文档的最佳方法
您必须提出更精确的任务,并从中找出最适合您的用例的技术。是否要将文档分类为预定义的类别。你要计算两个文档之间的一些相似性吗?给定一个输入文档,你想在数据库中找到最相似的文档吗?是否要提取文档中的重要主题或关键字?您要对文档进行总结吗?是抽象摘要还是关键短语提取?
特别是,没有软件可以从任何文档中提取某种语义指纹。根据最终目标,实现目标的方式可能完全不同。
你必须缩小你想要达到的精确目标;从那里,您将能够提出另一个问题(或改进这个问题)来准确描述您的目标。
文本理解是 AI 完备的。所以,只是对计算机说“告诉我有关这两个文件的一些信息”是行不通的。
正如其他人所说,word2vec 和其他词嵌入是实现 NLP 中许多目标的工具,但它只是达到目的的手段。您必须定义您尝试设计的系统的输入和输出,以便能够开始实施。
您可能还想挖掘另外两个 Stack Overflow 社区:
【讨论】:
给定语料库中每个标记(或最有意义的标记)的 tfidf 值,您可以计算文档的稀疏表示。 这是在 sklearn TFIDFVectorizer 中实现的。
正如其他用户所指出的,这不是您任务的最佳解决方案。 您应该考虑嵌入。
最简单的解决方案是在单词级别使用嵌入,例如 FastText 框架提供的嵌入。 然后,您可以通过将构成文档的单个单词的嵌入相加来为整个文档创建嵌入。
【讨论】:
您还可以将 LDA 或 LSI 模型用于文本语料库。这些方法(以及 wor2vec 和 doc2vec 等其他方法)可以根据文档所属的含义和主题将文档汇总为固定长度的向量。
【讨论】:
听说有three approaches from Dr. Golden:
- 余弦角分离
- 汉明距离
- 潜在语义分析 (LSA) 或潜在语义索引 (LSI)
这些方法基于语义相似性。
我还听说一些公司使用名为Spacy 的工具来汇总文档以相互比较。
【讨论】: