【问题标题】:Extracting features from list of strings从字符串列表中提取特征
【发布时间】:2020-10-06 15:49:45
【问题描述】:

我有一个字符串列表和一个看起来像这样的字符串:

    mylist = ["the yam is sweet", "what is the best time to come", "who ate my food", "no empty food on the table", "what can I do to make you happy"]  # about 20k data
    myString1 = "Is yam a food"  # String can be longer than this
    myString2 = "should I give you a food"
    myString3 = "I am not happy"

我想将每个 myString 与列表中的每个字符串进行比较,并收集三个不同列表中的相似度百分比。所以最终的结果会是这样的:

   similar_string1 = [70, 0.5, 50, 55, 2]
   similar_string2 = [50, 0.5, 70, 85, 2]
   similar_string3 = [20, 15, 0, 5, 80]

所以 mystring1 将与 mylist 中的每个字符串进行比较并计算相似度百分比。与 myString2 和 myString3 相同。然后将这些百分比中的每一个收集到一个列表中,如上所示。

我读到有人可以使用 TF-IDF 对 mylist 和 mystring 进行矢量化,然后使用余弦相似度来比较它们,但我以前从未做过类似的事情,如果有人有想法、流程或代码,我会喜欢的帮助我开始。

谢谢

【问题讨论】:

    标签: python neural-network nlp


    【解决方案1】:

    获得余弦相似度的python实现已经在Calculate cosine similarity given 2 sentence strings中讨论过

    你可以查看上面的链接并使用下面的代码sn-p:

    '''
    vector1 = text_to_vector(myString1)
    vector2 = text_to_vector(myString2)
    vector3 = text_to_vector(myString3)
    similar_string1 = []
    similar_string2 = []
    similar_string3 = []
    
    for ele in mylist:  
        vector = text_to_vector(ele)
        cosine = get_cosine(vector1, vector)
        similar_string1.append(cosine)
        cosine = get_cosine(vector2, vector)
        similar_string2.append(cosine)
        cosine = get_cosine(vector3, vector)
        similar_string3.append(cosine)
    
    
            
    print(similar_string1)
    print(similar_string2)
    print(similar_string3)
    '''
    

    变量的名称与您在问题中提到的相同。显然,这段代码可以根据你的需求进行优化。

    如果您有任何不明白的地方,请告诉我。

    【讨论】:

      猜你喜欢
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多