docs: def jaccard_sims(feature_list):
      """Compute Jaccard similarities between all the observations in the feature list.
  
      Args:
          feature_list: a list of dictionaries, each having structure as
                        { 'md5' : String, 'features': list of Strings }
  
      Returns:
          list of dictionaries with structure as 
          {'source': md5 String, 'target': md5 String, 'sim': Jaccard similarity Number}
      """
  
      sim_info_list = []
      for feature_info in feature_list:
          md5_source = feature_info['md5']
          features_source = feature_info['features']
          for feature_info in feature_list:
              md5_target = feature_info['md5']
              features_target = feature_info['features']
              if md5_source == md5_target: 
                  continue
              sim = jaccard_sim(features_source, features_target)
              if sim > .5:
                  sim_info_list.append({'source': md5_source, 'target': md5_target, 'sim': sim})
  
      return sim_info_list