基于文本分类的病历自动归类算法案例代码
时间: 2023-06-25 11:02:05 浏览: 109
基于Python实现上下消化道病历分类【100010696】
以下是一个基于文本分类的病历自动归类算法案例代码:
```python
import pandas as pd
import numpy as np
import jieba
import re
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
from sklearn.model_selection import train_test_split
# 读取数据
data = pd.read_csv('medical_records.csv', encoding='gbk')
# 数据预处理
def clean_text(text):
# 去除数字
text = re.sub(r'\d+', '', text)
# 去除英文和标点符号
text = re.sub(r'[a-zA-Z’!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]+', '', text)
# 去除空格
text = re.sub(r'\s+', '', text)
# 分词
words = jieba.cut(text)
return ' '.join(words)
data['cleaned_text'] = data['text'].apply(lambda x: clean_text(x))
# 特征提取和模型训练
tfidf = TfidfVectorizer()
X = tfidf.fit_transform(data['cleaned_text'])
y = data['label']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
clf = MultinomialNB()
clf.fit(X_train, y_train)
# 模型评估
y_pred = clf.predict(X_test)
print('Accuracy:', accuracy_score(y_test, y_pred))
print('Confusion Matrix:', confusion_matrix(y_test, y_pred))
print('Classification Report:', classification_report(y_test, y_pred))
```
其中,`medical_records.csv` 是一个包含病历文本和标签的数据集,`clean_text()` 函数用于对文本进行预处理,去除数字、英文和标点符号,并进行分词。使用 `TfidfVectorizer` 对文本进行特征提取,使用 `MultinomialNB` 进行模型训练和预测。最后使用 `accuracy_score`、`confusion_matrix` 和 `classification_report` 进行模型评估。
阅读全文