优化这段代码 s_len = [] s_tokens = sent_tokenize(text) for i in s_tokens: w_tokens = word_tokenize(i) s_len.append(len(w_tokens)) x_axis = np.arange(0,len(s_len)) plt.scatter(x_axis,s_len) plt.show()
时间: 2023-05-25 20:02:54 浏览: 161
s_tokens = sent_tokenize(text)
s_len = [len(word_tokenize(i)) for i in s_tokens]
x_axis = np.arange(len(s_len))
plt.scatter(x_axis, s_len)
plt.show()
相关问题
if "test" in self.path: self.inference = False if self.config.token_type: pad, cls, sep = '[PAD]', '[CLS]', '[SEP]' else: pad, cls, sep = '<pad>', '<cls>', '<sep>' contens = [] with open(self.path, 'r', encoding='utf-8') as f: data_list = f.readlines() for row_data in tqdm(data_list): row_json_data = json.loads(row_data) token_id_full = [] fact = row_json_data['fact'] if self.inference == False: labels = row_json_data['meta']['accusation'] fact_tokens = self.tokenizer.tokenize(fact) len_fact_tokens = len(fact_tokens) if len_fact_tokens <= self.max_seq_len-2: fact_tokens_ = [cls] + fact_tokens + [sep] else: fact_tokens_ = [cls] + fact_tokens[:self.max_seq_len-2] + [sep]
这段代码是用来处理输入数据的,主要是将输入数据转换为模型可以处理的格式。首先根据传入的参数判断是否是测试模式,然后根据配置文件中的token_type参数选择相应的标记符号。接着打开传入的文件,逐行读取数据。对于每一行数据,首先获取事实部分的文本,并将其使用tokenizer进行分词。如果文本长度小于等于max_seq_len-2,就在前后添加[CLS]和[SEP]标记符号,否则只保留前max_seq_len-2个token,然后同样在前后添加标记符号。最后将处理后的文本转化为token_id_full,并将其和标签(如果不是测试模式)一起加入到contens列表中。
def build_predict_text(self, text): token = self.config.tokenizer.tokenize(text) token = ['[CLS]'] + token seq_len = len(token) mask = [] token_ids = self.config.tokenizer.convert_tokens_to_ids(token) pad_size = self.config.pad_size if pad_size: if len(token) < pad_size: mask = [1] * len(token_ids) + ([0] * (pad_size - len(token))) token_ids += ([0] * (pad_size - len(token))) else: mask = [1] * pad_size token_ids = token_ids[:pad_size] seq_len = pad_size ids = torch.LongTensor([token_ids]) seq_len = torch.LongTensor([seq_len]) mask = torch.LongTensor([mask]) return ids, seq_len, mask
这段代码定义了一个名为 `build_predict_text` 的函数,该函数的作用是将输入的文本转化为 BERT 模型输入的格式。具体来说,该函数首先使用 BERT 模型配置对象中的 tokenizer 对输入文本进行分词,并在分词结果的开头添加 `[CLS]` 标记。然后,函数会根据模型配置对象中的 `pad_size` 参数来对分词后的结果进行填充,以保证每个输入样本的长度一致。
接下来,函数会将分词后的结果转换为对应的 token id,并使用 `torch.LongTensor` 将其转换为张量数据类型。此外,函数还会将输入样本的长度和填充掩码也转换为张量数据类型,并一同返回。
总体来说,这段代码的作用是将输入的文本转化为 BERT 模型的输入格式,以便于后续对该文本进行预测。
阅读全文