2 回答

TA貢獻1963條經驗 獲得超6個贊
嵌入
讓我們退后一步,了解什么是 word2vec。Word2vec(如 Glove、FastText 等)是一種將單詞表示為向量的方法。ML 模型不理解單詞,它們只理解數字,因此當我們處理單詞時,我們希望將它們轉換為數字(向量)。One-hot encoding 是一種將單詞編碼為向量的幼稚方式。但是對于大詞匯量,one-hot 編碼變得太長了。單熱編碼詞之間也沒有語義關系。
DL 帶來了詞的分布式表示(稱為詞嵌入)。這些詞嵌入的一個重要特性是相關詞之間的向量距離與不相關詞之間的距離相比很小。IEdistance(apple,orange) < distance(apple,cat)
那么這些嵌入模型是如何訓練的呢?嵌入模型是在(非常)龐大的文本語料庫上訓練的。當您擁有大量文本語料庫時,模型將了解到在同一上下文中(多次)使用了蘋果是橙色的。它將了解到蘋果和橙子是相關的。所以要訓練一個好的嵌入模型,你需要大量的文本語料庫(不是獨立詞,因為獨立詞沒有上下文)。
然而,很少有人從頭開始訓練詞嵌入模型,因為好的嵌入模型在開源中可用。但是,如果您的文本是特定領域的(比如醫學),那么您可以對公開可用的詞嵌入進行遷移學習。
詞匯量不足 (OOV) 詞
像 word2vec 和 Glove 這樣的詞嵌入不能返回 OOV 詞的嵌入。然而,像 FastText 這樣的嵌入(感謝@gojom 指出)通過將 OOV 詞分解成 n-gram 字符并通過總結構成詞的子詞向量來構建向量來處理 OOV 詞。
問題
來到你的問題,
案例 1:假設用戶輸入了一個單詞WAL
,首先它不是一個有效的英語單詞,因此它不會出現在詞匯表中,并且很難想到它的含義完整向量。像 FastText 這樣的嵌入通過將它們分解成 n-gram 來處理它們。這種方法為拼錯的單詞或俚語提供了良好的嵌入。
案例 2:假設用戶輸入一個單詞WALL
,如果您打算類似地使用向量來查找最接近的單詞,它將永遠不會接近,Walmart
因為它們在語義上是不相關的。它會更接近于像window, paint, door
.
結論
如果您搜索的是語義相似的詞,那么使用向量嵌入的解決方案會很好。另一方面,如果您的搜索基于詞典,那么向量嵌入將無濟于事。

TA貢獻1900條經驗 獲得超5個贊
如果您想walmart
從像 一樣的片段中查找wal
,則更有可能使用以下內容:
通過所有條目的子字符串或前綴搜索;或者
字符 n-gram 的反向索引;或者
針對所有條目或可能候選的子集計算的某種編輯距離
也就是說,從您的示例所需的輸出來看,這并不是詞向量的真正工作,即使某些算法(如 FastText)能夠根據詞片段與訓練過的詞的重疊提供粗略的向量。
如果實際上您想找到類似的商店,理論上詞向量可能很有用。但是給出您的示例輸入的問題是,這種詞向量算法需要上下文中使用的標記示例,來自在類似自然語言的關系中共同出現的標記序列。并且您需要大量具有不同上下文示例的數據,以捕捉相互關系的微妙層次。
雖然您現有的單列短實體名稱(商店)無法提供,但如果您有更豐富的數據源,也許您有其他適用的東西。一些想法可能是:
單個客戶訪問過的商店列表
攜帶相同產品/UPC 的商店列表
來自更大語料庫的文本(例如網絡爬行文本,或者維基百科),其中每個商店名稱都有足夠的上下文用法。(您只需丟棄從此類訓練中創建的所有其他單詞 - 但您感興趣的令牌的向量可能仍然在您的領域中使用。)
添加回答
舉報