Đầu vào: Tập các cặp câu văn bản – giả thuyết đã được tách từ và được loại bỏ các từ dừng.
Đầu ra: Các giá trịđặc trưng của từng cặp câu văn bản – giả thuyết.
Chúng tôi tính được 20 đặc trưng thuộc về từ vựng và ngữ nghĩa. Sau đây, chúng tôi xin trình bày một sốđặc trưng tiêu biểu.
Cho hai vector :889 = (!, ……,)) và 889 = (!, …..,)) trong không gian vector n chiều. Trong đó, n là số các từ phân biệt xuất hiện trong T, H và , là số lần xuất hiện mỗi từ trong số các từ phân biệt T và H.
Ví dụ:
T: Vụ tai nạn xảy ra làm 50 người bị chết.
28
Các từ phân biệt trong cả T và H là: vụ, tai nạn, xảy ra, làm, 50, người, bị, chết, trong, giao thông.
889= (1,1,1,1,1,1,1,1,0,0) 889 = (1,1,0,0,1,1,1,1,1.1)
Khoảng cách Manhattan: Được biết đến như khoảng cách City Block hay :;. Khoảng cách này được xác định bởi công thức sau:
:;(<9,=9) = ∑? |<>
>.; − =>|
Khoảng cách Euclidean: Khoảng cách này được tính theo công thức: :;(<9,=9) = %∑ (<? >
>.; − =>)@
Độ tương đồng Cosin: Được định nghĩa theo công thức sau: Cos(<9,=9) = A9.B89
||A9||.||B89||
Hệ số Matching:Gọi X là tập các từ phân biệt trong văn bản t, Y là tập các từ phân biệt trong giả thuyết h. Khi đó, hệ số Matching là |X ∩ Y|
Hệ số Dice: D = @.|D ∩ E| |F G| Hệ số Jaccard: J= |D ∩ E| |D ∪ E|
Chuỗi con chung dài nhất:
Một chuỗi con chung của hai xâu là một chuỗi con các ký tự xuất hiện trong cả hai xâu. Chuỗi con chung dài nhất là một chuỗi con chung có độ dài lớn nhất.
29
Để tính được độ đo này khi T và H là những văn bản thì chúng tôi chia nhỏ chúng ra thành các token và coi mỗi token này như là một kí tự và độ dài của T và H chính là tổng số các token.
Ví dụ:
T: Vụ tai nạn xảy ra ở Hà Nội làm 50 người bị chết.
H: 50 người bị chết trong vụ tai nạn giao thông ở Hà Nội.
Khi đó, chuỗi con chung dài nhất là: vụ- tai nạn-ở-Hà Nội
Cho hai chuỗi T và H. Theo Levenshtein thì độ độđo chuỗi con chung dài nhất được tính theo công thức:
lcs(T ,H) = IJ?KLM(NOAPQRSTU(V,X))
R>?(IJ?KLM(V),IJ?KLM(X))
Trong hầu hết các trường hợp thông thường, min (Length(T), Length(H)) bằng với Length(H) do đó các giá trịđược biểu diễn trong đoạn [0,1].
Phần trăm các từ của giả thuyết xuất hiện trong văn bản nguồn.
Cho cặp văn bản - giả thuyết T và H. Chúng tôi đếm tổng số từ cùng xuất hiện trong cả T và H. Giả sử gọi W = {w1, w2, …, wk} là tập các từ cùng có mặt trong T và H, W gồm có k phần tử ; Length(T) là độ dài của văn bản T tính theo đơn vị từ.
Khi đó, chúng tôi có công thức tính phần trăm các từ của giả thuyết xuất hiện trong văn bản nguồn:
Y = :\]ℎ(_)[
Khoảng cách chu7n Levenshtein dựa trên từ.
Khoảng cách Levenshtein (được Vladimir Levenshtein đề ra vào năm 1965) thể hiện khoảng cách khác biệt giữa hai chuỗi kí tự. Khoảng cách Levenshtein giữa chuỗi H và chuỗi T là số bước ít nhất biến đổi chuỗi H thành chuỗi T thông qua ba phép biến đổi là : xóa một kí tự, thêm một kí tự và thay kí tự này thành kí tự khác.
30
Ví dụ: Khoảng cách giữa 2 chuỗi “kitten” và “sitting” là 3 vì phải dùng ít nhất ba lần biến đổi.
1. kitten -> sitten (thay "k" bằng "s") 2. sitten -> sittin (thay "e" bằng "i") 3. sittin -> sitting (thêm kí tự "g")
Khoảng cách Levenshtein được tính toán bằng cách sử dụng thuật toán quy hoạch động, tính toán trên mảng 2 chiều (n+1).(m+1) với m, n là độ dài của chuỗi cần tính. Sau đây là đoạn mã (H, T là chuỗi cần tính khoảng cách và n, m là độ dài của hai chuỗi).
int LevenshteinDistance(char h[1..m], char t[1..n]) // d is a table with m+1 rows and n+1 columns declare int d[0..m, 0..n] for i from 0 to m d[i, 0] := i for j from 0 to n d[0, j] := j for i from 1 to m for j from 1 to n {
if h[i] = t[j] then cost := 0 else cost := 1 d[i, j] := minimum(
d[i-1, j] + 1, // xoá
d[i, j-1] + 1, // thêm
d[i-1, j-1] + cost // thay thế
) }
31