我需要在源(输入)和目标(数据库记录)之间找到匹配对。 我使用具有余弦相似性的tf-idf来计算匹配。
但是我得到的正确匹配对得分较少,即使它有比其他更常见的单词,在其他一些情况下,我得到超过10-12对的相同余弦得分,这是所有得分中最高的
例如:
**source**
S1: FEBCO 905532 1/2 - 1 860-AG METAL
**Target**
T1: febco® 601-m lead free air gap drain for use with 860/lf860 860u/lf860u series 1/2 to 1 in reduced pressure assemblies
.
.
.
.
.
.
Tn: watts radiant™ 81008809 tape mat, 13 ft - 4 in l x 3 ft w, 40 sq-ft coverage, 240 vac watts radiant™ tape mat, 3 ft width, 13 ft - 4 in length, 40 sq-ft coverage, 240 vac, orange
以下是我正在遵循的步骤
以下是代码
def check_similarity(data,vocab):
vectorizer = TfidfVectorizer(token_pattern=r'\S+',vocabulary=set(vocab),lowercase=False)
print("vectorizer defined:\n")
tf_idf_matrix = vectorizer.fit_transform(data['productdescriptionSource_processed'])
allpair_similarityVector=cosine_similarity(tf_idf_matrix[0,],tf_idf_matrix[1:tf_idf_matrix.shape[0],])
desired_similarityVector=np.argsort(allpair_similarityVector)
similarityVector=allpair_similarityVector.shape[1]
desired_similarityVector=np.argsort(allpair_similarityVector)
similarityVector=allpair_similarityVector.shape[1]
matchedtargetindex=desired_similarityVector[0,similarityVector-4:similarityVector-1]
cosinescore=allpair_similarityVector[0,matchedtargetindex]
matchedtargetindex=matchedtargetindex+1
return matchedtargetindex
在上面的代码中: 数据:源 - 目标语料库
词汇:仅在源描述中的单词
我得到的结果是
OUTPUT1: 对于源 - 目标对 来源:FEBCO 905532 1/2 - 1 860-AG METAL 目标:febco®601-m无铅气隙排水,适用于减压组件中的860 / lf860 860u / lf860u系列1/2至1
我得到了余弦分数 的 0.409562707 (这是正确的一对)
OUTPUT2: 但我对 0.5 的最高余弦分数
来源:FEBCO 905532 1/2 - 1 860-AG METAL 目标:瓦特radiant™81008809磁带垫,13英尺-4英寸3英尺3英尺宽,40平方英尺覆盖范围,240瓦特瓦特辐射™磁带垫,3英尺宽,13英尺-4英寸长,40平方英尺的覆盖面,240真空,橙色
问题: 是否有任何其他术语权重指标,以便我获得正确匹配对的最高余弦分数?