tfidf在python

时间:2018-06-15 11:03:50

标签: python-3.x cosine-similarity record-linkage tfidfvectorizer

我需要在源(输入)和目标(数据库记录)之间找到匹配对。 我使用具有余弦相似性的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

以下是我正在遵循的步骤

  1. 阅读来源和目标数据
  2. 预处理源和目标数据(小写,删除标点符号)
  3. 对于每个源数据 我已经获取了一个源数据 与目标数据连接。 构造源 - 目标语料库的tf-idf矩阵,其中源描述中的描述为词汇
  4. 以下是代码

    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真空,橙色

    问题: 是否有任何其他术语权重指标,以便我获得正确匹配对的最高余弦分数?

0 个答案:

没有答案