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

TÌM HIỂU về NHẬN DẠNG CHỦ đề bài VIẾT BẰNG máy học

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 (953.51 KB, 31 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO ĐỒ ÁN CUỐI KỲ
Môn học: Đồ án 1 – SE121.M11

ĐỀ TÀI: TÌM HIỂU VỀ NHẬN DẠNG CHỦ ĐỀ BÀI VIẾT
BẰNG MÁY HỌC

Giảng viên hướng dẫn: Thạc sĩ Mai Trọng Khang
Sinh viên thực hiện:
• Dương Bình Trọng – 19521056
• Phạm Đức Hồng – 19521542

Tp. Hồ Chí Minh, tháng 12 năm 2021


ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO ĐỒ ÁN CUỐI KỲ
Môn học: Đồ án 1 – SE121.M11

ĐỀ TÀI: TÌM HIỂU VỀ NHẬN DẠNG CHỦ ĐỀ BÀI VIẾT
BẰNG MÁY HỌC

Giảng viên hướng dẫn: Thạc sĩ Mai Trọng Khang
Sinh viên thực hiện:
• Dương Bình Trọng – 19521056


• Phạm Đức Hồng – 19521542

Tp. Hồ Chí Minh, tháng 12 năm 2021


LỜI CẢM ƠN
Đầu tiên, nhóm chúng em xin gửi lời cảm ơn đến tập thể quý thầy cô của
Trường Đại học Công nghệ Thông tin – Đại học Quốc gia Thành phố Hồ Chí Minh
và q thầy cơ của Khoa Cơng nghệ Phần mềm đã giúp chúng em có những kiến
thức nền tảng để thực hiện đề tài này.
Nhóm chúng em xin gửi lời cảm ơn tới thầy Mai Trọng Khang, là người đã
trực tiếp hướng dẫn nhóm thực hiện đồ án, hướng dẫn tận tình và đóng góp nhiều ý
kiến quý báu giúp chúng em hoàn thành tốt báo cáo của mình.
Trong thời gian thực hiện đề tài, nhóm đã vận dụng những kiến thức nền
tảng đã tích lũy đồng thời kết hợp với việc học hỏi và tiếp thu những kiến thức
mới. Chúng em đã cố gắng vận dụng những gì đã thu thập được để hồn thành đồ
án tốt nhất có thể. Tuy nhiên, trong q trình thực hiện, vẫn khơng tránh khỏi
những thiếu sót, chúng em mong nhận được sự thơng cảm và góp ý chân thành từ
các q thầy cơ.
Nhóm chúng em xin trân trọng cảm ơn ạ. /

3


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

....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................

4


MỤC LỤC
LỜI CẢM ƠN .................................................................................................................... 3
NHẬN XÉT CỦA GIẢNG VIÊN ..................................................................................... 4
MỤC LỤC .......................................................................................................................... 5
NỘI DUNG ......................................................................................................................... 6
Tổng quan đề tài ..................................................................................................... 6

1.
1.1.

Giới thiệu ......................................................................................................... 6

1.2.

Phương pháp và mục tiêu thực nghiệm ........................................................... 7

Cơ sở lí thuyết ........................................................................................................ 8

2.
2.1.

Giới thiệu về Machine Learning ..................................................................... 8

2.2.

Phương pháp Word Embedding .................................................................... 10

2.3.

Mô hình word2vec và mơ hình doc2vec ....................................................... 14

3.

Thực nghiệm ........................................................................................................ 22
3.1.

Phân tích bài tốn .......................................................................................... 22

3.2.

Thu thập và xử lí dữ liệu ............................................................................... 23

3.3.

Huấn luyện mơ hình ...................................................................................... 25


3.4.

Xây dựng API và demo ................................................................................. 26

KẾT LUẬN ...................................................................................................................... 28
1.

Đánh giá ............................................................................................................... 28

2.

Nhận xét ............................................................................................................... 30

3.

Hướng phát triển .................................................................................................. 30

TÀI LIỆU THAM KHẢO............................................................................................... 31

5


NỘI DUNG
1. Tổng quan đề tài
1.1.

Giới thiệu
Những năm gần đây, khi mà khả năng tính tốn của các máy tính được

nâng lên một tầm cao mới và lượng dữ liệu khổng lồ được thu thập bởi các

hãng công nghệ lớn, các thuật toán Machine Learning (Máy Học) cũng ngày
càng phát triển và được hồn thiện.
Và một trong những lính vực quan trọng của Machine Learning chính là
Natural Language Processing “NLP" (Xử lý Ngơn ngữ Tự nhiên). NLP có
rất nhiều ứng dụng cụ thể giải quyết từng bài tốn thích hợp. Trong đó nhóm
bọn em hứng thú nhất với bài tốn Information Retrieval (Truy xuất
Thơng tin). Thì Information Retrieval có nhiệm vụ tìm các tài liệu dưới
dạng khơng có cấu trúc (thường là văn bản) và đầu ra đáp ứng nhu cầu về
thông tin từ những nguồn tổng hợp lớn. Cụ thể hơn là bài toán nhận biết chủ
đề của bài viết tiếng Anh.
Vì thế mà nhóm bọn em quyết định chọn chủ đề “Nhận dạng chủ đề bài
viết bằng Máy Học”. Nhóm chúng em sẽ tìm hiểu về một số mơ hình để thực
hiện việc nhận dạng chủ đề, từ đó áp dụng và xây dựng nên một ứng dụng
thực tế là một API nhận dạng chủ đề bài viết.
Trong cuốn báo cáo này sẽ gồm 3 phần chính:
-

Phần 1: Tổng quan đề tài – nếu khái quát về đề tài cũng như phương
pháp và mục tiêu thực hiện đề tài.

-

Phần 2: Cơ sở lý thuyết – sẽ tổng hợp các phần kiến thức lý thuyết mà
bọn em đã tìm hiểu khi thực hiện đề tài.

- Phần 3: Thực nghiệm – mơ tả cơ bản q trình nhóm đã xây dựng nên
ứng dụng thực tế.

6



Phương pháp và mục tiêu thực nghiệm

1.2.
1.2.1.

Phương pháp

Các giai đoạn cơ bản của nhóm chúng em:
Giai đoạn 1: chúng em sẽ tìm hiểu, thu nạp các kiến thức chính trong
các mảng và các lĩnh vực liên quan như Machine Learning, Deep Learning,
Xử lý Ngôn ngữ Tự nhiên… cũng như các kiến thức liên quan để có thể xây
dựng nên ứng dụng thực tế như đã đề cập ở trên.
Giai đoạn 2: nhóm sẽ bắt đầu tìm kiếm các nguồn dữ liệu huấn luyện.
Ban đầu nhóm có tính sẽ tìm một bộ dữ liệu đã được xây dựng sẵn trên
Kagge, tuy nhiên vì đa số các bộ dữ liệu có sẵn đều chưa thoả được về yêu
cầu số lượng chủ đề hay số tài liệu. Nhóm quyết định sẽ tự crawl dữ liệu từ
trên một số trang báo về để xây dựng nên bộ dữ liệu train.
Giai đoạn 3: sau khi đã có bộ dữ liệu train, nhóm tiến hành các bước
tiền xử lí và bỏ vào mơ hình training. Mơ hình nhóm chọn là doc2vec.
Giai đoạn 4: tự mơ hình đã được huấn luyện ra, nhóm tiền hành xây
dựng một endpoint API làm ứng dụng thực tế.

Hình 1.1. Mơ tả quá trình chung quá trình huấn luyện và phân loại

7


1.2.2.


Mục tiêu

Mục tiêu của nhóm trước nhất là tìm hiểu về lĩnh vực Machine Learning,
cũng như lĩnh vực con không kém phần quan trọng là Deep Learning. Từ đó
áp dụng các kiến thức thuật tốn, thư viện, cơng cụ, ngơn ngữ lập trình… để
có thể giải quyết bài tốn nhận dạng chủ đề bài viết.
Qua đó, có thể phần nào điều chỉnh các thơng số phù hợp, có những
bước xử lý dữ liệu đúng đắn để cải thiện các đặc tính về tốc độ và độ chính
xác của mơ hình nhóm đã chọn.
Cuối cùng, chúng em sẽ xây dựng một ứng dụng áp dụng tích hợp các
mơ hình pre-trained với mong đợi có thể ứng dụng có thể phục vụ mọi người
với tính chính xác và hiệu quả cao nhất có thể.
2. Cơ sở lí thuyết
2.1.

Giới thiệu về Machine Learning

2.1.1.

Các khái niệm cơ bản

Machine learning là một lĩnh vực của trí tuệ nhân tạo (AI). Mục tiêu
của machine learning nói chung là hiểu cấu trúc dữ liệu và điều chỉnh dữ
liệu đó thành các model mà mọi người có thể hiểu và sử dụng. Học máy có
liên quan lớn đến thống kê, vì cả hai lĩnh vực đều nghiên cứu việc phân tích
dữ liệu, nhưng khác với thống kê, học máy tập trung vào sự phức tạp của các
giải thuật trong việc thực thi tính tốn. Nhiều bài tốn suy luận được xếp vào
loại bài tốn rất khó, vì thế một phần của học máy là nghiên cứu sự phát
triển các giải thuật suy luận xấp xỉ mà có thể xử lý được.
Quá trình học bắt đầu bằng các quan sát hoặc dữ liệu. Ví dụ, để tìm kiếm

các mẫu trong dữ liệu và đưa ra quyết định tốt hơn trong tương lai dựa trên
8


các ví dụ mà chúng tơi cung cấp. Mục đích chính là cho phép các máy tính
tự động học mà không cần sự can thiệp hay trợ giúp của con người và điều
chỉnh các hành động tương ứng.
Deep Learning là một tập hợp con của Machine Learning, có khả năng
khác biệt ở một số khía cạnh quan trọng so với Machine Learning nơng
truyền thống, cho phép máy tính giải quyết một loạt các vấn đề phức tạp
không thể giải quyết được.
2.1.2.

Các phương pháp Machine Learning

2.1.2.1. Supervised Learning – Học có giám sát
Trong học tập có giám sát, máy tính được cung cấp các ví dụ đầu
vào được gắn nhãn với đầu ra mong muốn của chúng. Mục đích của
phương pháp này là để thuật tốn có thể học được dạy học bằng cách
so sánh kết quả đầu ra thực tế của nó với các kết quả đầu ra đã được
dạy để tìm lỗi và sửa đổi mơ hình cho phù hợp. Do đó, việc học được
giám sát sử dụng các mẫu để dự đoán giá trị nhãn trên dữ liệu khơng
được gắn nhãn bổ sung.
Ví dụ, với việc học có giám sát, một thuật tốn có thể được cung
cấp dữ liệu với văn bản về nghệ thuật được dán nhãn là “arts” và vản
bản về Covid-19 được dán nhãn là “covid-19”. Bằng cách được đào
tạo về dữ liệu này, thuật tốn học có giám sát sẽ có thể sau đó xác
định các văn bản mới về nghệ thuật có nhãn là “arts”, các văn bản liên
quan đến Covid-19 có nhãn là “covid-19".
Phương pháp này thường được sử dụng cho các bài toán phân lớp

(classification).

9


2.1.2.2. Unsupervised Learning – Học không giám sát
Trong học tập khơng giám sát, dữ liệu khơng được gắn nhãn, vì
vậy thuật toán học được để lại điểm chung giữa các dữ liệu đầu
vào. Vì dữ liệu khơng được gắn nhãn phong phú hơn dữ liệu được
dán nhãn, các phương pháp machine learning tạo điều kiện cho
việc học tập không giám sát đặc biệt có giá trị.
Khơng giám sát thường được sử dụng cho dữ liệu giao dịch.
Phương pháp Word Embedding

2.2.
2.2.1.

Khái niệm

Word Embedding là tên gọi chung của các mơ hình ngôn ngữ và các
phương pháp học theo đặc trưng trong Xử lý ngơn ngữ tự nhiên(NLP), ở đó
các từ hoặc cụm từ được ánh xạ sang các vector số (thường là số thực). Đây
là một cơng cụ đóng vai trị quan trọng đối với hầu hết các thuật toán, kiến
trúc Machine Learning, Deep Learning trong việc xử lý Input ở dạng text, do
chúng chỉ có thể hiểu được Input ở dạng là số, từ đó mới thực hiện các cơng
việc phân loại, hồi quy, v.v…
2.2.2.

Các loại Word Embedding
Word Embedding được phân chủ yếu thành 2 loại:

• Frequency-based embedding.
• Prediction-based embedding.

10


2.2.2.1. Frequency-based embedding
Frequency-based Embedding dựa vào tần số xuất hiện của các từ để tạo
ra các vector từ, trong đó có 3 loại phổ biến nhất:
• Count Vector.
• tf-idf Vector.
• Co-occurrence Matrix.
Count Vector là dạng đơn giản nhất của Frequencey-based Embedding,
giả sử ta có D documents d1,d2,…dD và N là độ dài của từ điển, vector biểu
diễn của một từ là một vector số nguyên và có độ dài là D, ở đó phần tử tại
vị trí i chính là tần số của từ đó xuất hiện trong document di. Trong một số
trường hợp, ta có thể lượt bớt các từ có tần số xuất hiện thấp hoặc thay đổi
mục nhập của vector (thay vì tần số có thể thay bằng một giá trị nhị phân
biểu thị sự xuất hiện của từ) tùy vào mục đích cụ thể.
Khác với Count Vector chỉ xét đến tần số xuất hiện của từ trong một
document, tf-idf Vector quan tâm cả tần số xuất hiện của từ trong tồn bộ
tập dữ liệu, chính do đặc điểm này mà tf-idf Vector có tính phân loại cao
hơn so với Count Vector. tf-idf (Term Frequency-Inverse Document
Frequency) Vector là một vector số thực cũng có độ dài D với D là số văn
bản, nó được tính bằng tích của 2 phần bao gồm tf và idf, công thức của mỗi
phần tử của vector được tính như sau:

11



Như đã đề cập ở trên, tf-idf Vector có tính phân loại cao hơn so với
Count Vector chính là bởi nó được điều chỉnh bởi trọng số idf, dựa trên cơng
thức của nó ta có thể hiểu rằng nếu từ xuất hiện ở càng nhiều văn bản (tính
phân loại thấp) thì giá trị của nó càng nhỏ, từ đó kết quả suy racuối cùng sẽ
bị nhỏ theo.
Tuy nhiên, nhược điểm của cả hai phương pháp trên chính là việc nó chỉ
chú trọng đến tần số xuất hiện của một từ, dẫn tới nó hầu như khơng mang ý
nghĩa gì về mặt ngữ cảnh, Co-occurrence Matrix phần nào giải quyết vấn đề
đó. Co-occurrence Matrix có ưu điểm là bảo tồn mối quan hệ ngữ nghĩa giữa
các từ, được xây dựng dựa trên số lần xuất hiện của các cặp từ trong Context
Window. Một Context Window được xác định bởi kích thước và hướng của
nó. Hình dưới đây là một ví dụ của Context Window:

12


Hình 2.1. Ví dụ về Context Window

Thơng thường, Co-occurrence Matrix là một ma trận vuông đối xứng,
mỗi hàng hoặc mỗi cột sẽ chính là vector biểu thị của từ tương ứng. Tiếp tục
ví dụ trên ta sẽ có ma trận Co-occurrence Matrix:

Hình 2.2. Ví dụ về Co-occurrence Matrix

Tuy nhiên, trong thực tế, do số lượng từ vựng nhiều, ta thường chọn
cách bỏ đi một số từ khơng cần thiết (ví dụ như các stopwords) hoặc sử dụng
phân tách SVD (Singular Value Decomposition) để giảm kích thước của
vector từ nhằm giúp cho biểu diễn của từ được rõ ràng hơn đồng thời tiết
kiệm bộ nhớ dùng để lưu trữ Co-occurrence Matrix (do các Co-occurrence
Matrix có kích thước rất lớn).


13


2.2.2.2. Prediction-based embedding.
Prediction-based Embedding xây dựng các vector từ dựa vào các mơ
hình dự đốn. Tiêu biểu nhất chính là Word2vec, nó gồm 2 phương pháp
chính là: CBOW (Continous Bag Of Words) và Skip-gram. Cả hai mơ hình
này đều được xây dựng dựa trên một mạng neuron gồm 3 lớp:1 Input
Layer,1 Hidden Layer và 1 Output Layer. Mục đích chính của các mạng
neuron này là học các trọng số biểu diễn vector từ. Ở phần tiếp theo –
word2vec sẽ trình bày rõ hơn về 2 phương pháp vừa được nêu.
2.3.

Mô hình word2vec và mơ hình doc2vec

2.3.1.

Mơ hình word2vec

2.3.1.1. Khái niệm cơ bản
Word2vec là một mơ hình đơn giản và nổi tiếng giúp tạo nên các
embeding của từ trong không gian có số chiều thấp hơn rất nhiều so với số
từ có trong từ điển. Ý tưởng của word2vec cơ bản gói gọn trong 2 ý sau:
• Hai từ xuất hiện trong những văn cảnh giống nhau thường có ý nghĩa
gần với nhau.
• Ta có thể đốn được một từ nếu biết các từ xung quanh nó trong câu.
Ví dụ, với câu “Hà Nội là … của Việt Nam” thì từ trong dấu ba chấm khả
năng cao là “thủ đô”. Với câu hồn chỉnh “Hà Nội là thủ đơ của Việt Nam”,
mơ hình word2vec sẽ xây dựng ra embeding của các từ sao cho xác suất để

từ trong dấu ba chấm là “thủ đơ” là cao nhất.
Một vài định nghĩa:
• Trong ví dụ trên đây, từ “thủ đơ” đang được xét và được gọi là target
word hay từ đích.
14


• Những từ xung quanh nó được gọi là context words hay từ ngữ cảnh
Xét ví dụ: “The quick brown fox jump over the lazy dog” với C=4:

Hình 2.3. Ví dụ về context words

Với mỗi từ đích trong một câu của cơ sở dữ liệu, các từ ngữ cảnh được
định nghĩa là các từ trong cùng câu có vị trí cách từ đích một khoảng khơng
q C/2với C là một số tự nhiên dương. Như vậy, với mỗi từ đích, ta sẽ có
một bộ khơng q C từ ngữ cảnh.
2.3.1.2. Các cách xây dựng mơ hình word2vec
Có hai cách khác nhau xây dựng mơ hình word2vec:
• Skip-gram: Dự đốn những từ ngữ cảnh nếu biết trước từ đích.
• CBOW (Continuous Bag of Words): Dựa vào những từ ngữ cảnh để
dự đốn từ đích.

15


2.3.1.2.1. Skip-gram
a. Xây dựng hàm mất mát
Tính tốn mất mát xây dựng xung quanh các từ ngữ cảnh, hàm mất mát
sẽ là hàm tổng của tất cả các hàm mất mát tại mỗi ngữ cảnh.
Xét ví dụ ở trên với từ đích là ‘fox’ và các từ ngữ cảnh là ‘quick’,

‘brown’, ‘jumps’ và ‘over’. Việc tính tốn xác suất xảy ra các từ ngữ cảnh
khi biết từ đích được mơ tả bởi mơ hình:
P("quick","brown","jumps","over"|"fox")
Viếc tính tốn dựa trên mơ hình trên mang tới nhiều khó khăn, nên ta giả
sử rằng mỗi từ ngữ cảnh sẽ suất hiện độc lập với nhau, điều này xung đột với
ý tưởng là những từ trong cùng một văn cảnh thì có liên quan tới nhau, tuy
nhiên giả thiết này sẽ giúp chúng ta đơn giản việc tính tốn hơn.
Lúc này chúng ta có thể mơ tả lại mơ hình xác suất như sau:
P("quick"|"fox")P("brown"|"fox")P("jumps"|"fox")P("over"|"fox")
Giả sử từ đích có chỉ số là t trong bộ từ điển V và tập hợp các từ ngữ
cảnh tương ứng là 𝐶𝑡 số phần tử 𝐶𝑡 sẽ giao động từ C/2 tới C tùy thuộc vào
vị trí của 𝑤𝑡 trong câu.
Vậy chúng ta cần một mơ hình sao cho xác suất dưới đây càng lớn càng
tốt với mỗi từ ngữ cảnh 𝑤𝑡 .
∏ 𝑃 (𝑤𝑐 |𝑤𝑡 )
𝑐∈𝐶𝑡

Để tránh việc sai số khi tính tốn khi nhân các số nhỏ hơn 1 với nhau.
Chúng ta đưa về bài toán tối thiểu đối số của log (thường gọi là negative log
loss).
16


− ∑ 𝑙𝑜𝑔⁡ 𝑃(𝑤𝐶 |𝑤𝑡 )
𝐶∈𝐶𝑡

Xác xuất có điều kiện 𝑃(𝑤𝐶 |𝑤𝑡 ) được định nghĩa :
𝑃(𝑤𝐶 |𝑤𝑡 ) =

𝑒𝑥𝑝(𝑢𝑡𝑇 𝑣𝑐 )

ℕ 𝑒𝑥𝑝(𝑢𝑇 𝑣 )
𝛴ⅈ=1
𝑡 ⅈ

(1)

Với N là số phần tử trong bộ từ điển V, 𝑒𝑥𝑝(𝑢𝑡𝑇 𝑣𝑐 ) sẽ thể hiện mối quan
hệ giữa từ đích 𝑤𝑡 và từ ngữ cảnh 𝑤𝐶 , biểu thức này càng cao thì xác suất
thu được càng lớn. Tích vơ hướng 𝑢𝑡𝑇 𝑣𝑐 cũng thể hiện sự tương tự của hai
vector. Việc định xác suất như biểu thức (1) ở trên để đảm bảo rằng:
∑ 𝑃(𝑤|𝑤𝑡 ) = 1
𝑤∈𝑣

Nói tóm lại, hàm mất mát tương ứng với từ đích 𝑤𝑡 theo U,V được cho
bới công thức:
L(U,V, 𝑤𝑡 ) = − ∑

𝑙𝑜𝑔⁡

𝐶∈𝐶𝑡

𝑒𝑥𝑝(𝑢𝑡𝑇 𝑣𝐶 )
𝑁 𝑒𝑥𝑝(𝑢𝑇 𝑣 )
𝛴ⅈ=1
𝑡 𝐶

b. Biểu diễn dưới mạng neural
Skip-gram word2vec là một mạng neural vô cùng đơn giản và chỉ có một
tầng ẩn và khơng có hàm kích hoạt:


17


Hình 2.4. Mạng neural của phương pháp Skip-gram

Nhận xét: 𝑢𝑡 chính là kết quả của phép nhân vector one-hot tương ứng
với 𝑤𝑡 với ma trận trọng số U, do vậy đây là đầu ra của tầng ẩn ở giữa khi
xét từ đích 𝑤𝑡 , tiếp theo tầng ẩn khơng hàm kích hoạt này được nhân trược
tiếp với ma trận trọng số V để được 𝑢𝑡𝑇 𝑽, đây sẽ là giá trị vector logit trước
khi đi vào hàm kích hoạt softmax trong biểu thức (1).
Kiến trúc đơn giản này giúp cho word2vec hoạt động tốt ngay cả khi bộ
từ điển của chúng ta rất lớn.
Cuối cùng để đơn giản cho việc tính tốn, ta có cơng thức như sau:

18


2.3.1.2.2. Continous Bag of Words (CBOW)
Continous bag of Words đi tìm xác suất xảy ra từ đích khi biết các từ
ngữ cảnh xung quanh. Ta cần mơ hình hóa dữ liệu sao cho xác suất sau đây
đạt giá trị lớn:
P("fox"|"quick","brown","jumps","over")
Do có nhiều từ ngữ cảnh trong cùng một điều kiện nên chúng ta thay các
từ ngữ cảnh bằng cách lấy một từ làm đại diện “trung bình’’

Chúng ta đinh nghĩa:

Biểu diễn mạng neural của CBOW dưới dạng mạng neural:

Hình 2.5. Mạng neural của phương pháp CBOW


19


2.3.2.

Mơ hình doc2vec

Mơ hình doc2vec tương tự như word2vec nhưng thay vì biểu diễn từ
thanh vector, phương pháp doc2vec sẽ biểu diễn văn bản dưới dạng vector,
khác với cấp độ từ, cấp độ văn bản, khơng có những cấu trúc logic từ ngữ.
Tương tự word2vec, doc2vec cũng có 2 cách xây dựng mơ hình là:
• Distributed Memory version of Paragraph Vector (PV-DM)
• Distributed Bag of Words version of Paragraph Vector
2.3.2.1. Distributed Memory version of Paragraph Vector

Hình 2.6. Ví dụ về phương pháp PV-DM

Mơ hình này chỉ khác mơ hình của word2vec 1 điểm duy nhất là ngoài
các input ngữ cảnh, chúng ta còn thêm giá giá trị khác là ID của các câu văn.
Về cơ bản mỗi câu văn được ánh xạ duy nhất và mơ hình sẽ sử dụng các
vector của câu văn kết hợp với vector của các từ tạo nên câu văn để dự đoán
20


từ tiếp theo của ngữ cảnh. Thơng qua q trình đào tạo như vậy các vector
của câu sẽ có thể lưu trữ các thông tin về ngữ cảnh, ý nghĩa của câu, những
thông tin mà từng từ trong câu không thể hiện được. Nó hoạt động như một
bộ nhớ tạm thời của câu nên phương pháp này được gọi là Distributed
Memory model (PV-DM).

Để tìm được một vector cho một câu mới, chúng ta sử dụng mơ hình dự
đốn bằng cách khởi tạo một vector đại diện ngẫu nhiên cho câu văn đó,
trọng số tất cả phần cịn lại trong mạng được dữ nguyên, sau một vài eporch
cho quá trình infer ta thu được một vector mới đại diện cho câu văn đầu vào.
2.3.2.2. Distributed Bag of Words version of Paragraph Vector
Tương tự như Word2vec chúng ta có một mơ hình khác dự đoán các từ
ngẫu nhiên trong ngữ cảnh và được gọi là Distributed BOW(PV-BOW). gần
giống phương pháp Skip-gram.

Hình 2.7. Ví dụ về phương pháp PV-BOW

21


3. Thực nghiệm
3.1.

Phân tích bài tốn
Bài tốn nhóm chúng em sẽ giải quyết là bài toán về nhận dạng chủ đề

bài viết. Chủ đề mà hệ thống có thể nhận dạng nằm trong 8 chủ đề như sau:
• Arts
• Business
• Education
• Environment
• Health
• Politics
• Technology
• Covid-19
Bảy chủ đề đầu tiên là những chủ đề lớn và cơ bản nhất thường thấy.

Riêng chủ đề cuối cùng – Covid-19 – là chủ đề bọn em tự thêm vào theo
dòng sự kiện gần đây.
Ở bài toán này, dữ liệu đầu vào sẽ là một đoạn văn bản (bài viết, bài
báo…), còn đầu ra sẽ là danh sách các chủ đề cùng với độ chắc chắn của hệ
thống về việc chủ đề đó là chủ đề chính của văn bản đầu vào.
Chúng em sẽ tiến hành xây dựng và deploy một API đơn giản phục vụ
cho việc giải quyết bài toán trên.
Cùng bài toán này, một số cơng ty cũng có cách giải quyết tương tự (xây
dựng API) như sau:
• Komprehend: tính chính xác trung bình, độ chi tiết thấp và thời
gian phản hồi trung bình.
• eventregistry: có vẻ như project này đã bị bỏ hoang.
22


• bytesview: tính chính xác thấp, độ chi tiết ổn và thời gian phản hồi
trung bình.
• uClassify: tính chính xác và độ chi tiết thấp, tuy nhiên thời gian
phản hồi rất nhanh.
• IBM Watson: thuộc ơng lớn IBM, độ chính xác và chi tiết đều rất
cao, thời gian phản hồi rất nhanh.
3.2.

Thu thập và xử lí dữ liệu

3.2.1.

Thu thập dữ liệu

Về bộ dữ liệu huấn luyện (train set), ban đầu, chúng em tính sẽ sử dụng

bộ dữ liệu đã được xây dựng sẵn từ Kaggle. Tuy nhiên sau quá trình thảo
luận, hầu hết các bộ dữ liệu build sẵn chưa đáp ứng được nhu cầu của nhóm
về số lượng của chủ đề cũng như số lượng về bài viết trong mỗi chủ đề.
Vì thế chúng em tiến hành crawl dữ liệu từ trang theconversation.com
theo 8 chủ đề lớn như ở phần Phân tích bài tốn sử dụng thư viện
BeautifulSoup của ngôn ngữ Python bằng đoạn script cơ bản.
Kết quả chúng em thu thập được 12.724 bài viết, với mỗi chủ đề là:
• Arts (1752)
• Business (1795)
• Education (1845)
• Environment (1826)
• Health (1780)
• Politics (1608)
• Technology (1832)
• Covid-19 (286)
23


Hình 3.1. Bộ dữ liệu huấn luyện

3.2.2.

Xử lí dữ liệu

Các bước tiền xử lí dữ liệu:
• Tokenizing (tách từ)
• Chuyển hoa thành thường: vì trong doc2vec (mơ hình chúng em
chọn cho việc phân loại) thì chữ hoa hay thường khơng ảnh hưởng
đến kết quả cuối.
• Loại bỏ dấu câu

• Loại bỏ stopwords
• Loại bỏ số
Hai bước đầu là gần như bắt buộc, còn ba bước sau là tuỳ chọn.
Chúng em có train 2 mơ hình doc2vec: một mơ hình có loại bỏ dấu
câu/stopwords/số và một mơ hình giữ ngun tất cả. Kết quả cho thấy việc
loại bỏ có ảnh hưởng đến kết quả, cụ thể thì việc loại bỏ sẽ tăng tính chính
xác của việc nhận biết chủ đề lên từ khoảng 2-5%.
Tất nhiên cần phải lưu ý rằng việc gán chủ đề khá phụ thuộc vào cảm
quan của mỗi người, đó là yếu tố ảnh hướng rất lớn tới việc đánh giá độ
chính xác, độ hiệu quả của mơ hình.

24


Và có một số bài viết gặp tình trạng nhập nhằng chủ đề - rất khó có thể
xác định 1 chủ đề chính cho bài việc này. Và khi các bài viết bỏ vào mơ hình
của ta, kết quả trả ra về tỉ lệ chắc chắn giữa các chủ đề đôi khi sẽ không
chênh lệch quá nhiều (dưới 2%).
3.3.

Huấn luyện mơ hình
Như đã đề cập từ trước, nhóm chúng em sử dụng model doc2vec làm mơ

hình phân loại. Nhóm tiến hành train với các thơng số mơ hình như sau:
• vector_size = 300
• window = 5
• min_count = 20
• epochs = 80
Thông số vector_size quy định số chiều của các văn bản trong bộ dữ liệu
huấn luyện. Vì mỗi bài viết trong bộ ngữ liệu đều tương đối dài (600-1500

từ) nên bọn em cho thông số này khá lớn (300).
Thông số window quy định context window hay ngữ cảnh của từng từ.
Thông số min_count quy định tần suất xuất hiện tối thiểu của từ trong
toàn bộ bộ dữ liệu huấn luyện của từng từ để từ đó có thể được tính vào
vector văn bản đầu ra cuối cùng. Vì một từ đều tần suất xuất hiện q thấp
khơng thể tính vào làm đặc trưng cho vector văn bản. Tuỳ theo độ lớn của
bộ ngữ liệu huấn luyện mà ta sẽ có thơng số phù hợp. Sau nhiều lần điều
chỉnh, chúng em nghĩ con số 20 là hợp lí.
Thơng số epochs quy định số lần lặp đối với một ngữ liệu của bộ dữ liệu.
Nghĩa là số lần mơ hình huấn luyện lặp lại trên 1 ngữ liệu duy nhất. Thông
số này nằm khoảng đâu đó từ 30-100 cho kết quả tốt nhất, tuỳ theo độ lớn
của bộ huấn luyện. Ở đây chúng em chọn 80 sau vài lần điều chỉnh tăng dần.
25


×