Tải bản đầy đủ (.pdf) (30 trang)

Công Cụ Tóm Tắt Văn Bản Tiếng Việt Bằng Python

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.08 MB, 30 trang )

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 bộ hướng dẫn
Trần Việt Xô

Sinh viên thực hiện
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 đủ mọi điều
kiện thuận lợi cho em thực hiện đề tài thực tập thực tế.
Xin chân thành cảm ơn các anh, chị của phòng công nghệ thông tin Trường
Đại học Y Dược Cần Thơ, đặc biệt là anh Trần Việt Xô đã tận tình hướng dẫn, chỉ
bảo cùng những lời động viên khuyến khích và giúp đỡ, luôn tạo không khí thoải
mái và môi trường làm việc thân thiện trong suốt quá trình thực tập. Giúp cho em
năng động, phát huy tối đa tư duy linh hoạt trong giải quyết vấn đề. Nâng cao khả
năng làm việc độc lập và đồng thời làm quen với môi trường làm việc thực tế. Nhờ
đó mà trong chuyến thực tập thực tế này em học hỏi được rất nhiều điều bổ ích trong kiến thức chuyên môn cũng như những kĩ năng mềm trong môi trường công
sở thật sự.
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ị những kiến thức quý báo trong những
năm học vừa qua. Để em có đủ tự tin để bước vào môi trường làm việc hoàn toàn
mới mẽ.
Mặc dù đã cố gắng hoàn thành tốt công việc được phân công trong phạm vi
và khả năng cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót nhất
định. Kính mong nhận được sự cảm thông và tận tình chỉ bảo của quý thầy cô và
quý cơ quan.
Sau cùng, em xin kính chúc Thầy, Cô và các anh, chị ở Trường Đại học Y
Dược Cần Thơ nhiều sức khỏe, luôn thành công trong công việc. Em xin chân thành
cảm ơn.

Sinh viên thực hiện
Võ Thanh Sang

Thực tập thực tế - CNTT

Võ Thanh Sang B1509947
3


Mục Lục
PHẦN A: TÌM HIỂU CƠ QUAN THỰC TẬP...................................................................................... 1
CHƯƠNG 1 ................................................................................................................................... 1
GIỚI THIỆU TRƯỜNG ĐẠI HỌC Y DƯỢC CẦN THƠ .................................................................. 1
I.
Tổng quan về Trường Đại học Y Dược Cần Thơ ......................................................... 1
II.
Lĩnh vực hoạt động ........................................................................................................ 1
III. Cơ cấu tổ chức................................................................................................................ 2
IV. Cơ cấu tổ chức Phòng Công nghệ thông tin ............................................................... 2

CHƯƠNG 2 ................................................................................................................................... 2
HOẠT ĐỘNG CỦA PHÒNG CÔNG NGHỆ THÔNG TIN TRƯỜNG ĐẠI HỌC Y DƯỢC CẦN THƠ
....................................................................................................................................................... 2
I.
Hoạt động chuyên ngành của phòng Công nghệ thông tin ....................................... 2
II.
Các nhân sự chính của phòng công nghệ thông tin ................................................... 3
PHẦN B: NỘI DUNG THỰC TẬP ...................................................................................................... 3
CHƯƠNG 1 ................................................................................................................................... 3
NỘI DUNG CÔNG VIỆC, PHƯƠNG PHÁP ................................................................................... 3
THỰC HIỆN THỰC TẬP THỰC TẾ ............................................................................................... 3
I.
Nội dung công việc thực tập ......................................................................................... 3
II. Phương pháp, thời gian thực hiện ....................................................................................... 3
CHƯƠNG 2 ................................................................................................................................... 5
NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU ....................................................................................... 5
I.
Tổng quan về xử lí ngôn ngữ Tiếng Việt. ..................................................................... 5
1.Tìm hiểu về công cụ và thư viện. ....................................................................................................8
a)
Tìm hiểu công cụ tách từ tự động vnTokenizer .................................................................8
b)
Tổng quan thư viện pyvi ......................................................................................................9
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 của bài toán tách từ...................................................................................13
2. Mục tiêu ..........................................................................................................................................13
3. Phương pháp nghiên cứu ............................................................................................................14
4.
Mô hình hoạt động của hệ thống. ..........................................................................................15
5.
Cài đặt hệ thống..........................................................................................................................15
a)
Tiền sử lí văn bản: .................................................................................................................15
b)
Tác câu trong 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 bản tóm tắt .............................................................................................21
f)
Graphical User Interface (GUI) ...........................................................................................23

CHƯƠNG 3 ................................................................................................................................. 24
KẾT QUẢ VÀ KINH NGHIỆM ĐẠT ĐƯỢC .................................................................................. 24
I.
Kết quả và 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 củng cố .................................................................. 24
III. Những điểm còn hạn chế ............................................................................................. 24


Thực tập thực tế - CNTT

Võ Thanh Sang B1509947
4


NHẬN XÉT CỦA GIẢNG VIÊN
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Thực tập thực tế - CNTT

Võ Thanh Sang B1509947
5


PHẦN A: TÌM HIỂU CƠ QUAN THỰC TẬP
CHƯƠNG 1
GIỚI THIỆU TRƯỜNG ĐẠI HỌC Y DƯỢC CẦN THƠ
I. Tổng quan về Trường Đại học Y Dược Cần Thơ
Trường Đại học Y Dược Cần Thơ được thành lập trên cơ sở tách ra từ
trường Đại học Cần Thơ.
Tháng 7 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 được tách ra để 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ý quyết định thành lập Bệnh viện Trường
Đại học Y Dược Cần Thơ.
Gồm 6 khoa, trong đó phòng công nghệ thông tin của trường Đại học Y
Dược Cần Thơ nằm trong khoa Khoa học cơ bản.
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 của nhà
trường.
- Tổ chức, quản lý, giảng dạy các 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 và 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 của đơn vị và nhu cầu của
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 của
trường.
- Chịu trách nhiệm về nội dung, chương trình, chất lượng, tiến độ giảng dạy
môn Tin học trong chương trình, kế hoạch giảng dạy môn Tin học được khoa
và Trường giao.

Thực tập thực tế - CNTT

1


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 cơ
bản

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 bộ môn

CHƯƠNG 2
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 chuyên ngành của phòng Công nghệ thông tin

- Tổ chức, xây dựng và phát triển hệ thống công nghệ thông tin phục vụ công
tác quản lý của trường Đại học Y Dược Cần Thơ.
- Giảng dạy các lĩnh vực thuộc bộ môn công nghệ thông tin.
- Tổ chức triển khai các sản phẩm phần mềm tin học tại các phòng học và thư
viện.

Thực tập thực tế - CNTT

Võ Thanh Sang B1509947
2


II. Các nhân sự chính của 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ó cá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 bộ 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 bộ môn.
Ks. Nguyễn Hoàng Thái: Giảng viên.

PHẦN B: NỘI DUNG THỰC TẬP
CHƯƠNG 1
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 về số liệu khảo sát phản hồi, đánh giá của sinh viên.
Tìm hiểu về công cụ mã nguồn mở vntokenizer.
Viết chương trình tóm tắt các góp ý, các phản hồi của 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 hiện

STT

Thời gian

Nội dung thực hiện

1

Từ ngày
25/5/2019
đến ngày
26/5/2019

- Thu thập, tìm hiểu về số
liệu khảo sát phản hồi, đánh
giá của sinh viên.

Thực tập thực tế - CNTT


Phương pháp thực hiện
Tìm hiểu, đọc tài liệu (Internet,
sách) về đề tài.
Gặp gỡ và trao đổi các vấn đề thắc
mắc, thống nhất thời gian thực tập
với người hướng dẫn.

Võ Thanh Sang B1509947
3


2

3

4

5

6

7

8

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 về công cụ mã
nguồn mở vntokenizer

Chuẩn bị các tài nguyên (giấy, viết,
Laptop)
Ghi chép lại các lưu ý trong quá

trình gặp gỡ, tìm hiểu.
Tìm hiểu, đọc tài liệu (Internet,
sách) về mã nguồn mở, tham khảo
thêm ý kiến của cán bộ hướng dẫn
về chi tiết phương pháp tokenizer.

- Viết chương trình tóm tắt
các góp ý, các phản hồi của
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 và
giải thuật.

- Viết chương trình tóm tắt
các góp ý, các phản hồi của
sinh viên

Vận dụng kiến thức để phân tích và
xây dựng mô hình, thuật toán, số
liệu liệu cho hệ thống.

- Viết chương trình tóm tắt
các góp ý, các phản hồi của
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

các góp ý, các phản hồi của
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 các
lỗi và giao cho cán bộ 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 của khoa gửi và chỉnh sửa
các lỗi sai cho hoàn chỉnh.

Thực tập thực tế - CNTT

Võ Thanh Sang B1509947
4


CHƯƠNG 2
NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU
I. Tổng quan về xử lí ngôn ngữ Tiếng Việt.
Tiếng nói và chữ viết là hai yếu tố cơ bản của ngôn ngữ. Trên thế giới có rất nhiều
các công trình nghiên cứu về xử lý ngôn ngữ, tuy nhiên, ở Việt Nam, lĩnh vực này
đang gặp trở ngại rất lớn.

Xử lý ngôn ngữ là một phạm trù trong xử lý thông tin với đầu vào là dữ liệu ngôn
ngữ, hay nói cách khác, đó là văn bản hoặc tiếng nói, Các dữ liệu này đang trở thành
kiểu dữ liệu chính của con người, và lưu dưới dạng điện tử. Đặc điểm chung của
chúng là không có cấu trúc (non-structured ), hoặc nửa câu trúc (semi-structured) và
không thẻ lưu lại dưới dạng bảng biểu. Vì vậy chúng ta cần phải xử lý chúng để có
thể chuyển từ dạng chưa hiểu thành dạng có thể hiểu.
Một số bài toán về xử lý ngôn ngữ tiêu biểu như:
1. Nhận dạng tiếng nói, (Speech recognization) phổ biến trong các hệ thống trợ
ý ảo
2. Tổng hợp tiếng nói (speech synthesis) từ dữ liệu vẫn bản, phân tích và
chuyển thành tiếng nói
3. Nhận dạng chữ viết (optical character recognition) Từ một văn bản in trên
giấy, hoặc các baner, ... bạn có thể chuyển thành một tệp văn bản lưu trên
máy tính
4. Dịch tự động (machine translate) Cái này có lẽ phổ biến hơn cả, không ai là
chưa biết đến Google translate
5. Tóm tắt văn bản (text summarization) Từ một văn bản dài, máy tóm tắt thành
một văn bản ngắn hơn với các nội dung chính cơ bản
6. Tìm kiếm thông tin (information retrieval) từ một nguồn có rất nhiều tệp
thông tin, tìm ra những tệp có liên quan đến câu hỏi cần tìm. Tiêu biểu như
Google search.
7. Trích chọn thông tin (infomation extraction) tìm ra những đoạn bên trong
của một tệp thông tin chứa nội dung ta cần biết.
8. Phát hiện tri thức và khai phá dữ liệu văn bản (knowledge discovery and text
data mining), từ rất nhiều nguồn văn bản khác nhau, có thể không liên quan
với nhau, tìm ra những tri thức chưa ai biết. Ngoài ra còn có rất nhiều công
nghệ về xử lý ngôn ngữ khác như cá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
5


Các bài toán trên có phân thành 3 loại sau:


1-3 thuộc lĩnh vực xử lý tiếng nói và xử lý ảnh,



4-5 thuộc xử lý văn bản,



6-8 thuộc lĩnh vực khai phá văn bản Web.

Đối với các bài toán về xử lý văn bản, chúng ta cần xử lý thyeo các tầng cơ bản sau:
1. Tầng ngữ âm (phonetic and phonological layer), nghiên cứu về ngữ âm, mô
hinh hóa các từ, cách phát âm, thanh điệu, ngữ điệu, trường độ âm tiết, độ
nhấn, biến thanh, ....
2. Tầng hình thái (morphological layer), nghiên cứu về thành phần có nghĩa của
từ, cấu tạo của từ, hay nó được tách ra trong một câu như thế nào. VD đối
với bài toán word segmentation trong tiếng Việt, bạn có thể thấy một ví dụ
quen thuộc "Ông già đi nhanh quá", và bạn có thể hiểu theo 2 nghĩa: (Ông
già) (đi) (nhanh quá) hoặc (Ông) (già đi) (nhanh quá). Điều này có thể dẫn
đến nhập nhằng ngữ nghĩa, và làm ảnh hưởng rất lớn đến quá trình dạy máy
hiểu được ngôn ngữ con người.
3. Tầng ngữ pháp(morphological layer), nghiên cứu về các quan hệ cấu trúc

giữa các từ trong câu để tạo ra câu đúng. Các bài toán giải quyết tầng này
như:
o

Part-Of-Speach tagging: xác định loại từ trong câu (danh từ, động từ,
giới từ, trợ từ ,....)

o

Chungking: xác định cụm từ, ( cụm danh từ, cụm động từ, cụm trạng
từ, ...) VD "học sinh" là cụm danh từ, "học" là cụm động từ, "sinh
học" là cụm trạng từ.

o

Parsing: Phân tích cú pháp. VD (Học sinh) (học) (sinh học) là quan hệ
chủ ngữ - vị ngữ. Một số loại parsing bạn có thể tham khảo như: phân
tích cú pháp từ trên xuống (Top-Down Parsing), phân tích cú pháp dự
đoán (Predictive Parsing)....

4. Tầng ngữ nghĩa (semantic layer), nghiên cứu xác định nghĩa của từ và tổ hợp
của chúng. VD với từ "đi" người ta có hiểu "đi" là động tác "bước đi" hoặc
"đi" cũng có thể là "qua đời". Do đó để hiểu được ý nghĩa của từ, chúng ta
cần đặt nó trong văn cảnh của câu văn.
5. Tầng ngữ dụng (pragmatic layer): nghiên cứu mối quan hệ giữa ngôn ngữ và
ngữ cảnh sử dụng ngôn ngữ.

Thực tập thực tế - CNTT

Võ Thanh Sang B1509947

6


Trong một bài toán về xử lý ngôn ngữ, khi phân tích ở các tầng ngữ âm (1) đến
các tầng ngữ pháp (3) chúng ta gọi là phân tích sơ bộ (shallow parsing), thường được
áp dụng trong các bài toán như tìm kiếm thông tin, phân tích văn bản cho tổng hợp
tiếng nói ..v..v. Tuy nhiên với một số bài toán đi sâu vào ngữ nghĩa như dịch tự
động, thì việc phân tích sơ bộ là chưa đủ, Khi đó, ít nhất chúng ta phải thực hiện đến
tầng ngữ nghĩa (4) ta sẽ có phân tích đầy đủ (fully parsing).

Tình hình xử lý tiếng Việt tại Việt
Xử lý ngôn ngữ cũng đóng một vai trò quan trọng trong việc đẩy mạnh sự
phát triển của CNTT Việt Nam đến với thế giới. Tuy nhiên, ông ta ta xưa nay vẫn
nói: Phong ba bão táp không bằng ngữ pháp Việt Nam. Người Việt Nam đôi khi còn
gặp khó khăn khi sử dụng tiếng Việt, ấy thế mà, giờ chúng ta cần phải dạy cho máy
có thể dùng tiếng Việt như con người. Điều này quả thật rất khó khăn.
Ở Việt Nam cũng đã có một số nhóm bắt đầu nghiên cứu về xử lý ngôn ngữ,
bước đầu đã có những kết quả nhất định, như: các nhóm nghiên cứu đến từ các
trường đại học, đại học Bách Khoa, đại học Công Nghệ, đại học Khoa Học Tự
Nhiên, Viện Nghiên Cứu Công Nghệ Thông Tin, .... Nhóm Nghiên Cứu VLNP, Bên
ngoài Việt Nam cũng có các nghiên cứu đến từ các nghiên cứu sinh Việt Nam tại
JAIST. Phần lớn các sản phẩm hiện nay đang tập trung vào lĩnh vực dịch máy, một
sản phẩm khó, và yêu cầu làm dài hạn. Ngoài ra còn có các bài toán phân loại chia
nhóm văn bản.... Và đa phần chỉ dừng lại ở đề tài tiến sĩ, thạc sĩ, mang tính chất tìm
hiểu, chưa hệ thống và định hướng rõ ràng.
Bên cạnh những thành quả ban đầu, các công trình nghiên cứu xử lý ngôn ngữ ở
Việt Nam vẫn đang gặp rất nhiều những khó khăn.


Ít các nghiên cứu nền tảng, những công cụ và tài nguyên. Các bộ dữ liệu

chưa hoàn chỉnh, không được public hay thương mại hóa. Dữ liệu thường
hay bị spam, sai chính tả, ngữ pháp không rõ ràng.



Phần lớn là các nghiên cứu ngắn hạn, đơn lẻ như đề tài thạc sĩ, tiến sĩ, với
nhiều hạn chế về mô hình, thời gian, điều kiện phát triển.



Nhiều nhóm bắt đầu nghiên cứu khi còn thiếu kiến thức, dẫn đến nhiều sản
phẩm vẫn chưa thể đưa ra được kết quả.



Và điều quan trọng hơn hết là người Việt Nam mình mắc căn bệnh thiếu chia
sẻ, liên kết, hợp tác làm việc theo đúng quy trình, và không có tính kế thừa,
khiến cho người mới khi gặp vấn đề không biết phải xử lý sao, hỏi ai để có
thể giải quyết.


Thực tập thực tế - CNTT

Võ Thanh Sang B1509947
7


1.Tìm hiểu về công cụ và thư viện.
a) Tìm hiểu công cụ tách từ tự động vnTokenizer
Mã nguồn mở là phần mềm có bộ source code mà bất kì ai cũng có thể

download về, sửa đổi hoặc nâng cấp thêm cho nó những tính năng vượt trội khác.
Thông thường, mã nguồn mở được phát hành miễn phí và sở hữu bởi các đơn
vị, doanh nghiệp lớn về công nghệ, cũng có một số trường hợp các lập trình viên
phát triển mã nguồn mở và bày bán nó với các chức năng độc đáo hơn phiên bản
gốc.
Tokenizers nhận được thường là một mảng các từ riêng lẻ xuất rả từ một chuỗi
ký tự tìm kiếm. Tokenizer là một chương trình chuyện phân chia một yêu cầu, hiển
thị (expression) thành nhiều unit nhỏ gọi là Token. Tokenizer được dùng cho việc
phát triển của compiler cho ngôn ngữ lập trình. Nó giúp cho compiler tạo ra được
những cấu trúc dựa theo những gì chúng ta muốn.
vnTokenizer là chương trình tách từ tiếng Việt tự động. Việc nghiên cứu, phát
triển và cài đặt chương trình được thực hiện bởi một nhóm GV trẻ thuộc Khoa Toán
Cơ Tin học, trường Đại học Khoa học Tự nhiên, Đại học Quốc gia Hà Nội thực
hiện.
Dữ liệu gồm:
Từ điển tiếng Việt
o
o
o

o

Khoảng 35.000 từ, với các thông tin hình thái, ngữ pháp, ngữ nghĩa
dùng cho xử lý ngôn ngữ tự nhiên;
Chứa đựng đủ lớp từ thông dụng trong tiếng Việt hiện đại;
Mô hình từ điển theo chuẩn quốc tế nhằm sử dụng/trao đổi được giữa
nhiều hệ thống, thuận tiện cho nghiên cứu đối sánh các ngôn ngữ, dễ
cập nhật khi cần thiết;
Mã hoá chuẩn XML.


Treebank tiếng Việt
o
o
o
o
o

Văn bản thuộc chủ đề Chính trị - Xã hội của báo Tuổi Trẻ;
70,000 câu đã được tách từ (90,000 nếu tính cả hai tập dữ liệu bên
dưới);
10,000 câu đã được gán nhãn từ loại (20,000 nếu tính cả tập dữ liệu
bên dưới);
10,000 cây cú pháp;
Khuôn dạng tương tự treebank tiếng Anh (Penn Treebank).

Kho ngữ liệu song ngữ Anh-Việt
80,000 cặp câu Kinh tế - Xã hội;
20,000 cặp câu Tin học.

Thực tập thực tế - CNTT

Võ Thanh Sang B1509947
8


Hệ tách từ tiếng Việt



Sử dụng kết hợp từ điển và ngram, trong đó mô hình ngram được huấn luyện

sử dụng treebank tiếng Việt (70,000 câu đã được tách từ);
Độ chính xác trên 97%.

Hệ gán nhãn từ loại tiếng Việt
Dựa trên các mô hình học máy MEMs và CRFs;
Được huấn luyện sử dụng dữ liệu treebank tiếng Việt (20,000 câu đã được
gán nhãn từ loại);
o Độ chính xác trên 93%.
o
o

Hệ phân tích cụm từ tiếng Việt
o
o
o

Dựa trên mô hình học máy CRFs;
Được huấn luyện sử dụng dữ liệu treebank tiếng Việt (10,000 cây cú
pháp);
F-score đạt 81%.

Hệ phân tích cú pháp tiếng Việt
o
o
o

Dựa trên mô hình văn phạm phi ngữ cảnh xác suất;
Được huấn luyện sử dụng dữ liệu treebank tiếng Việt (10,000 cây cú
pháp);
F-score đạt 78%.


b) Tổng quan thư viện pyvi

Chức năng chính:
• Tokenize
• POS tag:
• Remove accents:

Xoá dấu

Algorithm: Conditional Random Field
Vietnamese tokenizer f1_score = 0.978637686
Vietnamese pos tagging f1_score = 0.92520656

Thực tập thực tế - CNTT

Võ Thanh Sang B1509947
9


POS TAGS:
• A - Adjective
• C - Coordinating conjunction
• E - Preposition
• I - Interjection
• L - Determiner
• M - Numeral
• N - Common noun
• Nc - Noun Classifier
• Ny - Noun abbreviation

• Np - Proper noun
• Nu - Unit noun
• P - Pronoun
• R - Adverb
• S - Subordinating conjunction
• T - Auxiliary, modal words
• V - Verb
• X - Unknown
• F - Filtered out (punctuation)

Installation: $ pip install pyvi
c) Tổng quan thư viện Natural Language Processing (NLP)
Natural Language Processing là khái niệm để chỉ các kĩ thuật, phương
pháp thao tác trên ngôn ngữ tự nhiên bằng máy tính. Bạn cần phân biệt ngôn ngữ
tự nhiên (ví dụ như tiếng Việt, tiếng Anh, tiếng Nhật… là những ngôn ngữ trong
giao tiếp thường ngày) và ngôn ngữ nhân tạo ( như ngôn ngữ lập trình, ngôn ngữ
máy, …).
Tách từ là một quá trình xử lý nhằm mục đích xác định ranh giới của các từ
trong câu văn, cũng có thể hiểu đơn giản rằng tách từ là quá trình xác định các từ
đơn, từ ghép… có trong câu. Đối với xử lý ngôn ngữ, để có thể xác định cấu trúc
ngữ pháp của câu, xác định từ loại của một từ trong câu, yêu cầu nhất thiết đặt ra
là phải xác định được đâu là từ trong câu. Vấn đề này tưởng chừng đơn giản với
con người nhưng đối với máy tính, đây là bài toán rất khó giải quyết.
Chính vì lý do đó tách từ được xem là bước xử lý quan trọng đối với các hệ
thống Xử Lý Ngôn Ngữ Tự Nhiên, đặc biệt là đối với các ngôn ngữ thuộc vùng
Đông Á theo loại hình ngôn ngữ đơn lập, ví dụ: tiếng Trung Quốc, tiếng Nhật,
tiếng Thái, và tiếng Việt. Với các ngôn ngữ thuộc loại hình này, ranh giới từ
không chỉ đơn giản là những khoảng trắng như trong các ngôn ngữ thuộc loại hình
hòa kết như tiếng Anh…, mà có sự liên hệ chặt chẽ giữa các tiếng với nhau, một
Thực tập thực tế - CNTT


Võ Thanh Sang B1509947
10


từ có thể cấu tạo bởi một hoặc nhiều tiếng. Vì vậy đối với các ngôn ngữ thuộc
vùng Đông Á, vấn đề của bài toán tách từ là khử được sự nhập nhằng trong ranh
giới từ.

Trong NLP có 2 quan điểm cơ bản :
1. Xử lý các từ ngữ bằng máy tính.
2. Làm cho máy tính hiểu được các từ ngữ.
Hiện tại, cả 2 hướng này đều đang được tích cực nghiên cứu và phát triển, nhờ
đó rất nhiều các hệ thống hiệu quả đã và đang được tạo ra.

Các ứng dụng cơ bản của NLP :
1. Chế tạo các hệ thống Máy dịch, ví dụ như Google translation.
2. Xử lý văn bản và ngôn ngữ.
3. Tìm kiếm thông tin.
4. Chiết suất thông tin.
5. Tóm tắt văn bản.
6. Phân loại văn bản.
7. Data mining, web mining.

d) Tổng quan thư viện gensim.
Gensim là một thư viện Python để lập mô hình chủ đề, lập chỉ mục tài
liệu và truy xuất tương tự với khối lớn. Đối tượng mục tiêu là cộng đồng xử
lý ngôn ngữ tự nhiên (NLP) và cộng đồng truy xuất thông tin (IR).
Tính năng, đặc điểm:
Tất cả các thuật toán là độc lập với bộ nhớ w.r.t. kích thước kho văn

bản (có thể xử lý đầu vào lớn hơn RAM, truyền phát, ngoài lõi),
Giao diện trực quan
dễ dàng cắm vào kho dữ liệu / kho dữ liệu đầu vào của riêng bạn (API
truyền phát tầm thường)
dễ dàng mở rộng với các 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 quả đa lõi của các thuật toán phổ biến, chẳng hạn như 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ự đoán ngẫu nhiên (RP), Quy trình Dirichlet phân cấp (HDP) hoặc
học sâu word2vec.
Điện toán phân tán: có thể chạy Phân tích ngữ nghĩa tiềm ẩn và Phân bổ
Dirichlet tiềm ẩn trên một cụm máy tính.
Tài liệu mở rộng và hướng dẫn Jupyter Notebook.
Nếu danh sách tính năng này khiến bạn phải gãi đầu, trước tiên bạn có
thể đọc thêm về Mô hình không gian Vector và phân tích tài liệu không
giám sát trên Wikipedia.

pip install -U gensim

e) Tổng thư viện pickle.

Các chuỗi có thể được ghi hoặc đọc dễ dàng từ một tập tin. Các số cần
một ít cố gắng hơn, vì phương thức read() chỉ trả về chuỗi, và cần được
truyền vào một hàm như int(), nó sẽ nhận một chuỗi như '123' và trả về giá

trị số 123 của nó. Tuy nhiên, khi bạn muốn lưu các kiểu dữ liệu phức tạp
hơn như danh sách, từ điển, hoặc các đối tượng, việc này trở nên rắc rối hơn
nhiều.
Thay vì để người dùng luôn viết và gỡ rối mã để lưu các kiểu dữ liệu
phức tạp, Python cung cấp một mô-đun chuẩn gọi là pickle. Đây là một môđun tuyệt diệu có thể nhận hầu hết mọi đối tượng Python (ngay cả một vài
dạng mã Python!), và chuyển nó thành một chuỗi; quá trình này được gọi
là giầm (pickling). Tạo lại đối tượng từ một chuỗi được gọi là vớt
(unpickling). Giữa việc giầm và vớt, biểu diễn dạng chuỗi của đối tượng có
thể được lưu vào tập tin, hoặc gửi qua mạng đến một máy ở xa.
f) Mô hình huấn luyện Word2Vec.

Pre-trained word vectors trên 30 ngôn ngữ trên thế giới đã traning
sẵn. Dự án này có hai mục đích. Trưóc hết là chia sẻ kinh nghiệm của tác
giả trong tác vụ NLP như phân đoạn văn bản hoặc vectors từ. Điều quan
trọng hơn là một số mô hình vectors từ đã được đào tạo từ trước cho các
ngôn ngữ mà không phải tiếng anh. Than ôi! Tiếng Anh đã thu hút được
nhiều sự chú ý hơn bất kỳ ngôn ngữ nào khác. Kiểm tra điều này để xem
bạn có thể dễ dàng có được nhiều vectơ từ tiếng Anh được đào tạo trước
như thế nào 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)

/>g) Các ứng dụng của bài toán tách từ
Bài toán tách từ là bài toán cơ bản đầu tiên trong các bài toán đặt ra 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 bản
- Kiểm lỗi chính tả
- Kiểm lỗi văn phạm
- Phân loại văn bản
- Tóm tắt văn bản
- Hiểu văn bản
- Khai thác văn bản
-Tóm tắt văn bản.
-Kiểm lỗi chính tả.
-Phân loại văn bản.
-Tách các dấu chấm câu, các ký hiệu chữ và số.
Tài nguyên hỗ trợ:

· Từ điển tiếng Việt
· Ngữ liệu tiếng Việt được tách từ hỗ trợ quá trình huấn luyện
2. Mục tiêu
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.

Thực tập thực tế - CNTT

Võ Thanh Sang B1509947
13


Đã 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ó.
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.

3. 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 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


4. Mô hình hoạt động của hệ thống.
Các bước xử lý:

Chươngtrìnhcủachúngtasẽchỉcầncó5bướcnhưsơđồởtrên.

Cụ thể mình mô tả các bước như sau:
Tiền xử lý văn bản: Văn bản đầu vào của chúng ta có thể chứa nhiều ký tự
thừa, dấu câu thừa, khoảng trắng thừa, các từ viết tắt, viết hoa, ... điều này có thể

làm ảnh hưởng tới các bước ở sau này nên chúng ta cần phải xử lý nó trước! Tuy
nhiên trong bài lần này, chúng ta sẽ chỉ thử trên một số bài báo đã khá "quy củ" rồi
nên tôi sẽ chỉ thực hiện 2 phương pháp đó là Biến đổi hết về các chữ cái thường
và Loại bỏ các khoảng trắng thừa.
Tách câu trong văn bản: Ở bước này, chúng ta sẽ tách 1 đoạn văn bản cần
tóm tắt đã qua xử lý thành 1 danh sách các câu trong nó.
Chuyển các 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, chúng ta cần chuyển các câu văn (độ dài ngắn khác nhau) thành
các vector số thực có độ dài cố định, sao cho vẫn phải đảm bảo được "độ khác
nhau" về ý nghĩa giữa 2 câu cũng tương tự như độ sai khác giữa 2 vector tạo ra.
Phân cụm: Về Machine Learning thì đây chắc hẳn là một thuật toán rất quen
thuộc (K-Means Clustering). Thuật toán này sẽ giúp chúng ta phân ra những cụm
câu có ý nghĩa giống nhau, để từ đó chọn lọc và loại bỏ bớt các câu có cùng ý nghĩa.
Xây dựng đoạn văn bản tóm tắt: Sau khi đã có các cụm, trong mỗi cụm (phân loại
theo ý nghĩa), chúng ta sẽ chọn ra 1 câu duy nhất trong cụm đó để tạo nên văn bản
được tóm tắt.
5. Cài đặt hệ thống.
a) Tiền xử lí văn bản:
Để thu được được các dữ liệu ta sử Google Form, Google
Sheets để thu thập và lưu trữ dữ .
Code lấy dữ liệu thông qua công cụ dành cho nhà phát triển
Sheets API như 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 = [' /># 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 dữ liệu thành một file binary và lưu lại để giữ

tính toàn vẹn cho file khi load lên và việc lưu kiểu binary sẽ nhẹ hơn nhiều so với
lưu file dạng text thông thường nếu quá nhiều dữ liệu.
Dùng 2 phương pháp là chuyển đổi hết sang chữ cái thường và loại bỏ các
khoảng trắng nhé, chúng ta sẽ 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 các ký tự xuống dòng
thành chấm câu
contents_parsed = contents_parsed.strip() #Loại bỏ đi các khoảng trắng thừa

Và đây là kết quả thu được:
cô dạy rất hay và dễ hiểu. cô dịu dàng rất thân thiện, đề
nghị bộ môn định hướng dược lâm sàng xem lại về cách hướng
dẫn sinh viên tìm ra đáp án của những ca lâm sàng trong
giờ thực hành, trả lời sao mới đúng để sinh viên có kiến
thức thêm. em mong một số thầy cô giải đáp án đúng từng
câu hỏi trong ca lâm sàng để tụi em biết được cái nào là
đúng, dạ! em có thêm ý kiến là: cô dạy rất hay và cho ví
dụ rất dễ hiểu. dạ! em xin cám ơn. em rất thích cách dạy
của cô, rất thích cách truyền đạt của cô!!!, cô liên là
người gv mà em luôn mếm và phục! cô nghiêm khác trong
giảng dạy đòi hỏi sv nắm bắt được kiến thức nhưng cô rất
thân thiện và nhiệt tình với sv về mọi mặt cả học tập lẫn
xã hội. có nhiều bạn sợ cô bảo cô khó nhưng đối với em cô
liên là người cô em mến và phục! em cảm ơn cô đã truyền
đạt những kiến thức hữu ích và nhìn nhận về thực tế cho
em. cô là 1 giảng viên rất trách nhiệm và tâm huyết. em rất
cảm ơn cô!, thầy giảng khá là dễ thương, và thầy có thể mở
rộng tầm hiểu biết của sinh viên đối với mỗi thứ chúng em
đang làm trong phòng thí nghiệm ra ngoài thực tế hơn…
b) Tác câu trong văn bản:

Thực tập thực tế - CNTT

Võ Thanh Sang B1509947
17



Tạiđâychúngtasẽtáchcáccâutrongvănbảntrênrađểthu
được1danhsáchcáccâucóởtrên.Việcnàytrởnênđơngiảnhơnrất
nhiềuvớithưviệnNLTK,tôicóthểdễdàngsửdụnghàm
sent_tokenizeđểlấyradanhsáchcáccâu.
import nltk
sentences = nltk.sent_tokenize(contents_parsed)

Kếtquảthuđược:
['cô dạy rất hay và dễ hiểu.', 'cô dịu dàng rất thân
thiện, đề nghị bộ môn định hướng dược lâm sàng xem lại về
cách hướng dẫn sinh viên tìm ra đáp án của những ca lâm
sàng trong giờ thực hành, trả lời sao mới đúng để sinh
viên có kiến thức thêm.', 'em mong một số thầy cô giải
đáp án đúng từng câu hỏi trong ca lâm sàng để tụi em
biết được cái nào là đúng, dạ!', 'em có thêm ý kiến là:
cô dạy rất hay và cho ví dụ rất dễ hiểu.', 'dạ!', 'em xin
cám ơn.', 'em rất thích cách dạy của cô, rất thích cách
truyền đạt của cô!!', '!, cô liên là người gv mà em
luôn mếm và phục!', 'cô nghiêm khác trong giảng dạy đòi
hỏi sv nắm bắt được kiến thức nhưng cô rất thân thiện và
nhiệt tình với sv về mọi mặt cả học tập lẫn xã hội.', 'có
nhiều bạn sợ cô bảo cô khó nhưng đối với em cô liên là
người cô em mến và phục!', 'em cảm ơn cô đã truyền đạt

những kiến thức hữu ích và nhìn nhận về thực tế cho
em.', 'cô là 1 giảng viên rất trách nhiệm và tâm
huyết.', 'em rất cảm ơn cô!, thầy giảng khá là dễ
thương, và thầy có thể mở rộng tầm hiểu biết của sinh
viên đối với mỗi thứ chúng em đang làm trong phòng thí
nghiệm ra ngoài thực tế hơn…']

c) Chuyển câu sang Vector:
Về phần này, hiện nay có rất nhiều phương pháp training được sử dụng
hiệu quả, nhằm biến đổi các câu sang các vector có độ dài cố định mà vẫn giữ
được các đặc trưng, ý nghĩa của câu đó. Có thể kể đến phương pháp là
SkipThought
( Tuy nhiên
mô hình này được training trên tập dữ liệu tiếng Anh và để training lại với dữ
liệu tiếng Việt sẽ mất của các bạn thêm chút thời gian nữa. Mô hình này tỏ ra
rất hiệu quả,tuy nhiên phương pháp dễ dàng để tiếp cận hơn đó là sử dụng sẵn
mô hình đã được 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 của mình đó chính là sẽ tách nhỏ từng câu thành các từ,
sau đó dùng mô hình Word2Vec đã được training cho tiếng Việt, chuyển đổi
các từ đó sang các vector số thực có chiều dài cố định. Cuối cùng, vector của
1 câu mà mình chuyển đổi sang sẽ là TỔNG của các vector đại diện cho các
từ trong câu!
Mô hình Word2Vec cho tiếng Việt có thể dễ dàng tìm trên mạng, ở

đây tôi sử dụng mô hình tại />Với mô hình mình vừa tải xuống, các từ sẽ được biến đổi thành một
vector 100 chiều. Chúng ta sẽ 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 là tách các từ trong câu và lấy tổng để được các vector cho
từng câu trong danh sách mà chúng ta vừa có trên kia:

vocab = w2v.wv.vocab # Danh sách các từ trong 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, mình sẽ duyệt qua từng câu trong danh sách
câu của chúng ta. Với mỗi câu, mình sẽ tách các từ ra. Ở đây mình dùng thêm
1 thư viện pyvi để tách các từ tiếng Việt.
Ví dụ như câu:
'cô dạy rất hay và dễ hiểu.'

Chúngtaphảitáchthành
['cô_dạy' 'rất' 'hay' 'và' 'dễ' 'hiểu''.']

Thư viện pyVi với hàm ViTokenize sẽ giúp chúng ta ghép các từ có

nghĩa trong tiếng Việt lại với nhau nhằm đảm bảo giữ nguyên ý nghĩa của
từng từ!

Thực tập thực tế - CNTT

Võ Thanh Sang B1509947
19


Sau đó, tôi khai báo một vector 100 chiều gồm toàn số 0. rồi với mỗi
một từ trong câu, tôi đều sử dụng hàm word2vec chuyển thành vector rồi
cộng nó vào vector này (nếu nó có thể chuyển được thành vector). Cuối cùng
sau khi hết mỗi câu, tôi thêm nó vào 1 mảng đặt tên là X. X chúng ta thu được
sẽ là các vector 100 chiều mà mỗi vector đại diện cho 1 câu trong văn bản.
d) Phân cụm:

Bài toán phân cụm là 1 nhánh ứng dụng chính của lĩnh vực
Unsupervised Learning (Học không giám sát), trong đó dữ liệu được mô tả
trong bài toán không được dán nhãn (tức là không có đầu ra). Trong trường
hợp này, thuật toán sẽ tìm cách phân cụm - chia dữ liệu thành từng nhóm có
đặc điểm tương tự nhau, nhưng đồng thời đặc tính giữa các nhóm đó lại phải
càng khác biệt càng tốt.
Và ở đây, tôi muốn phân cụm các vector đại diện cho từng câu trong
văn bản vừa rồi để biết những câu nào mang ý nghĩa giống nhau.



Thực tập thực tế - CNTT

Võ Thanh Sang B1509947

20


×