基于bert-base-chinese的中文文本处理
python程序,要求:可以批量处理txt里面的内容,用bert库来处理文件内容,按{姓名,年龄,性别,生源地,病史,病史症状,初诊,处方,二诊,处方,三诊,结果,按语}等类别来整理,然后excel表格的形式导出。
如果有其他的中文分类方法的也可以。
import pandas as pd
from transformers import BertTokenizer, BertForTokenClassification
from torch.utils.data import DataLoader
# 读取txt文档
with open('medical_records.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 加载预训练的BERT模型和分词器
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
model = BertForTokenClassification.from_pretrained('bert-base-chinese')
# 对文本进行分词
inputs = tokenizer(text, return_tensors="pt")
# 使用BERT模型进行预测
outputs = model(**inputs)
# 提取预测结果中的信息
predictions = outputs.logits.argmax(dim=-1)
# 将预测结果转换为标签
labels = [tokenizer.convert_ids_to_tokens(idx) for idx in predictions[0].tolist()]
# 将标签转换为信息
info = {'姓名': [], '年龄': [], '性别': [], '病名': [], '第一次诊断': [], '第二次诊断': [], '处方': []}
for label in labels:
if label == 'B-NAME':
info['姓名'].append(label)
elif label == 'B-AGE':
info['年龄'].append(label)
elif label == 'B-GENDER':
info['性别'].append(label)
elif label == 'B-DISEASE':
info['病名'].append(label)
elif label == 'B-DIAGNOSIS1':
info['第一次诊断'].append(label)
elif label == 'B-DIAGNOSIS2':
info['第二次诊断'].append(label)
elif label == 'B-PRESCRIPTION':
info['处方'].append(label)
# 将信息写入Excel文件
df = pd.DataFrame(info)
df.to_excel('medical_info.xlsx', index=False)
大概代码就这些,运行时出现bert-base-chinese模型加载不了,想本地运行可是下载模型后还是不知道怎么调用,希望给位可以解决问题,谢谢