Python和TensorFlow中的产品匹配



我正在尝试在不同卖家的零售文章之间进行产品匹配。他们对同一篇文章使用不同的名称。我想将几个卖家的文章与我数据库中的文章进行比较,看看它们是否相同。我使用整个名称进行比较,而不是每个单词。

我在Python中使用TensorFlow应用了这个;使用USE(通用句子编码器)多语言(我在西班牙语工作),我获得了每篇文章的词嵌入和相关矩阵。这样我可以看到最近的文章。

但是我想用字典来表示文章的名称:键是数据库中的文章名称,值是描述文章的不同组合(可能性)。我想把这个像输入一样的字典传递给模型,但是我不知道怎么做。

获取词嵌入的代码:

module_url = "https://tfhub.dev/google/universal-sentence-encoder-multilingual/3"
model = hub.load(module_url)
print ("module %s loaded" % module_url)
model(input)

获取热图以显示相似之处:

def plot_similarity(labels, features, rotation):
corr = np.inner(features, features)
sns.set(font_scale=1.2)       # Tamaño de la fuente del heatmap.
plt.subplots(figsize=(30,30))  #Para aumentar el tamaño por defecto del heatmap.
g = sns.heatmap(
corr,                     # Datos
annot=True,               # Muestra el valor numérico de la correlación.
xticklabels= labels,      # Etiquetas eje X.
yticklabels= labels,      # Etiquetas eje Y.
vmin=0.8,                 # Era = 0, aumentamos el valor para que se muestren la progresión de color a partir del 80 %.
vmax=1,
cmap="YlOrRd")            # Color del heatmap.
g.set_xticklabels(labels, rotation=rotation)
g.set_title("Semantic Textual Similarity")
#Guardamos el gráfico y lo exportamos:
plt.savefig('Heatmap exported.png', dpi = 400)
files.download('Heatmap exported.png')
def run_and_plot(messages_):
message_embeddings_ = embed(messages_)
plot_similarity(messages_, message_embeddings_, 90)

然后我运行:

run_and_plot(my_list_of_articles)

得到热图

我想改变'my_list_of_articles'使用字典。此时,该对象是一个Python列表。

我知道我需要训练一个非结构化文本的神经网络;如果我测试相同文章的许多组合,神经网络可以学习哪篇文章是,但我不知道如何做到这一点。

提前谢谢你。

我假设你有这样的东西或者创建一个,如果你还没有

product_map = { 'product_A' : ['product A description_1' , 'product A description_2'],
'product_B' : ['product A description_1' , 'product A description_2']}
import numpy as np
def run_and_plot(product_map):
final_opt={}
for product in product_map:
# below expand_dims may or may not be required as most model accept batch size too so you may have to do this
msg = np.expand_dims(product_map[product]) 
message_embeddings_ = embed(msg)
if product in final_opt:
final_opt[product].append(message_embeddings_)
else:
final_opt[product][message_embeddings_]


final_opt将像这样

{ 'product_A': ['embeddings for description_1 ', 'embeddings for description_2 ' ], 
'product_B': ['embeddings for description_1 ', 'embeddings for description_2 ' ] }

你可以通过

绘制每个产品描述的相似度
for product in final_opt:
plot_similarity(product, final_opt[product], rotation):

相关内容

  • 没有找到相关文章

最新更新