CHƢƠNG 2 HỆ THỐNG TRÍCH CHỌN THÔNG TIN
3.3. Mô hình hệ thống
3.3.1. Pha tiền xử lí
Hình 10: Mô hình của pha tiền xử lí
Trong pha này, nhận đầu vào một tập các trang web trên một miền ứng dụng quan tâm là máy ảnh kĩ thuật số, sau quá trình xử lý hệ thống thu đƣợc một tập các câu tiềm năng có thể chứa các quan hệ cần trích chọn, chứa tên các hãng sản xuất máy ảnh đang xem xét. Công việc trích chọn sau này chỉ thực hiện trên tập các câu tiềm năng thu đƣợc sau pha này.
a. Bước 1: Loại bỏ các thẻ html
Trong một trang web, không chỉ chứa nội dung trang web, còn chứa các thông tin khác nhƣ dòng quảng cáo, các đƣờng liên kết đến hình ảnh, đến các trang web khác… Tất cả các thông tin đó không phải đều có lợi cho hệ thống trích chọn. Các thông tin này thƣờng đƣợc đánh dấu trong các thẻ html. Việc cần làm là loại bỏ các thẻ hmtl, chỉ giữa lại nội dung của các trang web.
Nội dung trong các trang web thƣờng đƣợc đánh dấu trong cặp thẻ <p> và </p>. Tuy nhiên tiêu đề của các bài báo thƣờng cũng ẩn chứa những thông tin có giá trị, cụ thể trong tiêu đề của các bài báo nói về máy ảnh, thƣờng trong đó chứa cặp quan hệ tên máy ảnh và hãng sản xuất, do đó ngoài việc giữ lại nội dung của trang web, ta cần giữ lại cả tiêu đề của các trang web đó.
Đọc từng file có trong tập các trang web, với mỗi file, từng dòng đƣợc đọc, nếu dòng đó chứa thẻ bắt đầu bằng thẻ <p> và kết thúc là thẻ </p> hoặc nếu trong dòng văn bản đó chứa <hi> thì ghi lại nội dung chứa trong cặp thẻ đó vào file văn bản sau khi đã loại bỏ các dấu \t, chuyển các kí tự html về dạng chuẩn.
Giải thuật:
Đầu vào: tập các tài liệu HTML
Đầu ra: tập tài liệu ở dạng trơn (plain text)
B1: Loại bỏ thẻ html
B2: Tách câu
B3: Loại bỏ các câu không liên quan
void StripHTML()
for each file_html in corpus_html for each line in file_html
if line Contain (<hi>) {
RemoveTag(line); Write(file_text, line);
}
if (line Contain (<p>)) or (line Contain (<P>)) {
RemoveTag(line); Write(file_text, line); }
return file_text;
b. Bước 2: Tách câu
Việc trích chọn các loại tên máy ảnh kĩ thuật số giới hạn trong một câu, có nghĩa nếu tên hãng sản xuất và tên máy ảnh xuất hiện trong cùng một câu thì ta sẽ đƣa chúng vào bảng quan hệ đích, và thông thƣờng mỗi câu ta chỉ trích chọn một bộ quan hệ mà thôi. Do đó, khi có một tập các tài liệu, công việc đầu tiên hệ thống cần phải làm là tách các câu trong một đoạn thành các câu đơn lẻ, và việc trích chọn chỉ thực hiện trên từng câu đơn lẻ.
Thông thƣờng, trong một đoạn văn bản, các câu thƣờng đƣợc ngăn cách bởi một trong các dấu ngắt „.‟, „!‟, „?‟. Nếu chúng ta có một đoạn văn bản đƣa vào một biến xâu input, cách đơn giản để cắt chúng thành các câu là ta sẽ sử dụng
input.Split(„.‟, ‟!‟, ‟?‟), cách này rất hiệu quả với các tài liệu văn bản tiếng Việt. Tuy nhiên với tiếng Anh các dấu ngắt đó có thể đánh dấu kết thúc một câu nhƣng cũng có thể xuất hiện giữa câu ví dụ nhƣ dấu “.” trong văn bản thƣờng để ngăn cách hàng thập phân trong số thực, ngăn cách địa chỉ IP,... trong khi hệ thống trích chọn đang thực hiện trên tập tài liệu tiếng Anh, do đó việc sử dụng các dấu ngắt và phƣơng thức Split để tách câu không đem lại hiệu quả thực sự.
Chẳng hạn nhƣ câu: “The Coolpix P80 comes with a 10.1 MP sensor. The camera features an electronic viewfinder to allow accurate composition throughout the zoom range and also includes a large 2.7 inch monitor with anti-reflection coating and a wide viewing angle.”
Nếu sử dụng phƣơng thức Split thì kết quả trả về gồm 4 thành phần: 1. The Coolpix P80 comes with a 10
3. The camera features an electronic viewfinder to allow accurate composition throughout the zoom range and also includes a large 2
4. 7 inch monitor with anti-reflection coating and a wide viewing angle trong khi ta cần đầu ra chỉ gồm có 2 câu:
5. The Coolpix P80 comes with a 10.1 MP sensor
6. The camera features an electronic viewfinder to allow accurate composition throughout the zoom range and also includes a large 2.7 inch monitor with anti- reflection coating and a wide viewing angle
Để thực hiện việc này, hệ thống sẽ quét trên toàn bộ đoạn văn bản đầu vào, mỗi khi gặp các kí tự ngắt câu, ta cần quyết định xem liệu chúng có phải đánh dấu điểm kết thúc của câu hay không. Một đặc điểm dễ nhận ra đó là nếu một trong các dấu „.‟, „!‟, „?‟ đánh dấu kết thúc câu thì liền sau chúng là một dấu cách và kí tự tiếp theo phải là một trong các kí tự in hoa.
Ta sẽ sử dụng biểu thức quy tắc để tách các câu.
"(?<=[A-Za-z0-9][\.\!\?])\s+(?=[A-Z])"
Biểu thức này đƣợc diễn giải là: bắt bằng một nhóm các kí tự chữ hoa, chữ thƣờng và số, tiếp theo các là kí tự dấu ngắt „.‟, „!‟, „?‟, kết thúc là một dấu cách; nhóm thứ 2 bắt đầu là các kí tự viết hoa từ A đến Z.
Biểu thức so khớp tất cả các chuỗi con nào có chứa các dấu „.‟, „!‟, „?‟ và sau nó là một kí tự chữ hoa, nếu so khớp là đúng, kết quả trả về là một chuỗi con từ vị trí đầu câu đến trƣớc dấu. ! hoặc ?.
Giải thuật tách câu: Đầu vào: Đoạn văn bản
Đầu ra: Danh sách các câu đơn trong đoạn văn bản void SplitSentences(sSourceText)
sTemp = sSource Text ;
if sTemp Start_with {„A‟..‟Z‟} and sTemp Contain {„.‟, „?‟, „!‟} and Next_Char in
{„A‟..‟Z‟}
splitSentences = sTemp.Split();
for each single_sentence in splitSentences
{
RemoveSpace(single_sentence); return single_sentence;
}
Để tiết kiệm không gian lƣu trữ và thời gian tìm kiếm, hệ thống loại bỏ các từ dừng - những từ xuất hiện thƣờng xuyên trong văn bản mà sự xuất hiện của nó không có ý nghĩa gì trong việc tìm kiếm và trích chọn thông tin.
Sau khi tách các câu, hệ thống tiến hành tách các từ trong mỗi câu, với mỗi từ vừa tách, kiểm tra xem từ đó có phải là từ dừng không, nếu đúng loại bỏ từ đó ra khỏi văn bản.
Mỗi bài báo thƣờng có những định dạng khác nhau, bài này có từ viết hoa nhƣng bài kia thì không, có động từ ở dạng nguyên thể, nhƣng cũng động từ đó ở bài báo khác lại ở thì bị động, chẳng hạn nhƣ “announces”, “announed”… Đặc biệt liên quan đến tên các hãng sản xuất, tên các thuộc tính kèm theo, ví dụ cặp từ “Panasonics” và “Panasonic”, hoặc “PowerShot” và “powershot” thực chất ý nghĩa của chúng đều giống nhau, nhƣng cách viết khác nhau, điều này sẽ gây nhiễu cho quá trình tìm kiếm và kết quả trích chọn thƣờng không chính xác.
Hệ thống tiến hành chuyển hóa tất cả các từ trong văn bản thành các kí tự chữ thƣờng, chuyển tất cả các thể hiện về tên máy ảnh, tên thuộc tính kèm theo về một dạng thống nhất chung, chuyển tất cả các động từ ở các thời khác nhau về dạng nguyên thể của nó.
Giải thuật chuyển các từ về dạng gốc của nó: Các động từ thƣờng có các dạng: nguyên thể, V_ed, V_ing, V_s
- Nếu động từ có dạng V_s: Nếu động từ kết thúc bằng: + “sses” “ss”
caresses caress
+ “ies” “i” nếu trƣớc nó có nhiều hơn 1 kí tự, còn lại ies ie ties tie
skies ski
+ “s”: xóa bỏ “s” nếu kí tự trƣớc nó là một phụ âm rồi kế trƣớc là một nguyên âm
caress caress cats cat
+ “ss”, “us”: giữ nguyên
- Nếu động từ có dạng V_ed hoặc V_ing: Nếu động từ kết thúc bằng: + “eed” “ee”
agreed agree
+ Xóa “ed” hoặc “ing”, và sau khi xóa từ còn lại: +) kết thúc bằng: “at”, “bl”, “iz” thì thêm “e”
luxuriaitng luxuriate
+) kết thúc bằng một kí tự kép khác „l‟, „s‟, ;z‟ thì xóa một kí tự cuối hopping hop
+) là âm tiết ngắn thì thêm “e” hoped hope
Giải thuật chuẩn hóa các từ về dạng gốc: Đầu vào: Một từ
Đầu ra: Từ gốc của nó void Stemmer(verb)
1. k = Length(verb); if (verb[k] = „s‟) {
if (verb End_With “sses” ) k = k - 2;
else if (verb End_With “ies” ) and (Length(verb) > 4) k = k - 2; else k = k - 1;
else if (verb[k-1] != „s‟) k = k - 1; }
2. if (verb End_With “eed”) k = k - 1;
3. if (verd End_With “ed”) or (verb End_With “ing”) {
Remove(verb, “ed”, “ing”);
k = Length(verb);
if (verb End_With {at”, “bl”, “iz”}) Add(verb, “e”);
else if (verb End_With double(k)) {
k = k – 1;
ch = verb[k];
if (ch in {“l”, “s”, “z”}) k = k + 1; }
else if Is_short_word(verb) add(verb, “e”);
}
3. return verb;
Tuy nhiên dựa vào đặc điểm của một tên máy ảnh, ví dụ có dạng DMC- FX500, thƣờng có dạng một chuỗi kí tự gồm các kí tự chữ cái đƣợc viết hoa, kèm theo là các kí tự số. Do đó ta dễ dàng kiểm tra đƣợc một xâu có phải là một tên máy ảnh xác định hay không, loại bỏ những trƣờng hợp không thỏa mãn để kết quả trích chọn sẽ chính xác hơn. Nếu ta chuyển toàn bộ các kí tự về dạng chữ thƣờng thì việc kiểm tra một chuỗi có phải là tên máy ảnh hay không sẽ khó khăn hơn, nên việc chuẩn hóa các từ về dạng chữ thƣờng không áp dụng với tên của hãng máy ảnh, tên máy ảnh và tên các thuộc tính kèm theo máy ảnh.
Giải thuật loại bỏ từ dừng, chuẩn hóa các từ trong câu: Đầu vào: Một câu văn bản
Đầu ra: Một câu mới loại bỏ các từ dừng, các động từ ở dạng gốc. void Token(sentence)
1. filter = ; tokens =
tokens = sentence.Split();
for each token in tokens
{
if (not Is_Stop_Word(token)) filter = filter {token}; }
2. s = “”;
for each token in filter
{
for each attribute in set_attributes
{
if (Lower(token) = Lower(attribute))
token = attribute;
}
for each producer in set_producers
{
if (Lower(token) contain Lower(producer))
token = producer;
}
if (not Check_Camera(token) and not Check_Producer(token) and
not Check_Attribute(token))
Stemmer(Lower(token);
s = s + token;
} 3. return s;
c. B3: Loại bỏ các câu không liên quan
Công việc tiếp theo là tìm các câu tiềm năng, những câu có khả năng chứa các cặp quan hệ cần trích chọn. Vì số lƣợng tập tài liệu là khá lớn, số lƣợng câu sau khi tách cũng rất nhiều, trong các câu có những câu không giúp ích gì trong quá trình trích chọn. Việc trích chọn ra đƣợc bộ quan hệ đích chỉ thực hiện khi tên hãng sản xuất và tên máy ảnh đứng gần nhau trong cùng một câu, do đó ta chỉ quan tâm đến những câu nào chứa một trong các tên hãng sản xuất máy ảnh,
các câu còn lại ta sẽ loại bỏ khỏi CSDL, tránh mất thời gian trong việc tìm kiếm và trích chọn.
Hệ thống tiến hành quét trên tất cả các câu, nếu chúng chứa một trong các tên các hãng máy ảnh có trong tập P, giữ lại các câu đó, loại bỏ các câu không thỏa mãn.
Chẳng hạn ta có đoạn bài báo: “Samsung has released the TL110 and TL105 ultra compact cameras. The 14.2 megapixel TL110 (ST70 in Europe) and 12 megapixel TL105 (ST60) offer 2.7 inch LCDs, wide angle zoom lenses starting at 27mm equivalent and offer 720p HD video recording using H.264 compression. Both include scene modes such as Fisheye, Lomo and a DeFog Clear/Fog Lifting mode that claims to cut through haze to take clearer images.“, sau pha tiền xử lí, kết quả thu đƣợc là câu “Samsung release TL110 TL105 ultra compact cameras”.
Giải thuật:
Đầu vào: Tập các tài liệu dạng text
Đầu ra: Các câu chứa tên các hãng sản xuất máy ảnh void ExploreDirectory( )
1. set_sentences = ;
paragraph = “”;
2. for each file_text in corpus_text {
read_to_end(file_text, paragraph);
for each single_sentence in SplitSentences(paragraph) {
s = token(single_sentence);
for each pro in producers
if (s Contain pro) set_sentences = set_sentences {s}; }
}