爲了確定相關性得分的任何串出一組給定對查詢串串的,你的情況「紅色賽車」,你需要一個信息檢索相似性度量。
Okapi BM25是這樣的相似性度量。由於這個深入探究文本索引的領域,您可能需要做一些學習,然後才能自己實現它。
下面是該算法
![Okapi BM25 algorithm](https://i.stack.imgur.com/U1Gq4.png)
d的定義是文檔,即,在你的情況單行。 Q是查詢,其中包括所有的Q_I,並IDF是inverse document frequency。
這個算法背後的直覺是創造出得分每學期Q中Q_I,這是基於總出現在所有字符串上,即串存在很多獲得排名較低,因爲他們沒有攜帶信息(大的英文文本通常會像be,have等字符串),並根據字符串中出現的內容進行搜索。這意味着如果一個小文本包含一個給定的詞,例如火箭,經常。這個術語對於小文本來說更爲重要,即使這個術語出現次數是經常出現的次數的2倍,那麼它的長度也會比10倍長。
如果您想了解更多信息,可以閱讀鏈接wiki文章,或閱讀下列紙張的一個開始:Inverted files for text search engines。
如果你不想自己做搜索。您可以使用圖書館,例如whoosh.因爲它說,在其網站上
嗖是一種快速,多特徵的全文索引和搜索庫 純Python實現
進一步使其具有
可插拔評分算法(包括BM25F),文本分析,存儲, 發帖格式等。
這意味着您可以更改相似性度量,它可以確定相關性,以便獲得您的應用程序所需的行爲。至少在某種程度上。
在執行搜索時,必須首先創建一個索引,這被描述爲here。之後,您可以根據需要查詢索引。有關更多信息和圖書館幫助,請參閱文檔。
您可能正在尋找類似[編輯距離](https://en.wikipedia.org/wiki/Edit_distance) – languitar
歡迎來到SO。你能告訴我們你到目前爲止嘗試過的代碼嗎? –
「輸出是按相關性排序」,您應先定義相關性 –