Đây là thành phần quan trọng nhất trong GATE nó đóng vai trò chính giúp công cụ này xử lý ngôn ngữ tự nhiên.
Bộ luật JAPE là thành phần cơ bản trong khung làm việc của GATE, cho phép người dùng viết biểu thức chính quy trên nhãn (annotation) và tạo ra các nhãn mới trong văn bản. Một bộ luật JAPE có thể bao gồm nhiều luật nhỏ. Mỗi luật nhỏ gồm các mẫu và cách thực thi khác nhau có dạng:
LHS (left-hand-side) Æ RHS (right-hand-side). Ví dụ:
23 Rule: rulePositive1 Priority: 1 ( (StrongWord) ({Lookup.majorType=="positive"}):name ) -->
:name.PosWord = {kind = "Trich chon positive", type="Positive", rule = " StrongWord + <PosWord> "}
Khi một luật JAPE thực thi thì các luật nhỏ trong nó được thi hành một cách tuần tự, từ trên xuống nếu như cùng Priority và nó thi hành các luật từ Priority thấp nhất đến cao nhất (mặc định là -1 nếu không khai báo Priority).
Luật JAPE gồm 2 thành phần chính: mệnh đề trái (LHS) là các biểu thức chính quy trên nhãn (annotation). Trong khi đó mệnh đề phải (RHS) thể hiện hành động cần
được thực thi khi mệnh đề trái được thỏa mãn (so khớp).
3.3.2.1 Mệnh đề trái (LHS)
Mệnh đề trái (LHS) là một biểu thức của các mẫu (annotation pattern) và các phép toán như “ *, ?, +, | ”
Các phép toán sử dụng trong mệnh đề trái
• | : phép hoặc • *: phép lặp (không hoặc nhiều lần) • ?: phép lặp không hoặc một lần • +: phép lặp một hoặc nhiều lần Ví dụ cho một mệnh đề trái: ({Lookup.majorType=="positive"}):name
24
3.3.2.3 Mệnh đề phải (RHS)
Mệnh đề phải sử dụng các mẫu (pattern) được cung cấp bởi mệnh đề trái để
thực thi một mệnh lệnh nào đó, thông thường là tạo ra các nhãn (annotation) mới. Trong ví dụ trên, mệnh đề trái cung cấp cho mệnh đề phải các mẫu (pattern) là tên của nhãn PosWord. Mệnh đề phải tạo ra các nhãn mới (annotations) tương ứng với các mẫu (pattern) nhận được. Nhãn (annotation) mới được tạo ra có kiểu là “PosWord” và 3 đặc trưng (feature) là kind = “Trich chon positive” và rule = “StrongWord + <PosWord>”.
3.3.2.2 Thành phần thay thế (Macros)
Ngoài ra trong việc xây dựng luật để cho thuận tiện và có khả năng sử dụng lại các thành phần ta có thể dùng thêm thành phần thay thế (Macros). Thành phần thay thế
(Macros) thường xuyên được sử dụng trong các mệnh đề trái. Nó thay thế cho một tập các lệnh, giúp cho bộ luật đơn giản và rõ ràng hơn. Ngoài ra, khi một thành phần thay thế đã được khai báo thì mọi luật trong bộ luật đều có thể sử dụng nó mà không cần phải khai báo lại.
Ví dụ về thành thần thay thế (Macros) - khai báo thành phần thay thế StrongWord
Macro: StrongWord // rất, khá, hơi, siêu, ( {Word.string=="rất"} | {Word.string=="siêu"} | {Word.string=="khá"} | {Word.string=="hơi"} )
25 Rule: rulePositive1 Priority: 1 ( (StrongWord) ({Lookup.majorType=="positive"}):name ) -->
:name.PosWord = {kind = "Trich chon positive", type="Positive", rule = " StrongWord + <PosWord> "}
3.3.2.4 Sử dụng đoạn mã Java trong JAPE
Có những công việc chỉ sử dụng luật đơn giản không thể quản lý tốt các nhãn
được, chúng ta nghĩ đến một cách khác đó chính là sử dụng đoạn mã Java trong JAPE.
Để tăng tính linh động và hiệu quả, bộ luật JAPE hỗ trợ chèn những đoạn mã JAVA vào trong mệnh đề phải. Nhờđó ngoài việc tạo ra các nhãn (annotations) mới, mệnh đề
phải còn có thể làm rất nhiều việc khác như: chèn thêm các đặc trưng (features), thay
đổi kiểu nhãn (Type) hay xóa các nhãn đã tồn tại v.v…
3.3.2.5 Một vài lựa chọn khi viết luật
Thành phần đầu tiên của mỗi luật (phase) JAPE luôn là các lựa chọn như:
• Kiểu điều khiển (Control) để quản lý cách so khớp mẫu. Có 5 lựa chọn cho kiểu
điều khiển là “brill”, “all”, “first”, “once” và “appelt”. Nó được khai báo ở phần
đầu văn bản chứa các luật đểđiều khiển phương thức so khớp mẫu: Options: control = <kiểu điều khiển (chẳng hạn applet)>
o “brill”: khi có nhiều hơn một luật cùng thỏa mãn cho một đoạn của văn bản, thì tất cả các luật này đều được thực thi. Sau khi quá trình so khớp (matching) diễn ra ở tất cả các luật thì điểm bắt đầu quá trình so khớp tiếp theo sẽ là điểm kết thúc của luật được so khớp dài nhất trong quá trình trước (longest matching).
26
o “all”: tương tự như “brill” nó cho phép thực hiện nhiều luật trên cùng một đoạn văn bản. Tuy nhiên có điểm khác biệt với “brill” đó là: điểm bắt đầu quá trình so khớp tiếp theo là điểm bắt đầu của nhãn (annotation) gần nhất sau nó. Có thể nói all so khớp rộng hơn “brill”.
o “first”: luật được thực hiện ngay khi quá trình so khớp đầu tiên được thỏa mãn. Bởi vậy nó không thích hợp cho các luật sử dụng “*”, “+”, “?”.
o “once”: chỉ có luật đầu tiên thỏa mãn quá trình so khớp được thực hiện. o “appelt”: chỉ một luật thỏa mãn quá trình so khớp và có độ thực thi cao
nhất được thực hiện. Độ thực thi của các luật được tính như sau:
Tất cả các luật cùng thỏa mãn so khớp từ vị trí X thì luật nào so khớp được dài nhất (longest matching) sẽ có độ thực thi cao nhất. Nếu như nhiều hơn một luật so khớp cùng một đoạn trong văn
bản thì luật nào được định nghĩa độưu tiên cao hơn sẽ có độ thực thi cao hơn và được thi hành.
Nếu như hai hay nhiều luật so khớp cùng một đoạn trong văn bản và có độ ưu tiên như nhau thì luật nào được định nghĩa sớm nhất sẽ có độ thực thi cao nhất và được thi hành.
• Tập các nhãn đầu vào (Input Annotations): các nhãn (annotations) có kiểu (Type) thuộc tập các nhãn đầu vào sẽ được sử dụng như là đầu vào cho các mệnh đề trái (quá trình so khớp).
Ví dụ:
Phase: Entity
Input: Word Split Lookup Options: control = appelt
27
3.4 Các công cụ quản lý chất lượng
Khi phát triển một hệ thống, các công cụ quản lý chất lượng là không thể thiếu
để đánh giá công việc. Việc luôn luôn có sựđánh giá chất lượng ngay từ giai đoạn xây dựng tập dữ liệu cho đến những giai đoạn cuối cùng (đánh giá kết quả làm việc của hệ
thống) giúp hệ thống vận hành trơn tru và dễ dàng hơn trong sự kiểm soát của người phát triển.
3.4.1 Công cụ đánh giá độ tương đồng khi gán nhãn hai văn bản (Annotation Diff) (Annotation Diff)
“Annotation Diff” cho phép người sử dụng so sánh hai văn bản được gán nhãn trên từng loại nhãn. Điều này đem lại nhiều lợi ích trong giai đoạn xây dựng tập dữ
liệu. Bởi để mang tính khách quan, ta luôn luôn phải có hai đội xây dựng tập dữ liệu
độc lập và khi đó “Annotation Diff” sẽ giúp so sánh những phần làm việc chung, để đi
đến thống nhất tạo ra một tập dữ liệu chuẩn. Giao diện như trong hình 5.
28
Tuy nhiên điểm hạn chế của “Annotation Diff” là chỉ so sánh được từng cặp văn bản, và từng kiểu nhãn khác nhau. Để đánh giá toàn bộ hệ thống chúng tôi không thể dùng Annotation Diff mà chỉ dùng nó trong quá trình xây dựng từng luật cần nhìn trực quan. Corpus Benchmark tool chính là một trong những công cụ để đánh giá hệ
thống.
3.4.2 Công cụ đánh giá chất lượng của hệ thống (Corpus Benchmark tool) tool)
Đây là công cụ cho phép người sử dụng đánh giá độ tương đồng của các tập dữ
liệu khác nhau như: tập dữ liệu được gán nhãn thủ công (bằng tay), tập dữ liệu được xử lý bởi hệ thống hiện hành. Corpus Benchmark tool cũng hoạt động tương tự như
Annotation Diff, nhưng là trên một tập văn bản và tất cả các nhãn. Nó đưa ra được những kết quả vềđộđo precision, recall và F-measure.
Giao diện của Corpus Benchmark tool như hình 6.
29
Hệ thống của chúng tôi dùng tool được viết lại dựa trên công cụđánh giá chất lượng Corpus Benchmark tool.
30
Chương 4
Hệ thống đánh giá quan điểm người dùng
Như ở chương 2 chúng tôi đã đưa ra một số hướng tiếp cận cho bài toán đánh giá quan điểm. Có rất nhiều hướng tiếp cận để tìm ra một hướng phù hợp với ngôn ngữ
và những văn bản vềđánh giá sản phẩm là điều hoàn toàn không phải dễ dàng. Có thể
với văn bản này ngôn ngữ này phương pháp này rất tốt nhưng với văn bản khác ngôn ngữ khác phương pháp này lại không hiệu quả cho lắm. Ngoài ra đây cũng là ngành nghiên cứu mới không chỉ ở Việt Nam mà còn trên cả thế giới cho nên những nghiên cứu áp dụng cho ngôn ngữ Việt Nam không nhiều và đạt được hiểu quả cũng chưa thực sự tốt. Hơn nữa cũng chính vì đây là một đề tài nghiên cứu mới cho nên nhiều cái chưa có một sự quy chuẩn nào cả và chúng tôi phải tựđịnh nghĩa một số chuẩn.
Ở đây chúng tôi xây dựng hệ thống đánh giá quan điểm người dùng dựa trên hướng tiếp cận về luật và phân lớp ở mức câu.
4.1 Giới thiệu hệ thống
Hệ thống của chúng tôi được xây dựng với mục đích đánh giá những đặc điểm (Features) của sản phẩm theo 2 hướng positive và negative. Vì mục đích là đánh giá Features cho nên chúng tôi giả sử trong dữ liệu văn bản đưa ra đánh giá đều nói đến một sản phẩm. Trong quá trình thu thập dữ liệu chúng tôi cũng thấy đa phần các trang
đều đánh giá về một sản phẩm trong mỗi thread.
Hệ thống của chúng tôi được xây dựng trên nền GATE cho phép chọn 1 văn bản hoặc nhiều văn bản về cùng một sản phẩm và trả ra kết quả là số câu (câu đơn) nói về Features của sản phẩm đó theo 2 hướng positive và negative.
Giao diện hệ thống của chúng tôi cho phép người dùng chọn đến một hoặc nhiều văn bản cùng nói đến một sản phẩm. Chúng tôi cũng chia sản phẩm theo 3 hướng category là: computer (laptop & desktop), ô tô và xe máy, điện thoại di động
31
(phone) tuy nhiên hiện tại chúng tôi mới xây dựng Feature cho máy tính (computer). Sau khi đã có thêm các văn bản làm input, hệ thống của chúng tôi sẽđưa ra kết quả về
từng Feature cho thể loại computer. Ví dụ như Feature cauhinh: 6/4 nghĩa là trong văn bản nói về sản phẩm có 6 câu nói cấu hình của máy tính đó là positive còn 4 câu là negative.
Sau đây là hình ảnh mô tả giao diện và kết quả của hệ thống [Hình 7].
Hình 7 - Minh họa giao diện hệ thống
4.2 Thu thập dữ liệu và gán nhãn
Đây là phần đầu tiên để bắt đầu xây dựng hệ thống. Chúng tôi cần thu thập dữ
liệu càng chuẩn càng theo chính quy càng dễ dàng cho phát triển hệ thống. Việc gán nhãn cũng rất quan trọng và cũng là phần chúng tôi làm cẩn thận và tỉ mỉ nhất bởi vì nó ảnh hưởng trực tiếp đến độ chính xác của hệ thống.
32
4.2.1 Thu thập dữ liệu
Ai cũng biết nguồn dữ liệu trên mạng là rất khổng lồ nhưng không phải là dễ
dàng để tìm được một nguồn dữ liệu chuẩn xác và hợp lý. Mục đích của chúng tôi hướng đến nguồn dữ liệu mà được người dùng đánh giá một cách khách quan nhất và thể hiện được ý kiến của họ nhất. Khó khăn trong công việc này là văn bản trên Internet về sản phẩm cũng không phải nhiều trừ một số sản phẩm vềđiện tử hay công nghệ như máy tính, ô tô, xe máy, di động, … thì những sản phẩm khác lại ít được người dùng quan tâm hơn. Ngoài ra những đánh giá đo lại thường được viết theo ngôn ngữ @ hay 9x,… hay một số thể loại khác không theo chính thống làm cho việc thu thập dữ liệu cũng gặp nhiều khó khăn.
Để tránh và giải quyết những khó khăn trên chúng tôi đã tìm ở một số trang có cách viết khá chính quy giúp cho việc xử lý dữ liệu được dễ dàng hơn. Chủ yếu nguồn dữ liệu của chúng tôi được lấy về từ trang http://tinvadung.vn theo chủ đề (category) máy tính (laptop & desktop) trong tương lai chúng tôi sẽ mở rộng thêm các chủđề về
ô tô & xe máy, điện thoại di động. Hình 8 là hình ảnh về những bài đánh giá trên trang web này. Chúng tôi sau khi lấy dữ liệu về cũng tiến hành một số thao tác nhỏ nhằm làm cho dữ liệu trở lên chính quy hơn như: sửa một số lỗi chính tả do người dùng; một số từ theo cách viết cá nhân, viết tắt (“wa”, “ko”…); một sốđoạn thiếu chấm câu, cách dòng,…
33
Hình 8 - Những reviews do người dùng đánh giá ở trang tinvadung.vn
Dữ liệu của chúng tôi có khoảng 3971 câu ở 20 văn bản tương ứng với 20 sản phẩm mà chúng tôi đã thu thập và xử lý qua để đưa về văn bản chuẩn. Nguồn dữ liệu cũng tương đối đủ cho chúng tôi làm tập huấn luyện (training) và kiểm tra (testing) cho hệ thống. Trong tương lai chúng tôi sẽ thu thập thêm dữ liệu về mỗi chủđề và mở
rộng thêm các chủđề khác nữa.
4.2.2 Gán nhãn dữ liệu
Đây là phần khá quan trọng nếu không nói là phần quan trọng nhất ảnh hưởng trực tiếp đến sản phẩm. Công việc này yêu cầu độ chính xác cao, chỉ có vậy thì bộ từ điển và bộ luật chúng tôi xây dựng mới chính xác được.
Hệ thống của chúng tôi có mục đích đánh giá quan điểm như vậy xét trong phạm vi từ, những từ về quan điểm là cần thiết nhất, chúng tôi dùng 2 gán nhãn PosWord và NegWord để phân lớp cho từ quan điểm. Tiếp đó từ nói đến Feature để đưa ra đánh giá là quan trọng thứ nhì, chúng tôi gọi chung những từ này là Entity và xét riêng cho từng Feature thì lấy tên của Feature đấy làm tên của nhãn ví dụ như:
34
cauhinh, vanhanh… Nhưđã nói ở chương 2 loại từ phủđịnh hay làm thay đổi đánh giá quan điểm chúng tôi cũng xét đến và được gán nhãn ReverseOpinion.
Hệ thống của chúng tôi đánh giá quan điểm xét ở mức câu chính vì vậy những nhãn về câu là không thể thiếu. Chúng tôi cần các nhãn PosSen, NegSen, MixSen để
phân biệt cho những câu đơn đơn giản mà có những đánh giá lần lượt là positive, negative và cả 2 loại. Ngoài ra khi đối với câu không có từ quan điểm thì có một kiểu câu khác vẫn có ý nghĩa đánh giá quan điểm là câu so sánh. Để giải quyết vấn đề này chúng tôi dùng thêm hai nhãn CompWord (từ so sánh) và CompSen (câu so sánh) để
phân biệt. Hình 9 sau cho thấy một dữ liệu được chúng tôi gán nhãn thủ công bằng phần mềm Callisto (http://callisto.mitre.org/download.html).
Hình 9 - Gán nhãn dữ liệu
4.3 Xây dựng hệ thống đánh giá quan điểm
Như trong chương 2 chúng tôi đã nói đến những hệ thống gần đây, hệ thống của chúng tôi cũng được xây dựng dựa trên 3 thành phần chính: xác định từ, cụm từ chỉ
35
quan điểm; xác định xu hướng quan điểm; và phân lớp câu chỉ quan điểm. Những phần trên được chúng tôi tách ra và xây dựng dựa trên GATE. Ở phần sau chúng tôi sẽ đi sâu vào mô tả hệ thống của mình.
4.3.1 Mô tả tổng quan hệ thống
Hệ thống đánh giá quan điểm của chúng tôi được chia thành 4 phần chính như
sau:
• Tiền xử lý: giải quyết những vấn đề cơ bản cho văn bản làm tiền đề cho bước xử lý sau.
• Xác định từ, cụm từ chỉ quan điểm và xu hướng quan điểm của nó.
• Xác định câu và phân lớp câu chỉ quan điểm.
• Đánh giá các đặc tính của sản phẩm (Features) dựa trên câu.
Sau đây chúng tôi đưa ra một ví dụđể chúng ta có thể hiểu rõ hơn công việc và nhiệm vụ của từng phần.
Ví dụ dữ liệu văn bản:
“HP dv 4 có thiết kế bắt mắt, ưa nhìn tuy nhiên giá quá cao.”
Sau khi tiền xử lý chúng tôi tách từ và POS tag cho văn bản:
“<X>HP dv 4</X> <Vts>có</Vts> <Vt>thiết kế</Vt> <V>bắt mắt</V>, <A>ưa
nhìn</A> <Cc>tuy nhiên</Cc> <Na>giá</Na> <Jd>quá</Jd> <An>cao</An>.”
Dựa trên tiền xử lý chúng tôi dùng luật để xác định các từ, cụm từ chỉ quan
điểm:
“HP dv 4 có <kieudang>thiết kế</kieudang> <PosWord>bắt mắt</PosWord>,
<PosWord>ưa nhìn</PosWord> tuy nhiên <gia>giá</gia> quá
<NegWord>cao</NegWord>.”
Sau khi đã nhận dạng được các từ, cụm từ (nếu có thêm ReverseOpinion) chỉ