judy4444 commited on
Commit
07a0bf2
·
verified ·
1 Parent(s): bd189f7

Upload 18 files

Browse files
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright 2023 New York University Abu Dhabi
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
__init__.py ADDED
File without changes
api.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from fastapi import FastAPI, HTTPException
3
+ from fastapi.middleware.cors import CORSMiddleware
4
+ from pydantic import BaseModel
5
+
6
+
7
+ from nlp import process_full_document_pipeline, build_knowledge_graph_json
8
+
9
+
10
+ app = FastAPI(title="Text2Tale - Get Knowledge Graph From Text", version="1.0")
11
+
12
+ app.add_middleware(
13
+ CORSMiddleware,
14
+ allow_origins=["*"],
15
+ allow_credentials=True,
16
+ allow_methods=["*"],
17
+ allow_headers=["*"],
18
+ )
19
+
20
+ class GraphRequest(BaseModel):
21
+ text: str
22
+
23
+ @app.post("/generate_graph")
24
+ async def generate_graph_api(request: GraphRequest):
25
+ try:
26
+ camel_path = os.path.dirname(os.path.abspath(__file__))
27
+
28
+ extracted_relations = process_full_document_pipeline(
29
+ full_text=request.text,
30
+ camel_parser_path=camel_path
31
+ )
32
+ if not extracted_relations:
33
+ return {
34
+ "message": "لم يتم استخراج أي علاقات من النص.",
35
+ "triplets": [],
36
+ "graph": {"nodes": [], "edges": []}
37
+ }
38
+
39
+ graph_data = build_knowledge_graph_json(extracted_relations)
40
+
41
+ return {
42
+ "message": "تم بناء الغراف المعرفي بنجاح",
43
+ "triplets": extracted_relations,
44
+ "graph": graph_data
45
+ }
46
+
47
+ except Exception as e:
48
+ # التقاط أي خطأ وإرجاعه بشكل مقروء
49
+ raise HTTPException(status_code=500, detail=f"حدث خطأ : {str(e)}")
data/clitic_feats.csv ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ deciding_feat,clitic,catib6,pos,gloss,prc3,prc2,prc1,prc0,per,asp,vox,mod,gen,num,stt,cas,enc0,rat
2
+ enc0:1p_dobj,nA,NOM,pron,clitic,0,0,0,0,1,na,na,na,m,p,d,a,0,na
3
+ enc0:1p_poss,nA,NOM,pron,clitic,0,0,0,0,1,na,na,na,m,p,d,g,0,na
4
+ enc0:1p_pron,nA,NOM,pron,clitic,0,0,0,0,1,na,na,na,m,p,d,u,0,na
5
+ enc0:1s_dobj,ny,NOM,pron,clitic,0,0,0,0,1,na,na,na,m,s,d,a,0,na
6
+ enc0:1s_poss,y,NOM,pron,clitic,0,0,0,0,1,na,na,na,m,s,d,g,0,na
7
+ enc0:1s_pron,ny,NOM,pron,clitic,0,0,0,0,1,na,na,na,m,s,d,u,0,na
8
+ enc0:1s_pron,y,NOM,pron,clitic,0,0,0,0,1,na,na,na,m,s,d,u,0,na
9
+ enc0:2d_dobj,kmA,NOM,pron,clitic,0,0,0,0,2,na,na,na,m,d,d,a,0,na
10
+ enc0:2d_poss,kmA,NOM,pron,clitic,0,0,0,0,2,na,na,na,m,d,d,g,0,na
11
+ enc0:2d_pron,kmA,NOM,pron,clitic,0,0,0,0,2,na,na,na,m,d,d,u,0,na
12
+ enc0:2fp_dobj,kn,NOM,pron,clitic,0,0,0,0,2,na,na,na,f,p,d,a,0,na
13
+ enc0:2fp_poss,kn,NOM,pron,clitic,0,0,0,0,2,na,na,na,f,p,d,g,0,na
14
+ enc0:2fp_pron,kn,NOM,pron,clitic,0,0,0,0,2,na,na,na,f,p,d,u,0,na
15
+ enc0:2fs_dobj,k,NOM,pron,clitic,0,0,0,0,2,na,na,na,f,s,d,a,0,na
16
+ enc0:2fs_poss,k,NOM,pron,clitic,0,0,0,0,2,na,na,na,f,s,d,g,0,na
17
+ enc0:2fs_pron,k,NOM,pron,clitic,0,0,0,0,2,na,na,na,f,s,d,u,0,na
18
+ enc0:2mp_dobj,km,NOM,pron,clitic,0,0,0,0,2,na,na,na,m,p,d,a,0,na
19
+ enc0:2mp_poss,km,NOM,pron,clitic,0,0,0,0,2,na,na,na,m,p,d,g,0,na
20
+ enc0:2mp_pron,km,NOM,pron,clitic,0,0,0,0,2,na,na,na,m,p,d,u,0,na
21
+ enc0:2ms_dobj,k,NOM,pron,clitic,0,0,0,0,2,na,na,na,m,s,d,a,0,na
22
+ enc0:2ms_poss,k,NOM,pron,clitic,0,0,0,0,2,na,na,na,m,s,d,g,0,na
23
+ enc0:2ms_pron,k,NOM,pron,clitic,0,0,0,0,2,na,na,na,m,s,d,u,0,na
24
+ enc0:3d_dobj,hmA,NOM,pron,clitic,0,0,0,0,3,na,na,na,m,d,d,a,0,na
25
+ enc0:3d_poss,hmA,NOM,pron,clitic,0,0,0,0,3,na,na,na,m,d,d,g,0,na
26
+ enc0:3d_pron,hmA,NOM,pron,clitic,0,0,0,0,3,na,na,na,m,d,d,u,0,na
27
+ enc0:3fp_dobj,hn,NOM,pron,clitic,0,0,0,0,3,na,na,na,f,p,d,a,0,na
28
+ enc0:3fp_poss,hn,NOM,pron,clitic,0,0,0,0,3,na,na,na,f,p,d,g,0,na
29
+ enc0:3fp_pron,hn,NOM,pron,clitic,0,0,0,0,3,na,na,na,f,p,d,u,0,na
30
+ enc0:3fs_dobj,hA,NOM,pron,clitic,0,0,0,0,3,na,na,na,f,s,d,a,0,na
31
+ enc0:3fs_poss,hA,NOM,pron,clitic,0,0,0,0,3,na,na,na,f,s,d,g,0,na
32
+ enc0:3fs_pron,hA,NOM,pron,clitic,0,0,0,0,3,na,na,na,f,s,d,u,0,na
33
+ enc0:3mp_dobj,hm,NOM,pron,clitic,0,0,0,0,3,na,na,na,m,p,d,a,0,na
34
+ enc0:3mp_poss,hm,NOM,pron,clitic,0,0,0,0,3,na,na,na,m,p,d,g,0,na
35
+ enc0:3mp_pron,hm,NOM,pron,clitic,0,0,0,0,3,na,na,na,m,p,d,u,0,na
36
+ enc0:3ms_dobj,h,NOM,pron,clitic,0,0,0,0,3,na,na,na,m,s,d,a,0,na
37
+ enc0:3ms_poss,h,NOM,pron,clitic,0,0,0,0,3,na,na,na,m,s,d,g,0,na
38
+ enc0:3ms_pron,h,NOM,pron,clitic,0,0,0,0,3,na,na,na,m,s,d,u,0,na
39
+ enc0:Ah_voc,Ah,PRT,part_voc,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
40
+ enc0:lA_neg,lA,PRT,part_neg,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
41
+ enc0:mA_interrog,mA,NOM,pron_interrog,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
42
+ enc0:mA_rel,mA,NOM,pron_rel,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
43
+ enc0:mA_sub,mA,PRT,conj,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
44
+ enc0:ma_interrog,mA,NOM,pron_interrog,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
45
+ enc0:ma_interrog,m,NOM,pron_interrog,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
46
+ enc0:ma_rel,m,NOM,pron_rel,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
47
+ enc0:ma_sub,m,PRT,conj,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
48
+ enc0:man_interrog,mn,NOM,pron_interrog,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
49
+ enc0:man_rel,mn,NOM,pron_rel,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
50
+ prc0:lA_neg,lA,PRT,part_neg,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
51
+ prc0:mA_neg,mA,PRT,part_neg,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
52
+ prc0:mA_part,mA,PRT,part,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
53
+ prc0:mA_rel,mA,NOM,pron_rel,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
54
+ prc1:bi_part,b,PRT,part,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
55
+ prc1:bi_prep,b,PRT,prep,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
56
+ prc1:fiy_prep,fy,PRT,prep,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
57
+ prc1:hA_dem,hA,PRT,part,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
58
+ prc1:ka_prep,k,PRT,prep,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
59
+ prc1:la_emph,l,PRT,part,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
60
+ prc1:la_prep,l,PRT,prep,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
61
+ prc1:la_rc,l,PRT,part,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
62
+ prc1:li_jus,l,PRT,part_verb,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
63
+ prc1:li_conj,l,PRT,conj,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
64
+ prc1:li_sub,l,PRT,conj_sub,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
65
+ prc1:li_prep,l,PRT,prep,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
66
+ prc1:sa_fut,s,PRT,part_fut,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
67
+ prc1:ta_prep,t,PRT,prep,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
68
+ prc1:wA_voc,wA,PRT,part_voc,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
69
+ prc1:wa_prep,w,PRT,prep,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
70
+ prc1:yA_voc,yA,PRT,part_voc,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
71
+ prc2:fa_conj,f,PRT,conj,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
72
+ prc2:fa_conn,f,PRT,part,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
73
+ prc2:fa_rc,f,PRT,part,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
74
+ prc2:fa_sub,f,PRT,conj,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
75
+ prc2:wa_conj,w,PRT,conj,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
76
+ prc2:wa_part,w,PRT,part,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
77
+ prc2:wa_sub,w,PRT,conj,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
78
+ prc3:>a_ques,>,PRT,part_interrog,clitic,0,0,0,na,na,na,na,na,na,na,na,na,0,na
data/samples/input_text.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ فاتصل علي أحد أصدقائي وقال لي: إني متواجد أمام بيتك،
2
+ فنزلت وسلمت عليه قبل أن أسافر،
3
+ وبعدها جاء أصدقائي وذهبت معهم،
4
+ كان في طريقي إلى المطار حادث وخشيت أن تفوتني الرحلة،
5
+ وهل سيشرحونها؟
data/samples/input_tok_tagged.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ (جامعة, NOM) (نيويورك, PROP) (أبو, PROP) (ظبي, PROP) (تنشر, VRB) (أول, NOM) (أطلس, NOM) (ل+, PRT) (كوكب, NOM) (المريخ, PROP) (ب+, PRT) (اللغة, NOM) (العربية, NOM) (., PNX)
2
+
data/samples/input_tokenized.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ ف+ اتصل على +ي أحد أصدقاء +ي و+ قال ل +ي : أن +ني متواجد أمام بيت +ك ,
data/samples/multiple_text_samples/sample_1.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ فاتصل علي أحد أصدقائي وقال لي: إني متواجد أمام بيتك،
2
+ فنزلت وسلمت عليه قبل أن أسافر،
3
+ وبعدها جاء أصدقائي وذهبت معهم،
data/samples/multiple_text_samples/sample_2.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ كان في طريقي إلى المطار حادث وخشيت أن تفوتني الرحلة،
2
+ وهل سيشرحونها؟
data/samples/multiple_text_samples_output/sample_1.txt ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # text = فاتصل علي أحد أصدقائي وقال لي: إني متواجد أمام بيتك،
2
+ # treeTokens = ف+ اتصل على +ي أحد أصدقاء +ي و+ قال ل +ي : أن +ني متواجد أمام بيت +ك ,
3
+ 1 ف+ ف+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 2 MOD _ _
4
+ 2 اتصل ٱتصل VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|per=3|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|enc0=0|rat=n|token_type=baseword 0 --- _ _
5
+ 3 على على PRT _ ud=ADP|pos=prep|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 2 MOD _ _
6
+ 4 +ي +ي NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=u|per=1|rat=na|token_type=enc0 3 OBJ _ _
7
+ 5 أحد أحد NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=n|per=na|rat=i|token_type=baseword 2 SBJ _ _
8
+ 6 أصدقاء صديق NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=p|stt=c|cas=u|per=na|rat=r|token_type=baseword 5 IDF _ _
9
+ 7 +ي +ي NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=g|per=1|rat=na|token_type=enc0 6 IDF _ _
10
+ 8 و+ و+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 2 MOD _ _
11
+ 9 قال قال VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|per=3|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|enc0=0|rat=n|token_type=baseword 8 OBJ _ _
12
+ 10 ل ل PRT _ ud=ADP|pos=prep|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 9 MOD _ _
13
+ 11 +ي +ي NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=u|per=1|rat=na|token_type=enc0 10 OBJ _ _
14
+ 12 : : PNX _ ud=PUNCT|pos=punc|prc3=na|prc2=na|prc1=na|prc0=na|enc0=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 9 MOD _ _
15
+ 13 أن أن PRT _ ud=SCONJ|pos=conj_sub|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 9 OBJ _ _
16
+ 14 +ني +ني NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=u|per=1|rat=na|token_type=enc0 13 SBJ _ _
17
+ 15 متواجد متواجد NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=i|cas=n|per=na|rat=r|token_type=baseword 13 PRD _ _
18
+ 16 أمام أمام NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=a|per=na|rat=i|token_type=baseword 15 MOD _ _
19
+ 17 بيت بيت NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=g|per=na|rat=i|token_type=baseword 16 IDF _ _
20
+ 18 +ك +ك NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=g|per=2|rat=na|token_type=enc0 17 IDF _ _
21
+ 19 , , PNX _ ud=PUNCT|pos=punc|prc3=na|prc2=na|prc1=na|prc0=na|enc0=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 2 MOD _ _
22
+
23
+ # text = فنزلت وسلمت عليه قبل أن أسافر،
24
+ # treeTokens = ف+ نزلت و+ سلمت على +ه قبل أن أسافر ,
25
+ 1 ف+ ف+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 2 MOD _ _
26
+ 2 نزلت نزل VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|per=1|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|enc0=0|rat=n|token_type=baseword 0 --- _ _
27
+ 3 و+ و+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 2 MOD _ _
28
+ 4 سلمت سلم VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|per=1|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|enc0=0|rat=n|token_type=baseword 3 OBJ _ _
29
+ 5 على على PRT _ ud=ADP|pos=prep|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 4 MOD _ _
30
+ 6 +ه +ه NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=u|per=3|rat=na|token_type=enc0 5 OBJ _ _
31
+ 7 قبل قبل NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=a|per=na|rat=i|token_type=baseword 4 MOD _ _
32
+ 8 أن أن PRT _ ud=SCONJ|pos=conj_sub|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 7 IDF _ _
33
+ 9 أسافر سافر VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=i|vox=a|mod=u|gen=m|num=s|stt=na|cas=na|per=1|rat=n|token_type=baseword 8 OBJ _ _
34
+ 10 , , PNX _ ud=PUNCT|pos=punc|prc3=na|prc2=na|prc1=na|prc0=na|enc0=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 2 MOD _ _
35
+
36
+ # text = وبعدها جاء أصدقائي وذهبت معهم،
37
+ # treeTokens = و+ بعد +ها جاء أصدقاء +ي و+ ذهبت NOAN ,
38
+ 1 و+ و+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 4 MOD _ _
39
+ 2 بعد بعد NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|per=na|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=a|enc0=0|rat=i|token_type=baseword 4 MOD _ _
40
+ 3 +ها +ها NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|per=3|asp=na|vox=na|mod=na|gen=f|num=s|stt=d|cas=g|enc0=0|rat=na|token_type=enc0 2 IDF _ _
41
+ 4 جاء جاء VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|per=3|rat=n|token_type=baseword 0 --- _ _
42
+ 5 أصدقاء صديق NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=p|stt=c|cas=u|per=na|rat=r|token_type=baseword 4 SBJ _ _
43
+ 6 +ي +ي NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=g|per=1|rat=na|token_type=enc0 5 IDF _ _
44
+ 7 و+ و+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 4 MOD _ _
45
+ 8 ذهبت ذهب VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|per=1|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|enc0=0|rat=n|token_type=baseword 7 OBJ _ _
46
+ 9 NOAN معهم PROP _ ud=PROPN|pos=noun_prop|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=-|num=-|stt=i|cas=u|per=na|rat=i|token_type=baseword 8 MOD _ _
47
+ 10 , , PNX _ ud=PUNCT|pos=punc|prc3=na|prc2=na|prc1=na|prc0=na|enc0=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 4 MOD _ _
48
+
data/samples/multiple_text_samples_output/sample_2.txt ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # text = كان في طريقي إلى المطار حادث وخشيت أن تفوتني الرحلة،
2
+ # treeTokens = كان في طريق +ي إلى المطار حادث و+ خشيت أن تفوت +ني الرحلة ,
3
+ 1 كان كان VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|per=3|rat=n|token_type=baseword 0 --- _ _
4
+ 2 في في PRT _ ud=ADP|pos=prep|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 1 PRD _ _
5
+ 3 طريق طريق NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=u|per=na|rat=i|token_type=baseword 2 OBJ _ _
6
+ 4 +ي +ي NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=g|per=1|rat=na|token_type=enc0 3 IDF _ _
7
+ 5 إلى إلى PRT _ ud=ADP|pos=prep|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 3 MOD _ _
8
+ 6 المطار مطار NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=Al_det|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=g|per=na|rat=i|token_type=baseword 5 OBJ _ _
9
+ 7 حادث حادث NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=i|cas=n|per=na|rat=i|token_type=baseword 1 SBJ _ _
10
+ 8 و+ و+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 1 MOD _ _
11
+ 9 خشيت خشي VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|per=1|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|enc0=0|rat=n|token_type=baseword 8 OBJ _ _
12
+ 10 أن أن PRT _ ud=SCONJ|pos=conj_sub|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 9 OBJ _ _
13
+ 11 تفوت فات VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=i|vox=a|mod=u|gen=f|num=s|stt=na|cas=na|per=3|rat=n|token_type=baseword 10 OBJ _ _
14
+ 12 +ني +ني NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=a|per=1|rat=na|token_type=enc0 11 OBJ _ _
15
+ 13 الرحلة رحلة NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=Al_det|enc0=0|asp=na|vox=na|mod=na|gen=f|num=s|stt=d|cas=n|per=na|rat=i|token_type=baseword 11 SBJ _ _
16
+ 14 , , PNX _ ud=PUNCT|pos=punc|prc3=na|prc2=na|prc1=na|prc0=na|enc0=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 1 MOD _ _
17
+
18
+ # text = وهل سيشرحونها؟
19
+ # treeTokens = و+ هل س+ يشرحون +ها ?
20
+ 1 و+ و+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 4 MOD _ _
21
+ 2 هل هل PRT _ ud=PART|pos=part_interrog|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=baseword 4 MOD _ _
22
+ 3 س+ س+ PRT _ ud=AUX|pos=part_fut|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc1 4 MOD _ _
23
+ 4 يشرحون شرح VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|per=3|asp=i|vox=a|mod=i|gen=m|num=p|stt=na|cas=na|enc0=0|rat=n|token_type=baseword 0 --- _ _
24
+ 5 +ها +ها NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|per=3|asp=na|vox=na|mod=na|gen=f|num=s|stt=d|cas=a|enc0=0|rat=na|token_type=enc0 4 OBJ _ _
25
+ 6 ? ? PNX _ ud=PUNCT|pos=punc|prc3=na|prc2=na|prc1=na|prc0=na|enc0=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 4 MOD _ _
26
+
data/samples/output_parse_tok.conllx ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # text = جامعة نيويورك أبو ظبي تنشر أول أطلس ل+ كوكب المريخ ب+ اللغة العربية
2
+ # treeTokens = جامعة نيويورك أبو ظبي تنشر أول أطلس ل+ كوكب المريخ ب+ اللغة العربية
3
+ 1 جامعة _ UNK _ _ 5 SBJ _ _
4
+ 2 نيويورك _ UNK _ _ 1 IDF _ _
5
+ 3 أبو _ UNK _ _ 1 MOD _ _
6
+ 4 ظبي _ UNK _ _ 3 --- _ _
7
+ 5 تنشر _ UNK _ _ 0 --- _ _
8
+ 6 أول _ UNK _ _ 5 OBJ _ _
9
+ 7 أطلس _ UNK _ _ 6 IDF _ _
10
+ 8 ل+ _ UNK _ _ 7 MOD _ _
11
+ 9 كوكب _ UNK _ _ 8 OBJ _ _
12
+ 10 المريخ _ UNK _ _ 9 IDF _ _
13
+ 11 ب+ _ UNK _ _ 6 MOD _ _
14
+ 12 اللغة _ UNK _ _ 11 OBJ _ _
15
+ 13 العربية _ UNK _ _ 12 MOD _ _
16
+
data/samples/output_text.conllx ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # text = فاتصل علي أحد أصدقائي وقال لي: إني متواجد أمام بيتك،
2
+ # treeTokens = ف+ اتصل على +ي أحد أصدقاء +ي و+ قال ل +ي : أن +ني متواجد أمام بيت +ك ,
3
+ 1 ف+ ف+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 2 MOD _ _
4
+ 2 اتصل ٱتصل VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|per=3|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|enc0=0|rat=n|token_type=baseword 0 --- _ _
5
+ 3 على على PRT _ ud=ADP|pos=prep|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 2 MOD _ _
6
+ 4 +ي +ي NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=u|per=1|rat=na|token_type=enc0 3 OBJ _ _
7
+ 5 أحد أحد NOM _ ud=NUM|pos=noun_num|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=n|per=na|rat=n|token_type=baseword 2 SBJ _ _
8
+ 6 أصدقاء صديق NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=p|stt=c|cas=u|per=na|rat=r|token_type=baseword 5 IDF _ _
9
+ 7 +ي +ي NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=g|per=1|rat=na|token_type=enc0 6 IDF _ _
10
+ 8 و+ و+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 2 MOD _ _
11
+ 9 قال قال VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|per=3|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|enc0=0|rat=n|token_type=baseword 8 OBJ _ _
12
+ 10 ل ل PRT _ ud=ADP|pos=prep|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 9 MOD _ _
13
+ 11 +ي +ي NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=u|per=1|rat=na|token_type=enc0 10 OBJ _ _
14
+ 12 : : PNX _ ud=PUNCT|pos=punc|prc3=na|prc2=na|prc1=na|prc0=na|enc0=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 9 MOD _ _
15
+ 13 أن أن PRT _ ud=SCONJ|pos=conj_sub|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 9 OBJ _ _
16
+ 14 +ني +ني NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=u|per=1|rat=na|token_type=enc0 13 SBJ _ _
17
+ 15 متواجد متواجد NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=i|cas=n|per=na|rat=r|token_type=baseword 13 PRD _ _
18
+ 16 أمام أمام NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=a|per=na|rat=i|token_type=baseword 15 MOD _ _
19
+ 17 بيت بيت NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=g|per=na|rat=i|token_type=baseword 16 IDF _ _
20
+ 18 +ك +ك NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=g|per=2|rat=na|token_type=enc0 17 IDF _ _
21
+ 19 , , PNX _ ud=PUNCT|pos=punc|prc3=na|prc2=na|prc1=na|prc0=na|enc0=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 2 MOD _ _
22
+
23
+ # text = فنزلت وسلمت عليه قبل أن أسافر،
24
+ # treeTokens = ف+ نزلت و+ سلمت على +ه قبل أن أسافر ,
25
+ 1 ف+ ف+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 2 MOD _ _
26
+ 2 نزلت نزل VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|per=1|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|enc0=0|rat=n|token_type=baseword 0 --- _ _
27
+ 3 و+ و+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 2 MOD _ _
28
+ 4 سلمت سلم VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|per=1|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|enc0=0|rat=n|token_type=baseword 3 OBJ _ _
29
+ 5 على على PRT _ ud=ADP|pos=prep|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 4 MOD _ _
30
+ 6 +ه +ه NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=u|per=3|rat=na|token_type=enc0 5 OBJ _ _
31
+ 7 قبل قبل NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=a|per=na|rat=i|token_type=baseword 4 MOD _ _
32
+ 8 أن أن PRT _ ud=SCONJ|pos=conj_sub|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 7 IDF _ _
33
+ 9 أسافر سافر VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=i|vox=a|mod=s|gen=m|num=s|stt=na|cas=na|per=1|rat=n|token_type=baseword 8 OBJ _ _
34
+ 10 , , PNX _ ud=PUNCT|pos=punc|prc3=na|prc2=na|prc1=na|prc0=na|enc0=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 2 MOD _ _
35
+
36
+ # text = وبعدها جاء أصدقائي وذهبت معهم،
37
+ # treeTokens = و+ بعد +ها جاء أصدقاء +ي و+ ذهبت مع +هم ,
38
+ 1 و+ و+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 4 MOD _ _
39
+ 2 بعد بعد NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|per=na|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=a|enc0=0|rat=i|token_type=baseword 4 MOD _ _
40
+ 3 +ها +ها NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|per=3|asp=na|vox=na|mod=na|gen=f|num=s|stt=d|cas=g|enc0=0|rat=na|token_type=enc0 2 IDF _ _
41
+ 4 جاء جاء VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|per=3|rat=n|token_type=baseword 0 --- _ _
42
+ 5 أصدقاء صديق NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=p|stt=c|cas=u|per=na|rat=r|token_type=baseword 4 SBJ _ _
43
+ 6 +ي +ي NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=g|per=1|rat=na|token_type=enc0 5 IDF _ _
44
+ 7 و+ و+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 4 MOD _ _
45
+ 8 ذهبت ذهب VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|per=1|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|enc0=0|rat=n|token_type=baseword 7 OBJ _ _
46
+ 9 مع مع NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=a|per=na|rat=i|token_type=baseword 8 MOD _ _
47
+ 10 +هم +هم NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=p|stt=d|cas=g|per=3|rat=na|token_type=enc0 9 IDF _ _
48
+ 11 , , PNX _ ud=PUNCT|pos=punc|prc3=na|prc2=na|prc1=na|prc0=na|enc0=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 4 MOD _ _
49
+
50
+ # text = كان في طريقي إلى المطار حادث وخشيت أن تفوتني الرحلة،
51
+ # treeTokens = كان في طريق +ي إلى المطار حادث و+ خشيت أن تفوت +ني الرحلة ,
52
+ 1 كان كان VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|per=3|rat=n|token_type=baseword 0 --- _ _
53
+ 2 في في PRT _ ud=ADP|pos=prep|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 1 PRD _ _
54
+ 3 طريق طريق NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=c|cas=u|per=na|rat=i|token_type=baseword 2 OBJ _ _
55
+ 4 +ي +ي NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=g|per=1|rat=na|token_type=enc0 3 IDF _ _
56
+ 5 إلى إلى PRT _ ud=ADP|pos=prep|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 3 MOD _ _
57
+ 6 المطار مطار NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=Al_det|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=g|per=na|rat=i|token_type=baseword 5 OBJ _ _
58
+ 7 حادث حادث NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=i|cas=n|per=na|rat=i|token_type=baseword 1 SBJ _ _
59
+ 8 و+ و+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 1 MOD _ _
60
+ 9 خشيت خشي VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|per=1|asp=p|vox=a|mod=i|gen=m|num=s|stt=na|cas=na|enc0=0|rat=n|token_type=baseword 8 OBJ _ _
61
+ 10 أن أن PRT _ ud=SCONJ|pos=conj_sub|prc3=0|prc2=0|prc1=0|prc0=na|enc0=0|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 9 OBJ _ _
62
+ 11 تفوت فات VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=i|vox=a|mod=i|gen=f|num=s|stt=na|cas=na|per=3|rat=n|token_type=baseword 10 OBJ _ _
63
+ 12 +ني +ني NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|enc0=0|asp=na|vox=na|mod=na|gen=m|num=s|stt=d|cas=a|per=1|rat=na|token_type=enc0 11 OBJ _ _
64
+ 13 الرحلة رحلة NOM _ ud=NOUN|pos=noun|prc3=0|prc2=0|prc1=0|prc0=Al_det|enc0=0|asp=na|vox=na|mod=na|gen=f|num=s|stt=d|cas=n|per=na|rat=i|token_type=baseword 11 SBJ _ _
65
+ 14 , , PNX _ ud=PUNCT|pos=punc|prc3=na|prc2=na|prc1=na|prc0=na|enc0=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 1 MOD _ _
66
+
67
+ # text = وهل سيشرحونها؟
68
+ # treeTokens = و+ هل س+ يشرحون +ها ?
69
+ 1 و+ و+ PRT _ ud=CCONJ|pos=conj|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc2 4 MOD _ _
70
+ 2 هل هل PRT _ ud=PART|pos=part_interrog|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=baseword 4 MOD _ _
71
+ 3 س+ س+ PRT _ ud=AUX|pos=part_fut|prc3=0|prc2=0|prc1=0|prc0=na|per=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|enc0=0|rat=na|token_type=prc1 4 MOD _ _
72
+ 4 يشرحون شرح VRB _ ud=VERB|pos=verb|prc3=0|prc2=0|prc1=0|prc0=0|per=3|asp=i|vox=a|mod=i|gen=m|num=p|stt=na|cas=na|enc0=0|rat=n|token_type=baseword 0 --- _ _
73
+ 5 +ها +ها NOM _ ud=PRON|pos=pron|prc3=0|prc2=0|prc1=0|prc0=0|per=3|asp=na|vox=na|mod=na|gen=f|num=s|stt=d|cas=a|enc0=0|rat=na|token_type=enc0 4 OBJ _ _
74
+ 6 ? ? PNX _ ud=PUNCT|pos=punc|prc3=na|prc2=na|prc1=na|prc0=na|enc0=na|asp=na|vox=na|mod=na|gen=na|num=na|stt=na|cas=na|per=na|rat=na|token_type=baseword 4 MOD _ _
75
+
data/samples/output_tok_tagged.conllx ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # text = جامعة نيويورك أبو ظبي تنشر أول أطلس ل+ كوكب المريخ ب+ اللغة العربية .
2
+ # treeTokens = جامعة نيويورك أبو ظبي تنشر أول أطلس ل+ كوكب المريخ ب+ اللغة العربية .
3
+ 1 جامعة _ NOM _ _ 5 SBJ _ _
4
+ 2 نيويورك _ PROP _ _ 1 IDF _ _
5
+ 3 أبو _ PROP _ _ 1 MOD _ _
6
+ 4 ظبي _ PROP _ _ 3 --- _ _
7
+ 5 تنشر _ VRB _ _ 0 --- _ _
8
+ 6 أول _ NOM _ _ 5 OBJ _ _
9
+ 7 أطلس _ NOM _ _ 6 IDF _ _
10
+ 8 ل+ _ PRT _ _ 6 MOD _ _
11
+ 9 كوكب _ NOM _ _ 8 OBJ _ _
12
+ 10 المريخ _ PROP _ _ 9 IDF _ _
13
+ 11 ب+ _ PRT _ _ 6 MOD _ _
14
+ 12 اللغة _ NOM _ _ 11 OBJ _ _
15
+ 13 العربية _ NOM _ _ 12 MOD _ _
16
+ 14 . _ PNX _ _ 5 MOD _ _
17
+
download_models.py ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ from pathlib import Path
2
+ from src.utils.model_downloader import download_default_models
3
+
4
+ if __name__ == "__main__":
5
+ download_default_models(Path('models'))
handle_multiple_conll_files.py ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Script to handle multiple conll files.
3
+
4
+ Usage:
5
+ text_to_conll_cli (-i <input> | --input=<input>)
6
+ (-o <output> | --output=<output>)
7
+ [-m <model> | --model=<model>]
8
+ text_to_conll_cli (-h | --help)
9
+
10
+ Options:
11
+ -i <input> --input=<input>
12
+ A directory of conll files
13
+ -o <output> --output=<output>
14
+ The directory to save the parsed CoNLL-X files
15
+ -m <model> --model=<model>
16
+ The name BERT model used to parse (to be placed in the model directory) [default: catib]
17
+ -h --help
18
+ Show this screen.
19
+ """
20
+
21
+ import os
22
+ from pathlib import Path
23
+ import re
24
+ from typing import List
25
+ from src.classes import ConllParams
26
+ from src.conll_output import save_to_file, text_tuples_to_string
27
+ from src.data_preparation import parse_text
28
+ from src.utils.model_downloader import get_model_name
29
+ from docopt import docopt
30
+ from pandas import read_csv
31
+ from transformers.utils import logging
32
+
33
+ logging.set_verbosity_error()
34
+
35
+ arguments = docopt(__doc__)
36
+
37
+ def get_list_of_comments(conll_lines) -> List[List[str]]:
38
+ """Initializes the class variable comments as a list of lists of comments.
39
+ Within the comments list:
40
+ Each list represents the comments of the given tree.
41
+
42
+ An empty list represents a tree with no comments.
43
+
44
+ Returns:
45
+ List[List[str]]: a list of lists of comments
46
+ """
47
+ # get lines starting with # and blank lines
48
+ # the blank lines represent the end of the tree/tree comments.
49
+ matcher = re.compile(r'^(# text.*)$', re.MULTILINE)
50
+
51
+ # a flat list of all comments
52
+ lines: List[str] = matcher.findall(conll_lines)
53
+
54
+ lines = [line[9:] for line in lines]
55
+ # # create a list of lists of comments
56
+ # final_list: List[List[str]] = []
57
+ # temp_list: List[str] = []
58
+ # for line in lines:
59
+ # if line == '': # an empty string represents the end of comments of the given tree.
60
+ # final_list.append(temp_list)
61
+ # temp_list = []
62
+ # else:
63
+ # temp_list.append(line)
64
+ return lines
65
+
66
+
67
+ def main():
68
+ root_dir = Path(__file__).parent
69
+ model_path = root_dir/"models"
70
+
71
+ #
72
+ ### Get clitic features
73
+ #
74
+ clitic_feats_df = read_csv(root_dir / 'data/clitic_feats.csv')
75
+ clitic_feats_df = clitic_feats_df.astype(str).astype(object) # so ints read are treated as string objects
76
+
77
+
78
+ #
79
+ ### cli user input ###
80
+ #
81
+ input_path = arguments['--input']
82
+ output_path = arguments['--output']
83
+ parse_model = arguments['--model']
84
+
85
+ #
86
+ ### Set up parsing model
87
+ # (download defaults models, and get correct model name from the models directory)
88
+ #
89
+ model_name = get_model_name(parse_model, model_path=model_path)
90
+
91
+ #
92
+ ### main code ###
93
+ #
94
+ for root, _, files in os.walk(input_path):
95
+ for text_file in files:
96
+ print(f'processing {text_file}')
97
+ file_type_params = ConllParams(str(Path(input_path) / text_file), model_path/model_name)
98
+ parsed_text_tuples = parse_text("conll", file_type_params)
99
+
100
+ lines = []
101
+ with open(f'{root}/{text_file}', 'r') as f:
102
+ lines = [line for line in f.readlines() if line.strip()]
103
+
104
+ lines = get_list_of_comments(''.join(lines))
105
+
106
+ conll_name = f"{'.'.join(text_file.split('.')[:-1])}.conllx"
107
+ save_to_file(
108
+ text_tuples_to_string(parsed_text_tuples, file_type='conll', sentences=lines),
109
+ Path(output_path) / conll_name
110
+ )
111
+
112
+ if __name__ == '__main__':
113
+ main()
handle_multiple_texts.py ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Script to handle multiple texts.
3
+
4
+ Usage:
5
+ text_to_conll_cli (-i <input> | --input=<input>)
6
+ (-o <output> | --output=<output>)
7
+ [-m <model> | --model=<model>]
8
+ text_to_conll_cli (-h | --help)
9
+
10
+ Options:
11
+ -i <input> --input=<input>
12
+ A directory of text files
13
+ -o <output> --output=<output>
14
+ The directory to save the parsed CoNLL-X files
15
+ -m <model> --model=<model>
16
+ The name BERT model used to parse (to be placed in the model directory) [default: catib]
17
+ -h --help
18
+ Show this screen.
19
+ """
20
+
21
+ import os
22
+ from pathlib import Path
23
+ from camel_tools.utils.charmap import CharMapper
24
+ from src.classes import TextParams
25
+ from src.conll_output import save_to_file, text_tuples_to_string
26
+ from src.data_preparation import get_tagset, parse_text
27
+ from src.initialize_disambiguator.disambiguator_interface import get_disambiguator
28
+ from src.utils.model_downloader import get_model_name
29
+ from docopt import docopt
30
+ from pandas import read_csv
31
+ from transformers.utils import logging
32
+
33
+ logging.set_verbosity_error()
34
+
35
+ arguments = docopt(__doc__)
36
+
37
+ def main():
38
+ root_dir = Path(__file__).parent
39
+ model_path = root_dir/"models"
40
+
41
+ # camel_tools import used to clean text
42
+ arclean = CharMapper.builtin_mapper("arclean")
43
+
44
+ #
45
+ ### Get clitic features
46
+ #
47
+ clitic_feats_df = read_csv(root_dir / 'data/clitic_feats.csv')
48
+ clitic_feats_df = clitic_feats_df.astype(str).astype(object) # so ints read are treated as string objects
49
+
50
+
51
+ #
52
+ ### cli user input ###
53
+ #
54
+ input_path = arguments['--input']
55
+ output_path = arguments['--output']
56
+ parse_model = arguments['--model']
57
+
58
+
59
+ #
60
+ ### Set up parsing model
61
+ # (download defaults models, and get correct model name from the models directory)
62
+ #
63
+ model_name = get_model_name(parse_model, model_path=model_path)
64
+
65
+ #
66
+ ### get tagset (depends on model)
67
+ #
68
+ tagset = get_tagset(parse_model)
69
+
70
+ disambiguator = get_disambiguator("bert", "r13")
71
+
72
+ #
73
+ ### main code ###
74
+ #
75
+ for root, _, files in os.walk(input_path):
76
+ for text_file in files:
77
+ print(f'processing {text_file}')
78
+ lines = []
79
+ with open(f'{root}/{text_file}', 'r') as f:
80
+ lines = [line for line in f.readlines() if line.strip()]
81
+ file_type_params = TextParams(lines, model_path/model_name, arclean, disambiguator, clitic_feats_df, tagset, "")
82
+ parsed_text_tuples = parse_text("text", file_type_params)
83
+
84
+ new_name = '.'.join((text_file.split('.')[:-1])) + '.conllx'
85
+
86
+ save_to_file(
87
+ text_tuples_to_string(parsed_text_tuples, file_type='text', sentences=lines),
88
+ Path(output_path) / new_name
89
+ )
90
+
91
+ if __name__ == '__main__':
92
+ main()
logs.txt ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [14/Aug/2026 19:46:46]
2
+ disambiguator setup duration: 2.63s
3
+ disambiguating sentences: 0.04s
4
+ parsing duration: 1.69s
5
+ disambiguator setup duration: 2.76s
6
+ disambiguating sentences: 0.03s
7
+ parsing duration: 1.59s
8
+ disambiguator setup duration: 2.76s
9
+ disambiguating sentences: 0.04s
10
+ parsing duration: 1.55s
11
+ disambiguator setup duration: 2.93s
12
+ disambiguating sentences: 0.04s
13
+ parsing duration: 1.25s
14
+ disambiguator setup duration: 2.67s
15
+ disambiguating sentences: 0.04s
16
+ parsing duration: 1.51s
17
+ disambiguator setup duration: 2.86s
18
+ disambiguating sentences: 0.04s
19
+ parsing duration: 1.0s
20
+ disambiguator setup duration: 2.64s
21
+ disambiguating sentences: 0.04s
22
+ parsing duration: 1.46s