SentenceTransformer 编码在尝试嵌入文档列表时抛出模糊的“TypeError: 'float' object not scriptable”

问题描述 投票:0回答:1

我的目标是使用 BERTopic 对一组已分解为句子级别的议会演讲进行半监督、引导式主题建模,以找出他们正在谈论的能源生产模式。我使用基本的

tfidf + cosine_similarity
组合来计算我的句子和特定于主题的关键字列表之间的相似性,并将关联的标签分配给跨越阈值相似性分数的句子子集,并按照惯例标记不明确的句子
-1
.

在我最近的尝试中,我决定单独创建句子嵌入,以查看错误是否消失,因为我的 topic_model 在使用其默认嵌入模型和参数时也导致了相同的错误。

我的

docs
列表包含我的数据集中的小写句子(我还尝试在一些尝试中删除标点符号)。我不确定我是否缺少任何关键依赖项,或者也许我只是缺少一个关键的预处理步骤?

我尝试运行的代码片段:

docs = df['docs'].to_list()
assigned_labels = df['similarity_label'].to_list()

embedding_model = SentenceTransformer("all-MiniLM-L6-v2")
embeddings = embedding_model.encode(docs, show_progress_bar=True, batch_size=18)

我收到的错误堆栈:

     18 embedding_model = SentenceTransformer(\"all-MiniLM-L6-v2\")
---> 19 embeddings = embedding_model.encode(docs, show_progress_bar=True, batch_size=18)

    484     sentences_batch = sentences_sorted[start_index : start_index + batch_size]
--> 485     features = self.tokenize(sentences_batch)

--> 922     return self._first_module().tokenize(texts)

    152 batch1, batch2 = [], []
    153 for text_tuple in texts:
--> 154     batch1.append(text_tuple[0])
    155     batch2.append(text_tuple[1])
    156 to_tokenize = [batch1, batch2]

TypeError: 'float' object is not subscriptable"

我不明白这些漂浮物在哪里,我该如何处理它们?

python-3.x huggingface-transformers embedding sentence-transformers
1个回答
0
投票

您的

docs
列表中可能包含不是
strings
的元素,可能是浮点数或其他不可切片的元素。

之前

embedding_model = SentenceTransformer("all-MiniLM-L6-v2")

您可以添加

docs = df['docs'].dropna().astype(str).tolist()

assigned_labels = df['similarity_label'].dropna().tolist()

确保元素是

strings
并且没有任何
NaN

© www.soinside.com 2019 - 2024. All rights reserved.