[英]Gensim pretrained model similarity
問題:
我使用帶有矢量的手套預訓練模型來重新訓練具有特定領域的模型,例如#cars,經過訓練后,我想在我的領域內找到相似的詞,但是我的詞不在我的領域語料庫中,我相信這是來自手套的向量。
model_2.most_similar(positive=['spacious'], topn=10)
[('bedrooms', 0.6275501251220703),
('roomy', 0.6149100065231323),
('luxurious', 0.6105825901031494),
('rooms', 0.5935696363449097),
('furnished', 0.5897485613822937),
('cramped', 0.5892841219902039),
('courtyard', 0.5721820592880249),
('bathrooms', 0.5618442893028259),
('opulent', 0.5592212677001953),
('expansive', 0.555268406867981)]
在這里,我期望域主體中提到的腿部空間,汽車的寬敞功能。 在具有相似向量的情況下,如何排除手套向量?
謝謝
您不能從已經訓練的模型中排除單詞。 我不知道您在哪個框架上工作,但我會在Keras中為您提供示例,因為它很容易理解其意圖。
您可以做的是使用“嵌入”層,用GloVe“知識”填充它,然后繼續使用語料庫進行訓練,以便該層將學習單詞並將其適合您的特定領域。 您可以在Keras博客中了解更多信息
一組簡單的通用單詞向量中可能沒有足夠的信息來按使用域過濾鄰居。
您可以嘗試使用混合加權:將相似性與'spacious'
和'cars'
組合在一起,並以該組合返回最高結果-這可能會有所幫助。
向most_similar()
方法提供多個positive
詞可能會與此近似。 如果您確定干擾/重疊的主要來源,甚至可以使用negative
詞示例,類似於word2vec查找類推候選答案的方式(盡管這也可能會壓制與這兩個域合法相關的有用結果,像'roomy'
)。 例如:
candidates = vec_model.most_similar(positive=['spacious', 'car'],
negative=['house'])
(除了使用諸如“汽車”或“房屋”之類的單個單詞,您還可以嘗試使用由定義域的許多單詞組合而成的向量。)
但是,一個明顯的區別聽起來像是一個研究項目,而不是使用現成的庫/向量輕松實現的目標-可能需要更復雜的方法和數據集。
您也可以嘗試使用一組僅在來自感興趣領域的文本數據集上訓練的向量,從而確保單詞的詞匯和感覺都在該領域內。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.