1. Xây dựng tác tử giao diện hỗ trợ lập trình
sử dụng mạng Bayes
Constructing an Interface Agent to Assist Programming
Using Bayesian Networks
Từ Minh Phương, Nguyễn Nam Phong
Abstract: In this paper, we describe the design and Agent (tác tử) giao diện là những chương trình chạy
construction of an interface agent for assisting Java trong chế độ nền, có khả năng theo dõi quá trình giao
programming. The agent automatically monitors tiếp giữa người với máy tính và chủ động đưa ra
programm fragments being coded and recommends to the
những trợ giúp cần thiết tuỳ vào tình huống cụ thể [4].
programmer library components that can be used for these
Khác với những chương trình tra cứu hoặc tìm kiếm
fragments. Our agent is different from one described in [8]
thông thường, agent giao diện có cơ chế suy diễn cho
in that the former uses bayesian networks for making
decision. The use of bayesian networks enables integrating
phép tự động ra quyết định khi nào cần trợ giúp mà
different evidences in a flexible way when making decision. không cần đến yêu cầu từ phía người dùng.
The agent is integrated into IDE IntelliJ Idea as a plug-in. Bài báo mô tả agent giao diện với khả năng tự động
The usefullness of the agent has been verified by theo dõi quá trình viết mã chương trình trên Java. Tuỳ
experiments.
vào tình huống cụ thể và kinh nghiệm của lập trình
viên, agent sẽ đưa ra gợi ý về những thành phần của
I. ĐẶT VẤN ĐỀ
thư viện Java mà lập trình viên có thể sử dụng trong
Các ngôn ngữ lập trình hiện nay đều có hệ thống đồ đoạn chương trình hiện tại. Mặc dù ý tưởng về agent
sộ các thư viện hàm và các thành phần khác (lớp, này được lấy từ [7, 8], có hai thay đổi đáng kể so với
phương thức, giao diện .v.v.) đi kèm. Những thư viện nguyên bản. Thứ nhất, cơ chế suy diễn được xây dựng
này do nhà sản xuất chương trình dịch cung cấp hoặc dựa trên mạng Bayes. Đây là cơ chế suy diễn xấp xỉ
do những tổ chức và lập trình viên khác xây dựng nên. cho phép kết hợp thông tin từ những nguồn khác
Ví dụ, thư viện Java phiên bản 1.4 có tới 2723 lớp. nhau. Thứ hai, agent nguyên bản được tích hợp vào
Thư viện ngôn ngữ cho phép tiết kiệm đáng kể thời trình soạn thảo emacs chạy trên hệ điều hành Linux,
gian lập trình. Tuy nhiên, không phải lập trình viên còn agent của chúng tôi được tích hợp vào môi trường
nào cũng biết thư viện cung cấp những thành phần lập trình IntelliJ Idea chạy trên Windows vốn quen
nào, chức năng của thành phần đó là gì. Việc tìm kiếm thuộc với lập trình viên Việt nam hơn. Phần còn lại
thành phần cần thiết bằng cách duyệt thư viện hay sử của bài báo sẽ trình bày chi tiết về các thay đổi này.
dụng công cụ tìm kiếm theo từ khoá thường không
cho kết quả mong muốn nếu lập trình viên thậm chí II. NGUYÊN LÝ VÀ HOẠT ĐỘNG CỦA AGENT
không biết thành phần cần tìm có tồn tại trong thư
viện hay không. Do vậy, cần có công cụ giúp lập trình Do được tích hợp vào môi trường lập trình (IDE),
viên tìm ra những thành phần thư viện cần thiết vào agent giao diện được trình bày ở đây có thể theo dõi
thời điểm thích hợp. những gì đang diễn ra trong cửa sổ soạn thảo chương
trình. Những thông tin này cho phép agent so sánh
84
2. tình huống lập trình hiện tại với những thành phần đã Trong ví dụ trên hình 2, kết hợp so sánh theo chức
có trong thư viện. Nếu tìm được các thành phần tương năng và theo dấu hiệu cho thấy phương thức
tự với tình huống hiện tại, agent sẽ giới thiệu các getLong có điểm số cao nhất.
thành phần đó với lập trình viên thông qua một cửa sổ
riêng.
Mức độ tương tự của tình huống hiện tại so với
thành phần thư viện được đánh giá dựa trên hai tiêu
chí sau:
− Tương tự về chức năng. Thông thường, trước khi
viết một đoạn chương trình, lập trình viên thường
chèn chú giải mô tả chức năng đoạn chương trình đó.
Các chú giải này cung cấp cho agent thông tin về chức
năng của đoạn chương trình đang xây dựng.
− Tương tự về kiểu dữ liệu. Mỗi phương thức hoặc Hình 1. Các thành phần tìm được nhờ so sánh chức năng
hàm đều có kiểu dữ liệu đầu vào, đầu ra, còn được gọi trong phần chú giải
là dấu hiệu (signature) của thành phần đó. Dấu hiệu
được agent sử dụng khi tìm kiếm các thành phần thư
viện tương tự.
Mỗi khi lập trình viên viết một đoạn chú giải mô tả
chức năng của phương thức hoặc lớp sắp viết, agent sẽ
sử dụng kỹ thuật tìm kiếm thu thập thông tin
(information retrieval) để tìm và hiển thị danh sách
những thành phần thư viện có chức năng tương tự.
Trên hình 1 là một ví dụ minh họa kết quả tìm kiếm Hình 2. Kết quả tìm kiếm sau khi kết hợp so sánh chức
năng và so sánh dấu hiệu
theo chức năng. Phía trên là cửa sổ soạn thảo thông
thường của IntelliJ IDEA, phía dưới là cửa sổ giao Chi tiết về kỹ thuật so sánh theo chức năng, theo
diện của agent. Trong ví dụ này, lập trình viên định dấu hiệu và kết hợp kết quả so sánh sẽ được trình bày
viết một phương thức tạo số ngẫu nhiên nằm giữa hai trong phần tiếp theo của bài báo.
giới hạn. Sau khi quan sát thấy lập trình viên nhập Ngoài việc phân tích hai loại thông tin trên, một yêu
dòng chú giải trong cửa sổ soạn thảo, agent hiển thị cầu quan trọng với agent là không gợi ý lại những
danh sách một số phương thức có mô tả chức năng thành phần mà lập trình viên đã biết và sử dụng thành
tương tự với chú giải. Mỗi phương thức được hiển thị thạo. Một lập trình viên được coi là đã biết một thành
cùng với mô tả vắn tắt. Cột bên trái là điểm số dùng phần nếu lập trình viên từng sử dụng thành phần đó
để so sánh độ phù hợp của phương thức. một số lần nhất định trong các chương trình của mình.
Việc sử dụng thông tin từ chú giải thường chưa đầy Như vậy, ngoài yêu cầu đưa ra trợ giúp theo tình
đủ để tìm ra thành phần phù hợp. Vì vậy, sau khi lập huống, agent còn phải đưa ra trợ giúp tuỳ theo kinh
trình viên khai báo kiểu dữ liệu cho phương thức định nghiệm cá nhân của từng người lập trình. Để làm
viết như ví dụ trên hình 2, agent sử dụng kỹ thuật đối được điều này, agent lưu giữ một mô hình riêng cho
sánh dấu hiệu (signature matching) [9] để tìm những từng người lập trình bao gồm những thành phần người
thành phần có dấu hiệu tương tự. Kết quả đối sánh đó đã biết. Khởi đầu mô hình này rỗng. Mô hình được
theo chú giải và theo dấu hiệu được kết hợp với nhau cập nhật nhờ phân tích những chương trình mà lập
để đưa ra danh sánh các phương thức phù hợp nhất. trình viên đã viết cũng như theo dõi quá trình làm việc
84
3. của lập trình viên. t 'i xác định q có chứa từ khoá t 'i không.
III. SO SÁNH TÌNH HUỐNG VÀ RA QUYẾT Với các khái niệm định nghĩa ở trên, bài báo sử
ĐỊNH dụng mạng Bayes [3] để biểu diễn và tìm kiếm văn
bản theo câu truy vấn. Mô hình mạng được cho trên
1. Tương tự về chức năng hình 3. Các từ khoá được biểu diễn bởi các biến nhị
Như đã nói ở trên, các chú giải do người lập trình phân ngẫu nhiên ti , mỗi biến tương ứng với một nút
chèn vào đoạn mã được sử dụng để tìm kiếm những trên mạng. Ở đây, các từ khoá được coi như độc lập
thành phần có mô tả chức năng tương tự. Ở đây, agent với nhau, giữa các từ khoá không có những liên kết
sử dụng kỹ thuật thu thập thông tin, các chú giải được trực tiếp. Mặc dù trên thực tế, từ khoá không hoàn
coi như những câu truy vấn, phần mô tả chức năng toàn độc lập với nhau nhưng giả thiết này thường
thành phần thư viện là văn bản cần tìm. Để thực hiện được sử dụng để làm giảm độ phức tạp của bài toán.
so sánh, câu truy vấn và mô tả thành phần được mô
hình hoá dưới dạng các biến ngẫu nhiên, quan hệ giữa q
chúng được biểu diễn bởi mạng Bayes như trình bày
dưới đây.
Gọi D = {d1 , d 2 ,..., d n } là tập văn bản chứa mô tả t1 t2 ... ti ... tm
chức năng các thành phần thư viện (gọi tắt là văn
bản). Văn bản được đánh chỉ mục và biểu diễn bởi từ
khoá [1]. Gọi U = {t1 , t2 ,..., tm } là tập tất cả các từ
d1 dj dn
khoá của D. Mỗi tập con u ⊆ U bao gồm các từ khoá
được gọi là một khái niệm. Hình 3. Mô hình mạng Bayes cho tìm kiếm văn bản
Để biểu diễn các thành phần hệ thống bằng mạng Câu truy vấn q được biểu diễn bởi một nút (nút q)
Bayes ta sử dụng các biến ngẫu nhiên như sau [6]. Với trên hình vẽ và tương ứng với một biến nhị phân
mỗi từ khoá ti (i = 1..m) và khái niệm u sử dụng một (cũng ký hiệu là q). Biến q = 1 nếu q hoàn toàn tương
biến ngẫu nhiên nhị phân cũng ký hiệu là ti . ti = 1 ứng với U. Xác suất P ( q ) được tính bởi mức độ
nếu từ khoá ti là một thành phần của khái niệm u, ti=0 tương ứng giữa U và q, tức là nếu biết U, ta có thể suy
ra q với độ tin tưởng P (q ) . Nút q được liên kết với
nếu ngược lại. Ký hiệu I i (u ) là giá trị của biến ti đối
những từ khoá tạo nên câu truy vấn q như trên hình 3.
với khái niệm u. Khi đó tập u biểu diễn khái niệm
dưới dạng tập con của U được tạo bởi những từ khoá Tương tự như q, mỗi văn bản di được biểu diễn bởi
ti có I i (u ) = 1 . Có tất cả 2 khái niệm như vậy được
m
một nút di và được liên kết với những từ khoá liên
định nghĩa trên U. Văn bản và câu truy vấn khi đó quan tới văn bản này. Xác suất P (di ) cho văn bản di
được định nghĩa như những khái niệm trên U.
cũng có ý nghĩa tương tự như P ( q ) cho q.
Định nghĩa 1. Văn bản di được định nghĩa như
Với mạng Bayes trên hình 3, mức độ phù hợp của
khái niệm di = {t1 , t2 ,..., tm } trong đó ti là biến nhị văn bản di đối với câu truy vấn q được xác định bởi
phân cho phép xác định từ khoá ti có thuộc khái niệm xác suất có điều kiện P (di | q ) . Agent tính toán
di không. Tương tự, câu truy vấn q được định nghĩa P (di | q ) cho các văn bản và sắp xếp văn bản theo
như khái niệm q = {t '1 , t ' 2 ,..., t ' m } với biến nhị phân thứ tự giảm dần của xác suất này. Đặt η = 1/ P(q ) ,
85
4. trong đó P (q ) là hằng số đối với tất cả văn bản di , ta 2. Tương tự về kiểu dữ liệu
có Trong trường hợp không biết chính xác tên của
P(d j ∧ q) thành phần thư viện cần tìm, có thể tìm kiếm những
P (d j | q ) = thành phần thư viện có kiểu dữ liệu tương tự với thành
P(q)
phần cần xây dựng. Kiểu dữ liệu đầu vào, đầu ra của
= η P(d j ∧ q)
mỗi thành phần (ví dụ hàm, phương thức) được gọi là
= η ∑ P (d j ∧ q | u ) P(u ) dấu hiệu của thành phần đó. Đối với phương thức, dấu
u∈U
hiệu có thể biểu diễn dưới dạng:
trong đó P (u ) = 1/ 2m . Trên mạng Bayes ở hình 3, Phương_thức: Đầu_vào → Đầu_ra
di độc lập với nút q nếu biết giá trị u, do đó Trong đó Đầu_vào và Đầu_ra là tập các kiểu dữ
liệu đầu vào và đầu ra của phương thức đó. Ví dụ,
P (di | q ) = η ∑ P(di | u ) P(q | u ) P (u ) (1)
u∈U phương thức
int indexOf(String str,int fromIndex)
Để tính P (di | q ) cần xác định giá trị P (di | u ) và
của lớp String có dấu hiệu là
P (q | u ) . Các giá trị này được chọn sao cho mô hình indexOf: {int}→{String, int}.
mạng Bayes cho kết quả tương tự mô hình vec tơ Để tìm thành phần phù hợp với tình huống hiện tại,
trong tìm kiếm thu thập tin. Mô hình vec tơ biểu diễn agent đối sánh dấu hiệu của thành phần thư viện với
câu truy vấn q và văn bản dj dưới dạng vec tơ các từ dấu hiệu do lập trình viên vừa nhập vào. Như vậy, dấu
r r
khoá q , d j và coi độ phù hợp giữa câu truy vấn và hiệu nhập vào được sử dụng như một câu truy vấn để
văn bản như côsin của góc giữa hai vec tơ. Cụ thể, gọi tìm kiếm thành phần thư viện phù hợp.
wij là trọng số tương ứng với từ khoá ti trong văn bản Định nghĩa 2. Hai thành phần được gọi là phù hợp
dj, gọi wiq là trọng số tương ứng với từ khoá ti trong q. về kiểu dữ liệu nếu có tập Đầu_vào giống nhau và tập
wij được tính theo phương pháp tf-idf [1]. Giá trị wiq Đầu_ra giống nhau.
bằng 1 nếu từ khoá có trong q và bằng 0 trong trường Trên thực tế, định nghĩa trên về phù hợp kiểu dữ
hợp ngược lại. liệu là quá chặt. Việc tìm kiếm theo định nghĩa đó sẽ
Chọn : bỏ qua những thành phần có dấu hiệu khá giống với
⎧1 nếu ∀ti , g q (ti ) = gu (ti ) thành phần cần tìm. Cần có tiêu chuẩn so sánh lỏng
P (q | u ) = ⎨ hơn, cho phép tìm được các thành phần với dấu hiệu
⎩0 nếu ngược lại (2)
tương tự như thành phần mà lập trình viên yêu cầu.
∑
m
wij × wiu Tiêu chuẩn so sánh lỏng hơn không yêu cầu kiểu dữ
P (d j | u ) = i =1
(3)
∑ i =1 w2ij × ∑ i=1 w2iu liệu trong tập Đầu_vào và Đầu_ra phải hoàn toàn
t t
trùng nhau mà chỉ yêu cầu kiểu dữ liệu so sánh có
Dễ dàng nhận thấy, nếu thay (2) và (3) vào (1) ta có quan hệ khái quát hoá hoặc cụ thể hoá với nhau. Ví
r r
∑
m
wij × wiq dj •q dụ, trong Java, kiểu long là khái quát hoá của kiểu
P(d j | u ) = η ' i =1
=η r
'
r int , tương tự như vậy, kiểu double là khái quát hoá
∑ ∑ dj × q
m m
w2ij × w2iq
i =1 i =1 của int (Java cho phép tự động biến đổi từ kiểu int
r
Như vậy, P (di | q ) tỷ lệ với côsin của góc giữa q sang kiểu double) với khoảng cách giữa int và
r double là 2 (cần 2 phép biến đổi thông quan kiểu
và d j , tức là mô hình mạng Bayes cho phép sắp xếp
float). Có thể dễ dàng xác định mạng quan hệ kiểu này
văn bản theo mức độ phù hợp với câu truy vấn tương dựa trên đặc tả của ngôn ngữ cụ thể. Đối với ngôn ngữ
tự mô hình vec tơ trong tìm kiếm thu thập thông tin lập trình hướng đối tượng, kiểu dữ liệu tương ứng với
[5]. lớp con được coi là cụ thể hoá của kiểu dữ liệu tương
86
5. ứng với lớp cha mẹ. Ví dụ, kiểu FileInputStream hiệu với qs. Nút di kết hợp mức độ tương tự theo chức
là dạng cụ thể của InputStream với khoảng cách là năng sinh ra bởi qf với tương tự về dấu hiệu cho bởi
1 (kế thừa trực tiếp từ InputStream). qs. Nút dj được tạo thành từ nút d fj và dsi sử dụngtoán
Định nghĩa 3. Mức độ tương tự s (0≤s≤1) giữa hai tử AND (dj bằng một khi và chỉ khi cả và d fj và dsi
kiểu dữ liệu t1 và t2 được xác định như sau: s=1 nếu
bằng một). Tương tự như vậy, nút q được tạo thành từ
t1trùng t2; s=max(1- nγ, 0) nếu giữa t1 và t2 có quan hệ
qs và qf bởi toán tử AND.
cụ thể hoá / khái quát hoá và khoảng cách giữa t1 và t2
q
là n, γ là tham số và được chọn bằng 0.05 trong hệ
AND
thống đang mô tả; s=0 trong những trường hợp còn
qf qs
lại.
Theo định nghĩa này, nếu hai kiểu dữ liệu có thể
làm cho trùng nhau bằng cách thực hiện một phép t1 t2 ... ti ... tm
biến đổi khái quát hoá/cụ thể hoá thì độ tương tự giảm
đi γ, càng cần nhiều biến đổi thì độ tương tự càng
giảm nhiều hơn. Với định nghĩa 3, độ tương tự giữa df1 ... dfj ... dfn ds1 ... dsj ... dsn
hai dấu hiệu được định nghĩa như sau.
Định nghĩa 4. Mức độ tương tự S (i, j) giữa hai dấu AND AND AND
hiệu i và j được xác định bằng tích các độ tương tự d1 ... dj ... dn
của các kiểu dữ liệu thuộc tập Đầu_vào1 với
Hình 4. Mô hình mạng Bayes mở rộng kết hợp chức năng
Đầu_vào2 và Đầu_ra1 với Đầu_ra2 ; độ tương tự kiểu và dấu hiệu
dữ liệu được tính lần lượt từ những cặp kiểu dữ liệu
Với mạng cho trên hình 2, sử dụng tính chất độc lập
giống nhau nhất đến những cặp ít giống nhau hơn.
xác suất có điều kiện của mạng Bayes, độ tương tự
3. Kết hợp tương tự về chức năng với tương tự về của văn bản (thành phần thư viện) dj được tính như
dấu hiệu sau:
Sau khi có định nghĩa độ tương tự giữa dấu hiệu, P(d j | q) = η ∑ P(d j | u, qs )P(q | u, qs )P(u)P(qs )
bước tiếp theo là kết hợp độ tương tự dấu hiệu với độ
u,qs =0,1
(4)
tương tự về chức năng để quyết định độ phù hợp của
=η ∑
u ,qs =0,1
P(df j | u)P(ds j | qs )P(q f | u)P(qs | qs )P(u)P(qs )
thành phần thư viện. =η ∑
u ,qs =0,1
P(df j | u)P(ds j | qs )P(q f | u)P(u)P(qs )
Mỗi tình huống lập trình được coi như một câu truy
Trong biểu thức (4), giá trị P ( q f | u ) được tính
vấn q. Câu truy vấn q cung cấp thông tin về hai thành
phần: 1) Thông tin về chức năng như mô tả ở phần theo (2), xác suất P (df j | u ) được tính theo (3),
3.1. Thông tin này được biểu diễn bởi thành phần truy
P (u ) = 1/ 2m , P (qs ) có giá trị như nhau với mọi d j
vấn qf; 2) Thông tin về dấu hiệu ở phần 3.2, được biểu
diễn bởi câu truy vấn qs. Để kết hợp hai thành phần và có thể đưa vào hằng số η ở bên ngoài dấu cộng.
truy vấn này, chúng tôi sử dụng mạng Bayes như trên Giá trị P (ds j | qs ) còn lại được xác định như sau
hình 4. Đây là mở rộng của hình 3 (phần nằm trong
P (ds j | qs ) = S (ds j , qs )
hình chữ nhật không liền nét bên trái).
Cũng như trình bày trong phần trước, mỗi nút trên với S ( ds j , qs ) là độ tương tự về dấu hiệu giữa ds j
mạng tương ứng với một biến nhị phân ngẫu nhiên. và qs theo định nghĩa 4. Việc chọn giá trị xác suất
Nút ds1,ds2,…dsn tương ứng với các thành phần thư
viện và cho phép mô hình hoá mối liên quan theo dấu như vậy là hợp lệ do ta có 0 ≤ S ( ds j , qs ) ≤ 1 . Như
87
6. vậy, công thức (4) cho phép xác định mức độ phù hợp đang học lập trình cũng như lập trình viên chuyên
của thành phần thư viện kết hợp cả độ tương tự về nghiệp. Một số lập trình viên chuyên nghiệp được giới
chức năng và độ tương tự về dấu hiệu. thiệu những thành phần chưa hề biết đến trước đó.
− Chất lượng thông tin trợ giúp phụ thuộc vào chất
IV. TRIỂN KHAI VÀ THỬ NGHIỆM
lượng chú giải mà lập trình viên sử dụng trong
Agent hỗ trợ lập trình được triển khai dưới dạng chương trình của mình, việc tìm kiếm theo chức năng
một plug-in cho môi trường lập trình IntelliJ IDEA cho kết quả quan trọng hơn tìm kiếm theo dấu hiệu.
[10]. IntelliJ IDEA được lựa chọn bởi hai lý do. Thứ
− Khác với trợ giúp kiểu “Tips of the day”, hoạt động
nhất, đây là một trong những môi trường lập trình
của agent không cản trở quá trình lập trình do không
(IDE) khá phổ biến hiện nay. Thứ hai, IntelliJ IDEA
bắt lập trình viên phải tạm dừng để đóng cửa sổ thông
cung cấp giao diện lập trình OpenAPI cho phép xây
báo.
dựng plug-in trên Java để bổ sung chức năng cho môi
trường. Chúng tôi đã sử dụng API này để lập trình Theo đánh giá chung của nhóm thử nghiệm, agent
agent. hoạt động tốt và có ích cho người lập trình. Đặc biệt,
khả năng chủ động đưa ra trợ giúp rất cao.
Các thành phần thư viện được lấy từ thư viện chuẩn
của Java, phiên bản 1.4.1 do hãng Sun cung cấp.
V. KẾT LUẬN
Thông tin về chức năng và dấu hiệu từng thành phần
được lấy từ tài liệu javadoc tương ứng với thành phần Bài báo đã trình bày các giải pháp thiết kế và xây
đó và được chứa trong cơ sở dữ liệu. Ở đây, thông tin dựng agent giao diện hỗ trợ lập trình. Những tính
về dấu hiệu được lưu trữ nguyên văn, còn thông tin về năng chính của agent là được tích hợp vào môi trường
chức năng lấy từ mô tả chức năng thành phần và được lập trình, có khả năng chủ động gợi ý những thành
đánh chỉ mục dưới dạng các từ khoá. Quá trình đánh phần thư viện phù hợp với tình huống đó. Việc đánh
chỉ mục được thực hiện với sự trợ giúp của công cụ giá tình huống và tìm kiếm được thực hiện nhờ so
miễn phí Lucene (http://jakarta.apache.org/lucene), sánh theo chức năng và so sánh theo dấu hiệu. Mô
trọng số được sử dụng khi đánh chỉ mục được xác hình mạng Bayes cho phép mô hình hoá quá trình so
định theo phương pháp tf-idf . sánh và kết hợp thông tin từ hai nguồn trên. Kết quả
Sau khi được tích hợp vào IntelliJ IDEA, agent sẽ thử nghiệm cho thấy agent đưa ra nhiều trợ giúp có
hoạt động trong chế độ nền, theo dõi những gì diễn ra ích cho lập trình viên với trình độ rất khác nhau. Tuy
trong cửa sổ soạn thảo và hiển thị thông tin về thành nhiên, kết quả trợ giúp phụ thuộc nhiều vào chất
phần tìm được trong một cửa sổ tool window ở phía lượng chú giải mà lập trình viên sử dụng khi viết mã.
dưới màn hình như trên hình 1,2. Agent cũng chỉ có khả năng xử lý chú giải viết bằng
Để kiểm tra hoạt động của hệ thống, agent được tiếng Anh.
giao cho một nhóm lập trình viên sử dụng, sau đó lấy
LỜI CẢM ƠN
đánh giá của những người này. Đối tượng tham gia
thử nghiệm bao gồm: một số lập trình viên đang làm Nghiên cứu này là kết quả đề tài nghiên cứu cơ bản
việc tại Trung tâm xuất khẩu phần mềm FPT –Fsoft, do bộ Khoa học và Công nghệ tài trợ.
một số giáo viên và học viên Trung tâm đào tạo lập
trình viên quốc tế FPT-Aptech. Mặc dù không có TÀI LIỆU THAM KHẢO.
những đánh giá mang tính định lượng chính xác song [1] R.A. Baeza-Yates, B.A. Ribeiro-Neto, Modern
kết quả phản hồi từ những người tham gia thử nghiệm information retrieval, ACM Press/Addison Wesley, 1999.
cho phép rút ra một số kết luận sau: [2] C. Drummond, D. Ionescu, R. Holte, A Learning
− Agent đưa ra nhiều thông tin có ích cho cả người Agent that Assists the Browsing of Software Libraries,
88
7. IEEE Trans. Software Eng., vol. 26(12), 2000, pp. 1179– Proc. 2002 Int’l Conf. Software Eng. (ICSE 02), IEEE CS
1196. Press, 2002, pp. 513–523.
[3] F.V. Jensen, An introduction to bayesian networks, [8] Y. Ye, Programming with an intelligent agent, IEEE
Springer, 1996. Intelligent systems, 5/6-2003, pp 43-47.
[4] H. Lieberman, Autonomous Interface Agents, Proc. [9] A.M. Zaremski, J.M. Wing, Signature Matching:A
Human Factors in Computing Systems (CHI 97), ACM Tool for Using Software Libraries, ACM Trans. Software
Press,1997, pp. 67–74. Eng. and Methodology, vol. 4, no. 2, 1995, pp. 146–170.
[5] M.A. Pinheiro de Cristo, P.P. Calado, M.L. Silveira, I. [10] http://www.intellij.org
Silva, R. Muntz, B. Ribeiro-Neto, Bayesian belief networks Ngày nhận bài: 24/11/2005
for IR, Inter. Journ. of Approximate reasoning, vol. 34,
Elsevier 2003, 163-179.
[6] S.K.M. Wong, Y.Y. Yao, On modeling information
retrieval with probabilistic inference. ACM Trans. On
Inform. Systems, 13(1), 1995, pp 38-68.
[7] Y. Ye and G. Fischer, “Supporting Reuse by
Delivering Task-Relevant and Personalized Information,”
SƠ LƯỢC TÁC GIẢ
TỪ MINH PHƯƠNG
NGUYỄN NAM PHONG
Sinh ngày 13/01/1971 tại Hà
Sinh năm 1981 tại Nghệ An.
Nội
Tốt nghiệp đại học tại Học
Tốt nghiệp đại học tại
viện Công nghệ Bưu chính
Trường Bách khoa Taskent
Viễn thông năm 2003.
năm 1993, bảo vệ Tiến sỹ tại
Hiện công tác tại công ty
Viện hàn lâm khoa học
FptSoft.
Uzbekistant, Taskent, năm
1995. Hướng nghiên cứu: trí tuệ
nhân tạo, hệ tác tử.
Hiện là giảng viên Học viện Công nghệ Bưu chính
Viễn thông.
Hướng nghiên cứu: trí tuệ nhân tạo, hệ tác tử, logic
mờ, tin sinh học
email: phuongtm@fpt.com.vn
89