簡體   English   中英

尋找相似句子的 Gensim 和 Annoy

[英]Gensim and Annoy for finding similar sentences

我在數據庫中有大量句子,我想找到這些句子中與用戶輸入的單個句子最相似的句子。

看起來我可以用annoy 和 gensim來做到這一點,但我能看到的所有例子都使用 word2vec ,我認為這對查找單個相似的單詞很有用,但不適用於句子。 但是,我注意到 AnnoyIndexer() 可以采用 word2vec 或 doc2vec 模型。

我是否正確地認為過程是相同的,但是將 word2vec 模型與 doc2vec 模型交換並使用搜索句子的 doc2vec 向量?

我是否需要以任何方式使用預先訓練的詞嵌入,還是我只是用我數據庫中的句子語料庫來訓練 doc2vec 模型?

謝謝!

Doc2Vec不需要任何預先訓練的詞向量:你只需在你的語料庫上訓練它,它就會學習它需要什么。

為了比較句子,您還可以嘗試計算每個句子的向量,該向量是所有單詞的詞向量的總和或平均值。

如果句子不太長,您還可以考慮“Word Mover's Distance”,可從gensim word-vectors 作為.wmdistance(word_list, word_list) (與兩個固定長度向量之間的簡單相似性相比,計算這些成對距離要昂貴得多——但它可以更好地捕捉人類對相似性的感知。)

請注意,ANNOY 只是一種索引優化,它以犧牲精度為代價來提高速度。 僅當尋找.most_similar()的蠻力方法.most_similar()計算所有相似性然后排序以找到前 N 個)太慢時才有必要。 它將使用更多的內存來建立索引,並且為了速度而接受有時無法找到准確的真正最近鄰居的風險。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM