我们有一个文档库(单词和纯文本),可以包含多达1000、2000甚至更多的项目。每个文档可能包含数千个单词。有一个参考文件提供给我们,我们应该从池中语义上找到与此参考文件最接近的匹配项。
我们首先使用了SQL Server 2017的语义搜索功能,但返回的记录不超过10个,这是一个限制!市场上有哪些其他技术或工具可以满足此目的。我们更喜欢利用Microsoft的认知工具和服务,但我们对任何其他选择都持开放态度,包括可以提供帮助的开源。
答案 0 :(得分:1)
如果文件具有技术性,我建议您研究TF-IDF方法。 TF-IDF会查看文档中术语的频率(TF),然后将其乘以反向文档频率(IDF),以衡量整个语料库中术语的稀缺性。这里的想法是:您经常使用但在整体语料库中很少使用的单词可能使它成为文档含义的重要术语。然后将相似性度量(例如余弦相似性)应用于TFIDF,以查找在TFIDF得分方面具有相似特征的文档(即,相对唯一术语的相似过度使用)
如果这些文本本质上讲技术性较差,则可以看一下Word嵌入方法,例如Document2Vec-基本上,它们使用带有多维矢量的训练集。这些多维向量试图捕获单词的含义,这意味着您不依赖于所使用的相同关键字(TFIDF就是这种情况)。
现有的实现方式(尤其是基于Python的)已经存在,但是Azure可能也可以促进这些技术的实现(参见HDInsight https://docs.microsoft.com/en-us/azure/architecture/data-guide/technology-choices/natural-language-processing)。您还可以查找可立即使用其中某些功能的ElasticSearch。