Update README.md
Browse files
README.md
CHANGED
@@ -30,6 +30,22 @@ from transformers import (
|
|
30 |
AutoTokenizer,
|
31 |
)
|
32 |
import jieba
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
def segment(align_preds, words):
|
34 |
pred_data = []
|
35 |
for idx, pred in enumerate(align_preds):
|
@@ -56,12 +72,14 @@ tokenizer = AutoTokenizer.from_pretrained('path', trust_remote_code=True)
|
|
56 |
model = AutoModelForTokenClassification.from_pretrained('path', trust_remote_code=True).cuda()
|
57 |
model.eval()
|
58 |
emr_data = "患者2年前无明显诱因出现左眼视力下降,无眼胀、眼痛,不伴畏光、流泪、异物感,无头疼、恶心、呕吐、头晕、头痛等症状,2014年于我院行左眼球后TENON囊下曲安奈德注药术,并行左眼视网膜激光凝固术。已多次于我科行左眼玻璃体腔药物注射术。治疗后视力有提高。近一周患者再次感视力下降,于2017年12月14日复查OCT提示左眼黄斑水肿明显。建议再次手术治疗。现为求进一步手术治疗,于2018年03月12日收入我院。患者自发病以来,神志清,精神可,饮食可,睡眠可,二便如常,体重无明显变化。无流感样症状。"
|
59 |
-
words = list(jieba.cut(emr_data, cut_all=False
|
|
|
60 |
inputs = tokenizer(words, return_tensors="pt", is_split_into_words=True, ).to("cuda")
|
61 |
logits = model(**inputs).logits.squeeze(0)
|
62 |
preds = logits.argmax(-1)
|
63 |
preds = [p.item() for p, w in zip(preds, inputs.word_ids()) if w != None]
|
64 |
align_preds = align_words(preds, inputs.word_ids())
|
|
|
65 |
segmentation_data = segment(align_preds, words)
|
66 |
print(segmentation_data)
|
67 |
#[SEP]患者2年前无明显诱因出现左眼视力下降,无眼胀、眼痛,不伴畏光、流泪、异物感,无头疼、恶心、呕吐、头晕、头痛等症状,2014年于我院行左眼球后TENON囊下曲安奈德注药术,并行左眼视网膜激光凝固术。已多次于我科行左眼玻璃体腔药物注射术。治疗后视力有提高。
|
|
|
30 |
AutoTokenizer,
|
31 |
)
|
32 |
import jieba
|
33 |
+
|
34 |
+
def align_space(words, words_remove_space, align_preds):
|
35 |
+
|
36 |
+
origin_labels = []
|
37 |
+
|
38 |
+
no_space_idx = 0
|
39 |
+
|
40 |
+
for i, word in enumerate(words):
|
41 |
+
if word == ' ':
|
42 |
+
origin_labels.append(1)
|
43 |
+
if word == words_remove_space[no_space_idx]:
|
44 |
+
origin_labels.append(align_preds[no_space_idx])
|
45 |
+
no_space_idx += 1
|
46 |
+
return origin_labels
|
47 |
+
|
48 |
+
|
49 |
def segment(align_preds, words):
|
50 |
pred_data = []
|
51 |
for idx, pred in enumerate(align_preds):
|
|
|
72 |
model = AutoModelForTokenClassification.from_pretrained('path', trust_remote_code=True).cuda()
|
73 |
model.eval()
|
74 |
emr_data = "患者2年前无明显诱因出现左眼视力下降,无眼胀、眼痛,不伴畏光、流泪、异物感,无头疼、恶心、呕吐、头晕、头痛等症状,2014年于我院行左眼球后TENON囊下曲安奈德注药术,并行左眼视网膜激光凝固术。已多次于我科行左眼玻璃体腔药物注射术。治疗后视力有提高。近一周患者再次感视力下降,于2017年12月14日复查OCT提示左眼黄斑水肿明显。建议再次手术治疗。现为求进一步手术治疗,于2018年03月12日收入我院。患者自发病以来,神志清,精神可,饮食可,睡眠可,二便如常,体重无明显变化。无流感样症状。"
|
75 |
+
words = list(jieba.cut(emr_data, cut_all=False
|
76 |
+
words_remove_space = [i for i in words if i != ' ']
|
77 |
inputs = tokenizer(words, return_tensors="pt", is_split_into_words=True, ).to("cuda")
|
78 |
logits = model(**inputs).logits.squeeze(0)
|
79 |
preds = logits.argmax(-1)
|
80 |
preds = [p.item() for p, w in zip(preds, inputs.word_ids()) if w != None]
|
81 |
align_preds = align_words(preds, inputs.word_ids())
|
82 |
+
preds_with_space = align_space(words, words_remove_space, align_preds)
|
83 |
segmentation_data = segment(align_preds, words)
|
84 |
print(segmentation_data)
|
85 |
#[SEP]患者2年前无明显诱因出现左眼视力下降,无眼胀、眼痛,不伴畏光、流泪、异物感,无头疼、恶心、呕吐、头晕、头痛等症状,2014年于我院行左眼球后TENON囊下曲安奈德注药术,并行左眼视网膜激光凝固术。已多次于我科行左眼玻璃体腔药物注射术。治疗后视力有提高。
|