簡體   English   中英

在 python 中測量多種語言文本之間相似性的最佳方法是什么?

[英]What is the best approach to measure a similarity between texts in multiple languages in python?

所以,我有一個任務,我需要測量兩個文本之間的相似性。 這些文本是雜貨店產品的簡短描述。 它們總是包括產品的名稱(例如牛奶),它們可能包括生產商和/或尺寸,還可能包括產品的一些其他特征。

我有一整套這樣的文本,然后,當新的文本到來時,我需要確定我的數據庫中是否有類似的產品,並衡量它們的相似程度(從 0 到 100%)。

問題是:文本可能有兩種不同的語言:烏克蘭語和俄語。 此外,如果有外國品牌(如Coca Cola ),它會用英文寫。

我解決這個任務的最初想法是獲取多語言詞嵌入(不同語言的相似詞位於附近)並找到這些文本之間的距離。 但是,我不確定這會有多有效,如果可以,從什么開始。

因為我擁有的每個文本只是一組產品特征,一些基於上下文的詞嵌入可能不起作用(我不確定這個陳述,這只是我的假設)。

到目前為止,我一直在嘗試熟悉MUSE框架,但是我遇到了faiss安裝的問題

因此,我的問題是:

  • 我的詞嵌入想法值得嘗試嗎?
  • 有沒有更好的方法?
  • 如果詞嵌入的想法沒問題,我應該使用哪些?

注意:我有 Windows 10(以防某些庫不能在 Windows 上運行),我需要該庫來處理烏克蘭語和俄語。

提前感謝您的幫助! 任何建議將不勝感激!

您可以嘗試采用FaissMilvus來搜索相似向量。 在 windows 操作系統中安裝 docker 很容易。

數據是否包含大量數字信息(例如營養成分)? 如果是,這可以用來在一定程度上比較產品。 我的建議是不要將其視為語言問題,而應將其視為模式匹配,因為這些文本可能是使用翻譯記憶庫的半自動方法生成的。 因此,跨語言的相似文本可能具有相似的形式,如果是這樣,則應將其用於比較。

多語言文本比較不是一項簡單的任務,我認為沒有任何相當好的開箱即用解決方案。 是的,存在多語言嵌入,但必須對其進行微調才能處理特定的下游任務。

詞嵌入在語言內部是有意義的,但不能轉移到其他語言。 對這個陳述的一個觀察是:如果兩個詞在句子中同時出現很多,它們的嵌入可以彼此靠近。 因此,由於兩種通用語言之間沒有一對一的映射,因此您無法比較詞嵌入。

但是,如果兩種語言與一對一的映射詞足夠相似,您可能會相信您的想法。

總而言之,如果沒有翻譯,您的想法不再適用於兩種通用語言。

假設您的任務是關於細粒度的實體識別。 我認為您有一個定義明確的實體:品牌、尺寸等......因此,這些定義產品的每個特征都可以是一個向量,這意味着您的產品可以用一個矩陣來表示。 您可以使用嵌入來表示每個特征。 或者嵌入和 one-hot 向量的混合。

這里是如何。

  1. 定義產品功能列表:產品名稱、品牌名稱、尺寸、重量。
  2. 對於每個產品功能,您需要一個文本識別 model:例如,通過品牌識別,您可以找到文本的哪一部分是其品牌名稱。
  3. 如果可以對所有子文本進行統一的語言表示,請使用機器翻譯。 例如Coca Cola to ru Кока-Кола, en Coca Cola
  4. 使用上下文嵌入(即擁抱臉多語言 BERT 或更好的東西)將提示文本轉換為一個向量。
  5. 為了比較兩個產品,比較它們的特征向量:兩個特征數組之間的平均相似度是多少。 您還可以決定每個特征的權重。
  6. 嘗試其他矢量化方法。 也許你不想混合品牌仿冒品:“可口可樂”類似於“酷可樂”。 所以,也許嵌入對於品牌名稱、尺寸和重量來說並不好,但對於產品名稱來說就足夠了。 如果您想要完全匹配,則需要 hash function 的文本。 關於他們的多語言提示工程文本。
  7. 您還可以擴展每個特征向量,將多個嵌入或源語言的一個熱向量串聯起來,諸如此類。

這里沒有明確的答案,您需要進行試驗和測試,看看什么是最好的解決方案。 您可以創建一個測試集並為您的解決方案制定基准。

暫無
暫無

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

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