Tải bản đầy đủ (.docx) (9 trang)

Mình sẽ tạo ra ba document

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 (117.52 KB, 9 trang )

Mình sẽ tạo ra ba document (tài liệu) để mô tả phần matching này hoạt động
như thế nào.
Document
1

Người lên ngựa kẻ chia bào. Rừng phong thu đã nhốm màu
quan san

Document
2

Ô hay buồn vương cây ngô đồng. Vàng rơi vàng rơi thu mênh
mông

Document
3

Một chiều về bên bến sông thu. Nghe tin em cưới á cái đù.

Document 1 là một câu thơ trong Truyện Kiều của Nguyễn Du. Document
2 là một câu thơ trong bài thơ Tỳ Bà của Bích Khê. Document 3 là một câu
thơ trong một bài thơ (mình không nhớ tên) của Nguyễn Nhật Ánh.
Hãy tưởng tượng rằng chúng ta đang tìm kiếm trong một data set hoặc trên
Internet ( và giả sử Internet chỉ có 3 tài liệu này) với từ khóa chúng ta nhập
là: sông thu.
Tìm kiếm của chúng ta là một free text query, nghĩa là các từ khóa được gõ
một cách tùy ý trong ô tìm kiếm và không có sự kết nối giữa các từ với
nhau. Theo cách tìm kiếm này, nếu chúng ta nhập sông thu hay thu sông thì
thuật toán cũng shows cho chúng ta các kết quả giống nhau.
Hãy đi vào chi tiết từng bước để xem phần matching tìm kiếm này hoạt động
như thế nào.



Bước 1 : Term Frequency (TF – hay tần số xuất hiện
của một từ)


Term Frequency (TF) là tần số xuất hiện của một từ trong một văn bản. Bên
dưới là bảng chi tiết cho các từ và tần số của chúng trong mỗi văn bản.
TF của Document 1
Document 1

người

lên

ngự
a

kẻ

chia

bào

rừng

Term Frequency

1

1


1

1

1

1

1

phon
g

thu

đã

nhố
m

màu

quan

san

1

1


1

1

1

1

1

TF Document 2
Document 2

ô

hay

buồn

vương

cây

ngô

Term Frequency

1


1

1

1

1

1

đồng

vàng

rơi

thu

mênh

mông

1

2

2

1


1

1

TF của Document 3
Document 3

một

chiều

về

bên

bến

sông

thu

Term Frequency

1

1

1

1


1

1

1

nghe

tin

em

cưới

á

cái

đù


1

1

1

1


1

1

1

Trong thực tế, các văn bản có kích thước (tổng số từ) khác nhau. Trong các
văn bản có kích thước lớn, tần số xuất hiện của một từ có thể sẽ nhiều hơn
so với các văn bản có kích thước nhỏ hơn. Do đó, chúng ta cần
phải normalize (chuẩn hóa) tần số xuất hiện của một từ trong một văn bản
dựa trên kích thước của văn bản đó. Một mẹo đơn giản là chúng ta chia số
lần xuất hiện của một từ cho tổng số từ trong văn bản. Ví dụ trong Document
2, từ rơi xuất hiện hai lần . Tổng số từ trong Document 2 là 14. Do đó, tần số
xuất hiện được chuẩn hóa (normalized TF) của từ rơi là 2/14 = 0.14. Từ
đó, ta có tần số xuất hiện được chuẩn hóa của các từ trong cả 3 tài liệu lần
lượt như sau.
Normalized TF cho Document 1:
Document 1

người

lên

ngựa

kẻ

chia

bào


rừng

Term Frequency

0.07

0.07

0.07

0.07

0.07

0.07

0.07

phon
g

thu

đã

nhốm

màu


quan

san

0.07

0.07

0.07

0.07

0.07

0.07

0.07

Normalized TF cho Document 2:
Document 2

ô

hay

buồn

vương

cây


ngô

Term Frequency

0.07

0.07

0.07

0.07

0.07

0.07


đồng

vàng

rơi

thu

mênh

mông


0.07

0.14

0.14

0.07

0.07

0.07

Normalized TF cho Document 3:
Document 3

một

chiều

về

bên

bến

sông

thu

Term Frequency


0.07

0.07

0.07

0.07

0.07

0.07

0.07

nghe

tin

em

cưới

á

cái

đù

0.07


0.07

0.07

0.07

0.07

0.07

0.07

Bước 2: Inverse Document Frequency (IDF – tần số
nghịch của một từ trong một data set)
Mục đích chính của việc tìm kiếm văn bản là tìm ra những văn bản trong một
data set (hoặc Internet nói chung) có nội dung liên quan nhất với từ tìm kiếm
của người dùng. Ở bước 1 (TF), tất cả các từ đều được đánh giá quan trọng
ngang nhau.Tuy nhiên, trong thực tế thì có một số từ xuất hiện quá nhiều và
không có vai trò quyết định trong việc tìm ra các văn bản có nội dung liên
quan với chủ đề mà người dùng tìm kiếm (trong tiếng Anh thì những từ xuất
hiện nhiều và ít quan trọng là the, a, he, she, etc…). Chúng ta cần tìm ra một
cách để làm giảm trọng số của những từ xuất hiện quá thường xuyên (trên
Internet) và tăng trọng số của những từ ít xuất hiện (trên Internet) hơn. Và
công cụ toán học Logarithm (Lôgarit) sẽ giúp chúng ta làm được điều này.
Chúng ta hãy tính IDF cho từ chiều trong data set của chúng ta ( data set của
chúng ta gồm 3 văn bản: Document 1, Document 2 và Document 3).


1.

2.
3.
4.
5.
6.
7.

IDF(chiều) = 1 + ln(Tổng số văn bản trong data set/Số văn bản chứa từ chiều)
Data set của chúng ta có 3 văn bản : Document 1, Document 2 và Document 3.
Từ chiều xuất hiện trong Document 3.
IDF(chiều) = 1 + ln(3/1) = 1 + 1.0986 = 2.0986.

Bên dưới là bảng IDF của tất cả các từ trong data set. Trong đó từ thu xuất
hiện trong cả 3 văn bản nên nó sẽ có điểm số IDF thấp hơn so với các từ chỉ
xuất hiện một văn bản.
Từ

IDF

người

2.0986

lên

2.0986

ngựa

2.0986


kẻ

2.0986

chia

2.0986

bào

2.0986

rừng

2.0986

phong

2.0986

thu

1

đã

2.0986

nhốm


2.0986

màu

2.0986

quan

2.0986

san

2.0986

ô

2.0986

hay

2.0986

buồn

2.0986

vương

2.0986


cây

2.0986

ngô

2.0986

đồng

2.0986

vàng

2.0986

rơi

2.0986


mênh

2.0986

mông

2.0986


một

2.0986

chiều

2.0986

về

2.0986

bên

2.0986

bến

2.0986

sông

2.0986

nghe

2.0986

tin


2.0986

em

2.0986

cưới

2.0986

á

2.0986

cái

2.0986

đù

2.0986

Bước 3 : Tính TF * IDF
Hãy nhớ rằng mục đích của chúng ta là đi tìm văn bản có nội dung liên quan
nhất cho cụm từ tìm kiếm : sông thu.
Trong mỗi từ trong cụm từ tìm kiếm, nhân giá trị normalized TF của nó trong
mỗi văn bản với giá trị IDF của từ đó để tính được giá trị TF*IDF của một từ
trong từng văn bản.
Document 1


Document 2

Document 3

sông

0

0

0.146902

thu

0.07

0.07

0.07

Bước 4 : Vector Space Model – Cosine Similarity


Chúng ta mô tả mỗi document như là một vector. Một data set được xem như
là một tập hợp các vector trong một không gian vector. Mỗi từ trong không
gian vector sẽ có trục của riêng nó. Bằng cách sử dụng công thức phía dưới,
chúng ta có thể tìm ra độ tương đồng của bất kì tài liệu nào.
1.
2.
3.

4.
5.
6.
7.

Cosine Similarity (d1, d2) = Dot product(d1, d2)/||d1|| * ||d2||
Dot product(d1, d2) = d1[0]*d2[0] + d1[1]*d2[1] + ....d1[n]*d2[n]
||d1|| = square root( d1[0]^2 + d1[1]^2 + ... + d1[n]^2 )
||d2|| = square root( d2[0]^2 + d2[1]^2 + ... + d2[n]^2 )

Hình 2: không gian 2 chiều sông – thu


Vector chỉ làm việc với con số. Trong bài viết này chúng ta đang làm việc với
văn bản. Đó là lý do tại sao chúng ta sử dụng TF – IDF để chuyển đổi từ ngữ
văn bản thành số để có thể biểu diễn chúng ở dạng vector.
Cụm từ tìm kiếm của người dùng cũng được xem là một vector. Chúng ta tính
giá trị TF * IDF cho cụm từ truy vấn.
TF

IDF

TF * IDF

sông

0.5

2.0986


1.0493

thu

0.5

1

0.5

Bây giờ chúng ta hãy tính cosine similarity (tương đồng cosine) giữa cụm từ
tìm kiếm (Query) và Document 1.
1.
2.
3.
4.
5.
6.
7.
8.
9.

Cosine Similarity(Query, Document 1) = Dot Product(Query, Document 1)/||Query|| *||
Document 1||
Dot Product(Query, Document 1) = Query[TF*IDF(sông)] * Document 1[TF*IDF(sông)] +
Query[TF*IDF(thu)]*Document 1[TF*IDF(thu)] = 1.0493*0 + 0.5*0.07 = 0.035
||Query|| = square root(Query[TF*IDF(sông)]^2+ Query[TF*IDF(thu)]^2) =
squareroot(1.0493^2 + 0.5^2) = 1.1623
||Document 1|| = square root(Document 1[TF*IDF(sông)]^2+ Document 1[TF*IDF(thu)]^2)
= squareroot(0^2 + 0.07^2) = 0.07

→ Cosine Similarity(Query, Document 1) = 0.035/(1.1623*0.07) = 0.430167335

Bảng dưới là giá trị cosine similarity giữa cụm từ tìm kiếm và các văn bản có
trong data set.

Cosine Similarity

Document 1

Document 2

Document 3

0.430167335

0.430167335

1


Chúng ta có thể thấy là Document 3 có score cao nhất bằng 1. Lý do là vì
Document 3 chứa đồng thời cả hai từ sông và thu. Điều này có nghĩa là khi
người dùng tìm kiếm với cụm từ là sông thu thì thuật toán sẽ trả về tài liệu có
độ tương đồng cosine lớn nhất với nó là Document 3.



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×