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.
40 trang |
Chia sẻ: vietpd | Lượt xem: 5481 | Lượt tải: 0
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
ngun tài nguyên Wikipedia. JWPL cung
c p các chc n
ng rút trích và tìm kim các tri thc 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
hng - trang cha 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 hng - 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ó cha 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 cha 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 cha 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 PHM 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. Vn phm JAPE
V
n phm JAPE bao gm mt tp các công on, mi công on bao gm 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 gm hai phn: phn
bên trái và phn bên phi.
Phn bên trái ca lut cha mt m&u chú gii. Trong m&u chú gii có th cha
các toán hng ca biu thc 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 vn 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" chc,… 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 gm 2079 câu ting Anh c Hi Nghiên Cu
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ó ngun 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 chc 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 gm 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" chc 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" chc 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 chc 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 chng 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