前提
現在、このサイトを参考にsentence-BERTを用いてベクトル化した単語に対してcos類似度が閾値未満(<0.1)の単語に対応する別データの単語を代入するコードを書こうとしていますが、どうしてもうまくいかず、本サイトで助けをお借りしたいと思いました。
実現したいこと
- ベクトル化した単語に似ている単語を別データから代入するfor文を書く
該当のソースコード
python
1import scipy.spatial 2 3sentence_vectors = model.encode(sentences) 4sentence_vectors 5 6queries = df_diff_second 7query_embeddings = model.encode(queries).numpy() 8 9for query, query_embedding in zip(queries, query_embeddings): 10 11 distances = scipy.spatial.distance.cdist([query_embedding], sentence_vectors, metric="cosine")[0] 12 13 results = zip(range(len(distances)), distances) 14 results = sorted(results, key=lambda x: x[1]) 15 16 for idx, distance in results[:]: 17 try: 18 if 0.0001 < distance < 0.1: 19 print("\n\n======================\n\n") 20 print("Query:", query) 21 print("\nTop 5 most similar sentences in corpus:") 22 print(sentences[idx], "(Score: %.4f)" % distance) 23 df[idx] = query 24 print(df[idx]) 25 except KeyError: 26 continue
2番目のfor文にて単語の入れ替えをしようとしているのですが、どうしてもうまくいきません。
有識者の方がおりましたらご教授いただきたいです。
あなたの回答
tips
プレビュー