首页 > 解决方案 > 如何为 BERT 模型正确添加和返回索引

问题描述

我正在使用来自 stackoverflow 的示例代码的示例代码来应用于我的数据。我要做的唯一更改是添加一个“日期列并将最终输出转换为数据框。我们首先仅在这部分更改示例函数代码以将索引包含到 storage.query 中。

di, idx = self.indexer.query(emb.reshape(1, -1), k=initial_k)
      
        distances = []
        neighbors = []
        contexts = []
        indexes=[] ### change here
     
        for i, index in enumerate(idx.ravel()):
              token = self.all_tokens[index]
              if filter_same_word and (query_word in token or token in query_word): 
                 continue
              distances.append(di.ravel()[i])
              neighbors.append(token)
              contexts.append(self.sentences[self.sentence_ids[index]])
              indexes.append(self.sentences.index(self.sentence_ids[index])) ## change here
              if len(distances) == k:
                 break
              
        return distances, neighbors, contexts, **indexes**
   

当我运行以下代码时:

distances, neighbors, contexts,indexes = storage.query(query_sent='It is an investment bank.', query_word='bank', k=5)
dd = []
date = df["date"]].values.tolist()
for d, w, c , idx in zip(distances, neighbors, contexts,indexes):
    dd.append(
     {'date':date[idx],
       'neigh' : w,
        'score':d,
       'para' : c.strip()})
ad =pd.DataFrame(dd)

我收到以下错误: 在此处输入图像描述

标签: python

解决方案


推荐阅读