比较文本文档含义的最佳方法?

时间:2018-03-13 12:21:11

标签: machine-learning nlp artificial-intelligence text-mining

我正在尝试找到使用AI和机器学习方法比较两个文本文档的最佳方法。我已经使用了TF-IDF-Cosine相似度和其他相似性度量,但这比较了单词(或n-gram)级别的文档。

我正在寻找一种方法,可以让我比较文档的含义。最好的方法是什么?

5 个答案:

答案 0 :(得分:5)

你应该开始阅读有关word2vec模型的内容。 使用gensim,获取谷歌的pretrained model。 要对文档进行矢量化,请使用Doc2vec()函数。 获取所有文档的向量后,使用一些距离度量,如余弦距离或欧几里德距离进行比较。

答案 1 :(得分:5)

这非常困难。实际上没有“含义”的计算定义。您应该深入研究文本挖掘,摘要和库,如gensim,spacy或pattern。

在我看来,那里有更容易使用的库,即。更高的投资回报率(ROI),即如果您是新手,您可能希望查看他们希望从自然语言结构化数据中提取的聊天机器人的工具。这与“意义”最相似。实现这一目标的一个免费软件工具示例是rasa natural language understanding

enter image description here

这些工具的缺点是它们有些工作,但仅限于它们经过培训并准备工作的领域。特别是它们并不旨在比较您想要的文档。

  

我正在尝试找到使用AI比较两个文本文档的最佳方法

您必须提出更精确的任务,并从中找出哪种技术最适合您的使用案例。是否要对预定义类别的文档进行分类?你在两个文件之间计算一些相似性吗?给定输入文档,您是否希望在数据库中找到大多数类似的文档。您想要在文档中提取重要主题或关键字吗?你想总结一下这份文件吗?它是抽象摘要还是关键短语提取?

特别是,没有软件允许从任何文档中提取某些语义指纹。根据最终目标,实现目标的方式可能完全不同。

你必须缩小你想要达到的确切目标;从那里,你将能够提出另一个问题(或改进这个问题)来准确描述你的目标。

文字理解是AI-Complete。所以,只是对电脑说“告诉我一些关于这两个文件的东西”是行不通的。

正如其他人所说,word2vec和其他单词嵌入是实现NLP中许多目标的工具,但它只是结束的意思。您必须定义要设计的系统的输入和输出,以便能够开始实施。

您可能想要挖掘另外两个Stack Overflow社区:

答案 2 :(得分:4)

给定语料库中每个标记的tfidf值(或最有意义的标记),您可以计算文档的稀疏表示。 这是在sklearn TFIDFVectorizer中实现的。

正如其他用户所指出的,这不是您的任务的最佳解决方案。 你应该考虑嵌入。

最简单的解决方案是在单词级别使用嵌入,例如FastText框架提供的嵌入。 然后,您可以通过将构成它的单个单词的嵌入相加来为整个文档创建嵌入。

替代方法包括使用某些Doc2Vec框架(例如gensimDL4J框架)直接在文档级别培训嵌入。

答案 3 :(得分:0)

您也可以将LDA或LSI模型用于文本语料库。这些方法(以及其他方法,如wor2vec和doc2vec)可以根据文档所涉及的含义和主题将文档概括为固定长度向量。

了解更多: https://radimrehurek.com/gensim/models/ldamodel.html

答案 4 :(得分:0)

我听说有three approaches from Dr. Golden
-余弦角分离
-汉明距离
-潜在语义分析(LSA)或潜在语义索引(LSI)
这些方法基于语义相似性。

我还听说某公司使用名为Spacy的工具来汇总文档以进行相互比较。