首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError: TextEncodeInput必须是Union[TextInputSequence,Tuple[InputSequence,InputSequence]] -标记BERT / Distilbert错误

ValueError: TextEncodeInput必须是Union[TextInputSequence,Tuple[InputSequence,InputSequence]] -标记BERT / Distilbert错误
EN

Stack Overflow用户
提问于 2020-08-21 13:59:15
回答 4查看 9.8K关注 0票数 12
代码语言:javascript
复制
def split_data(path):
  df = pd.read_csv(path)
  return train_test_split(df , test_size=0.1, random_state=100)

train, test = split_data(DATA_DIR)
train_texts, train_labels = train['text'].to_list(), train['sentiment'].to_list() 
test_texts, test_labels = test['text'].to_list(), test['sentiment'].to_list() 

train_texts, val_texts, train_labels, val_labels = train_test_split(train_texts, train_labels, test_size=0.1, random_state=100)

from transformers import DistilBertTokenizerFast
tokenizer = DistilBertTokenizerFast.from_pretrained('distilbert-base-uncased

train_encodings = tokenizer(train_texts, truncation=True, padding=True)
valid_encodings = tokenizer(valid_texts, truncation=True, padding=True)
test_encodings = tokenizer(test_texts, truncation=True, padding=True)

当我试图使用BERT标记器从数据帧中分离时,我得到了一个错误,我们这样做。

EN

回答 4

Stack Overflow用户

发布于 2020-09-13 20:36:43

我也犯了同样的错误。问题是我的列表中没有,例如:

代码语言:javascript
复制
from transformers import DistilBertTokenizerFast

tokenizer = DistilBertTokenizerFast.from_pretrained('distilbert-base-german-cased')

# create test dataframe
texts = ['Vero Moda Damen Übergangsmantel Kurzmantel Chic Business Coatigan SALE',
         'Neu Herren Damen Sportschuhe Sneaker Turnschuhe Freizeit 1975 Schuhe Gr. 36-46',
         'KOMBI-ANGEBOT Zuckerpaste STRONG / SOFT / ZUBEHÖR -Sugaring Wachs Haarentfernung',
         None]

labels = [1, 2, 3, 1]

d = {'texts': texts, 'labels': labels} 
test_df = pd.DataFrame(d)

因此,在我将Dataframe列转换为list之前,我删除了所有None行。

代码语言:javascript
复制
test_df = test_df.dropna()
texts = test_df["texts"].tolist()
texts_encodings = tokenizer(texts, truncation=True, padding=True)

这对我很有效。

票数 23
EN

Stack Overflow用户

发布于 2021-06-26 19:48:53

在我的例子中,我必须设置is_split_into_words=True

https://huggingface.co/transformers/main_classes/tokenizer.html

要编码的序列或序列批次。每个序列可以是一个字符串或字符串列表(预标记化的字符串)。如果序列以字符串列表的形式提供(预标记化),则必须设置is_split_into_words=True (以消除一批序列的多义性)。

票数 3
EN

Stack Overflow用户

发布于 2020-08-21 14:00:40

代码语言:javascript
复制
def split_data(path):
  df = pd.read_csv(path)
  return train_test_split(df , test_size=0.2, random_state=100)

train, test = split_data(DATA_DIR)
train_texts, train_labels = train['text'].to_list(), train['sentiment'].to_list() 
test_texts, test_labels = test['text'].to_list(), test['sentiment'].to_list() 

train_texts, val_texts, train_labels, val_labels = train_test_split(train_texts, train_labels, test_size=0.2, random_state=100)

from transformers import DistilBertTokenizerFast
tokenizer = DistilBertTokenizerFast.from_pretrained('distilbert-base-uncased

train_encodings = tokenizer(train_texts, truncation=True, padding=True)
valid_encodings = tokenizer(valid_texts, truncation=True, padding=True)
test_encodings = tokenizer(test_texts, truncation=True, padding=True)

尝试更改拆分的大小。看起来不错。这意味着拆分数据不足以让标记器对其进行标记化

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63517293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档