Spaces:
Sleeping
Sleeping
Upload 18 files
Browse files- LICENSE +21 -0
- __init__.py +0 -0
- api.py +49 -0
- data/clitic_feats.csv +78 -0
- data/samples/input_text.txt +5 -0
- data/samples/input_tok_tagged.txt +2 -0
- data/samples/input_tokenized.txt +1 -0
- data/samples/multiple_text_samples/sample_1.txt +3 -0
- data/samples/multiple_text_samples/sample_2.txt +2 -0
- data/samples/multiple_text_samples_output/sample_1.txt +48 -0
- data/samples/multiple_text_samples_output/sample_2.txt +26 -0
- data/samples/output_parse_tok.conllx +16 -0
- data/samples/output_text.conllx +75 -0
- data/samples/output_tok_tagged.conllx +17 -0
- download_models.py +5 -0
- handle_multiple_conll_files.py +113 -0
- handle_multiple_texts.py +92 -0
- logs.txt +22 -0
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
|