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 t...
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ứccó trong t...
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Á...
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ệucó  ...
ứ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ứclà dạ...
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êncủa thành ph...
IEEE Trans. Software Eng., vol. 26(12), 2000, pp. 1179–            Proc. 2002 Int’l Conf. Software Eng. (ICSE 02), IEEE CS...
Upcoming SlideShare
Loading in...5
×

Agent mang bayes

181

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
181
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Agent mang bayes

  1. 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ạyconstruction of an interface agent for assisting Java trong chế độ nền, có khả năng theo dõi quá trình giaoprogramming. The agent automatically monitors tiếp giữa người với máy tính và chủ động đưa raprogramm 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ếmfragments. Our agent is different from one described in [8] thông thường, agent giao diện có cơ chế suy diễn choin that the former uses bayesian networks for makingdecision. 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ự độngThe 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ủaI. ĐẶ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ề agentsộ 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ớiphươ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ựngnà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ácVí 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àoThư 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ườngnà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 quennà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ạithà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ôngcho 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 AGENTkhô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õithờ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. 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ứccó 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ứctự 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ớithành phần thư viện được đánh giá dựa trên hai tiêuchí sau:− Tương tự về chức năng. Thông thường, trước khiviết một đoạn chương trình, lập trình viên thườngchè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ứcnă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ănghàm đều có kiểu dữ liệu đầu vào, đầu ra, còn được gọi trong phần chú giảilà 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áchnhữ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ệutheo chức năng. Phía trên là cửa sổ soạn thảo thôngthườ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, theodiệ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àyviế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êudò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ữngdanh 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ànhtươ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ànhcù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 kinhtrì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àmviế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 chosá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ườithà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 đượctheo 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. 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ên1. 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útchè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ậpthà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ếtsử 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àncoi 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ườngthà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 qchúng được biểu diễn bởi mạng Bayes như trình bàydưới đây. Gọi D = {d1 , d 2 ,..., d n } là tập văn bản chứa mô tả t1 t2 ... ti ... tmchức năng các thành phần thư viện (gọi tắt là vănbả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 dnkhoá 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ânmỗ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ươngbiế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ớinế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ệmdướ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ởiti 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ủakhá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ởiphâ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ándi 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 theonhư 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. 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ệucó 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_radi độ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ớicâ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 rkhoá 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ợpdj, 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ậpwij đượ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ểuP(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ểuvà 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àyvă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. 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ứclà 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ởi1 (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à dsikiể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 qlà n, γ là tham số và được chọn bằng 0.05 trong hệ ANDthống đang mô tả; s=0 trong những trường hợp còn qf qslạ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 ... tmbiế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ànggiảm nhiều hơn. Với định nghĩa 3, độ tương tự giữa df1 ... dfj ... dfn ds1 ... dsj ... dsnhai 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 ANDhiệu i và j được xác định bằng tích các độ tương tự d1 ... dj ... dncủ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ệudữ 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ậpgiố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ínhvấn q. Câu truy vấn q cung cấp thông tin về hai thànhphầ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 jvấn qf; 2) Thông tin về dấu hiệu ở phần 3.2, được biểudiễ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ư sauhì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 jmạ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ấtNú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. 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êncủ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ớichứ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ấtIV. 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ăngmộ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 độngnhấ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ôngcung 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ôitrườ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, agentagent. 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ẩncủa Java, phiên bản 1.4.1 do hãng Sun cung cấp. V. KẾT LUẬNThô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ínhvề 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ườngchứ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 đánhchỉ 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ờ somiễ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. Tuytrong 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ấtphầ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 giathử 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ảnviệ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ậptrì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, Modernkế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. 7. IEEE Trans. Software Eng., vol. 26(12), 2000, pp. 1179– Proc. 2002 Int’l Conf. Software Eng. (ICSE 02), IEEE CS1196. Press, 2002, pp. 513–523.[3] F.V. Jensen, An introduction to bayesian networks, [8] Y. Ye, Programming with an intelligent agent, IEEESpringer, 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:AHuman Factors in Computing Systems (CHI 97), ACM Tool for Using Software Libraries, ACM Trans. SoftwarePress,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.orgSilva, R. Muntz, B. Ribeiro-Neto, Bayesian belief networks Ngày nhận bài: 24/11/2005for IR, Inter. Journ. of Approximate reasoning, vol. 34,Elsevier 2003, 163-179.[6] S.K.M. Wong, Y.Y. Yao, On modeling informationretrieval with probabilistic inference. ACM Trans. OnInform. Systems, 13(1), 1995, pp 38-68.[7] Y. Ye and G. Fischer, “Supporting Reuse byDelivering 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ínhViễn thông. Hướng nghiên cứu: trí tuệ nhân tạo, hệ tác tử, logicmờ, tin sinh họcemail: phuongtm@fpt.com.vn 89

×