如何计算相关性得分?

问题描述

我正在尝试使用来自 json 文件评论来计算相关性分数。每次我尝试运行我的代码时,它只会说“间接”输出。 我做错了什么?

我的代码如下:

import joblib,requests,json,sklearn.metrics,sklearn.model_selection,sklearn.tree,time,math,textblob

import warnings
warnings.filterwarnings("ignore")

response = requests.get("https://appliance_reviews.json")

if response:
    data = json.loads(response.text)
    
    unique = []
    word = []
    for line in data:
        #print(line)
        
        review = line["Review"]
        blob = textblob.TextBlob(review)
        
        for word in blob.words:
            
            if word.lower() not in unique:
                unique.append(word.lower())
   
    for word in unique:
        a = 0
        b = 0
        c = 0
        d = 0
       
        for line in data:
           
            review = line["Review"]
            safety = line["Safety hazard"]
           
            if word in review.lower() and safety == 1:
                a += 1
            if word in review.lower() and safety == 0:
                b += 1
            if word in review.lower() and safety == 1:
                c += 1
            if word in review.lower() and safety == 0:
                d += 1
        
        try:
            rel_score = (math.sqrt(a + b + c + d) * ((a + d) - (c * b))) / math.sqrt((a + b) * (c + d))
        except:

            rel_score = 0
            
        if rel_score >= 4000:
            score.append(word)
    print(word)

解决方法

word 只是当您在给定的最后一行代码上打印时 unique 中的最后一个条目,而不管其得分如何。您刚刚退出了 for 循环,其中 word 是迭代变量。

您确定不想打印 score,它似乎是为了从 unique 中积累高分词吗?

我也认为你的得分被打破了。例如,作为编码,ac 始终相等,bd 也是如此。 “carpet”会影响“car”、“pet”和“carp”的得分。

正如 Prune 在评论中提到的,您对变量名称的乏味选择会使理解代码的目的变得困难。