为什么很难使用常规的全文本搜索来搜索非常短的文档,以及要执行的操作。
介绍
我们所有人都一直面临着所谓的全文搜索-通过搜索短语查找文档。最著名的例子是Google搜索。
有许多用于构建全文本搜索的工具。例如,一种非常流行的解决方案是Elasticsearch。在此基础上,可以在具有数千万个文档的庞大数据库中进行搜索。
在DD Planet,我们为B2B采购数据库开发搜索和分析服务,并积极使用Elasticsearch。但是,当我们尝试组织非常短的文档(产品名称)的搜索和比较时,我们遇到了许多问题。
全文搜索的工作方式
包括Elasticsearch在内的大多数全文搜索系统都基于反向索引-一种数据结构,在该数据结构中,对于文档库中的每个单词,都会存储其中出现的所有文档。反向索引用于文本搜索。
让我们从三个文本的基础获得一个语料库:
T0=" »",
T1=" ",
T2=" ",
:
"": {0, 1}
"": {0}
"": {1, 2}
"": {2}
— , . , . , , « ». «» {2}, «» — {0}. , . , {0, 2} c ½. , , TF-IDF, .
, , , -, :
- .
: « » « » « » , , « » « », « ». , .
. : , . , , TF-IDF, . - .
— , , « 4», «4», « », « 4» . .
— Elasticsearch . , , .
- .
, . , « » « Windows» «» .
NLP
NLP . NLP (Natural Language Processing) — , .
NLP - , - . , .
«»
NLP — Paraphrase Identification — (, ) , ( ). : « 17:00» « ». ? , .
. . DeepPavlov.ai [1], , . , .
. ( ), . .. -.
, DeepPavlov, — , .
,
, . ? , , Elasticsearch
: , . .
, : — ,
-
,d ( X , ÿ ) = 0 .X = ÿ -
d ( X , ÿ ) = d ( ÿ , X ) ... - —
, , .d ( X , ž ) ≤ d ( X , ÿ ) + d ( ÿ , ž ) ...
? (Nearest neighbor search) — . vantage-point tree,
Vantage-point tree
, vantage-point tree [3]. ball-tree, . . , . (vantage-point) ( ).
, (
, K
K ,
— , . , , . cosine Doc2Vec — .
d ( X , ÿ ) = F ( X , ÿ ) + ε ⋅ 小号 d Ø C 2 V Ë C ( X ⋅ ÿ )
ε — .
. ? , , , float32. - .
X , , .ÿ
d ( X , ÿ ) = F ( X , ÿ ) + F ( ÿ , X )
. . ,d ( X , ž ) ≤ d ( X , ÿ ) + d ( ÿ , ž )
x=" ", y=" ", z=" "
,
- . , Doc2Vec — .d ( X , ž ) ≥ d ( X , ÿ ) + d ( ÿ , ž ) ...
, , — , , . , : [2]. — , .
. ( ). , , ( ). , . «» .
( ), . .
. ? , . : , ? vantage-point tree , — vantage-point.
, [2], . , . .
« ». , . , .
. , . GitHub pip install nlp-text-search
.
[1] http://docs.deeppavlov.ai/en/master/.
[2] Yianilos (1993). Data structures and algorithms for nearest neighbor search in general metric spaces. Fourth annual ACM-SIAM symposium on Discrete algorithms. Society for Industrial and Applied Mathematics Philadelphia, PA, USA. pp. 311–321. pny93. http://web.cs.iastate.edu/~honavar/nndatastructures.pdf。