Run code for our data to gather the entity that really make sense


In [6]:
from __future__ import unicode_literals

import spacy
import xx_ent_wiki_sm
import pickle

nlp = xx_ent_wiki_sm.load()

doc = nlp('Quem é Shaka Khan?')

for ent in doc.ents:
    print(ent.text, ent.start_char, ent.end_char, ent.label_)

doc = nlp('الرئيس')

for ent in doc.ents:
    print(ent.text, ent.start_char, ent.end_char, ent.label_)


Shaka Khan 7 17 PER
الرئيس 0 6 PER

In [9]:
doc = nlp('الرئيس')
len(doc.ents)

# for ent in doc.ents:
#     print(ent.text, ent.start_char, ent.end_char, ent.label_)


Out[9]:
1

In [3]:
arabiclist=[]
with open("entity_vs_count.data","rb") as f:
    arabiclist=pickle.load(f)

In [4]:
len(arabiclist)


Out[4]:
1264295

In [5]:
count=0
for key,val in arabiclist:
    if count<5:
        count=count+1
        print(key)
        print(val)
    else:
        break


".
85409
اي
54202
العام
52437
الرئيس
46287
غير
45041

In [16]:
%%time
stuff_makesense=[]
count=0
for key,val in arabiclist:
    count=count+1
    if count%10000==0:
        print(str(count),"processed")  
    doc=nlp(key)
    if(len(doc.ents)==0):
        continue;
    for ent in doc.ents:
        stuff_makesense.append({ent.text:ent.label_})
        #print(ent.text, ent.start_char, ent.end_char, ent.label_)


10000 processed
20000 processed
30000 processed
40000 processed
50000 processed
60000 processed
70000 processed
80000 processed
90000 processed
100000 processed
110000 processed
120000 processed
130000 processed
140000 processed
150000 processed
160000 processed
170000 processed
180000 processed
190000 processed
200000 processed
210000 processed
220000 processed
230000 processed
240000 processed
250000 processed
260000 processed
270000 processed
280000 processed
290000 processed
300000 processed
310000 processed
320000 processed
330000 processed
340000 processed
350000 processed
360000 processed
370000 processed
380000 processed
390000 processed
400000 processed
410000 processed
420000 processed
430000 processed
440000 processed
450000 processed
460000 processed
470000 processed
480000 processed
490000 processed
500000 processed
510000 processed
520000 processed
530000 processed
540000 processed
550000 processed
560000 processed
570000 processed
580000 processed
590000 processed
600000 processed
610000 processed
620000 processed
630000 processed
640000 processed
650000 processed
660000 processed
670000 processed
680000 processed
690000 processed
700000 processed
710000 processed
720000 processed
730000 processed
740000 processed
750000 processed
760000 processed
770000 processed
780000 processed
790000 processed
800000 processed
810000 processed
820000 processed
830000 processed
840000 processed
850000 processed
860000 processed
870000 processed
880000 processed
890000 processed
900000 processed
910000 processed
920000 processed
930000 processed
940000 processed
950000 processed
960000 processed
970000 processed
980000 processed
990000 processed
1000000 processed
1010000 processed
1020000 processed
1030000 processed
1040000 processed
1050000 processed
1060000 processed
1070000 processed
1080000 processed
1090000 processed
1100000 processed
1110000 processed
1120000 processed
1130000 processed
1140000 processed
1150000 processed
1160000 processed
1170000 processed
1180000 processed
1190000 processed
1200000 processed
1210000 processed
1220000 processed
1230000 processed
1240000 processed
1250000 processed
1260000 processed
CPU times: user 49min 36s, sys: 4min 31s, total: 54min 7s
Wall time: 1h 1min 51s

In [21]:
print("stuff make sense: ",len(stuff_makesense))
print("all the nouns parsed in our arabic sentences: ",len(arabiclist))
print("percentage: ",str(len(stuff_makesense)/len(arabiclist)*100)+"%")


stuff make sense:  537587
all the nouns parsed in our arabic sentences:  1264295
percentage:  42.52069335083979%

In [22]:
try:
    with open("stuff_makesense_spacy_ner",'wb') as f:
        pickle.dump(stuff_makesense,f,pickle.HIGHEST_PROTOCOL)
except Exception as e:
    print(e)
    pass

In [28]:
stuff_makesense[4]


Out[28]:
{'لبنان': 'LOC'}

In [29]:
from pymongo import MongoClient
import time
import pickle
client=MongoClient()
client=MongoClient('mongodb://server:29017/')
db=client['eventData']
table=db["spacyResult"]

In [41]:
for dic in stuff_makesense:
    for key,value in dic.items():
        table.insert({"word":key,"ner":value})


/Users/yanliang/eventData/yan-virtualenv/document_cluster/lib/python3.6/site-packages/ipykernel_launcher.py:3: DeprecationWarning: insert is deprecated. Use insert_one or insert_many instead.
  This is separate from the ipykernel package so we can avoid doing imports until

In [35]:
stuff_makesense[0]
test={'العام': 'PER'}

In [40]:
for i in test:
    print(i)


العام

testing for spacy for Arabic


In [4]:
from __future__ import unicode_literals

In [5]:
import spacy
import xx_ent_wiki_sm

In [6]:
nlp=xx_ent_wiki_sm.load()

In [8]:
doc1=nlp("ويصف المسؤولون الفوائد أو التخفيضات الضريبية الفيدرالية المعدة للطاقة المتجددة ـ وهي تلك التي أنهى الكونغرس مدتها ثم جددها لمرات عدة ـ بأنها بالغة الأهمية")

In [9]:
for ent in doc1.ents:
    print(ent.text, ent.start_char, ent.end_char, ent.label_)


ويصف 0 4 LOC

In [10]:
doc2=nlp("وحول منافسة مشروع مشروع توسعة واعادة تأهيل مجمع صالات الحج بمطار الملك عبد العزيز الدولي قال مسؤولي الطيران المدني «لقد تقدمت خمس مجموعات تحالفات من الشركات السعودية والعالمية بعروضها، ووقع الاختيار على مجموعة بن لادن السعودية المتضامنة مع شركة (AEROPORT DE PARIS) الفرنسية كصاحبة أفضل العروضة، إذا فازت بأعلى النقاط بعد تقييم العروض فنيا وماليا")

In [11]:
for ent in doc2.ents:
    print(ent.text, ent.start_char, ent.end_char, ent.label_)


وحول 0 4 LOC
AEROPORT 246 254 MISC

In [14]:
doc3=nlp("عام 2005 اتفق جون وزوجته بيفرلي على الطلاق بعد زواج استمر 28 عاما، انجبا خلاله ولدين")

In [15]:
for ent in doc3.ents:
    print(ent.text, ent.start_char, ent.end_char, ent.label_)

In [16]:
doc4=nlp("فأجاب «كنت معروفا في السابق كممثل كوميدي في المسرح والتلفزيون، لكن الانترنت أتاحت لي الانتشار حاليaا في أوساط الشباب الذين يدركون أن أغلبية الساسة عندنا فاسدون ويشكلون طبقة منغلقة على نفسها، مثل احدى الطوائف الاجتماعية الوراثية عند الهندوس، حيث التمييز الطبقي يبنى على أساس المنزلة أو الثروة»")

In [17]:
for ent in doc4.ents:
    print(ent.text, ent.start_char, ent.end_char, ent.label_)


فأجاب 0 5 PER

In [ ]: