首页 > 解决方案 > 根据含义比较文本

问题描述

我们有一个文档池(单词和纯文本),其中可能包含多达 1000、2000 个甚至更多的项目。每个文档可能包含数千个单词。有一个参考文档提供给我们,我们应该从池中找到与该参考文档语义最接近的匹配项。

我们首先使用了 SQL Server 2017 的语义搜索功能,但它返回的记录不超过 10 条,这是一个限制!市场上还有哪些其他技术或工具可以实现这一目的。我们更喜欢利用 Microsoft 的认知工具和服务,但我们对任何其他选项持开放态度,包括可以提供帮助的开源。

标签: nlpazure-machine-learning-studioazure-cognitive-services

解决方案


如果文档具有技术性质,我建议您研究 TF-IDF 方法。TF-IDF 查看文档中词条的频率 (TF) 并将其与逆文档频率 (IDF) 相乘,IDF 是衡量整个语料库中词条稀缺程度的指标。那里的想法是:一个你经常使用但在整个语料库中很少使用的词,很可能使它成为文档含义的重要术语。然后将相似性度量(例如余弦相似性)应用于 TFIDF 以查找在 TFIDF 分数方面具有相似配置文件的文档(即,类似地过度使用相对独特的术语)

如果文本本质上技术含量较低,您可以查看 Word Embedding 方法,例如 Document2Vec - 基本上它们使用具有多维向量的训练集。这些多维向量试图捕捉单词的含义,这意味着您不依赖于所使用的相同关键字(TFIDF 就是这种情况)。

现有的实现已经存在(尤其是基于 Python),但 Azure 可能也可以促进这些技术(参见 HDInsight https://docs.microsoft.com/en-us/azure/architecture/data-guide/technology-choices/natural-语言处理)。您还可以查找开箱即用的 ElasticSearch。


推荐阅读