Giới thiệu JWPL

Java-based Wikipedia Library (JWPL) là thư viện phần mềm được phát triển cho các hệ thống truy xuất thông tin từ nguồn tài nguyên Wikipedia. JWPL cung cấp các chức năng rút trích và tìm kiếm các tri thức ngữ nghĩa cho các ứng dụng xử lý ngôn ngữ tự nhiên với hiệu suất cao và khả năng mở rộng lớn.

pdf40 trang | Chia sẻ: vietpd | Lượt xem: 5481 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giới thiệu JWPL, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Mô hình rút trích cm t c trng ng ngha trong ting Vi t i PH LC A GII THIU JWPL 1. Tng quan Java-based Wikipedia Library (JWPL) là th vin phn mm c phát trin cho các h thng truy xu t thông tin t ngu n tài nguyên Wikipedia. JWPL cung c p các ch c n ng rút trích và tìm kim các tri th c ng ngha cho các ng dng x lý ngôn ng t nhiên vi hiu su t cao và kh n ng m rng ln. 2. Kin trúc ca JWPL JWPL hot ng trên c s d liu ã c ti u hóa to ra t c s d liu thô (dumps) ca wikipedia. Thun li ca mô hình kin trúc JWPL (Hình A) là: + X lý hiu qu các tác v x lý ngôn ng t nhiên trên phm vi rng ln. + Cho phép k th a các kt qu tìm kim. + Kh n ng tích hp vi các ng dng hng i tng. JWPL CSDL Wikipedia / Wiktionary XML dump Phiên bn Ting Vit CSDL Wikipedia / Wiktionary XML dump Phiên bn Ting Anh CSDL ã ti u hóa CSDL ã ti u hóa ng dng ng dng ng dng Truy xut các i tng Bin i d li u Hình A: Kin trúc h thng ca JWPL Mô hình rút trích cm t c trng ng ngha trong ting Vi t ii JWPL c thit k vi giao din lp trình hng i tng tp trung khai thác các i tng chính nh WIKIPEDIA, PAGE và CATEGORY. Trong ó: - i tng WIKIPEDIA: c s dng  thit lp các kt ni vi c s d liu và tìm kim các i tng PAGE và CATEGORY. Ngoài vic h tr tìm kim bng t khoá hoc thông qua các giao din truy v n i tng WIKIPEDIA, JWPL còn cung c p c ch lp t ng trên các tác v truy xu t các i tng trang và th loi. - i tng PAGE: trang thông tin có th là mt bài vit bình th ng nói v mt khái nim hay mt thc th. Mt trang thông tin c!ng có th là mt trang  i h ng - trang ch a liên kt n trang có tên khác (có th thông dng hn) nói v cùng mt  tài. Mt trang thông tin c!ng có th là mt trang  nh h ng - mt bài vit gii thích v ý ngha ph" bin nh t ca thut ng, bên di lit kê các liên kt n các bài vit có ta  tng t hoc có khái nim tng t, giúp #nh hng cho ng i $c n úng bài vit mà h$ ang tìm. - i tng CATEGORY: i din cho nhng th loi ca Wikipedia và cho phép truy v n n nhng bài vit có trong th loi ó. Nó còn cung c p cách  truy v n n cha m% hoc con ca chúng. - Ngoài ra, JPWL còn cung c p i tng CATEGORYGRAPH – Cây th loi cho phép tìm ra  ng d&n ng'n nh t gia hai th loi. 3. Cách to CSDL ti u hóa a. Yêu c u ca h thng - H CSDL mysql ( ti xung t - JDK (ti xung t - JWPL( ti xung t - Gii nén tp tin v a ti xung thu c th mc có ch a các tp tin sau: + JWPLDataMachine.jar. + Languages.txt. + Tables.sql. d. Quá trình chuyn  i Bc 1: To mt c s d liu mysql bng lnh: Mô hình rút trích cm t c trng ng ngha trong ting Vi t iii [path/file thc thi mysql]-u[user] –p[password] create database [tên database]; Bc 2: a tables.sql vào c s d liu v a to bng lnh Import: [file thc thi mysql] -uUSER -p tên c s d liu v a to  trên < tables.sql Bc 3: Ti xung 3 tp tin (ti #a ch( [LANGCODE]wiki-[DATE]-pages-articles.xml.bz2 [LANGCODE]wiki-[DATE]-pagelinks.sql.gz [LANGCODE]wiki-[DATE]-categorylinks.sql.gz Bc 4: Gii nén 3 tp tin trên và chy lnh sau  chuyn "i [file thc thi java] [ngôn ng] [tên _CATEGORY_chính] [tên các thành phn c u to nên category] [th mc ch a 3 tp tin trên] Kt qu chy dòng lnh này trên ubuntu 8.0 nh sau: Kt qu thu c th mc ch a các tp tin sau:  Category.txt  category_inlinks.txt  category_outlinks.txt  category_pages.txt Mô hình rút trích cm t c trng ng ngha trong ting Vi t iv  MetaData.txt  Page.txt  page_categories.txt  page_inlinks.txt  page_outlinks.txt  page_redirects.txt  PageMapLine.txt Bc 5: a các tp tin v a to c vào c s d liu to  trên bng lnh import: [path\mysqlimport] –u[USER] –p[pass] --default-character-set=utf8 {tên c s d liu to  trên} {txt_file1} {txt_file2} ... {txt_file_n} Kt qu thu c c s d liu ã c ti u. Mô hình rút trích cm t c trng ng ngha trong ting Vi t v PH LC B GII THIU V N PH M JAPE 1. Tng quan B x lý v n phm JAPE (Java Annotation Patterns Engine) là mt phn ca kin trúc x lý vn bn (GATE), cho phép c t các lut so trùng các m&u và có th xác #nh các hành ng c!ng nh các chuyn "i s) xy ra nu lut so trùng vi mt cm t trong v n bn. Lun án ã iu ch(nh b x lý JAPE nhm iu khin các thông tin liên quan ti Ontology và so trùng các m&u. 2. V n phm JAPE V n phm JAPE bao g m mt tp các công on, mi công on bao g m mt tp lut (tp lut ca các m&u hoc tp lut các thao tác thc hin). Các công on c thc thi mt cách tun t và to thành các b chuyn trng thái hu hn cho các chú gii (annotation). Mi lut ca v n phm JAPE bao g m hai phn: phn bên trái và phn bên phi. Phn bên trái ca lut ch a mt m&u chú gii. Trong m&u chú gii có th ch a các toán hng ca biu th c chính qui (nh *, ?, +). Phn bên phi ca lut là phn thao tác cho chú gii. Mi v n phm c b't u bng mt trong hai tùy ch$n sau: - Control: cho phép xác #nh phng pháp so trùng lut cho v n phm. - Debug: t bng “true” nu v n phm c thc thi trong c ch Appelt (c ch ch$n m&u có chiu dài ln nh t trong các m&u c so trùng. Nu tr ng hp hai m&u so trùng có chiu dài bng nhau thì c ch này ch$n m&u c so trùng sm nh t) và khi có nhiu kt qu so trùng thì các m&u c so trùng s) c th hin  thit b# u ra. Mt ví d minh h$a hai lut n gin trong tr ng hp oán nhn mt t có nhãn là date nh sau: Rule: date1 ( ({Token.kind=="number"})((({SpaceToken})*{Token.string=="-"} Mô hình rút trích cm t c trng ng ngha trong ting Vi t vi ({SpaceToken})*|({SpaceToken})*{Token.string=="/"}({SpaceToken})*) {Token.kind=="number"})+ )+ --> date Rule: date2 ( ({Token.string=="ngày"}|{Token.string=="Ngày"}) ({SpaceToken})+ {Token.kind=="number"}({SpaceToken})+ ({Token.string=="tháng"}|{Token.string=="Tháng"})({SpaceToken})+ {Token.kind=="number"}({SpaceToken})+ ({Token.string=="n m"}|{Token.string=="N m"})({SpaceToken})+ {Token.kind=="number"} ({SpaceToken})+ )+ --> date Trong ó: Token.kind – Loi Token, SpaceToken – Ký t tr'ng, * có ngha là không hoc nhiu, + có ngha là mt hoc nhiu, và | có ngha là Hoc. Vi lut date1 s) oán nhn các dng date nh 1/2/2006, 1-2-2006, …. Và lut date2 s) oán nhn các dng date nh Ngày 2 Tháng 3 Nm 2006, Ngày 03 tháng 03 nm 2006,…. 3. Các t p lu t v n phn JAPE dùng trong lu n án GATE cung c p mt tp lut v n phm JAPE có s*n trong thành phn có tên g$i là ANNIE, giúp nhn ra và so trùng mt s lp c bn nh Con ng i, Ni chn, T" ch c,… Tuy nhiên, tp lut này áp dng cho các thc th có tên ting Anh và da trên thành phn phân lp ting Anh có s*n ca GATE. Vì th, lun án ã c t ba tp lut hoàn toàn mi so vi ANNIE và áp dng cho công on gán nhãn t loi, nhn din cm danh t và xác #nh CTTNN cho câu trong ting Vit. 3.1 T p lu t áp dng cho công on gán nhãn t loi // ChauNguyen 12/09/2006 Phase:postprocess Input: Token SpaceToken Options: control = appelt Mô hình rút trích cm t c trng ng ngha trong ting Vi t vii //------- ChauNguyen starts ------ Rule: PP (({Token.string=="Anh"}|{Token.string=="anh"}|{Token.string=="Em"}|{To ken.string=="em"}|{Token.string=="Thy"}|{Token.string=="Cháu"}|{Token .string=="cháu"}|{Token.string=="Chú"}|{Token.string=="chú”}|{Token.st ring=="Thng"}|{Token.string=="thng"}|{Token.string=="Cô"}|{Token.str ing=="cô"}|{Token.string=="Bác"}|{Token.string=="bác"}|{Token.string== "Thy"}|{Token.string=="thy"})({SpaceToken})+({Token.string=="đó"}| {Token.string=="ấy"}|{Token.string=="kia"}|{Token.string=="ny"}))+ :pp --> { gate.AnnotationSet toNew = (gate.AnnotationSet)bindings.get("pp"); //get the tokens java.util.ArrayList tokens = new java.util.ArrayList(toNew); //define a comparator for annotations by start offset Collections.sort(tokens, new gate.util.OffsetComparator()); String text = ""; Iterator tokIter = tokens.iterator(); while(tokIter.hasNext()) text += (String)((Annotation)tokIter.next()).getFeatures().get("string"); gate.FeatureMap features = Factory.newFeatureMap(); features.put("kind", "word"); features.put("string", text); features.put("length", Integer.toString(text.length())); features.put("orth", "Pp"); annotations.add(toNew.firstNode(), toNew.lastNode(), "vnWord", features); } //------- ChauNguyen end ------ …. + trên trình bày mt lut cho phép gán nhãn t loi Pp cho các t ting Vit trong tp lut c xây dng cho công on gán nhãn t loi. 3.2 T p lu t áp dng cho công on nh n din cm danh t // ChauNguyen 08/08/2007 Phase:postprocess Input: vnWord SpaceToken Options: control = appelt //------- ChauNguyen starts ------ Rule: Kp1 ( ( ({vnWord.POS=="Ng"}|{vnWord.POS=="Nt"}|{vnWord.POS=="Pp"}) :t1 ({SpaceToken})*({vnWord.POS=="Nu"}|{vnWord.POS=="Nn"}) :t2 ({SpaceToken})*({vnWord.POS=="Nu"}|{vnWord.POS=="Nn"}|{vnWord.POS=="Ng "}|{vnWord.POS=="Nt"}) :T1 ({SpaceToken})*({vnWord.POS=="Np"}|{vnWord.POS=="Nc"}|{vnWord.POS=="Na "}) :T2 ({SpaceToken})*({vnWord.POS=="Aa"}|{vnWord.POS=="An"})* :s1 ({SpaceToken})*({vnWord.POS=="Nl"})* :s2 Mô hình rút trích cm t c trng ng ngha trong ting Vi t viii ) )+ :Kp1 --> { gate.AnnotationSet toNew = (gate.AnnotationSet)bindings.get("Kp1"); gate.AnnotationSet lannsT1 = (gate.AnnotationSet)bindings.get("T1"); gate.AnnotationSet lannsT2 = (gate.AnnotationSet)bindings.get("T2"); gate.AnnotationSet lannsS1 = (gate.AnnotationSet)bindings.get("s1"); gate.AnnotationSet lannsS2 = (gate.AnnotationSet)bindings.get("s2"); //get the tokens java.util.ArrayList tokens = new java.util.ArrayList(toNew); //define a comparator for annotations by start offset Collections.sort(tokens, new gate.util.OffsetComparator()); String text = ""; Iterator tokIter = tokens.iterator(); while(tokIter.hasNext()) text+=(String)((Annotation)tokIter.next()).getFeatures() .get("string"); gate.FeatureMap features = Factory.newFeatureMap(); features.put("kind", "vnNounPhrase"); features.put("string", text); features.put("length", Integer.toString(text.length())); features.put("orth", "vnNP"); if ((lannsT1 != null) && (lannsT1.size() > 0)) { features.put("T1", lannsT1); } if ((lannsT2 != null) && (lannsT2.size() > 0)) { features.put("T2", lannsT2); } if ((lannsS1 != null) && (lannsS1.size() > 0)) { features.put("S1", lannsS1); } if ((lannsS2 != null) && (lannsS2.size() > 0)) { features.put("S2", lannsS2); } annotations.add(toNew.firstNode(),toNew.lastNode(),"vnNounPhrase", features); } + trên trình bày mt lut cho phép nhn din mt m&u c u trúc cm danh t ting Vit trong tp lut c xây dng cho công on nhn din cm danh t . 3.3 T p lu t áp dng cho công on xác nh CDTTNN Lun án minh h$a mt lut cho phép xác #nh CTTNN trong tr ng hp gia các cm t d tuyn có t ch( quan h nh sau. // ChauNguyen 09/09/2008 Phase:postprocess Input: vnWord vnNounPhrase Options: control = appelt //------- ChauNguyen starts ------ Rule: KNP ( Mô hình rút trích cm t c trng ng ngha trong ting Vi t ix ({vnNounPhrase}) : NP1 ({vnWord}) : word ({vnNounPhrase}) : NP2 )+ :KNP --> { gate.AnnotationSet toNew = (gate.AnnotationSet)bindings.get("KNP"); gate.AnnotationSet wordSet = (gate.AnnotationSet)bindings.get("word"); Annotation wordAnnot = (Annotation)wordSet.iterator().next(); String lsWordString = (String)wordAnnot.getFeatures().get(gate.creole.vnPOSTagger.Ont_Consta nts.msStringFeature); if (lsWordString.equals("c\u00f3") || lsWordString.equals("bao g\u1ed3m") || lsWordString.equals("ch\u1ee9a")) { gate.AnnotationSet keyPhraseSet = (gate.AnnotationSet)bindings.get("NP2"); //get the tokens java.util.ArrayList tokens = new java.util.ArrayList(keyPhraseSet); //define a comparator for annotations by start offset Collections.sort(tokens, new gate.util.OffsetComparator()); String text = ""; Iterator tokIter = tokens.iterator(); while(tokIter.hasNext()) text += (String)((Annotation)tokIter.next()).getFeatures().get("string"); gate.FeatureMap features = Factory.newFeatureMap(); features.put("kind", "vnKeyNounPhrase"); features.put("string", text); features.put("length", Integer.toString(text.length())); features.put("orth", "KeyNP"); annotations.add(keyPhraseSet.firstNode(), keyPhraseSet.lastNode(), "vnKeyNounPhrase", features); } else if (lsWordString.equals("c\u1ee7a") || lsWordString.equals("thu\u1ed9c")) { gate.AnnotationSet keyPhraseSet = (gate.AnnotationSet)bindings.get("NP1"); //get the tokens java.util.ArrayList tokens = new java.util.ArrayList(keyPhraseSet); //define a comparator for annotations by start offset Collections.sort(tokens, new gate.util.OffsetComparator()); String text = ""; Iterator tokIter = tokens.iterator(); while(tokIter.hasNext()) text += (String)((Annotation)tokIter.next()).getFeatures().get("string"); gate.FeatureMap features = Factory.newFeatureMap(); features.put("kind", "vnKeyNounPhrase"); features.put("string", text); features.put("length", Integer.toString(text.length())); Mô hình rút trích cm t c trng ng ngha trong ting Vi t x features.put("orth", "KeyNP"); annotations.add(keyPhraseSet.firstNode(), keyPhraseSet.lastNode(), "vnKeyNounPhrase", features); } else if (lsWordString.equals("v\u00e0")|| lsWordString.equals("hay") || lsWordString.equals("ho\u1eb7c")) { gate.AnnotationSet keyPhraseSet1 = (gate.AnnotationSet)bindings.get("NP1"); gate.AnnotationSet keyPhraseSet2 = (gate.AnnotationSet)bindings.get("NP2"); //get the tokens java.util.ArrayList tokens1 = new java.util.ArrayList(keyPhraseSet1); java.util.ArrayList tokens2 = new java.util.ArrayList(keyPhraseSet2); //define a comparator for annotations by start offset Collections.sort(tokens1, new gate.util.OffsetComparator()); Collections.sort(tokens2, new gate.util.OffsetComparator()); String text1 = "", text2 = ""; Iterator tokIter = tokens1.iterator(); while(tokIter.hasNext()) text1 += (String)((Annotation)tokIter.next()).getFeatures().get("string"); tokIter = tokens2.iterator(); while(tokIter.hasNext()) text2 += (String)((Annotation)tokIter.next()).getFeatures().get("string"); gate.FeatureMap features1 = Factory.newFeatureMap(); features1.put("kind", "vnKeyNounPhrase"); features1.put("string", text1); features1.put("length", Integer.toString(text1.length())); features1.put("orth", "KeyNP"); annotations.add(keyPhraseSet1.firstNode(), keyPhraseSet1.lastNode(), "vnKeyNounPhrase", features1); gate.FeatureMap features2 = Factory.newFeatureMap(); features2.put("kind", "vnKeyNounPhrase"); features2.put("string", text2); features2.put("length", Integer.toString(text2.length())); features2.put("orth", "KeyNP"); annotations.add(keyPhraseSet2.firstNode(), keyPhraseSet2.lastNode(), "vnKeyNounPhrase", features2); } } Mô hình rút trích cm t c trng ng ngha trong ting Vi t xi PH LC C Tp m&u thu c t TREC ( , www.lexxe.com (Qiao, 2010) và www.vnexpress.net bao g m 2079 câu ting Anh c Hi Nghiên C u D#ch Thut Tp. H Chí Minh d#ch sang tp m&u câu ting Vit tng ng nh sau: VN TREC 07 1. Krugman vit cho t báo nào? 2. Krugman dy ti tr ng i h$c nào? 3. Krugman ã nhn bng tin s, ti tr ng i h$c nào? 4. Chuyên ngành ca Krugman là gì? 5. Krugman ã ot gii thng gì có ngu n gc t Tây Ban Nha? 6. Tiêu  ca các tp sách c vit bi Krugman là gì? 7. Nhng ng i ã b# Krugman ch( trích trong ct Ct op-ed là ai? 8. Công ty nào ã xu t bn các h s ca ông? 9. Tên thc ca ông là gì? 10. Ông ang d kin kt hôn vi ai? 11. Ông là ch t#ch ca công ty nào? 12. Ông ln lên  âu? 13. Tên ca các album th hin rõ Jay-Z là gì? 14. Darrell Hammond bao nhiêu tu"i? 15. Hammond tt nghip tr ng i h$c nào? 16. Thu nhp hng n m ca Hammond là bao nhiêu? 17. Hammond th ng xuyên xu t hin trên chng trình TV nào? 18. Các chng trình biu di-n ca Hammond xu t hin trên mng truyn hình nào? 19. Hammond ã óng vai chính trên chng trình Comedy Central nào? 20. Hammond ã th vai nhân vt nào? 21. Curveball ào ng! n m nào? 22. Culveball làm ngh gì? 23. Tên thc ca Curveball là gì? 24. C quan tình báo nào ã tuyn dng Curveball? 25. Các viên ch c chính ph nào ca Hoa K. ã ch p nhn tuyên b ca Curveball v phòng thí nghim v! khí ca Ir'c? 26. Hin nay Curveball ang sng  âu? 27. Ai là ng i ã thành lp công ty? 28. Công ty c thành lp vào n m nào? 29. Công ty nào ã thôn tính IMG vào n m 2004? 30. Thành viên hi  ng qun tr# IMG bao g m nhng ai? 31. Ai là ng i  ng u ca b phn sân gôn IMG ti B'c M,? 32. C quan IMG nào i din cho Vijay Singh? 33. Các ngôi sao th thao nào khác c IMG i din? 34. Mint t tr s  âu? 35. Mint c thành lp vào n m nào? 36. Mint là mt b phn ca ban ni các nào? 37. Ai là giám c ca Mint? 38. Mi tháng Mint sn xu t bao nhiêu  ng 10 xu? 39.  ng tin ca ngi hành trình ca Lewis và Clark có tên là gì? Mô hình rút trích cm t c trng ng ngha trong ting Vi t xii 40. Tên ca nhng ng i ã c xu t hin trên  ng tin ca Mint. 41. 3M c thành lp khi nào? 42. Công ty c t  âu? 43. Ai là CEO (Giám c iu hành) ca công ty? 44. Ai là ng i tin nhim CEO ca 3M? 45. 3M là vit t't cho cái gì? 46. #a ch( trên mng ca 3M là gì? 47. Nhãn hiu hàng hoá c 3M sn xu t là gì? 48. Ai là giám c iu hành? 49. Ngành ngh kinh doanh ch yu ca Merrill Lynch là gì? 50. Merrill Lynch t tr s  âu? 51. Các tr s ca Merrill Lynch c t trên  ng ph nào? 52. Công ty còn c bit ti bng tên khác là gì? 53. Tên nhng ng i có liên quan ti v kin vi Merrill Lynch 54. Ai là ch t#ch ca WWE? 55. Ai là giám c iu hành ca WWE? 56. WWE t tr s  âu? 57. WWE là vit t't cho cái gì? 58. WWE c phát trin t t" ch c nào trc ó? 59. Mng truyn hình cáp nào ã phát WWE? 60. Nhng ô vt nào ã xu t hin trong các s kin ca WWE? 61. Thm ho ã xy ra vào ngày nào? 62. Ai là ng i sng sót duy nh t? 63. Công ty nào s hu m/ Sago? 64. Bao nhiêu th m/ ã b# cht trong thm ho ó? 65. M/ Sago nm  bang nào? 66. T" ch c nào ã kho sát v thm h$a ó? 67. Ai là nhng nn nhân ca thm ho ó? 68. Bà ã rút kh/i s b" nhim vào ngày nào? 69. Bà ã c b" nhim cho ch c v ó vào ngày nào? 70. Bà có th s) giành v# trí ca ai ti Toà án Ti cao? 71. Ai ã b" nhim Miers? 72. Ng i này ã da vào tiêu chu0n nào  vin d&n cho vic b" nhim Miers? 73. Harriet Miers bao nhiêu tu"i? 74. Nhng ngh# s, Cng hoà nào ã ng h vic b" nhim này? 75. Ai ã b# Blake cáo buc git ng i? 76. Toà án b't u sàng l$c thành viên ban hi th0m d kin vào ngày nào? 77. Phiên toà xét x kt thúc vào ngày nào? ' 78. Ai ã b# xét x trong phiên toà? 79. Phiên toà có phán quyt nh th nào? 80. Lut s nào là bên nguyên cui cùng? 81. Nhng ai là ng i làm ch ng trong phiên toà xét x? 82. Madness kéo dài trong bao lâu? 83. T ng lóng nào khác cho Madness là gì? 84. Khi nào là êm kt thúc ca Madne