SlideShare une entreprise Scribd logo
1  sur  7
Télécharger pour lire hors ligne
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
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
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
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
ứ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
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
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

Contenu connexe

En vedette

200901011453050 網咖時代與親子關係
200901011453050 網咖時代與親子關係200901011453050 網咖時代與親子關係
200901011453050 網咖時代與親子關係Kuo-Yi Chen
 
2b comparisons of inequality
2b comparisons of inequality2b comparisons of inequality
2b comparisons of inequalityLaura Riddle
 
предложение для It партнеров клуба magnat - всем
предложение для It партнеров клуба magnat - всемпредложение для It партнеров клуба magnat - всем
предложение для It партнеров клуба magnat - всемSokirianskiy&Lazerson School
 
이화 Smart Learning 체제 구축 성과 및 방향
이화 Smart Learning 체제 구축 성과 및 방향이화 Smart Learning 체제 구축 성과 및 방향
이화 Smart Learning 체제 구축 성과 및 방향윤필 천
 
Electrospn 18 casasola-full
Electrospn 18 casasola-fullElectrospn 18 casasola-full
Electrospn 18 casasola-fullmiroli
 
Programa video tutorial
Programa video tutorialPrograma video tutorial
Programa video tutorialUPBC
 
Bauwens Kloetzer professional use of social media
Bauwens Kloetzer professional use of social mediaBauwens Kloetzer professional use of social media
Bauwens Kloetzer professional use of social mediaValerie Bauwens
 
Citizen Science overview for ASU HSD598 graduate course, "Citizen Science"
Citizen Science overview for ASU HSD598 graduate course, "Citizen Science"Citizen Science overview for ASU HSD598 graduate course, "Citizen Science"
Citizen Science overview for ASU HSD598 graduate course, "Citizen Science"Darlene Cavalier
 
Stephanie Orphan - Portico- Preservation in the Digital Era AAUP 14
Stephanie Orphan - Portico- Preservation in the Digital Era AAUP 14Stephanie Orphan - Portico- Preservation in the Digital Era AAUP 14
Stephanie Orphan - Portico- Preservation in the Digital Era AAUP 14Erich van Rijn
 
Braille vanuit je broekzak "keynote"
Braille vanuit je broekzak "keynote"Braille vanuit je broekzak "keynote"
Braille vanuit je broekzak "keynote"Christiaan Pinkster
 
大学生アンケート0722
大学生アンケート0722大学生アンケート0722
大学生アンケート0722koji iinuma
 
Koalalar basketbol oynuyor
Koalalar basketbol oynuyorKoalalar basketbol oynuyor
Koalalar basketbol oynuyoraybars
 
Contemporary english
Contemporary englishContemporary english
Contemporary englishohinnant
 
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menuBuilding websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menuGiang Nguyễn
 

En vedette (20)

200901011453050 網咖時代與親子關係
200901011453050 網咖時代與親子關係200901011453050 網咖時代與親子關係
200901011453050 網咖時代與親子關係
 
2b comparisons of inequality
2b comparisons of inequality2b comparisons of inequality
2b comparisons of inequality
 
Web 2.0.pptx
Web 2.0.pptxWeb 2.0.pptx
Web 2.0.pptx
 
предложение для It партнеров клуба magnat - всем
предложение для It партнеров клуба magnat - всемпредложение для It партнеров клуба magnat - всем
предложение для It партнеров клуба magnat - всем
 
이화 Smart Learning 체제 구축 성과 및 방향
이화 Smart Learning 체제 구축 성과 및 방향이화 Smart Learning 체제 구축 성과 및 방향
이화 Smart Learning 체제 구축 성과 및 방향
 
Electrospn 18 casasola-full
Electrospn 18 casasola-fullElectrospn 18 casasola-full
Electrospn 18 casasola-full
 
01 dc promo
01 dc promo01 dc promo
01 dc promo
 
Programa video tutorial
Programa video tutorialPrograma video tutorial
Programa video tutorial
 
Bauwens Kloetzer professional use of social media
Bauwens Kloetzer professional use of social mediaBauwens Kloetzer professional use of social media
Bauwens Kloetzer professional use of social media
 
Citizen Science overview for ASU HSD598 graduate course, "Citizen Science"
Citizen Science overview for ASU HSD598 graduate course, "Citizen Science"Citizen Science overview for ASU HSD598 graduate course, "Citizen Science"
Citizen Science overview for ASU HSD598 graduate course, "Citizen Science"
 
Text features
Text featuresText features
Text features
 
Stephanie Orphan - Portico- Preservation in the Digital Era AAUP 14
Stephanie Orphan - Portico- Preservation in the Digital Era AAUP 14Stephanie Orphan - Portico- Preservation in the Digital Era AAUP 14
Stephanie Orphan - Portico- Preservation in the Digital Era AAUP 14
 
Braille vanuit je broekzak "keynote"
Braille vanuit je broekzak "keynote"Braille vanuit je broekzak "keynote"
Braille vanuit je broekzak "keynote"
 
Tata surya
Tata suryaTata surya
Tata surya
 
大学生アンケート0722
大学生アンケート0722大学生アンケート0722
大学生アンケート0722
 
Koalalar basketbol oynuyor
Koalalar basketbol oynuyorKoalalar basketbol oynuyor
Koalalar basketbol oynuyor
 
Overview of GFRAS extension evaluation initiative - Dr P. Djamen
Overview of GFRAS extension evaluation initiative - Dr P. DjamenOverview of GFRAS extension evaluation initiative - Dr P. Djamen
Overview of GFRAS extension evaluation initiative - Dr P. Djamen
 
Contemporary english
Contemporary englishContemporary english
Contemporary english
 
5. file
5. file5. file
5. file
 
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menuBuilding websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
 

Similaire à Agent mang bayes

Những thuật ngữ thường gặp trong Reverse Engineering .NET
Những thuật ngữ thường gặp trong Reverse Engineering .NETNhững thuật ngữ thường gặp trong Reverse Engineering .NET
Những thuật ngữ thường gặp trong Reverse Engineering .NETLevis Nickaster
 
Hướng dẫn-cài-đặt-để-sữ-dụng-enterprise-architect-để-thiết-kế-các-mô-hình
Hướng dẫn-cài-đặt-để-sữ-dụng-enterprise-architect-để-thiết-kế-các-mô-hìnhHướng dẫn-cài-đặt-để-sữ-dụng-enterprise-architect-để-thiết-kế-các-mô-hình
Hướng dẫn-cài-đặt-để-sữ-dụng-enterprise-architect-để-thiết-kế-các-mô-hìnhkey Pham
 
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGTrường Phạm
 
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)Levis Nickaster
 
Các phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptxCác phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptxdong92356
 
Bai tap lon xlnntn
Bai tap lon xlnntnBai tap lon xlnntn
Bai tap lon xlnntnNguyễn Anh
 
Sinh vienit.net --57669587-c-dhkh-hue
Sinh vienit.net --57669587-c-dhkh-hueSinh vienit.net --57669587-c-dhkh-hue
Sinh vienit.net --57669587-c-dhkh-hueTuấn Nguyễn Văn
 
Giới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagramGiới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagramHuy Vũ
 
Câu hỏi phỏng vấn.pdf
Câu hỏi phỏng vấn.pdfCâu hỏi phỏng vấn.pdf
Câu hỏi phỏng vấn.pdfGrowup Work
 
Bai giangvb.net
Bai giangvb.netBai giangvb.net
Bai giangvb.netvvpcdsptin
 
Thương mại điện tử
Thương  mại điện tửThương  mại điện tử
Thương mại điện tửgacon2009
 
Báo cáo thực tập chuyên nghành lập trình Android GPSGroup
Báo cáo thực tập chuyên nghành lập trình Android GPSGroupBáo cáo thực tập chuyên nghành lập trình Android GPSGroup
Báo cáo thực tập chuyên nghành lập trình Android GPSGroupTinh Ngo
 

Similaire à Agent mang bayes (20)

Những thuật ngữ thường gặp trong Reverse Engineering .NET
Những thuật ngữ thường gặp trong Reverse Engineering .NETNhững thuật ngữ thường gặp trong Reverse Engineering .NET
Những thuật ngữ thường gặp trong Reverse Engineering .NET
 
Mau slide
Mau slideMau slide
Mau slide
 
Hướng dẫn-cài-đặt-để-sữ-dụng-enterprise-architect-để-thiết-kế-các-mô-hình
Hướng dẫn-cài-đặt-để-sữ-dụng-enterprise-architect-để-thiết-kế-các-mô-hìnhHướng dẫn-cài-đặt-để-sữ-dụng-enterprise-architect-để-thiết-kế-các-mô-hình
Hướng dẫn-cài-đặt-để-sữ-dụng-enterprise-architect-để-thiết-kế-các-mô-hình
 
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
 
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
Các công cụ cần thiết cho quá trình Reverse Engineering .NET (bản đầy đủ)
 
Mo hinh-3-lop
Mo hinh-3-lopMo hinh-3-lop
Mo hinh-3-lop
 
Các phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptxCác phương pháp phân tích thiết kế phần.pptx
Các phương pháp phân tích thiết kế phần.pptx
 
Asp.net 3.5 _1
Asp.net 3.5 _1Asp.net 3.5 _1
Asp.net 3.5 _1
 
On thi kpdl
On thi kpdlOn thi kpdl
On thi kpdl
 
Bai tap lon xlnntn
Bai tap lon xlnntnBai tap lon xlnntn
Bai tap lon xlnntn
 
Sinh vienit.net --57669587-c-dhkh-hue
Sinh vienit.net --57669587-c-dhkh-hueSinh vienit.net --57669587-c-dhkh-hue
Sinh vienit.net --57669587-c-dhkh-hue
 
Bai giangvb.net
Bai giangvb.netBai giangvb.net
Bai giangvb.net
 
Giới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagramGiới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagram
 
04 de cuong
04 de cuong04 de cuong
04 de cuong
 
Cong nghnet
Cong nghnetCong nghnet
Cong nghnet
 
Câu hỏi phỏng vấn.pdf
Câu hỏi phỏng vấn.pdfCâu hỏi phỏng vấn.pdf
Câu hỏi phỏng vấn.pdf
 
Bai giangvb.net
Bai giangvb.netBai giangvb.net
Bai giangvb.net
 
Thương mại điện tử
Thương  mại điện tửThương  mại điện tử
Thương mại điện tử
 
Báo cáo thực tập chuyên nghành lập trình Android GPSGroup
Báo cáo thực tập chuyên nghành lập trình Android GPSGroupBáo cáo thực tập chuyên nghành lập trình Android GPSGroup
Báo cáo thực tập chuyên nghành lập trình Android GPSGroup
 
Mvc 3
Mvc 3Mvc 3
Mvc 3
 

Plus de Giang Nguyễn

Php can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.comPhp can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.comGiang Nguyễn
 
Lap trinh web dong voi php my sql
Lap trinh web dong voi php my sqlLap trinh web dong voi php my sql
Lap trinh web dong voi php my sqlGiang Nguyễn
 
Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01Giang Nguyễn
 
Hay php architect eav modeling
Hay php architect   eav modelingHay php architect   eav modeling
Hay php architect eav modelingGiang Nguyễn
 
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dongHaiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dongGiang Nguyễn
 
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysqlHaiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysqlGiang Nguyễn
 
Haiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sqlHaiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sqlGiang Nguyễn
 
Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206Giang Nguyễn
 
Canbanvethietkevalaptrinhgame
CanbanvethietkevalaptrinhgameCanbanvethietkevalaptrinhgame
CanbanvethietkevalaptrinhgameGiang Nguyễn
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release reviewGiang Nguyễn
 
Bai tap lap trinh web voi joomla csau
Bai tap   lap trinh web voi joomla csauBai tap   lap trinh web voi joomla csau
Bai tap lap trinh web voi joomla csauGiang Nguyễn
 

Plus de Giang Nguyễn (20)

Php can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.comPhp can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.com
 
Os xmldomphp
Os xmldomphpOs xmldomphp
Os xmldomphp
 
Os php-7oohabits
Os php-7oohabitsOs php-7oohabits
Os php-7oohabits
 
Os php-5.3new1
Os php-5.3new1Os php-5.3new1
Os php-5.3new1
 
Lap trinh web dong voi php my sql
Lap trinh web dong voi php my sqlLap trinh web dong voi php my sql
Lap trinh web dong voi php my sql
 
Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01
 
Php day4
Php day4Php day4
Php day4
 
Hay php architect eav modeling
Hay php architect   eav modelingHay php architect   eav modeling
Hay php architect eav modeling
 
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dongHaiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
 
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysqlHaiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
 
Chuong07 php
Chuong07 phpChuong07 php
Chuong07 php
 
Bai th08 php voi csdl
Bai th08 php voi csdlBai th08 php voi csdl
Bai th08 php voi csdl
 
Haiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sqlHaiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sql
 
Hd lap pttkht2008
Hd lap pttkht2008Hd lap pttkht2008
Hd lap pttkht2008
 
Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206
 
Canbanvethietkevalaptrinhgame
CanbanvethietkevalaptrinhgameCanbanvethietkevalaptrinhgame
Canbanvethietkevalaptrinhgame
 
C1
C1C1
C1
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release review
 
Bai tap lap trinh web voi joomla csau
Bai tap   lap trinh web voi joomla csauBai tap   lap trinh web voi joomla csau
Bai tap lap trinh web voi joomla csau
 
Analyse
AnalyseAnalyse
Analyse
 

Agent mang bayes

  • 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