File size: 4,658 Bytes
7c71c1b
 
 
 
 
 
80c9ed0
8845411
 
 
 
 
 
7c71c1b
 
 
b072ea0
7c71c1b
 
 
 
 
 
 
 
 
 
 
 
dde5302
7c71c1b
8845411
7c71c1b
 
 
 
 
 
80c9ed0
8845411
2bb1643
80c9ed0
 
 
 
7c71c1b
 
 
8845411
 
 
7c71c1b
 
 
 
 
 
 
 
 
8845411
80c9ed0
 
 
7c71c1b
 
8845411
2bb1643
8845411
7c71c1b
eff476a
 
 
 
 
 
 
 
 
 
 
 
8845411
 
 
7c71c1b
 
8845411
 
 
 
7c71c1b
 
80c9ed0
 
 
 
 
 
 
 
8845411
80c9ed0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
---

language: ar
datasets:
- Marefa-NER
---


# Tebyan تبيـان
## Marefa Arabic Named Entity Recognition Model
## نموذج المعرفة لتصنيف أجزاء النص
---------
**Version**: 1.0.1

**Last Update:** 16-05-2021

## Model description

**Marefa-NER** is a Large Arabic Named Entity Recognition (NER) model built on a completely new dataset and targets to extract up to 9 different types of entities
```

Person, Location, Organization, Nationality, Job, Product, Event, Time, Art-Work

```

نموذج المعرفة لتصنيف أجزاء النص. نموذج جديد كليا من حيث البيانات المستخدمة في تدريب النموذج. 
كذلك يستهدف النموذج تصنيف حتى 9 أنواع مختلفة من أجزاء النص
```

شخص - مكان - منظمة - جنسية - وظيفة - منتج - حدث - توقيت - عمل إبداعي

```

## How to use كيف تستخدم النموذج

Install transformers AND nltk (python >= 3.6)

`$ pip3 install transformers==4.6.0 nltk==3.5 protobuf==3.15.3 torch==1.7.1`

> If you are using `Google Colab`, please restart your runtime after installing the packages.

-----------

```python

# we need to install NLTK punkt to be used for word tokenization

# we need to install NLTK punkt to be used for word tokenization

from collections import defaultdict

import nltk

nltk.download('punkt')

from nltk.tokenize import word_tokenize



from transformers import AutoTokenizer, AutoModelForTokenClassification

from transformers import pipeline



# labels list

labels_list = ['O', 'B-nationality', 'B-event', 'B-person', 'B-artwork', 'B-location', 'B-product', 'B-organization', 'B-job', 'B-time', 'I-nationality', 'I-event', 'I-person', 'I-artwork', 'I-location', 'I-product', 'I-organization', 'I-job', 'I-time']



# ===== import the model

m_name = "marefa-nlp/marefa-ner"

tokenizer = AutoTokenizer.from_pretrained(m_name)

model = AutoModelForTokenClassification.from_pretrained(m_name)



# ===== build the NER pipeline

nlp = pipeline("ner", model=model, tokenizer=tokenizer, grouped_entities=True)



# ===== extract the entities from a sample text

example = 'خاضت القوات المصرية حرب السادس من أكتوبر ضد الجيش الصهيوني عام 1973'

# clean the text

example = " ".join(word_tokenize(example))

# feed to the NER model to parse

ner_results = nlp(example)



# we prepared a simple code to generate full entities tokens



modified_results = []

for ent in ner_results:

  if ent["entity_group"].lower().replace("label_","").isnumeric():

      ent["entity_group"] = int(ent["entity_group"].lower().replace("label_",""))

      ent["entity_group"] = labels_list[ent["entity_group"]]



  if len(modified_results) > 0 and ent["start"] == modified_results[-1]["end"]:

    modified_results[-1]["word"] += f"{ent['word']}".replace("▁"," ").strip()

    modified_results[-1]["word"] = modified_results[-1]["word"].replace("▁"," ").strip()

    modified_results[-1]["score"] = sum([modified_results[-1]["score"], ent["score"]])/2

    modified_results[-1]["end"] = ent["end"]

  else:

    modified_results.append(ent)





for res in modified_results:

  print(res["word"], "==>", res["entity_group"])

  

#####

# القوات المصرية ==> organization

# حرب السادس من أكتوبر ==> event

# الجيش الصهيوني ==> organization

# عام 1973 ==> time

####



```

## Acknowledgment شكر و تقدير

قام بإعداد البيانات التي تم تدريب النموذج عليها, مجموعة من المتطوعين الذين قضوا ساعات يقومون بتنقيح البيانات و مراجعتها

- على سيد عبد الحفيظ - إشراف
- نرمين محمد عطيه 
- صلاح خيرالله
- احمد علي عبدربه
- عمر بن عبد العزيز سليمان
- محمد ابراهيم الجمال
- عبدالرحمن سلامه خلف
- إبراهيم كمال محمد سليمان
- حسن مصطفى حسن 
- أحمد فتحي سيد
- عثمان مندو
- عارف الشريف
- أميرة محمد محمود
- حسن سعيد حسن
- عبد العزيز علي البغدادي
- واثق عبدالملك الشويطر
- عمرو رمضان عقل الحفناوي
- حسام الدين أحمد على
- أسامه أحمد محمد محمد
- حاتم محمد المفتي
- عبد الله دردير
- أدهم البغدادي
- أحمد صبري
- عبدالوهاب محمد محمد
- أحمد محمد عوض