[英]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 上运行),我需要该库来处理乌克兰语和俄语。
提前感谢您的帮助! 任何建议将不胜感激!
您可以尝试采用Faiss
的Milvus来搜索相似向量。 在 windows 操作系统中安装 docker 很容易。
数据是否包含大量数字信息(例如营养成分)? 如果是,这可以用来在一定程度上比较产品。 我的建议是不要将其视为语言问题,而应将其视为模式匹配,因为这些文本可能是使用翻译记忆库的半自动方法生成的。 因此,跨语言的相似文本可能具有相似的形式,如果是这样,则应将其用于比较。
多语言文本比较不是一项简单的任务,我认为没有任何相当好的开箱即用解决方案。 是的,存在多语言嵌入,但必须对其进行微调才能处理特定的下游任务。
词嵌入在语言内部是有意义的,但不能转移到其他语言。 对这个陈述的一个观察是:如果两个词在句子中同时出现很多,它们的嵌入可以彼此靠近。 因此,由于两种通用语言之间没有一对一的映射,因此您无法比较词嵌入。
但是,如果两种语言与一对一的映射词足够相似,您可能会相信您的想法。
总而言之,如果没有翻译,您的想法不再适用于两种通用语言。
假设您的任务是关于细粒度的实体识别。 我认为您有一个定义明确的实体:品牌、尺寸等......因此,这些定义产品的每个特征都可以是一个向量,这意味着您的产品可以用一个矩阵来表示。 您可以使用嵌入来表示每个特征。 或者嵌入和 one-hot 向量的混合。
这里是如何。
Coca Cola
to ru Кока-Кола, en Coca Cola
。这里没有明确的答案,您需要进行试验和测试,看看什么是最好的解决方案。 您可以创建一个测试集并为您的解决方案制定基准。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.