CNN4IE
Địa chỉ dự án: https://github.com/jiangnanboy/CNN4IE
Công cụ trích xuất thông tin tiếng Trung. Sử dụng các biến thể khác nhau của CNN để trích xuất thông tin, trong tương lai sẽ liên tục thêm vào các mô hình khác. Dự án này sử dụng pytorch, python để phát triển.
CNN4IE đã điều chỉnh các khối tích chập cải tiến khác nhau để sử dụng cho việc trích xuất thông tin tiếng Trung.
Hướng Dẫn
- Giới thiệu
- Mô hình
- Đánh giá
- Cài đặt
- Bộ dữ liệu
- Công việc cần làm
- Trích dẫn
- Tham khảo
Giới Thiệu
Hiện tại chủ yếu thực hiện trích xuất thực thể tiếng Trung:
Các mẫu huấn luyện được đánh dấu theo định dạng B, I, O.
Mô Hình
Mô hình
Phần khối tích chập trong mô hình chủ yếu đến từ một số mô-đun trong các bài báo sau.
- 1.MultiLayerResCNN(cnn4ie/mlrescnn): Mạng CNN tích chập nhiều lớp dư (+CRF), Convolutional Sequence to Sequence Learning.
- 2.MultiLayerResDSCNN(cnn4ie/dscnn): Mạng CNN tách sâu nhiều lớp (+CRF), Xception: Deep Learning with Depthwise Separable Convolutions.
- 3.MultiLayerAugmentedCNN(cnn4ie/attention_augmented_cnn): Mạng CNN tăng cường chú ý nhiều lớp (+CRF), Attention Augmented Convolutional Networks.
- 4.MultiLayerLambdaCNN(cnn4ie/lambda_cnn): Mạng LambdaCNN nhiều lớp (+CRF), LambdaNetworks: Modeling long-range Interactions without Attention.
- 5.MultiLayerResLWCNN(cnn4ie/lcnn): Mạng CNN nhẹ nhiều lớp (+CRF), Pay Less Attention with Lightweight and Dynamic Convolutions.
- 6.MultiLayerResDYCNN(cnn4ie/dcnn): Mạng CNN động nhiều lớp (+CRF), Pay Less Attention with Lightweight and Dynamic Convolutions.
- 7.MultiLayerStdAttnCNN(cnn4ie/stand_alone_self_attention_cnn): Mạng CNN tự chú ý độc lập nhiều lớp (+CRF), Stand-Alone Self-Attention in Vision Models.
- 8.MultiLayerCSAttCNN(cnn4ie/channel_spatial_attention_cnn): Mạng CNN chú ý kênh và không gian nhiều lớp (+CRF), CBAM: Convolutional Block Attention Module.
- 9.MultiLayerSACNN(cnn4ie/self_attention_cnn): Mạng CNN tự chú ý nhiều lớp (+CRF), Self-Attention Generative Adversarial Networks.
- 10.MultiLayerGroupMixedCNN(cnn4ie/mixed_depthwise_cnn): Mạng CNN tách hỗn hợp nhiều lớp (+CRF), MixConv: Mixed Depthwise Convolutional Kernels.
- 11.MultiLayerMultiCNN(cnn4ie/multi_cnn): Mạng CNN đa tích chập nhiều lớp (+CRF), Character-Level Translation with Self-attention.
- 12.MultiLayerMixedAttCNN(cnn4ie/mixed_attention_cnn): Mạng CNN chú ý hỗn hợp nhiều lớp, ConvBERT: Improving BERT with Span-based Dynamic Convolution.
Sử dụng
- Các tham số cấu hình được tìm thấy trong tệp config.cfg trong mỗi thư mục mô hình, tệp này sẽ được tải khi huấn luyện và dự đoán.
- Huấn luyện và dự đoán (hỗ trợ tải vectơ nhúng đã được huấn luyện trước)
1.MULTILAYERRESCNN(CNN4IE/MLRESCNN)
(1). Huấn luyện
from cnn4ie.mlrescnn.train import HuấnLuyện
huấn_luyện = HuấnLuyện()
huấn_luyện.huấn_luyện_mô_hình('config.cfg')
Epoch: 199 | Thời gian: 0m 4s
Mất mát Huấn luyện: 228.545 | PPL Huấn luyện: 1.802960293422957e+99
Mất mát Kiểm tra: 433.577 | PPL Kiểm tra: 1.9966207577208172e+188
Báo cáo Kiểm tra: precision recall f1-score support
1 1.00 1.00 1.00 4539
2 0.98 0.99 0.99 4926
3 0.90 0.83 0.86 166
4 0.74 0.98 0.84 52
5 0.94 0.77 0.84 120
6 0.76 0.97 0.85 39
7 0.82 0.87 0.85 54
8 0.93 0.74 0.82 68
9 0.95 0.77 0.85 26
10 1.00 0.80 0.89 10
accuracy 0.98 10000
macro avg 0.90 0.87 0.88 10000
weighted avg 0.99 0.98 0.98 10000
(2). Dự đoán
from cnn4ie.mlrescnn.predict import DựĐoán
dự_đoán = DựĐoán()
dự_đoán.tải_mô_hình_từ_vựng('config_cfg')
kết_quả = dự_đoán.dự_đoán('Theo Tân Hoa Xã, thành phố Lục An, tỉnh An Huy được bình chọn là một trong mười thành phố dễ ở!')
print(kết_quả)
[{'start': 7, 'stop': 13, 'word': 'tỉnh An Huy thành phố Lục An', 'type': 'LOC'}, {'start': 1, 'stop': 4, 'word': 'Tân Hoa Xã', 'type': 'ORG'}]
2.MULTILAYERRESDSCNN(CNN4IE/DSCNN)
(1). Huấn luyện
from cnn4ie.dscnn.train import HuấnLuyện
huấn_luyện = HuấnLuyện()
huấn_luyện.huấn_luyện_mô_hình('config.cfg')
Epoch: 192 | Thời gian: 0m 3s
Mất mát Huấn luyện: 191.273 | PPL Huấn luyện: 1.172960293422957e+99
Mất mát Kiểm tra: 533.260 | PPL Kiểm tra: 5.2866207577208172e+188
Báo cáo Kiểm tra: precision recall f1-score support
1 0.99 1.00 1.00 4539
2 0.98 0.98 0.98 4926
3 0.92 0.82 0.87 166
4 0.82 0.88 0.85 52
5 0.84 0.76 0.80 120
6 0.90 0.95 0.92 39
7 0.90 0.85 0.88 54
8 0.84 0.71 0.77 68
9 0.85 0.65 0.74 26
10 1.00 0.70 0.82 10
accuracy 0.98 10000
macro avg 0.91 0.83 0.86 10000
weighted avg 0.98 0.98 0.98 10000
(2). Dự đoán
from cnn4ie.dscnn.predict import DựĐoán
dự_đoán = DựĐoán()
dự_đoán.tải_mô_hình_từ_vựng('config.cfg')
kết_quả = dự_đoán.dự_đoán('Báo Bắc Kinh, ngày 28/2, phóng viên Tô Ninh đưa tin: Hội nghị lần thứ 30 của Ủy ban Thường vụ Đại hội Đại biểu Nhân dân toàn quốc khóa 8 đã kết thúc vào chiều nay tại Bắc Kinh.')
print(kết_quả)
[{'start': 2, 'stop': 4, 'word': 'Bắc Kinh', 'type': 'LOC'}, {'start': 12, 'stop': 14, 'word': 'Tô Ninh', 'type': 'LOC'}, {'start': 32, 'stop': 36, 'word': 'chiều nay', 'type': 'T'}]
3.MULTILAYERAUGMENTEDCNN(CNN4IE/ATTENTION_AUGMENTED_CNN)
(1). Huấn luyện
from cnn4ie.attention_augmented_cnn.train import HuấnLuyện
huấn_luyện = HuấnLuyện()
huấn_luyện.huấn_luyện_mô_hình('config.cfg')
Epoch: 192 | Thời gian: 0m 3s
Mất mát Huấn luyện: 185.204 | PPL Huấn luyện: 2.711303579086953e+80
Mất mát Kiểm tra: 561.592 | PPL Kiểm tra: 7.877783034926193e+243
Báo cáo Kiểm tra: precision recall f1-score support
1 0.99 1.00 1.00 4539
2 0.98 0.99 0.98 4926
3 0.96 0.77 0.85 166
4 0.81 0.85 0.83 52
5 0.88 0.71 0.78 120
6 0.90 0.90 0.90 39
7 0.90 0.85 0.88 54
8 0.85 0.69 0.76 68
9 1.00 0.42 0.59 26
10 1.00 0.50 0.67 10
accuracy 0.98 10000
macro avg 0.93 0.77 0.82 10000
weighted avg 0.98 0.98 0.98 10000
(2). Dự đoán
from cnn4ie.attention_augmented_cnn.predict import DựĐoán
dự_đoán = DựĐoán()
dự_đoán.tải_mô_hình_từ_vựng('config.cfg')
kết_quả = dự_đoán.dự_đoán('Báo Bắc Kinh, ngày 28/2, phóng viên Tô Ninh đưa tin: Hội nghị lần thứ 30 của Ủy ban Thường vụ Đại hội Đại biểu Nhân dân toàn quốc khóa 8 đã kết thúc vào chiều nay tại Bắc Kinh.')
print(kết_quả)
[{'start': 2, 'stop': 4, 'word': 'Bắc Kinh', 'type': 'LOC'}, {'start': 12, 'stop': 14, 'word': 'Tô Ninh', 'type': 'LOC'}, {'start': 32, 'stop': 36, 'word': 'chiều nay', 'type': 'T'}]
4.MULTILAYERLAMBDACNN(CNN4IE/LAMBDA_CNN)
(1). Huấn luyện
from cnn4ie.lambda_cnn.train import HuấnLuyện
huấn_luyện = HuấnLuyện()
huấn_luyện.huấn_luyện_mô_hình('config.cfg')
Epoch: 197 | Thời gian: 0m 2s
Mất mát Huấn luyện: 198.344 | PPL Huấn luyện: 1.3800537707438322e+86
Mất mát Kiểm tra: 668.780 | PPL Kiểm tra: 2.8022239331403918e+290
Báo cáo Kiểm tra: precision recall f1-score support
1 0.99 1.00 1.00 4539
2 0.98 0.98 0.98 4926
3 0.80 0.78 0.79 166
4 0.89 0.90 0.90 52
5 0.86 0.77 0.81 120
6 0.90 0.92 0.91 39
7 0.81 0.87 0.84 54
8 0.88 0.75 0.81 68
9 0.93 0.54 0.68 26
10 1.00 0.70 0.82 10
accuracy 0.98 10000
macro avg 0.90 0.82 0.85 10000
weighted avg 0.98 0.98 0.98 10000
(2). Dự đoán
from cnn4ie.lambda_cnn.predict import DựĐoán
dự_đoán = DựĐoán()
dự_đoán.tải_mô_hình_từ_vựng('config.cfg')
kết_quả = dự_đoán.dự_đoán('Báo Bắc Kinh, ngày 28/2, phóng viên Tô Ninh đưa tin: Hội nghị lần thứ 30 của Ủy ban Thường vụ Đại hội Đại biểu Nhân dân toàn quốc khóa 8 đã kết thúc vào chiều nay tại Bắc Kinh.')
print(kết_quả)
[{'start': 2, 'stop': 4, 'word': 'Bắc Kinh', 'type': 'LOC'}, {'start': 12, 'stop': 14, 'word': 'Tô Ninh', 'type': 'LOC'}, {'start': 32, 'stop': 36, 'word': 'chiều nay', 'type': 'T'}]
5.MULTILAYERRESLWCNN(CNN4IE/LCNN)
(1). Huấn luyện
from cnn4ie.lcnn.train import HuấnLuyện
huấn_luyện = HuấnLuyện()
huấn_luyện.huấn_luyện_mô_hình('config.cfg')
Epoch: 190 | Thời gian: 0m 4s
Mất mát Huấn luyện: 195.472 | PPL Huấn luyện: 7.807223255192846e+84
Mất mát Kiểm tra: 453.642 | PPL Kiểm tra: 1.0328983269312897e+197
Báo cáo Kiểm tra: precision recall f1-score support
1 0.99 1.00 1.00 5925
2 0.99 0.98 0.98 5501
3 0.90 0.85 0.87 174
4 0.72 0.93 0.81 57
5 0.92 0.81 0.86 122
6 0.82 0.91 0.86 44
7 0.84 0.85 0.85 62
8 0.92 0.77 0.84 71
9 0.66 0.81 0.72 31
10 0.91 0.77 0.83 13
accuracy 0.98 12000
macro avg 0.86 0.87 0.86 12000
weighted avg 0.98 0.98 0.98 12000
(2). Dự đoán
from cnn4ie.lcnn.predict import DựĐoán
dự_đoán = DựĐoán()
dự_đoán.tải_mô_hình_từ_vựng('config.cfg')
kết_quả = dự_đoán.dự_đoán('Báo Bắc Kinh, ngày 28/2, phóng viên Tô Ninh đưa tin: Hội nghị lần thứ 30 của Ủy ban Thường vụ Đại hội Đại biểu Nhân dân toàn quốc khóa 8 đã kết thúc vào chiều nay tại Bắc Kinh.')
print(kết_quả)
[{'start': 2, 'stop': 4, 'word': 'Bắc Kinh', 'type': 'LOC'}, {'start': 12, 'stop': 14, 'word': 'Tô Ninh', 'type': 'LOC'}, {'start': 32, 'stop': 36, 'word': 'chiều nay', 'type': 'T'}]
6.MULTILAYERRESDYCNN(CNN4IE/DCNN)
(1). Huấn luyện
from cnn4ie.dcnn.train import HuấnLuyện
huấn_luyện = HuấnLuyện()
huấn_luyện.huấn_luyện_mô_hình('config.cfg')
Epoch: 192 | Thời gian: 0m 4s
Mất mát Huấn luyện: 182.916 | PPL Huấn luyện: 2.7491663642617552e+79
Mất mát Kiểm tra: 463.782 | PPL Kiểm tra: 2.618555606950152e+201
Báo cáo Kiểm tra: precision recall f1-score support
1 1.00 1.00 1.00 5925
2 0.99 0.98 0.98 5501
3 0.86 0.86 0.86 174
4 0.80 0.93 0.86 57
5 0.84 0.79 0.81 122
6 0.83 0.89 0.86 44
7 0.83 0.87 0.85 62
8 0.88 0.75 0.81 71
9 0.92 0.71 0.80 31
10 1.00 0.85 0.92 13
accuracy 0.98 12000
macro avg 0.89 0.86 0.88 12000
weighted avg 0.98 0.98 0.98 12000
(2). Dự đoán
from cnn4ie.dcnn.predict import DựĐoán
dự_đoán = DựĐoán()
dự_đoán.tải_mô_hình_từ_vựng('config.cfg')
kết_quả = dự_đoán.dự_đoán('Báo Bắc Kinh, ngày 28/2, phóng viên Tô Ninh đưa tin: Hội nghị lần thứ 30 của Ủy ban Thường vụ Đại hội Đại biểu Nhân dân toàn quốc khóa 8 đã kết thúc vào chiều nay tại Bắc Kinh.')
print(kết_quả)
[{'start': 2, 'stop': 4, 'word': 'Bắc Kinh', 'type': 'LOC'}, {'start': 12, 'stop': 14, 'word': 'Tô Ninh', 'type': 'LOC'}, {'start': 32, 'stop': 36, 'word': 'chiều nay', 'type': 'T'}]
7.MULTILAYERSTDATTNCNN(CNN4IE/STAND_ALONE_SELF_ATTENTION_CNN)
(1). Huấn luyện
from cnn4ie.stand_alone_self_attention_cnn.train import HuấnLuyện
huấn_luyện = HuấnLuyện()
huấn_luyện.huấn_luyện_mô_hình('config.cfg')
Epoch: 195 | Thời gian: 0m 3s
Mất mát Huấn luyện: 247.570 | PPL Huấn luyện: 3.29768182789317e+107
Mất mát Kiểm tra: 681.482 | PPL Kiểm tra: 9.20623044303632e+295
Báo cáo Kiểm tra: precision recall f1-score support
1 0.99 1.00 1.00 4539
2 0.99 0.99 0.99 4926
3 0.95 0.86 0.90 166
4 0.93 0.96 0.94 52
5 0.91 0.78 0.84 120
6 0.93 0.97 0.95 39
7 0.80 0.89 0.84 54
8 0.91 0.72 0.80 68
9 1.00 0.69 0.82 26
10 1.00 0.90 0.95 10
accuracy 0.98 10000
macro avg 0.94 0.88 0.90 10000
weighted avg 0.98 0.98 0.98 10000
(2). Dự đoán
from cnn4ie.stand_alone_self_attention_cnn.predict import DựĐoán
dự_đoán = DựĐoán()
dự_đoán.tải_mô_hình_từ_vựng('config.cfg')
kết_quả = dự_đoán.dự_đoán('Báo Bắc Kinh, ngày 28/2, phóng viên Tô Ninh đưa tin: Hội nghị lần thứ 30 của Ủy ban Thường vụ Đại hội Đại biểu Nhân dân toàn quốc khóa 8 đã kết thúc vào chiều nay tại Bắc Kinh.')
print(kết_quả)
[{'start': 19, 'stop': 26, 'word': 'Ủy ban Thường vụ Đại hội Đại biểu Nhân dân toàn quốc', 'type': 'ORG'}, {'start': 32, 'stop': 36, 'word': ' chiều nay', 'type': 'T'}, {'start': 2, 'stop': 4, 'word': 'Bắc Kinh', 'type': 'LOC'}, {'start': 12, 'stop': 14, 'word': 'Tô Ninh', 'type': 'LOC'}]
8.MULTILAYERCSATTCNN(CNN4IE/CHANNEL_SPATIAL_ATTENTION_CNN)
(1). Huấn luyện
from cnn4ie.channel_spatial_attention_cnn.train import HuấnLuyện
huấn_luyện = HuấnLuyện()
huấn_luyện.huấn_luyện_mô_hình('config.cfg')
Epoch: 181 | Thời gian: 0m 3s
Mất mát Huấn luyện: 112.922 | PPL Huấn luyện: 1.1001029953413096e+49
Mất mát Kiểm tra: 493.448 | PPL Kiểm tra: 2.002428912702234e+214
Báo cáo Kiểm tra: precision recall f1-score support
1 0.99 1.00 1.00 4539
2 0.98 0.98 0.98 4926
3 0.89 0.81 0.85 166
4 0.77 0.88 0.82 52
5 0.90 0.73 0.81 120
6 0.84 0.92 0.88 39
7 0.81 0.89 0.85 54
8 0.90 0.69 0.78 68
9 0.85 0.85 0.85 26
10 0.82 0.90 0.86 10
accuracy 0.98 10000
macro avg 0.88 0.87 0.87 10000
weighted avg 0.98 0.98 0.98 10000
(2). Dự đoán
from cnn4ie.channel_spatial_attention_cnn.predict import DựĐoán
dự_đoán = DựĐoán()
dự_đoán.tải_mô_hình_từ_vựng('config.cfg')
kết_quả = dự_đoán.dự_đoán('Báo Bắc Kinh, ngày 28/2, phóng viên Tô Ninh đưa tin: Hội nghị lần thứ 30 của Ủy ban Thường vụ Đại hội Đại biểu Nhân dân toàn quốc khóa 8 đã kết thúc vào chiều nay tại Bắc Kinh.')
print(kết_quả)
[{'start': 2, 'stop': 4, 'word': 'Bắc Kinh', 'type': 'LOC'}, {'start': 12, 'stop': 14, 'word': 'Tô Ninh', 'type': 'LOC'}, {'start': 32, 'stop': 36, 'word': 'chiều nay', 'type': 'T'}]
9.MULTILAYERSACNN(CNN4IE/SELF_ATTENTION_CNN)
(1). Huấn luyện
from cnn4ie.self_attention_cnn.train import HuấnLuyện
huấn_luyện = HuấnLuyện()
huấn_luyện.huấn_luyện_mô_hình('config.cfg')
Epoch: 198 | Thời gian: 0m 2s
Mất mát Huấn luyện: 241.123 | PPL Huấn luyện: 5.227354818437855e+104
Mất mát Kiểm tra: 421.708 | PPL Kiểm tra: 1.3982772880257424e+183
Báo cáo Kiểm tra: precision recall f1-score support
1 0.99 1.00 1.00 4539
2 0.98 0.98 0.98 4926
3 0.89 0.87 0.88 166
4 0.84 0.92 0.88 52
5 0.76 0.74 0.75 120
6 0.88 0.95 0.91 39
7 0.83 0.91 0.87 54
8 0.80 0.71 0.75 68
9 1.00 0.54 0.70 26
10 1.00 0.70 0.82 10
accuracy 0.98 10000
macro avg 0.90 0.83 0.85 10000
weighted avg 0.98 0.98 0.98 10000
(2). Dự đoán
from cnn4ie.self_attention_cnn.predict import DựĐoán
dự_đoán = DựĐoán()
dự_đoán.tải_mô_hình_từ_vựng('config.cfg')
kết_quả = dự_đoán.dự_đoán('Báo Bắc Kinh, ngày 28/2, phóng viên Tô Ninh đưa tin: Hội nghị lần thứ 30 của Ủy ban Thường vụ Đại hội Đại biểu Nhân dân toàn quốc khóa 8 đã kết thúc vào chiều nay tại Bắc Kinh.')
print(kết_quả)
[{'start': 32, 'stop': 36, 'word': 'chiều nay', 'type': 'T'}, {'start': 19, 'stop': 26, 'word': 'Ủy ban Thường vụ Đại hội Đại biểu Nhân dân toàn quốc', 'type': 'ORG'}, {'start': 2, 'stop': 4, 'word': 'Bắc Kinh', 'type': 'LOC'}, {'start': 12, 'stop': 14, 'word': 'Tô Ninh', 'type': 'LOC'}]
10.MULTILAYERGROUPMIXEDCNN(CNN4IE/MIXED_DEPTHWISE_CNN)
(1). Huấn luyện
from cnn4ie.mixed_depthwise_cnn.train import HuấnLuyện
huấn_luyện = HuấnLuyện()
huấn_luyện.huấn_luyện_mô_hình('config.cfg')
Epoch: 200 | Thời gian: 0m 1s
Mất mát Huấn luyện: 310.169 | PPL Huấn luyện: 5.0653182367925945e+134
Mất mát Kiểm tra: 451.143 | PPL Kiểm tra: 8.489160946059989e+195
Báo cáo Kiểm tra: precision recall f1-score support
1 1.00 1.00 1.00 4539
2 0.98 0.99 0.99 4926
3 0.93 0.83 0.88 166
4 0.89 0.90 0.90 52
5 0.89 0.75 0.81 120
6 0.92 0.92 0.92 39
7 0.91 0.93 0.92 54
8 0.86 0.71 0.77 68
9 1.00 0.58 0.73 26
10 1.00 0.70 0.82 10
accuracy 0.99 10000
macro avg 0.94 0.83 0.87 10000
weighted avg 0.98 0.99 0.98 10000
(2). Dự đoán
from cnn4ie.mixed_depthwise_cnn.predict import DựĐoán
dự_đoán = DựĐoán()
dự_đoán.tải_mô_hình_từ_vựng('config.cfg')
kết_quả = dự_đoán.dự_đoán('Báo Bắc Kinh, ngày 28/2, phóng viên Tô Ninh đưa tin: Hội nghị lần thứ 30 của Ủy ban Thường vụ Đại hội Đại biểu Nhân dân toàn quốc khóa 8 đã kết thúc vào chiều nay tại Bắc Kinh.')
print(kết_quả)
[{'start': 19, 'stop': 24, 'word': 'Ủy ban Thường', 'type': 'ORG'}, {'start': 2, 'stop': 4, 'word': 'Bắc Kinh', 'type': 'LOC'}, {'start': 12, 'stop': 14, 'word': 'Tô Ninh', 'type': 'LOC'}, {'start': 32, 'stop': 36, 'word': 'chiều nay', 'type': 'T'}]
11.MULTILAYERMULTICNN(CNN4IE/MULTI_CNN)
(1). Huấn luyện
from cnn4ie.multi_cnn.train import HuấnLuyện
huấn_luyện = HuấnLuyện()
huấn_luyện.huấn_luyện_mô_hình('config.cfg')
Epoch: 200 | Thời gian: 0m 1s
Mất mát Huấn luyện: 234.673 | PPL Huấn luyện: 8.267382310706752e+101
Mất mát Kiểm tra: 444.010 | PPL Kiểm tra: 6.779999895568844e+192
Báo cáo Kiểm tra: precision recall f1-score support
1 1.00 1.00 1.00 4539
2 0.98 0.99 0.98 4926
3 0.92 0.84 0.88 166
4 0.81 0.96 0.88 52
5 0.83 0.78 0.81 120
6 0.86 0.95 0.90 39
7 0.92 0.91 0.92 54
8 0.80 0.71 0.75 68
9 1.00 0.69 0.82 26
10 1.00 0.70 0.82 10
accuracy 0.98 10000
macro avg 0.91 0.85 0.88 10000
weighted avg 0.98 0.98 0.98 10000
(2). Dự đoán
from cnn4ie.multi_cnn.predict import DựĐoán
dự_đoán = DựĐoán()
dự_đoán.tải_mô_hình_từ_vựng('config.cfg')
kết_quả = dự_đoán.dự_đoán('Báo Bắc Kinh, ngày 28/2, phóng viên Tô Ninh đưa tin: Hội nghị lần thứ 30 của Ủy ban Thường vụ Đại hội Đại biểu Nhân dân toàn quốc khóa 8 đã kết thúc vào chiều nay tại Bắc Kinh.')
print(kết_quả)
[{'start': 32, 'stop': 36, 'word': 'chiều nay', 'type': 'T'}, {'start': 20, 'stop': 25, 'word': 'ban Thường Đại', 'type': 'ORG'}, {'start': 2, 'stop': 4, 'word': 'Bắc Kinh', 'type': 'LOC'}, {'start': 12, 'stop': 14, 'word': 'Tô Ninh', 'type': 'LOC'}]
12.MULTILAYERMIXEDATTCNN(CNN4IE/MIXED_ATTENTION_CNN)
(1). Huấn luyện
from cnn4ie.mixed_attention_cnn.train import HuấnLuyện
huấn_luyện = HuấnLuyện()
huấn_luyện.huấn_luyện_mô_hình('config.cfg')
Epoch: 250 | Thời gian: 0m 3s
Mất mát Huấn luyện: 107.790 | PPL Huấn luyện: 6.497928061494806e+46
Mất mát Kiểm tra: 283.142 | PPL Kiểm tra: 9.269305878179231e+122
Báo cáo Kiểm tra: precision recall f1-score support
1 1.00 1.00 1.00 4539
2 0.98 0.99 0.99 4926
3 0.91 0.84 0.87 166
4 0.86 0.98 0.92 52
5 0.91 0.78 0.84 120
6 0.93 0.97 0.95 39
7 0.88 0.91 0.89 54
8 0.92 0.72 0.81 68
9 1.00 0.65 0.79 26
10 1.00 0.80 0.89 10
accuracy 0.99 10000
macro avg 0.94 0.86 0.89 10000
weighted avg 0.99 0.99 0.99 10000
(2). Dự đoán
from cnn4ie.mixed_attention_cnn.predict import DựĐoán
dự_đoán = DựĐoán()
dự_đoán.tải_mô_hình_từ_vựng('config.cfg')
kết_quả = dự_đoán.dự_đoán('Báo Bắc Kinh, ngày 28/2, phóng viên Tô Ninh đưa tin: Hội nghị lần thứ 30 của Ủy ban Thường vụ Đại hội Đại biểu Nhân dân toàn quốc khóa 8 đã kết thúc vào chiều nay tại Bắc Kinh.')
print(kết_quả)
[{'start': 32, 'stop': 36, 'word': 'chiều nay', 'type': 'T'}, {'start': 2, 'stop': 4, 'word': 'Bắc Kinh', 'type': 'LOC'}, {'start': 12, 'stop': 14, 'word': 'Tô Ninh', 'type': 'LOC'}]
Đánh Giá
Việc đánh giá sử dụng các chỉ số P, R, F1, PPL, v.v. Phương pháp đánh giá có thể sử dụng precision_recall_fscore_support hoặc classification_report trong scikit-learn.
Cài Đặt
- Cài đặt: pip install CNN4IE
- Tải mã nguồn:
git clone https://github.com/jiangnanboy/CNN4IE.git
cd CNN4IE
python setup.py install
Bằng một trong hai phương pháp trên để hoàn thành cài đặt. Nếu không muốn cài đặt, có thể tải gói mã nguồn từ github