Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (612.41 KB, 10 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>Hoàng Anh Vi t, inh Th Phng Thu, Hu nh Quy t Th ng</b>
<i>Khoa CNTT, Trng HBK Hà N i</i>
<i>Email: , , </i>
<i><b>Tóm t t: Python là m t ngơn ng mã ngu n m</b>ang phát tri n và thu hút c squan tâm c a r t nhi u chuyên gia xây d ng và phát tri n ng d ng trong th c thi n nay. Trong bài báo này chúng tôi c p n nh ng nghiên c u v th m nh</i>
<i>a Python trong l nh v c x lý v n b n v i vi c s d ng Python trong x lý cácbi u th c chính quy, tó phát tri n m t th vi n tr giúp x lý d li u v n b nnh m ph c v cho các bài toán x lý v n b n quan tr ng nh : tách t , phân tích cúpháp, tóm t t v n b n,... Chúng tôi c ng ã ti n hành th nghi m trên bài toántách t tng v i các t p v n b n ti ng Vi t và ti ng Anh có dung lng khácnhau. Các so sánh c th c hi n trên hai công c Python và ngơn ng C#.NET .</i>
<i><b> khố: ngơn ng Python, mã ngu n m , x lý v n b n, tách t v n b n.</b></i>
Khai phá v n b n là m t bài toán quan tr ng trong l p các bài toán khai phá d li u và phát hi n tri th c. Hi n nay ph n l n d li u c l u tr <i> d ng v n b n (text), nh d ng này</i>
chi m a s trong các d li u tác nghi p, trong các d li u l u tr nghiên c u,... i v i các l p trình viên, nh ng ng i xây d ng và phát tri n ng d ng th c t , thì v i m t kh i l ng d li u n vi c x lý v n b n c coi là t n nhi u chi phí th i gian và tài nguyên h th ng. Vì th chúng ta c n có nh ng cơng c x lý v n b n th c s m nh áp ng t t h n nhu c u phát tri n các ng d ng trong th c t .
Trong bài báo này chúng tơi trình bày các nghiên c u, ánh giá và th nghi m kh n ng ng d ng c a m t công c mã ngu n m - ngôn ng Python - trong bài toán x lý v n b n [2]. Python là ngôn ng mã ngu n m trong sáng, d hi u, a n ng và r t h u d ng cho các ng ng, c bi t là các thao tác liên quan n x lý v n b n. Các th vi n, hàm, l p trong Python c xây d ng thích h p cho s phát tri n c a nh ng trình so n th o, các b x lý t , ngôn ng , ph n m m dàn trang, các h th ng l u tr và x lý thông tin v n b n,…
u trúc c a bài báo c trình bày nh sau. Trong ph n 2 chúng tôi gi i thi u t ng quan th vi n chu n c a Python trong x lý xâu chu i, ch y u c p t i các hàm c b n c a Python và kh n ng x lý các bi u th c chính quy trong Python. Ph n 3 trình bày vi c phát tri n t th vi n x lý v n b n mà chúng tôi ã th c hi n xây d ng d a trên th vi n chu n c a Python. Cu i cùng, trong ph n 4, chúng tơi trình bày các k t qu so sánh ánh giá hi u qu gi a các th nghi m trên th vi n x lý v n b n Python ã phát tri n v i công c C# ng d ng trong bài toán tách t v n b n. K t qu th nghi m th c hi n trên c hai lo i v n b n ti ng Anh và
n b n ti ng Vi t.
<b>2. TH VI N CHU N C A PYTHON TRONG X LÝ XÂU CHU I</b>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2"><b>2.1 Công c ngu n m Python và các module c b n x lý xâu chu i</b>
Python ra i vào n m 1989 b i Guido van Rossum t i Hà Lan và b t u c bi t n n m 1991. Sau ó Python ti p t c c phát tri n d i d ng ngôn ng mã ngu n m b i t
<i>ch c Python Software Foudation[1]. Python là m t ngơn ng l p trình </i> n gi n nh ng m nh m i nó v a có c s c m nh gi ng nh các ngôn ng biên d ch truy n th ng nh ng c ng v a có c các l i th c a m t ngôn ng thông d ch. Python là ngôn ng l p trình t ng tác, thơng ch, h ng i t ng v i rât nhi u u m n i b t [1,2]: cú pháp trong sáng, d hi u; tính
ng thích cao; kh n ng m r ng; các ki u d li u ng m c cao; ch y trên a n n.
<b>Hình 1. Các module h tr cho x lý xâu, chu i trong Python</b>
Các module trong Python h tr cho x lý v n b n c mơ t trong hình 1. Có 10 module trong ó các module c b n nh t bao g m:
<i>Module string: ch c các ph</i> ng th c th c hi n các thao tác xâu c b n.
<i>Module Re: ch a các ph</i> ng th c h tr x lý bi u th c chính quy.
<i>Module Unicodedata: ch a các ph</i> ng th c th c hi n các thao tác v i d li u d ng unicode.
<i>Module Codecs: ch a các ph</i> ng th c mã hóa và gi i mã d li u.
<i>Module StringIO: ch a các ph</i> ng th c th c hi n thao tác x lý vào ra.
<i>Module Stringprep: ch a các ph</i> ng th c th c hi n ti n x lý xâu.
<b>2.2 Các phng th c c b n x lý ký t và xâu chu i trong Python</b>
Python h tr xâu chu i nh m t ki u d li u c b n. Ngoài m t s các thao tác c b n
<i>nh : l y chi u dài xâu v i hàm len, k t h p các xâu v i toán t “+” và các ki u nh d ng xâu</i>
i toán t nh d ng ”%”,… thì xâu chu i trong Python còn c h tr b i m t lo t các ph ng th c nh m th c hi n các nh d ng và kh n ng x lý khác. Th vi n chu n c a Python bao g m g n 50 ph ng th c x lý xâu chu i. Các ph ng th c này chia làm 5 nhóm:
Nhóm các ph ng th c dùng nh v trong xâu: th c hi n xác nh v trí các ký t trong xâu, tìm ki m các xâu con...
Nhóm các ph ng th c dùng chuy n i xâu: th c hi n chuy n d ng c a các ký t , xâu con trong xâu g c nh chuy n sang d ng ch hoa, ch th ng, mã Unicode,....
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">Nhóm các ph ng th c dùng k t h p và phân tách xâu: th c hi n vi c phân tách xâu thành các xâu con ho c ghép n i các xâu con thành m t xâu duy nh t.
Nhóm các ph ng th c dùng ki m tra thu c tính c a xâu: th c hi n vi c xác nh xem m t s thu c tính c a xâu có th a mãn các u ki n nào ó hay khơng, ví d ki m tra xem m t xâu có b t u hay k t thúc b ng m t xâu con nào ó khơng.... Python. M t bi u th c chính quy là m t ki u xâu chu i c bi t mà m t ch ng trình Python dùng x lý các xâu chu i trong v n b n phù h p v i các m u và yêu c u ã ch ra trong bi u t xâu. M t chu i c bi t là m t hình th c t o nhanh cho m t l p ký t thơng th ng, ví d :
Các siêu ký t <i>“[“ và “]” bao hàm m t l p các bi u th c chính quy. M t bi u th c</i>
chính quy mà ch a m t l p các ký t thì s “so kh p” v i m t ký t trong l p ó. Ví d ,
<i>bi u th c chính quy ”[abc]” kh p v i ba kí t a, b ho c c.</i>
Các l p có th s d ng ký t “-“ ch nh m t d i các ký t liên ti p. Ví d , bi u th c
<i>chính quy “[a-d]” là t</i> ng <i>ng v i bi u th c chính quy “[abcd]”.</i>
Khi c t v trí <b>u tiên c a m t l p, siêu ký t “^” s th c hi n vi c “ph</b> nh”
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><i><b>Bi u th c chính quy trên ch a m t siêu ký t m i: siêu ký t “|” dùng </b></i> so kh p v i bi u th c chính quy bên trái ho c bên ph i c a siêu ký t , ch ng h n cách khác vi t bi u th c
<i><b>“[abc]” là “a|b|c”. Theo cách ó, bi u th c chính quy trên s so kh p v i xâu “2x+5y” ho c</b></i>
<i>xâu “7y-3z”.</i>
<b>2.3.3. S h p nhóm</b>
t bi u th c chính quy có th ch nh các nhóm c a nh ng xâu con so kh p trong t xâu. M t ch ng trình trên Python sau khi tìm ki m ho c so kh p m t xâu v i bi u th c chính quy s trích ra các thơng tin t các nhóm th a mãn. Ví d 2 d i ây t o ra các bi u th c chính quy v i các nhóm và a ra nh ng thơng tin trích t các nhóm ó:
<i>expression1 = \r"(\w+ \w+), n tho i: (\d{3}-\d{4}), E-mail: (\w+@\w+\.\w{3})"</i>
<i><b>Siêu ký t “(“ và “)” mơ t m t nhóm. Bi u th c chính quy expression1 mơ t 3 nhóm.</b></i>
Nhóm <i>u tiên so kh p v i m t t “(\w+)”, theo sau là 1 kho ng tr ng, theo sau ti p là</i>
t t khác.
<i>Nhóm th 2 so kh p v i 3 ch s , theo sau là ký t “-“, theo sau b i 4 ch s .</i>
Nhóm th 3 so kh p v i 1 ho c nhi u ch s ho c ch cái, theo sau là ký t “@”, theo sau ti p là 1 ho c nhi u ký t ch s ho c ch cái, theo sau ti p là ký t “.”, và ti p cu i cùng là 3 ký t ch cái ho c s .
<i>Nh v y có th th y bi u th c chính quy expression1 chính là vi c th c hi n tìm ki m so kh p</i>
xâu theo nh d ng: tên, s n tho i và a ch email c a m t ng <i>i, ví d : "Hồng Anh Vi t,</i>
<i>n tho i: 868-2595, e-mail:", và s d ng câu l nh:re.match( expression1, teststring) trong module Re.</i>
Bên c nh ó, vi c gom nhóm bi u th c chính quy cịn mang l i m t k t qu h u ích khác.
<i>Các siêu ký t “+” và “*” <b>c g i là các toán t tham lam.</b></i> t toán t tham lam s c g ng giúp th c hi n so kh p th t nhi u ký t có th nh t giúp nâng cao hi u qu x lý. ng nhiên
ơi khi có th u này khơng ph i là u mong mu n.
<b>3. Phát tri n th vi n x lý v n b n trên Python:</b>
a trên các th vi n chu n c a Python và v i mong mu n phát tri n m t th vi n nh m ph c v l nh v c x lý v n b n, trong c ng ng mã ngu n m c a Python, chúng tôi ã s
<i>ng, phát tri n và th nghi m trên module pyparsing c a Paul McGuire [3] – m t module ã</i>
c ánh giá là x lý r t t t cho v n này.
<i>Module pyparsing có các thành ph n x lý d li u </i> u vào và ra trong nh ng môi tr ng và ngôn ng khác nhau. <i>ng th i trong module pyparsing chúng ta có th d dàng tr c ti p</i>
nh ngh a cú pháp l p cho b t k ng d ng phân tích và x lý v n b n nào. Do ó, v i
<i>pyparsing ta có th</i> ánh giá các bi u th c chính quy c a ng i dùng, th c hi n trích rút thơng
<i>tin, d li u t các v n b n ã nh d ng. Các l p c b n c a th vi n pyparsing</i> c mô t trong hình 2.
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><b>Hình 2. Bi u phân l p môdule x lý v n b n c a th vi n pyparsing</b>
o <i>parsetFile(sourceFile): ây là m t hàm r t ti n d ng, th c hi n </i> c toàn b file u vào và toàn b n i dung trong file s c truy n d i d ng m t xâu
<i>n parseString().</i>
o <i>scanString(sourceString): hàm này dùng </i> tìm ki m và trích rút các n so
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">o <i>setDebug(): hàm thi t l p ch</i> g l i thông tin khi ang so kh p d li u o <i>leaveWhiteSpace(): b qua d u tr ng khi ti n hành so kh p.</i>
o <i>setWhiteSpace(chars): xác nh danh sách các ký hi u dùng nh các ký hi u</i>
tr ng trong quá trình so kh p.
<i>Literal: l p ch a các ph</i> ng th c ph c v cho thi t l p xâu dùng so kh p.
<i>Word: l p ch a các ph</i> ng th c ph c v thi t l p m t xâu ch a t p h p các ký t
<i>Dict: l p ch a các phng th c gi ng Group, nh ng th c hi n thi t l p cho m t t</i>
n, s d ng tham s u tiên c a danh sách ký hi u làm khóa, cịn các ký hi u khác là giá tr .
<i>ParsetResults: l p dùng ch a và qu n lý danh sách các ký hi u </i> c t o b i vi c phân tích bi u th c <i>u vào. ParseResults có th s d ng ki u list ho c dictionary.</i>
<i>ParsException:</i> p ch a các ph ng th c x lý ngo i l , k t qu c tr v khi câu phân tích khơng thành công.
<i> th a th vi n pyparsing trên chúng tôi ã phát tri n m t th vi n – th vi n Word</i>
<i>Analysis- nh m ph c v cho các bài toán x lý v n b n quan tr ng nh : tách t , phân tích cú</i>
<i>pháp, tóm t t v n b n,... Trong th vi n này chúng tôi c ng s d ng th vi n Re c a Python</i>
trong x lý các bi u th c chính quy (hình 3).
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><i>t s hàm chính trong Word Analysis nh :</i>
<i>def Stringstart(Position): vi c so kh p </i> c ti n hành ng v i v trí u tiên ho c v trí cu i cùng c a xâu u vào.
<i>def Match(string): Hàm dùng ki m tra xem xâu </i> u vào có trong t n t v ng hay khơng.
<i>def ListLine(string): Hàm dùng </i> phân tích t p v n b n u vào thành m t danh sách các dòng theo c u trúc t p. M i dịng có th bao g m m t t p các câu.
<i>def ListSentence(string): Hàm dùng phân tích v n b n </i> u vào thành m t t p các hình v ng n h n. Trong ó các ký hi u phân tách nh : “,”, “.”, “!”, “;”, “…”, v… s
<i>c nh ngh a trong l p Word.</i>
<i>def Find(string): Hàm dùng </i> th c hi n tìm ki m m t xâu theo thu t toán c a bài toán, th trong bài toán tách t t ng thì hàm này s th c hi n vi c ch n t có dài l n nh t t bên trái sang.
<i>def count(string,char): Hàm dùng </i> xác nh s l n xu t hi n c a m t xâu con trong xâu u vào.
<i>def Listcorrect(string): Hàm dùng </i> a ra danh sách các t c phân tách t xâu u vào và có trong t n t v ng.
<i>Listfail: </i> a ra danh sách các k t qu sai trong xâu u vào, c th ây là các t phân tách c t xâu u vào nh ng khơng tìm th y trong t n t v ng.
Các ph <i>ng th c xây d ng trong th vi n Word Analysis này ã </i> c chúng tôi s ng th nghi m b c u trên m t bài toán x lý v n b n t ng và ã ch ng minh c tính hi u qu c a mình qua k t qu th c nghi m (ph n 4). Hi n nay chúng tôi ang hoàn thi n h n th vi n này h tr nhi u h n trên các bài toán x lý v n b n t ng khác.
<b>4. Th nghi m và ánh giá trên bài toán tách t v n b n</b>
Bài toán tách t t <i>ng cho v n b n (Word Segmentation) là m t trong nh ng bài tốn</i>
b n và vơ cùng quan tr ng trong x lý và khai phá d li u v n b n. V i m t v n b n u vào, t qu u ra c a bài toán s tr v danh sách các t c tách ra t v n b n ban u. K t qu a bài toán tách t c s d ng nh m t ti n cho hàng lo t bài toán quan tr ng khác v sau
<i>nh : tìm c m t (chunking), gán nhãn t lo i (POS tagging), phân tích cú pháp (Parsing), phânp v n b n (Text Categorization), phân nhóm v n b n (Text Clustering), tóm t t v n b n (Text</i>
th y c các k t qu nghiên c u, ánh giá và th nghi m kh n ng ng d ng c a ngôn ng Python trong l nh v c x lý v n b n, chúng tôi ã ti n hành s d ng Python và m t công c khác – ngôn ng C#, m t công c phát tri n ng d ng r t m nh trên môi tr ng .NET ang c s d ng r ng rãi hi n nay - áp d ng trong bài toán tách t t ng cho v n b n. Trong ó <i>i v i ngôn ng Python, chúng tôi s d ng th vi n Word Analysis ã xây d ng </i>
ph n 3 ti n hành th nghi m. K t qu th nghi m th c hi n trên c hai lo i v n b n ti ng Anh và v n b n ti ng Vi t.
<b>4.1. Môi trng, d li u th nghi m</b>
th c hi n tách t t ng cho v n b n ti ng Vi t và ti ng Anh có r t nhi u thu t tốn khác nhau, ví d v i ti ng Vi t nh : thu t toán tách t d a trên i sánh dài t dài nh t t
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">trái sang, t ph i sang, tách t d a trên th ,…[6, 7]. Trong th nghi m này c a chúng tơi, thu t tốn tách t c chúng tôi s d ng chung cho c hai lo i v n b n ti ng Vi t và ti ng Anh là thu t toán tách t d a trên i sánh dài t dài nh t t trái sang .
Môi tr ng th nghi m c ti n hành trên c u hình máy: P.IV 2.8; 512Mb Ram. T p d li u các v n b n ti ng Vi t c t i v t các trang báo n t www.vnexpress.net và
www.vnn.net. T p d li u các v n b n ti ng Anh c t i v t các trang báowww.cnn.com và
<b>4.2. K t qu th nghi m</b>
i d li u và môi tr ng, gi i thu t th nghi m trên chúng tôi ã ti n hành so sánh t c t c th c thi c a bài toán tách t t ng gi a hai ngôn ng Python và C# trên cùng các p v n b n v i kích th c khác nhau. K t qu so sánh c mô t trong b ng 2, hình 4 cho t p
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">t cách tr c quan t k t qu so sánh th nghi m trên chúng ta có th th y rõ hi u qu m t th i gian x lý v n b n c a ngôn ng Python cao h n C#.NET r t nhi u, c bi t là cho
lý v n b n ti ng Vi t - m t ngôn ng v i nh ng khó kh n c thù riêng so v i các ngôn ng khác n gi n h n nh ti ng Anh, Pháp,… Kh i l ng d li u x lý càng l n, u vi t v m t
c th c thi c a Python càng th hi n rõ. u này ã kh ng nh kh n ng ng d ng to l n a công c mã ngu n m Python trong l nh v c x lý v n b n nói chung và cho x lý v n b n ti ng Vi t nói riêng.
<b>5. K t lu n và hng phát tri n</b>
Python - m t ngôn ng mã ngu n m v i nh ng c m h tr cho x lý v n b n r t nh m - ang ngày càng hoàn thi n và phát tri n. Ngoài kh n ng xây d ng các ng d ng c p, Python cịn có u m n i b t trong vi c k t h p v i các h th ng khác v i vai trị nh m t ngơn ng n n và h tr cho h u h t các công c , ngôn ng thông d ng khác hi n nay. H n th
a, v i m t cú pháp vô cùng n gi n, rõ ràng và hi u qu cao ã c ch ng minh, Python ngày càng th c s thu hút c s quan tâm r t l n c a các l p trình viên, nh ng ng i xây
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">Xây d ng hoàn thi n b th vi n x lý v n b n b ng vi c s d ng th vi n chu n c a
<i>Python c ng nh module x lý pyparsing.</i>
Áp d ng v i các bài toán x lý v n b n c tr ng, xây d ng các module cho t ng bài toán c th , c bi t là cho các bài toán cho x lý v n b n ti ng Vi t.
t h p th vi n x lý v n b n ti ng Vi t v i nhi u h th ng và nhi u bài toán khác.
<b>Tài li u tham kh o</b>
[1]
[2] David Mertz, “Text Processing in Python”, Addison Wesley, June 06, 2003 [3]
[4] <i>Wesley J. Chun , Core Python Programming</i>, Prentice Hall Publishion, 2002
<i><b>[5] Harvey Deitel, Paul Deitel, Jonathan Liperi, Ben Wiedermann, Python How to Program,</b></i>
Deitel and Deitel Publishion, 2002
[6] Hu nh Quy t Th ng, inh Th Ph <i>ng Thu. Ti p c n phng pháp h c không giám sáttrong h c có giám sát v i bài tốn phân l p v n b n ti ng Vi t và xu t cơng th c c i ti ntính liên quan gi a hai v n b n. H i th o khoa h c qu c gia v Nghiên c u phát tri n và</i>
ng d ng Công ngh thông tin và truy n thông ICT.RDA l n th II, Hà n i 24-25/9. K y u i th o – Trang 251-261.
<i>[7] N.N. Binh, V.N. Ti p, N.T. Phuong. Trích ch n t khóa trong v n b n ti ng Vi t. H i th o</i>
khoa h c qu c gia v Nghiên c u phát tri n và ng d ng Công ngh thông tin và truy n thông ICT.RDA l n th II, Hà n i 24-25/9.
</div>