Trong một thời đại mà mỗi ngày, mỗi giờ , mỗi phút đều có một lượng thông tin khổng lồ được sinh ra, nhưng giới hạn về thời gian, về khả năng đọc và tiếp thu của con người là có hạn, việc hiểu và nắm bắt thật nhiều thông tin một cách nhanh chóng không phải là vấn đề đơn giản với bất kỳ ai. Đã bao giờ bạn tìm kiếm các kiến thức trên internet, hay đọc một cuốn sách mà nội dung của nó dài lê thê, khiến cho bạn cảm thấy một chút khó khăn để có thể nắm bắt được nó chưa? Đứng trước xu hướng con người ngày càng mất nhiều thời gian đọc email, báo điện tử và mạng xã hội, các thuật toán sử dụng machine learning để tự động tóm tắt các văn bản dài một cách gãy gọn và chính xác ngày càng trở nên cần thiết và có vai trò to lớn đối trong bất kỳ lĩnh vực nào. Tự động tóm tắt sẽ là một trong những công nghệ quan trọng có thể giúp con người giảm thiểu thời gian đọc email và thông tin, kiến thức mới để dành thời gian cho các công việc khác, mà vẫn có thể nắm bắt được gãy gọn những nội dung của nó. Phương pháp thu thập thông tin: Tìm kiếm thông tin trên internet. Học hỏi từ bạn bè. Liên hệ, trao đổi ý kiến với người hướng dẫn. Về mặt lý thuyết: Xây dựng ma trận dữ liệu liên quan. Áp dụng máy học để huấn luyện dữ liệu. Lưu lại mô hình dữ liệu với tham số tối ưu. Về kĩ thuật: Sử dụng ngôn ngữ lập trình Python cùng với các thư viện hỗ trợ tính toán và các giải thuật máy học. Công cụ hỗ trợ lập trình Python. Thực tập thực tế CNTT Võ Thanh Sang B1509947 14 Hiện nay, rất nhiều thuật toán cho việc tóm tắt đã và đang được các công ty, các nhà nghiên cứu phát triển. Tuy nhiên, hôm nay mình muốn giới thiệu cho các bạn một trong số những cách đơn giản nhất mà mình đã tìm hiểu được. Với việc áp dụng những phương pháp cơ bản nhất của học máy (Machine Learning) hay xử lý ngôn ngữ tự nhiên (Natural Language Processing), cá nhân mình thấy đây là một phương pháp cực kỳ đơn giản và có thể dễ dàng nắm bắt.
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG BÁO CÁO THỰC TẬP THỰC TẾ ĐƠN VỊ THỰC TẬP: TRƯỜNG ĐẠI HỌC Y DƯỢC CẦN THƠ ĐỀ TÀI THỰC TẬP: THIẾT KẾ CƠNG CỤ TĨM TẮT Ý KIẾN PHẢN HỒI CỦA NGƯỜI HỌC Sinh viên: Võ Thanh Sang Mã số: B1509947 Khóa: K41 Cần Thơ, 07/2019 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG BỘ MÔN KHOA HỌC MÁY TÍNH BÁO CÁO THỰC TẬP THỰC TẾ ĐƠN VỊ THỰC TẬP: TRƯỜNG ĐẠI HỌC Y DƯỢC CẦN THƠ ĐỀ TÀI THỰC TẬP: THIẾT KẾ CƠNG CỤ TĨM TẮT Ý KIẾN PHẢN HỒI CỦA NGƯỜI HỌC Giáo viên cố vấn Ths Nguyễn Hữu Vân Long Cán hướng dẫn Trần Việt Xô Sinh viên thực Võ Thanh Sang Mã số: B1509947 Khóa: K41 Cần Thơ, 07/2019 LỜI CẢM ƠN @&? Xin chân thành cảm ơn Trường Đại học Y Dược Cần Thơ tạo đủ điều kiện thuận lợi cho em thực đề tài thực tập thực tế Xin chân thành cảm ơn anh, chị phòng công nghệ thông tin Trường Đại học Y Dược Cần Thơ, đặc biệt anh Trần Việt Xô tận tình hướng dẫn, bảo lời động viên khuyến khích giúp đỡ, ln tạo khơng khí thoải mái môi trường làm việc thân thiện suốt trình thực tập Giúp cho em động, phát huy tối đa tư linh hoạt giải vấn đề Nâng cao khả làm việc độc lập đồng thời làm quen với môi trường làm việc thực tế Nhờ mà chuyến thực tập thực tế em học hỏi nhiều điều bổ ích kiến thức chuyên môn kĩ mềm môi trường công sở thật Xin chân thành cảm ơn quý thầy cô Khoa Công Nghệ Thơng Tin Trường Đại học Cần Thơ tận tình giảng dạy, trang bị kiến thức quý báo năm học vừa qua Để em có đủ tự tin để bước vào mơi trường làm việc hồn tồn mẽ Mặc dù cố gắng hoàn thành tốt công việc phân công phạm vi khả cho phép chắn không tránh khỏi thiếu sót định Kính mong nhận cảm thơng tận tình bảo q thầy q quan Sau cùng, em xin kính chúc Thầy, Cô anh, chị Trường Đại học Y Dược Cần Thơ nhiều sức khỏe, thành công công việc Em xin chân thành cảm ơn Sinh viên thực Võ Thanh Sang Thực tập thực tế - CNTT Võ Thanh Sang B1509947 Mục Lục PHẦN A: TÌM HIỂU CƠ QUAN THỰC TẬP CHƯƠNG GIỚI THIỆU TRƯỜNG ĐẠI HỌC Y DƯỢC CẦN THƠ I Tổng quan Trường Đại học Y Dược Cần Thơ II Lĩnh vực hoạt động III Cơ cấu tổ chức IV Cơ cấu tổ chức Phòng Cơng nghệ thơng tin CHƯƠNG HOẠT ĐỘNG CỦA PHỊNG CƠNG NGHỆ THÔNG TIN TRƯỜNG ĐẠI HỌC Y DƯỢC CẦN THƠ I Hoạt động chun ngành phòng Cơng nghệ thơng tin II Các nhân phòng cơng nghệ thơng tin PHẦN B: NỘI DUNG THỰC TẬP CHƯƠNG NỘI DUNG CÔNG VIỆC, PHƯƠNG PHÁP THỰC HIỆN THỰC TẬP THỰC TẾ I Nội dung công việc thực tập II Phương pháp, thời gian thực CHƯƠNG NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU I Tổng quan xử lí ngơn ngữ Tiếng Việt 1.Tìm hiểu cơng cụ thư viện a) Tìm hiểu cơng cụ tách từ tự động vnTokenizer b) Tổng quan thư viện pyvi c) Tổng quan thư viện Natural Language Processing (NLP) 10 d) Tổng quan thư viện gensim 11 e) Tổng thư viện pickle 12 f) Mơ hình huấn luyện Word2Vec .12 g) Các ứng dụng toán tách từ 13 Mục tiêu 13 Phương pháp nghiên cứu 14 Mơ hình hoạt động hệ thống 15 Cài đặt hệ thống 15 a) Tiền sử lí văn bản: 15 b) Tác câu văn bản: 17 c) Chuyển câu sang Vector: .18 d) Phân cụm: 20 e) Xây dựng đoạn văn tóm tắt .21 f) Graphical User Interface (GUI) 23 CHƯƠNG 24 KẾT QUẢ VÀ KINH NGHIỆM ĐẠT ĐƯỢC 24 I Kết kinh nghiệm học tập qua thời gian thực tập thực tế 24 II Những kiến thức lý thuyết củng cố 24 III Những điểm hạn chế 24 Thực tập thực tế - CNTT Võ Thanh Sang B1509947 NHẬN XÉT CỦA GIẢNG VIÊN Thực tập thực tế - CNTT Võ Thanh Sang B1509947 PHẦN A: TÌM HIỂU CƠ QUAN THỰC TẬP CHƯƠNG GIỚI THIỆU TRƯỜNG ĐẠI HỌC Y DƯỢC CẦN THƠ I Tổng quan Trường Đại học Y Dược Cần Thơ Trường Đại học Y Dược Cần Thơ thành lập sở tách từ trường Đại học Cần Thơ Tháng năm 1979: Thành lập khoa Y - Nha - Dược thuộc Trường Đại học Cần Thơ Ngày 25 tháng 12 năm 2002: Khoa Y - Nha - Dược tách để thành lập Trường Đại học Y-Dược Cần Thơ trực thuộc Bộ Y tế Năm 2011: Bộ trưởng Bộ Y tế ký định thành lập Bệnh viện Trường Đại học Y Dược Cần Thơ Gồm khoa, phòng cơng nghệ thông tin trường Đại học Y Dược Cần Thơ nằm khoa Khoa học II Lĩnh vực hoạt động - Tham gia nghiên cứu khoa học, phát triển công nghệ theo kế hoạch nhà trường - Tổ chức, quản lý, giảng dạy chương trình đào tạo môn Tin học bậc Đại học, sau đại học, đại học, trung cấp dự bị đại học - Sản xuất kinh doanh, cung ứng, đại lý vật tư, thiết bị Viễn thông – Công nghệ thông tin theo yêu cầu sản xuất kinh doanh đơn vị nhu cầu khách hàng - Khảo sát, tư vấn, thiết kế, lắp đặt, bảo dưỡng mảng công nghệ thông tin trường - Chịu trách nhiệm nội dung, chương trình, chất lượng, tiến độ giảng dạy mơn Tin học chương trình, kế hoạch giảng dạy mơn Tin học khoa Trường giao Thực tập thực tế - CNTT III Cơ cấu tổ chức Trường Đại học Y Dược Cần Thơ Khoa Dược Khoa Răng Hàm Mặt Khoa Y Nhà Hiệu Bộ Khoa Khoa học Khoa Khoa Y Điều tế công dưỡngkỹ cộng thuật y học IV Cơ cấu tổ chức Phòng Cơng nghệ thơng tin Trưởng Phòng Giảng viênGiảng viên kiêm nhiệm Phụ trách mơn CHƯƠNG HOẠT ĐỘNG CỦA PHỊNG CÔNG NGHỆ THÔNG TIN TRƯỜNG ĐẠI HỌC Y DƯỢC CẦN THƠ I Hoạt động chun ngành phòng Cơng nghệ thông tin - Tổ chức, xây dựng phát triển hệ thống công nghệ thông tin phục vụ công tác quản lý trường Đại học Y Dược Cần Thơ - Giảng dạy lĩnh vực thuộc môn công nghệ thông tin - Tổ chức triển khai sản phẩm phần mềm tin học phòng học thư viện Thực tập thực tế - CNTT Võ Thanh Sang B1509947 II Các nhân phòng công nghệ thông tin Với môi trường làm việc chuyên nghiệp, phòng cơng nghệ thơng tin có chức vụ sau: - Ths Châu Minh Khoa: Giảng viên kiêm nhiệm Ths Lương Thị Minh Thư: Giảng viên kiêm nhiệm Ths Trần Thị Bích Phương: Phụ trách mơn Ks Trần Việt Xô: Giảng viên kiêm nhiệm Phạm Việt Tân: nhân viên mơn Ks Nguyễn Hồng Thái: Giảng viên PHẦN B: NỘI DUNG THỰC TẬP CHƯƠNG NỘI DUNG CÔNG VIỆC, PHƯƠNG PHÁP THỰC HIỆN THỰC TẬP THỰC TẾ I II Nội dung cơng việc thực tập Thu thập, tìm hiểu số liệu khảo sát phản hồi, đánh giá sinh viên Tìm hiểu cơng cụ mã nguồn mở vntokenizer Viết chương trình tóm tắt góp ý, phản hồi sinh viên Kiểm tra, sửa lỗi chương trình Viết báo cáo Phương pháp, thời gian thực STT Thời gian Nội dung thực Từ ngày 25/5/2019 đến ngày 26/5/2019 - Thu thập, tìm hiểu số liệu khảo sát phản hồi, đánh giá sinh viên Thực tập thực tế - CNTT Phương pháp thực Tìm hiểu, đọc tài liệu (Internet, sách) đề tài Gặp gỡ trao đổi vấn đề thắc mắc, thống thời gian thực tập với người hướng dẫn Võ Thanh Sang B1509947 3 Từ ngày 27/5/2019 đến ngày 2/6/2019 Từ ngày 3/6/2019 đến ngày 9/6/2019 Từ ngày 10/6/2019 đến ngày 16/6/2019 Từ ngày 17/6/2019 đến ngày 23/6/2019 Từ ngày 24/6/2019 đến ngày 30/6/2019 Từ ngày 1/7/2019 đến ngày 7/7/2019 Từ ngày 8/7/2019 đến ngày 14/7/2019 - Tìm hiểu công cụ mã nguồn mở vntokenizer Chuẩn bị tài nguyên (giấy, viết, Laptop) Ghi chép lại lưu ý trình gặp gỡ, tìm hiểu Tìm hiểu, đọc tài liệu (Internet, sách) mã nguồn mở, tham khảo thêm ý kiến cán hướng dẫn chi tiết phương pháp tokenizer - Viết chương trình tóm tắt góp ý, phản hồi sinh viên Vận dụng kiến thức học để vận dụng vào việc xây dựng giải pháp giải thuật - Viết chương trình tóm tắt góp ý, phản hồi sinh viên Vận dụng kiến thức để phân tích xây dựng mơ hình, thuật tốn, số liệu liệu cho hệ thống - Viết chương trình tóm tắt góp ý, phản hồi sinh viên Vận dụng kiến thức học để tiếp tục xây dựng hoàn thiện hệ thống - Viết chương trình tóm tắt góp ý, phản hồi sinh viên Hoàn thiện hệ thống - Kiểm tra, sửa lỗi chương trình Kiểm tra lại hệ thống, khắc phục lỗi giao cho cán hướng dẫn đánh giá, nghiệm thu - Viết báo cáo Chuẩn bị Laptop, tham khảo mẫu báo cáo khoa gửi chỉnh sửa lỗi sai cho hoàn chỉnh Thực tập thực tế - CNTT Võ Thanh Sang B1509947 CHƯƠNG NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU I Tổng quan xử lí ngơn ngữ Tiếng Việt Tiếng nói chữ viết hai yếu tố ngơn ngữ Trên giới có nhiều cơng trình nghiên cứu xử lý ngôn ngữ, nhiên, Việt Nam, lĩnh vực gặp trở ngại lớn Xử lý ngôn ngữ phạm trù xử lý thông tin với đầu vào liệu ngơn ngữ, hay nói cách khác, văn tiếng nói, Các liệu trở thành kiểu liệu người, lưu dạng điện tử Đặc điểm chung chúng khơng có cấu trúc (non-structured ), nửa câu trúc (semi-structured) không thẻ lưu lại dạng bảng biểu Vì cần phải xử lý chúng để chuyển từ dạng chưa hiểu thành dạng hiểu Một số tốn xử lý ngôn ngữ tiêu biểu như: Nhận dạng tiếng nói, (Speech recognization) phổ biến hệ thống trợ ý ảo Tổng hợp tiếng nói (speech synthesis) từ liệu bản, phân tích chuyển thành tiếng nói Nhận dạng chữ viết (optical character recognition) Từ văn in giấy, baner, bạn chuyển thành tệp văn lưu máy tính Dịch tự động (machine translate) Cái có lẽ phổ biến cả, khơng chưa biết đến Google translate Tóm tắt văn (text summarization) Từ văn dài, máy tóm tắt thành văn ngắn với nội dung Tìm kiếm thơng tin (information retrieval) từ nguồn có nhiều tệp thơng tin, tìm tệp có liên quan đến câu hỏi cần tìm Tiêu biểu Google search Trích chọn thơng tin (infomation extraction) tìm đoạn bên tệp thông tin chứa nội dung ta cần biết Phát tri thức khai phá liệu văn (knowledge discovery and text data mining), từ nhiều nguồn văn khác nhau, khơng liên quan với nhau, tìm tri thức chưa biết Ngồi có nhiều cơng nghệ xử lý ngôn ngữ khác hệ chuyên gia, hệ hỏi đáp, hệ sinh ngôn ngữ, Thực tập thực tế - CNTT Võ Thanh Sang B1509947 từ cấu tạo nhiều tiếng Vì ngơn ngữ thuộc vùng Đơng Á, vấn đề tốn tách từ khử nhập nhằng ranh giới từ Trong NLP có quan điểm : Xử lý từ ngữ máy tính Làm cho máy tính hiểu từ ngữ Hiện tại, hướng tích cực nghiên cứu phát triển, nhờ nhiều hệ thống hiệu tạo Các ứng dụng NLP : Chế tạo hệ thống Máy dịch, ví dụ Google translation Xử lý văn ngơn ngữ Tìm kiếm thơng tin Chiết suất thơng tin Tóm tắt văn Phân loại văn Data mining, web mining d) Tổng quan thư viện gensim Gensim thư viện Python để lập mơ hình chủ đề, lập mục tài liệu truy xuất tương tự với khối lớn Đối tượng mục tiêu cộng đồng xử lý ngôn ngữ tự nhiên (NLP) cộng đồng truy xuất thơng tin (IR) Tính năng, đặc điểm: Tất thuật toán độc lập với nhớ w.r.t kích thước kho văn (có thể xử lý đầu vào lớn RAM, truyền phát, lõi), Giao diện trực quan dễ dàng cắm vào kho liệu / kho liệu đầu vào riêng bạn (API truyền phát tầm thường) dễ dàng mở rộng với thuật toán Vector Space khác (API biến đổi tầm thường) Thực tập thực tế - CNTT Võ Thanh Sang B1509947 11 Hiệu đa lõi thuật toán phổ biến, chẳng hạn Phân tích ngữ nghĩa tiềm ẩn trực tuyến (LSA / LSI / SVD), Phân bổ Dirichlet tiềm ẩn (LDA), Dự đốn ngẫu nhiên (RP), Quy trình Dirichlet phân cấp (HDP) học sâu word2vec Điện toán phân tán: chạy Phân tích ngữ nghĩa tiềm ẩn Phân bổ Dirichlet tiềm ẩn cụm máy tính Tài liệu mở rộng hướng dẫn Jupyter Notebook Nếu danh sách tính khiến bạn phải gãi đầu, trước tiên bạn đọc thêm Mơ hình khơng gian Vector phân tích tài liệu không giám sát Wikipedia pip install -U gensim e) Tổng thư viện pickle Các chuỗi ghi đọc dễ dàng từ tập tin Các số cần cố gắng hơn, phương thức read() trả chuỗi, cần truyền vào hàm int(), nhận chuỗi '123' trả giá trị số 123 Tuy nhiên, bạn muốn lưu kiểu liệu phức tạp danh sách, từ điển, đối tượng, việc trở nên rắc rối nhiều Thay để người dùng ln viết gỡ rối mã để lưu kiểu liệu phức tạp, Python cung cấp mô-đun chuẩn gọi pickle Đây mơđun tuyệt diệu nhận hầu hết đối tượng Python (ngay vài dạng mã Python!), chuyển thành chuỗi; q trình gọi giầm (pickling) Tạo lại đối tượng từ chuỗi gọi vớt (unpickling) Giữa việc giầm vớt, biểu diễn dạng chuỗi đối tượng lưu vào tập tin, gửi qua mạng đến máy xa f) Mơ hình huấn luyện Word2Vec Pre-trained word vectors 30 ngôn ngữ giới traning sẵn Dự án có hai mục đích Trưóc hết chia sẻ kinh nghiệm tác giả tác vụ NLP phân đoạn văn vectors từ Điều quan trọng số mơ hình vectors từ đào tạo từ trước cho ngôn ngữ mà tiếng anh Than ôi! Tiếng Anh thu hút nhiều ý ngôn ngữ khác Kiểm tra điều để xem bạn dễ dàng có nhiều vectơ từ tiếng Anh đào tạo trước mà không cần nỗ lực Thực tập thực tế - CNTT Võ Thanh Sang B1509947 12 Yêu cầu: • • • • nltk >= 1.11.1 numpy >= 1.11.2 pyvi >= 0.0.7.2 (Only for Vietnamese) gensim > =0.13.1 (for Word2Vec) https://github.com/Kyubyong/wordvectors g) Các ứng dụng toán tách từ Bài toán tách từ toán toán đặt cho xử lý ngơn ngữ sau : - Phân tích hình thái (morphological analysis) - Phân tích phụ tố - Nhận diện tên riêng - Nhận diện ranh giới ngữ - Phân tích ngữ pháp (PARSER) - Gán nhãn từ loại - Gán nhãn ranh giới ngữ - Gán nhãn quan hệ cú pháp - Xử lý văn - Kiểm lỗi tả - Kiểm lỗi văn phạm - Phân loại văn - Tóm tắt văn - Hiểu văn - Khai thác văn -Tóm tắt văn -Kiểm lỗi tả -Phân loại văn -Tách dấu chấm câu, ký hiệu chữ số Tài nguyên hỗ trợ: · Từ điển tiếng Việt · Ngữ liệu tiếng Việt tách từ hỗ trợ trình huấn luyện Mục tiêu Trong thời đại mà ngày, , phút có lượng thông tin khổng lồ sinh ra, giới hạn thời gian, khả đọc tiếp thu người có hạn, việc hiểu nắm bắt thật nhiều thơng tin cách nhanh chóng khơng phải vấn đề đơn giản với Thực tập thực tế - CNTT Võ Thanh Sang B1509947 13 Đã bạn tìm kiếm kiến thức internet, hay đọc sách mà nội dung dài "lê thê", khiến cho bạn cảm thấy chút khó khăn để nắm bắt chưa? Đứng trước xu hướng người ngày nhiều thời gian đọc email, báo điện tử mạng xã hội, thuật toán sử dụng machine learning để tự động tóm tắt văn dài cách gãy gọn xác ngày trở nên cần thiết có vai trò to lớn đối lĩnh vực Tự động tóm tắt cơng nghệ quan trọng giúp người giảm thiểu thời gian đọc email thông tin, kiến thức để dành thời gian cho cơng việc khác, mà nắm bắt gãy gọn nội dung Hiện nay, nhiều thuật tốn cho việc tóm tắt công ty, nhà nghiên cứu phát triển Tuy nhiên, hơm muốn giới thiệu cho bạn số cách đơn giản mà tìm hiểu Với việc áp dụng phương pháp học máy (Machine Learning) hay xử lý ngôn ngữ tự nhiên (Natural Language Processing), cá nhân thấy phương pháp đơn giản dễ dàng nắm bắt Phương pháp nghiên cứu Phương pháp thu thập thơng tin: - Tìm kiếm thơng tin internet - Học hỏi từ bạn bè - Liên hệ, trao đổi ý kiến với người hướng dẫn Về mặt lý thuyết: Xây dựng ma trận liệu liên quan Áp dụng máy học để huấn luyện liệu Lưu lại mô hình liệu với tham số tối ưu Về kĩ thuật: Sử dụng ngơn ngữ lập trình Python với thư viện hỗ trợ tính tốn giải thuật máy học - Cơng cụ hỗ trợ lập trình Python Thực tập thực tế - CNTT Võ Thanh Sang B1509947 14 Mơ hình hoạt động hệ thống Các bước xử lý: Chương trình của chúng ta sẽ chỉ cần có 5 bước như sơ đồ ở trên Cụ thể mơ tả bước sau: Tiền xử lý văn bản: Văn đầu vào chứa nhiều ký tự thừa, dấu câu thừa, khoảng trắng thừa, từ viết tắt, viết hoa, điều làm ảnh hưởng tới bước sau nên cần phải xử lý trước! Tuy nhiên lần này, thử số báo "quy củ" nên tơi thực phương pháp Biến đổi hết chữ thường Loại bỏ khoảng trắng thừa Tách câu văn bản: Ở bước này, tách đoạn văn cần tóm tắt qua xử lý thành danh sách câu Chuyển câu sang dạng vector số thực: Để phục vụ cho phương pháp tóm tắt bước tiếp theo, cần chuyển câu văn (độ dài ngắn khác nhau) thành vector số thực có độ dài cố định, cho phải đảm bảo "độ khác nhau" ý nghĩa câu tương tự độ sai khác vector tạo Phân cụm: Về Machine Learning thuật tốn quen thuộc (K-Means Clustering) Thuật toán giúp phân cụm câu có ý nghĩa giống nhau, để từ chọn lọc loại bỏ bớt câu có ý nghĩa Xây dựng đoạn văn tóm tắt: Sau có cụm, cụm (phân loại theo ý nghĩa), chọn câu cụm để tạo nên văn tóm tắt Cài đặt hệ thống a) Tiền xử lí văn bản: Để thu được liệu ta sử Google Form, Google Sheets để thu thập lưu trữ Code lấy liệu thông qua công cụ dành cho nhà phát triển Sheets API sau: from future import print_function import pickle import os.path Thực tập thực tế - CNTT Võ Thanh Sang B1509947 15 from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request # If modifying these scopes, delete the file token.pickle SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly'] # The ID and range of a sample spreadsheet SAMPLE_SPREADSHEET_ID = '1nN0XoowGTJ5yYZ8GCmxfRI8pOaotHrzjVbs2qHPTNx0' SAMPLE_RANGE_NAME = 'A2:H' def main(): """Shows basic usage of the Sheets API Prints values from a sample spreadsheet """ creds = None # The file token.pickle stores the user's access and refresh tokens, and is # created automatically when the authorization flow completes for the first # time if os.path.exists('token.pickle'): with open('token.pickle', 'rb') as token: creds = pickle.load(token) # If there are no (valid) credentials available, let the user log in if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES) creds = flow.run_local_server() # Save the credentials for the next run with open('token.pickle', 'wb') as token: pickle.dump(creds, token) service = build('sheets', 'v4', credentials=creds) # Call the Sheets API sheet = service.spreadsheets() result = sheet.values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID, range=SAMPLE_RANGE_NAME).execute() values = result.get('values', []) if not values: print('No data found.') else: Thực tập thực tế - CNTT Võ Thanh Sang B1509947 16 print('Góp Ý: ') for row in values: print(row[5]) pickle.dump(row[5], open("sheet.pkl", "wb")) if name == ' main ': main() Dùng thư viện pickle để nén liệu thành file binary lưu lại để giữ tính tồn vẹn cho file load lên việc lưu kiểu binary nhẹ nhiều so với lưu file dạng text thông thường nhiều liệu Dùng phương pháp chuyển đổi hết sang chữ thường loại bỏ khoảng trắng nhé, có đoạn code sau: contents_parsed = content.lower() #Biến đổi hết thành chữ thường contents_parsed = contents_parsed.replace('\n', ' ') #Đổi ký tự xuống dòng thành chấm câu contents_parsed = contents_parsed.strip() #Loại bỏ khoảng trắng thừa Và kết thu được: cô dạy hay dễ hiểu cô dịu dàng thân thiện, đề nghị môn định hướng dược lâm sàng xem lại cách hướng dẫn sinh viên tìm đáp án ca lâm sàng thực hành, trả lời để sinh viên có kiến thức thêm em mong số thầy cô giải đáp án câu hỏi ca lâm sàng để tụi em biết đúng, dạ! em có thêm ý kiến là: dạy hay cho ví dụ dễ hiểu dạ! em xin cám ơn em thích cách dạy cơ, thích cách truyền đạt cô!!!, cô liên người gv mà em mếm phục! nghiêm khác giảng dạy đòi hỏi sv nắm bắt kiến thức cô thân thiện nhiệt tình với sv mặt học tập lẫn xã hội có nhiều bạn sợ bảo khó em liên người cô em mến phục! em cảm ơn truyền đạt kiến thức hữu ích nhìn nhận thực tế cho em giảng viên trách nhiệm tâm huyết em cảm ơn cô!, thầy giảng dễ thương, thầy mở rộng tầm hiểu biết sinh viên thứ chúng em làm phòng thí nghiệm ngồi thực tế hơn… b) Tác câu văn bản: Thực tập thực tế - CNTT Võ Thanh Sang B1509947 17 Tại đây chúng ta sẽ tách các câu trong văn bản trên ra để thu được 1 danh sách các câu có ở trên Việc này trở nên đơn giản hơn rất nhiều với thư viện NLTK, tơi có thể dễ dàng sử dụng hàm sent_tokenize để lấy ra danh sách các câu import nltk sentences = nltk.sent_tokenize(contents_parsed) Kết quả thu được: ['cô dạy hay dễ hiểu.', 'cô dịu dàng thân thiện, đề nghị môn định hướng dược lâm sàng xem lại cách hướng dẫn sinh viên tìm đáp án ca lâm sàng thực hành, trả lời để sinh viên có kiến thức thêm.', 'em mong số thầy cô giải đáp án câu hỏi ca lâm sàng để tụi em biết đúng, dạ!', 'em có thêm ý kiến là: dạy hay cho ví dụ dễ hiểu.', 'dạ!', 'em xin cám ơn.', 'em thích cách dạy cơ, thích cách truyền đạt cô!!', '!, cô liên người gv mà em mếm phục!', 'cô nghiêm khác giảng dạy đòi hỏi sv nắm bắt kiến thức thân thiện nhiệt tình với sv mặt học tập lẫn xã hội.', 'có nhiều bạn sợ bảo khó em cô liên người cô em mến phục!', 'em cảm ơn cô truyền đạt kiến thức hữu ích nhìn nhận thực tế cho em.', 'cô giảng viên trách nhiệm tâm huyết.', 'em cảm ơn cô!, thầy giảng dễ thương, thầy mở rộng tầm hiểu biết sinh viên thứ chúng em làm phòng thí nghiệm ngồi thực tế hơn…'] c) Chuyển câu sang Vector: Về phần này, có nhiều phương pháp training sử dụng hiệu quả, nhằm biến đổi câu sang vector có độ dài cố định mà giữ đặc trưng, ý nghĩa câu Có thể kể đến phương pháp SkipThought (https://github.com/ryankiros/skip-thoughts/tree/master/training) Tuy nhiên mô hình training tập liệu tiếng Anh để training lại với liệu tiếng Việt bạn thêm chút thời gian Mô hình tỏ hiệu quả,tuy nhiên phương pháp dễ dàng để tiếp cận sử dụng sẵn mơ hình huấn luyện chuyển đổi từ "Từ sang vector" (Word2Vec) Thực tập thực tế - CNTT Võ Thanh Sang B1509947 18 Phương pháp tách nhỏ câu thành từ, sau dùng mơ hình Word2Vec training cho tiếng Việt, chuyển đổi từ sang vector số thực có chiều dài cố định Cuối cùng, vector câu mà chuyển đổi sang TỔNG vector đại diện cho từ câu! Mơ hình Word2Vec cho tiếng Việt dễ dàng tìm mạng, tơi sử dụng mơ hình https://github.com/Kyubyong/wordvectors Với mơ hình vừa tải xuống, từ biến đổi thành vector 100 chiều Chúng ta sử dụng thư viện gensim để load lại model from gensim.models import KeyedVectors w2v = KeyedVectors.load_word2vec_format("vi_txt/vi.vec") Tiếp theo tách từ câu lấy tổng để vector cho câu danh sách mà vừa có kia: vocab = w2v.wv.vocab # Danh sách từ từ from pyvi import ViTokenizer X = [] for sentence in sentences: sentence = ViTokenizer.tokenize(sentence) words = sentence.split(" ") sentence_vec = np.zeros((100)) for word in words: if word in vocab: sentence_vec+=w2v.wv[word] X.append(sentence_vec) Trong đoạn code trên, duyệt qua câu danh sách câu Với câu, tách từ Ở dùng thêm thư viện pyvi để tách từ tiếng Việt Ví dụ câu: 'cơ dạy hay dễ hiểu.' Chúng ta phải tách thành ['cô_dạy' 'rất' 'hay' 'và' 'dễ' 'hiểu''.'] Thư viện pyVi với hàm ViTokenize giúp ghép từ có nghĩa tiếng Việt lại với nhằm đảm bảo giữ nguyên ý nghĩa từ! Thực tập thực tế - CNTT Võ Thanh Sang B1509947 19 Sau đó, tơi khai báo vector 100 chiều gồm toàn số với từ câu, sử dụng hàm word2vec chuyển thành vector cộng vào vector (nếu chuyển thành vector) Cuối sau hết câu, tơi thêm vào mảng đặt tên X X thu vector 100 chiều mà vector đại diện cho câu văn d) Phân cụm: Bài toán phân cụm nhánh ứng dụng lĩnh vực Unsupervised Learning (Học khơng giám sát), liệu mơ tả tốn khơng dán nhãn (tức khơng có đầu ra) Trong trường hợp này, thuật tốn tìm cách phân cụm - chia liệu thành nhóm có đặc điểm tương tự nhau, đồng thời đặc tính nhóm lại phải khác biệt tốt Và đây, muốn phân cụm vector đại diện cho câu văn vừa để biết câu mang ý nghĩa giống Thực tập thực tế - CNTT Võ Thanh Sang B1509947 20 Thuật toán phân cụm đây, chọn số cụm (clusters) số câu mà muốn tóm tắt Thuật tốn dễ dàng sử dụng cài đặt với sklearn from sklearn.cluster import KMeans n_clusters = kmeans = KMeans(n_clusters=n_clusters) kmeans = kmeans.fit(X) Ở tơi muốn tóm tắt mẩu tin thành câu nhất, nên n_clusters để Quá trình phân cụm diễn nhanh số lượng câu văn nhỏ e) Xây dựng đoạn văn tóm tắt Mỗi cụm mà phân trên, hiểu đại diện cho ý nghĩa văn gốc Tuy nhiên để tóm gọn lại văn dài, với ý nghĩa chọn câu thôi! Và câu chọn để đại diện cho cụm đây, câu có khoảng cách gần với trung tâm cụm Sau có câu văn tóm tắt, quan tâm xếp thứ tự cho hợp lý Ở đây, với ý nghĩa, tính "thứ tự xuất trung bình" cụm Ví dụ cụm có câu 1, 2, thứ tự trung bình 8/3 Thực tập thực tế - CNTT Võ Thanh Sang B1509947 21 Làm tương tự với cụm khác, sau lấy câu đại diện cụm theo thứ tự từ nhỏ đến lớn thứ tự xuất trung bình để tạo văn tóm tắt from sklearn.metrics import pairwise_distances_argmin_min avg = [] for j in range(n_clusters): idx = np.where(kmeans.labels_ == j)[0] avg.append(np.mean(idx)) closest, _ = pairwise_distances_argmin_min(kmeans.cluster_centers_, X) ordering = sorted(range(n_clusters), key=lambda k: avg[k]) summary = ' '.join([sentences[closest[idx]] for idx in ordering]) print(summary) Đoạn code dùng hàm pairwise_distances_argmin_min sklearning metric để lấy khoảng cách vector vector trung tâm cụm nó, sau chọn khoảng cách nhỏ để lấy câu đại diện Sau tính "thứ tự xuất trung bình" xếp lại để tạo văn tóm tắt Và kết cuối ta thu sau: cô giảng viên trách nhiệm tâm huyết em cảm ơn cô truyền đạt kiến thức hữu ích nhìn nhận thực tế cho em cô dịu dàng thân thiện, đề nghị môn định hướng dược lâm sàng xem lại cách hướng dẫn sinh viên tìm đáp án ca lâm sàng thực hành, trả lời để sinh viên có kiến thức thêm em cảm ơn cô!, thầy giảng dễ thương, thầy mở rộng tầm hiểu biết sinh viên thứ chúng em làm phòng thí nghiệm ngồi thực tế hơn., đặng nhiệt tình hướng dẫn giải đáp thắc mắc lúc thực hành, gần gủi với sinh viên tạo khơng khí nhẹ nhàng buổi học quan tâm sinh viên, cho em góp ý kiến giáo trình gp trường em thấy nhiều chỗ sai, em cảm thấy đề thi gp năm có câu sai đề nữa, mong thầy xem lại ạ!, sau kết thúc nên có phần tổng kết nên hỏi sinh viên có thắc mắc ý kiến kiến thức, việc tự học nên cho liên quan đến thực tế lâm sàng để sinh viên có hứng thú, cộng trừ điểm rõ ràng tự học Thử số văn khác Văn bản: Trong năm 2018, số đại học miền Nam lấy điểm chuẩn khoảng 22 trở lên ĐH Bách khoa, ĐH Quốc gia TP.HCM, với ngành Khoa học Máy tính (23,25), Kỹ thuật điện, Điện tử - viễn thơng (21,25), Kỹ thuật Hóa học (22); ĐH Kinh tế TP.HCM với ngành Ngoại thương (22,6), Kinh doanh Quốc tế (22,8) Điểm chuẩn 22-23 mức phổ biến số trường miền Bắc ĐH Kinh tế Quốc dân với ngành Kinh tế Đầu tư (22,85), Kinh tế Phát triển (22,3), Tài Ngân hàng (22,85), Quản lý Dự án (22); hay ĐH Bách khoa Hà Nội với Kỹ thuật Cơ khí Động lực (22,2), Kỹ thuật Hàng khơng (22), Kỹ thuật Điện tử - Viễn thông Thực tập thực tế - CNTT Võ Thanh Sang B1509947 22 (22) Mức điểm tăng phân khúc 22 tác động mạnh tới điểm chuẩn ngành tốp Với số lượng thí sinh đạt điểm cao tăng mạnh, tiêu tuyển sinh không chênh lệch nhiều, điểm trúng tuyển trường dự kiến tăng Trong đó, số lượng thí sinh đạt điểm từ 15 đến 22, tức mức điểm chuẩn phổ biến nhất, không chênh lệch nhiều Năm nay, số lượng nguyện vọng theo tổ hợp A00 đạt mức điểm khoảng 218.000 (65,46%), cao so với năm ngoái (172.000 em, 53,69%) Và kết tóm tắt: năm 2018, số đại học miền nam lấy điểm chuẩn khoảng 22 trở lên đh bách khoa, đh quốc gia tp.hcm, với ngành khoa học máy tính (23,25), kỹ thuật điện, điện tử - viễn thơng (21,25), kỹ thuật hóa học (22); đh kinh tế tp.hcm với ngành ngoại thương (22,6), kinh doanh quốc tế (22,8) điểm chuẩn 22-23 mức phổ biến số trường miền bắc đh kinh tế quốc dân với ngành kinh tế đầu tư (22,85), kinh tế phát triển (22,3), tài - ngân hàng (22,85), quản lý dự án (22); hay đh bách khoa hà nội với kỹ thuật khí động lực (22,2), kỹ thuật hàng không (22), kỹ thuật điện tử - viễn thông (22) f) Graphical User Interface (GUI) Giao diện người dùng với chức mở file, xử lý, chương trình lưu kết lại Thực tập thực tế - CNTT Võ Thanh Sang B1509947 23 CHƯƠNG KẾT QUẢ VÀ KINH NGHIỆM ĐẠT ĐƯỢC I Kết kinh nghiệm học tập qua thời gian thực tập thực tế Qua thời gian tuần học tập nghiên cứu đem lại nhiều kinh nghiệm cho em: - Làm quen dần với mơi trường lài việc thực tế bên ngồi - Rèn luyện kỹ mềm (giao tiếp, báo cáo, ), kỹ tự học hỏi giải vấn đề - Học tác phong làm việc môi trường chuyên nghiệp II Những kiến thức lý thuyết củng cố Qua thời gian thực tập thực tế, kiến thức lý thuyết củng cố lại: III - Kiến thức “Nguyên lý máy học” Kiến thức lập trình, đặc biệt lập trình ngơn ngữ python Những điểm hạn chế Bước đầu chưa quen với yêu cầu thực tế Chưa động việc học nhóm với bạn bè dẫn đến hiệu khơng mong muốn - Kiến thức lập trình hạn chế nên việc thực tập quan chậm Thực tập thực tế - CNTT Võ Thanh Sang B1509947 24 TÀI LIỆU THAM KHẢO NLTK: https://vlsp.hpda.vn/ Pyvi: https://pypi.org/project/pyvi/ Gensim: https://pypi.org/project/gensim/ https://viblo.asia/p/ban-ve-xu-ly-ngon-ngu-tieng-viet-924lJYdYZPM https://viblo.asia/p/phan-loai-van-ban-tieng-viet-tu-dong-phan-1-yMnKM3bal7P Word2Vc: https://github.com/Kyubyong/wordvectors https://towardsdatascience.com/write-a-simple-summarizer-in-pythone9ca6138a08e Text Summarize Book: https://www.amazon.com/AdvancesAutomatic-Text-SummarizationPress/dp/0262133598/ref=as_li_ss_tl?ie=UTF8&qid=1503872626&s r=81&keywords=text+summarization&linkCode=sl1&tag=inspiredalgor20&linkId=75d9f8d62261d17bdddf5c5c0f43881a Kmean Clustering: https://machinelearningcoban.com/2017/01/01/kmeans / Thực tập thực tế - CNTT Võ Thanh Sang B1509947 25 ... nhãn quan hệ cú pháp - Xử lý văn - Kiểm lỗi tả - Kiểm lỗi văn phạm - Phân loại văn - Tóm tắt văn - Hiểu văn - Khai thác văn -Tóm tắt văn -Kiểm lỗi tả -Phân loại văn -Tách dấu chấm câu, ký hiệu... tơi muốn tóm tắt mẩu tin thành câu nhất, nên n_clusters để Quá trình phân cụm diễn nhanh số lượng câu văn nhỏ e) Xây dựng đoạn văn tóm tắt Mỗi cụm mà phân trên, hiểu đại diện cho ý nghĩa văn gốc... 15 a) Tiền sử lí văn bản: 15 b) Tác câu văn bản: 17 c) Chuyển câu sang Vector: .18 d) Phân cụm: 20 e) Xây dựng đoạn văn tóm tắt