اذهب إلى المحتوى

Ali Haidar Ahmad

الأعضاء
  • المساهمات

    1068
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    43

إجابات الأسئلة

  1. إجابة Ali Haidar Ahmad سؤال في كيفية تغيير حجم مخطط الشكل figure في seaborn في بايثون كانت الإجابة المقبولة   
    يمكنك تحديد حجم الشكل عن طريق استخدام المفتاح 'figure.figsize' وتحديد الأبعاد المطلوبة (في حالة أوراق A4 ستحتاج إلى أبعاد 11.7 و ,8.27) وتمريرها كمعطى إلى الوسيط rc في الدالة set كما يلي:
    import seaborn seaborn.set(rc={'figure.figsize':(11.7,8.27)}) الآن أي شكل سترسمه سيكون بالأبعاد المحددة.
    أو من خلال rcParams كالتالي:
    from matplotlib import rcParams rcParams['figure.figsize'] = 11.7,8.27  
  2. إجابة Ali Haidar Ahmad سؤال في تحميل نماذج و بيانات NLTK في بايثون NLTK data/model كانت الإجابة المقبولة   
    لتحميل مجموعة بيانات أو نماذج معينة يمكنك استخدم الدالة nltk.download. على سبيل المثال إذا كنت تريد تنزيل النموذج "Punkt" من أجل استخدام ال sentence tokenizer فيمكنك تحميله بالشكل التالي:
    import nltk nltk.download('punkt') إذا لم تكن متأكداً من البيانات / النموذج الذي تحتاجه، فيمكنك  استخدام "popular" لتحميل أهم النماذج والبيانات المتوفرة بالشكل التالي:
    import nltk nltk.download('popular') """ [nltk_data] Downloading collection 'popular' [nltk_data] | [nltk_data] | Downloading package cmudict to /root/nltk_data... [nltk_data] | Unzipping corpora/cmudict.zip. [nltk_data] | Downloading package gazetteers to /root/nltk_data... [nltk_data] | Unzipping corpora/gazetteers.zip. [nltk_data] | Downloading package genesis to /root/nltk_data... [nltk_data] | Unzipping corpora/genesis.zip. [nltk_data] | Downloading package gutenberg to /root/nltk_data... [nltk_data] | Unzipping corpora/gutenberg.zip. [nltk_data] | Downloading package inaugural to /root/nltk_data... [nltk_data] | Unzipping corpora/inaugural.zip. [nltk_data] | Downloading package movie_reviews to [nltk_data] | /root/nltk_data... [nltk_data] | Unzipping corpora/movie_reviews.zip. [nltk_data] | Downloading package names to /root/nltk_data... [nltk_data] | Unzipping corpora/names.zip. [nltk_data] | Downloading package shakespeare to /root/nltk_data... [nltk_data] | Unzipping corpora/shakespeare.zip. [nltk_data] | Downloading package stopwords to /root/nltk_data... [nltk_data] | Unzipping corpora/stopwords.zip. [nltk_data] | Downloading package treebank to /root/nltk_data... [nltk_data] | Unzipping corpora/treebank.zip. [nltk_data] | Downloading package twitter_samples to [nltk_data] | /root/nltk_data... [nltk_data] | Unzipping corpora/twitter_samples.zip. [nltk_data] | Downloading package omw-1.4 to /root/nltk_data... [nltk_data] | Unzipping corpora/omw-1.4.zip. [nltk_data] | Downloading package omw to /root/nltk_data... [nltk_data] | Unzipping corpora/omw.zip. [nltk_data] | Downloading package wordnet to /root/nltk_data... [nltk_data] | Unzipping corpora/wordnet.zip. [nltk_data] | Downloading package wordnet31 to /root/nltk_data... [nltk_data] | Unzipping corpora/wordnet31.zip. [nltk_data] | Downloading package wordnet_ic to /root/nltk_data... [nltk_data] | Unzipping corpora/wordnet_ic.zip. [nltk_data] | Downloading package words to /root/nltk_data... [nltk_data] | Unzipping corpora/words.zip. [nltk_data] | Downloading package maxent_ne_chunker to [nltk_data] | /root/nltk_data... [nltk_data] | Unzipping chunkers/maxent_ne_chunker.zip. [nltk_data] | Downloading package punkt to /root/nltk_data... [nltk_data] | Unzipping tokenizers/punkt.zip. [nltk_data] | Downloading package snowball_data to [nltk_data] | /root/nltk_data... [nltk_data] | Downloading package averaged_perceptron_tagger to [nltk_data] | /root/nltk_data... [nltk_data] | Unzipping taggers/averaged_perceptron_tagger.zip. [nltk_data] | [nltk_data] Done downloading collection popular True """ وهذا يتضمن الحزم التالية:
    <collection id="popular" name="Popular packages"> <item ref="cmudict" /> <item ref="gazetteers" /> <item ref="genesis" /> <item ref="gutenberg" /> <item ref="inaugural" /> <item ref="movie_reviews" /> <item ref="names" /> <item ref="shakespeare" /> <item ref="stopwords" /> <item ref="treebank" /> <item ref="twitter_samples" /> <item ref="omw" /> <item ref="wordnet" /> <item ref="wordnet_ic" /> <item ref="words" /> <item ref="maxent_ne_chunker" /> <item ref="punkt" /> <item ref="snowball_data" /> <item ref="averaged_perceptron_tagger" /> </collection> في حال أردت تحميل كل النماذج/ البيانات:
    import nltk nltk.download('all')
    في حال واجهك خطأ كهذا:
    Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/l/alvas/git/nltk/nltk/tokenize/__init__.py", line 128, in word_tokenize sentences = [text] if preserve_line else sent_tokenize(text, language) File "/Users//alvas/git/nltk/nltk/tokenize/__init__.py", line 94, in sent_tokenize tokenizer = load('tokenizers/punkt/{0}.pickle'.format(language)) File "/Users/alvas/git/nltk/nltk/data.py", line 820, in load opened_resource = _open(resource_url) File "/Users/alvas/git/nltk/nltk/data.py", line 938, in _open return find(path_, path + ['']).open() File "/Users/alvas/git/nltk/nltk/data.py", line 659, in find raise LookupError(resource_not_found) LookupError: ********************************************************************** Resource punkt not found. Please use the NLTK Downloader to obtain the resource: >>> import nltk >>> nltk.download('punkt') Searched in: - '/Users/alvas/nltk_data' - '/usr/share/nltk_data' - '/usr/local/share/nltk_data' - '/usr/lib/nltk_data' - '/usr/local/lib/nltk_data' - '' ********************************************************************** فهذا يعني أنك تحاول استخدام نموذج أو بيانات غير موجودة، ويجب عليك تحميلها أولاً، أيضاً يخبرك بالنموذج/ البيانات المطلوب تنزيلها، وفي المثال هنا يطلب منك تثبيت النموذج punkt:
    import nltk nltk.download('punkt') في حال واجهتك مشاكل أثناء تحميل بيانات ضخمة كهذا الخطأ:
    import nltk nltk.download('all') """ [nltk_data] | Downloading package panlex_lite to [nltk_data] | /Users/Harshil/nltk_data... [nltk_data] | Unzipping corpora/panlex_lite.zip. Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> nltk.download('all', halt_on_error = False) File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/downloader.py", line 664, in download for msg in self.incr_download(info_or_id, download_dir, force): File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/downloader.py", line 543, in incr_download for msg in self.incr_download(info.children, download_dir, force): File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/downloader.py", line 529, in incr_download for msg in self._download_list(info_or_id, download_dir, force): File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/downloader.py", line 572, in _download_list for msg in self.incr_download(item, download_dir, force): File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/downloader.py", line 549, in incr_download for msg in self._download_package(info, download_dir, force): File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/downloader.py", line 638, in _download_package for msg in _unzip_iter(filepath, zipdir, verbose=False): File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/nltk/downloader.py", line 2039, in _unzip_iter outfile.write(contents) OSError: [Errno 22] Invalid argument """ استخدم:
    $ rm /Users/<your_username>/nltk_data/corpora/panlex_lite.zip $ rm -r /Users/<your_username>/nltk_data/corpora/panlex_lite $ python import nltk dler = nltk.downloader.Downloader() dler._update_index() dler._status_cache['panlex_lite'] = 'installed' dler.download('popular')  
  3. إجابة Ali Haidar Ahmad سؤال في إيجاد Entailments و Meronyms و Holonyms لكلمة محددة باستخدام NLTK في بايثون كانت الإجابة المقبولة   
    يمكننا استخدام wordnet لتحقيق كل ماتحتاجه من استخراج علاقات دلالية ...
    بدايةً ال Entailments كما تعلم هو علاقة دلالية بين فعلين. يستلزم الفعل C الفعل B إذا كان معنى B يتبع منطقياً وتم تضمينه بشكل صارم في معنى C وهذه العلاقة أحادية الاتجاه. على سبيل المثال ، الدخان يستلزم النار، لكن النار لا تستلزم الدخان. و في nltk يمكنك إيجاد ال Entailments  لكلمة محددة من خلال الدالة entailments في wordnet كالتالي:
    from nltk.corpus import wordnet as wn print(wn.synset('eat.v.01').entailments()) # [Synset('chew.v.01'), Synset('swallow.v.01')] الآن بالنسبة لل Meronyms فكما تعلم يعبر عن علاقة "مكونات". بمعنى، علاقة بين مفهومين، حيث يشكل المفهوم Aجزءاً من المفهوم B. ولاستخراجها نستخدم part_meronyms :
    tree = wn.synset('tree.n.01') print(tree.part_meronyms()) """ [Synset('burl.n.02'), Synset('crown.n.07'), Synset('limb.n.02'), Synset('stump.n.01'), Synset('trunk.n.01')] """ وأخيراً تعبر Holonyms عن علاقة "العضوية في"، أي العلاقة بين مفهومين، حيث يكون المفهوم B عضواً في المفهوم A.
    print(wn.synset('atom.n.01').part_holonyms()) # [Synset('chemical_element.n.01'), Synset('molecule.n.01')]  
  4. إجابة Ali Haidar Ahmad سؤال في إيجاد ال Hypernyms و ال Hyponyms لكلمة محددة باستخدام nltk في بايثون كانت الإجابة المقبولة   
    يمكنك القيام بذلك من خلال wordnet في nltk كما يلي:
    # wordnet استيراد الوحدة from nltk.corpus import wordnet # تحديد الكلمة المطلوبة word="Plane" My_sysn = wordnet.synsets(word)[0] # synset طباعة اسم ال print("Print just the name:", My_sysn.name()) # للكلمة المحددة hypernyms طباعة ال print("The Hypernym for the word is:",My_sysn.hypernyms(),'\n') # Hyponyms طباعة ال print("The Hyponyms for the word is:",My_sysn.hyponyms()) # الخرج """ Print just the name: airplane.n.01 The Hypernym for the word is: [Synset('heavier-than-air_craft.n.01')] The Hyponyms for the word is: [Synset('airliner.n.01'), Synset('amphibian.n.02'), Synset('biplane.n.01'), Synset('bomber.n.01'), Synset('delta_wing.n.01'), Synset('fighter.n.02'), Synset('hangar_queen.n.01'), Synset('jet.n.01'), Synset('monoplane.n.01'), Synset('multiengine_airplane.n.01'), Synset('propeller_plane.n.01'), Synset('reconnaissance_plane.n.01'), Synset('seaplane.n.01'), Synset('ski-plane.n.01'), Synset('tanker_plane.n.01')] """  
  5. إجابة Ali Haidar Ahmad سؤال في تلخيص النص Text Summarization باستخدام NLTK في بايثون كانت الإجابة المقبولة   
    لاتوجد دالة أو وحدة جاهزة في NLTK للقيام بذلك مباشرةً، لكن يمكنك استخدام NLTK العملية كما في المثال التالي:
    # استيراد الوحدات from nltk.tokenize import word_tokenize, sent_tokenize import nltk from nltk.corpus import stopwords # قم بتحديد النص المراد تلخيصه text = """ """ # nltk الحصول على كلمات التوقف المعرفة في stopWords = set(stopwords.words("english")) # تقسيم النص إلى وحدات tokens = word_tokenize(text) # إنشاء قاموس للاحتفاظ بنتيجة كل كلمة # score تسمى # نقصد بالنتيجة عدد المرات التي تظهر فيها كل كلمة بعد إزالة كلمات التوقف freq = dict() for w in tokens.lower(): if w in stopWords: continue if w in freq: freq[w] += 1 else: freq[w] = 1 # freqTable الخطوة التالية هي تعيين درجة لكل جملة بناءً على الكلمات التي تحتوي عليها وجدول التردد # score إنشاء قاموس للاحتفاظ بنتيجة كل جملة all_sentences = sent_tokenize(text) sentenceScore = dict() # الآن نقوم بالمرور على كل جملة for sentence in all_sentences: for w, freq in freq.items(): if w in sentence.lower(): if sentence in sentenceScore: sentenceScore[sentence] += freq else: sentenceScore[sentence] = freq """ # الآن الخطوة التالية هي بتعيين درجة معينة لمقارنة الجمل في النص # scores وتتمثل الطريقة الأبسط لمقارنة ال # الجملة score في إيجاد متوسط # مناسبة threshold ويمكن أن يكون المتوسط نفسه """ s = 0 for sent in sentenceScore: s += sentenceScore[sent] avg = s // len(sentenceScore) # نقوم الآن بتطبيق قيمة العتبة وتخزين الجمل بالترتيب في الملخص. smy = '' for sent in all_sentences: if (sent in sentenceScore) and (sentenceScore[sent] > (1.2 * average)): smy += " " + sent print(smy)  
  6. إجابة Ali Haidar Ahmad سؤال في استخدام نموذج Word2Vec لقياس التشابه بين الكلمات باستخدام NLTK في بايثون كانت الإجابة المقبولة   
    في الواقع هذا النموذج معرّف ضمن gensim لذا ستحتاجها، جمباً إلى جمب مع word_tokenize و sent_tokenize في nltk. المثال التالي سيوضح لك كيفية القيام بذلك:
    # استيراد الوحدات اللازمة from nltk.tokenize import sent_tokenize, word_tokenize import gensim # Word2Vec استيراد نموذج from gensim.models import Word2Vec # الآن ينبغي عليك تحديد مسار المستند النصي الذي تريد تدريب النموذج عليه text_data = open("d:\\data.txt", "r") file = text_data.read() # استبدال الأسطر الجديدة ب فراغ f = file.replace("\n", " ") # الإعلان عن قائمة فارغة لنضع بها البيانات المستخرجة من الملف النصي data = [] # الآن سنقوم بالمرور على كل جملة في النص for i in sent_tokenize(f): # الإعلان عن قائمة لوضع الكلمات المكونة للجملة ضمنها temp = [] # تقسيم الجملة إلى كلمات for j in word_tokenize(i): # إضافتها temp.append(j.lower()) # نضيف الجملة كعينة إلى البيانات data.append(temp) # وتدريبه CBOW سنقوم الآن بتعريف نموذج model1 = gensim.models.Word2Vec(sentences=data, min_count = 1,vector_size = 100, window = 5) # يمكنك حفظ النموذج لاستخدامه لاحقاً بالشكل التالي # model.save("CBOW.model") # Word2Vec.load("word2vec.model") لتحميله لاحقاً يمكنك استخدام # الآن يمكنك استخدامه لقياس التشابه بين أي كلمتين # wonderland و alice على سبيل المثال print("Cosine similarity between 'alice' " + "and 'wonderland' - CBOW : ", model1.similarity('alice', 'wonderland')) """ Cosine similarity between 'alice' and 'wonderland' - CBOW : 0.90824929840 """ وبشكل مشابه يمكنك استخدام نموذج SkipG:
    # وتدريبه Skip Gram بنفس الطريقة سنقوم ببناء نموذج model2 = gensim.models.Word2Vec(data, min_count = 1, vector_size = 100, window = 5, sg = 1)  
  7. إجابة Ali Haidar Ahmad سؤال في حذف الحروف المكررة باستخدام nltk في بايثون كانت الإجابة المقبولة   
    يمكنك القيام بذلك من خلال wordnet و الوحدة regex في بايثون، فيما يلي سأقوم ببناء كلاس يمكنك استخدامه لحذف الحروف المكررة من أي نص:
    # nltk و regex سنستخدم مكتبيتي import re from nltk.corpus import wordnet # سأقوم بتعريف كلاس يمكنك استخدامه لحذف الأحرف المكررة من أي نص class Rep_word_removal(object): def __init__(self): self.repeat_regexp = re.compile(r'(\w*)(\w)\2(\w*)') self.repl = r'\1\2\3' def replace(self, word): if wordnet.synsets(word): return word replace_word = self.repeat_regexp.sub(self.repl, word) if replace_word != word: return self.replace(replace_word) else: return replace_word الاستخدام:
    # لاستخدامه # أنشئ كائن من هذا الكلاس rep_word = Rep_word_removal() rep_word.replace ("hiiiiii i am soooooooooo happy") # hi i am so hapy  
  8. إجابة Ali Haidar Ahmad سؤال في كيفية استخدام word_tokenize مع إطار بيانات Dataframe عند استخدام NLTK في بايثون كانت الإجابة المقبولة   
    يمكنك القيام بذلك من خلال استخدام التابع apply لتطبيق الدالة word_tokenize على كل صف من البيانات:
    import pandas as pd import nltk # إنشاء إطار البيانات df = pd.DataFrame({'sentences': ['This is a very good site. I will recommend it to others.', 'Can you please give me a call at 9983938428. have issues with the listings.', 'good work! keep it up']}) # applay نستخدم الدالة df['tokenized_sents'] = df.apply(lambda row: nltk.word_tokenize(row['sentences']), axis=1) df سيكون الخرج كما يلي:

    بعد ذلك نقوم باستخدام الدالة apply مرة أخرى لإيجاد طول كل نص كما يلي:
    df['sents_length'] = df.apply(lambda row: len(row['tokenized_sents']), axis=1) فيصبح الخرج:

  9. إجابة Ali Haidar Ahmad سؤال في كيفية الحصول على المرادفات synonymous و المتضادات antonyms لكلمة ما باستخدام NLTK في بايثون؟ كانت الإجابة المقبولة   
    كما ذكرت يمكن استخدام WORDNET في NLTK فبشكل سطحي يمكننا القول أنه قاموس المرادفات، من حيث أنه يجمع الكلمات معاً بناءً على معانيها. وبشكل أكثر دقة يمكنك القول أنها قاعدة بيانات معجمية كبيرة للغة الإنجليزية. الأسماء والأفعال والصفات والظروف مجمعة في مجموعات من المرادفات المعرفية (synsets) ، كل منها يعبر عن مفهوم مميز.
    عند استخدام الدالة  من wordnet وتمرير كلمة لها فإنها ستعطيك مجموعة الكلمات المترادفة synonymous التي تعبر عن نفس المفهوم للكلمة الممررة لها.
    # wordnet نقوم أولاً باستيراد from nltk.corpus import wordnet # الآن إيجاد الكلمات المترادفة syns = wordnet.synsets("good") # يمكننا طباعة إحدى هذه الكلمات بالشكل التالي print(syns[0].name()) # good.n.01 # ولطباعة الكلمة فقط print(syns[0].lemmas()[0].name()) # good # على الكلمة لتوليد جمل تحتوي هذه الكلمة examples يمكنك أيضاً استخدام الدالة print(syns[0].examples()) # ['for your own good', "what's the good of worrying?"] الآن لتمييز المرادفات والمتضادات لكلمة ستكون lemmas هي المرادفات، وبعد ذلك يمكنك استخدام الدالة .antonyms() للعثور على المتضادات لل lemmas بالشكل التالي:
    import nltk from nltk.corpus import wordnet synonyms = [] # قائمة سنضع فيها المرادفات antonyms = [] # قائمة سنضع فيها المتضادات # نقوم بالمرور على جميع مرادفات الكلمة for syn in wordnet.synsets("good"): # هي مرادفة lemma كل for l in syn.lemmas(): # نضيفها synonyms.append(l.name()) # نوجد المضاد لها ونخزنه if l.antonyms(): antonyms.append(l.antonyms()[0].name()) print(set(synonyms)) """ {'safe', 'effective', 'beneficial', 'dear', 'right', 'secure', 'unspoilt', 'in_effect', 'skilful', 'honorable', 'skillful', 'unspoiled', 'thoroughly', 'near', 'proficient', 'dependable', 'salutary', 'estimable', 'soundly', 'good', 'commodity', 'practiced', 'serious', 'goodness', 'honest', 'trade_good', 'full', 'upright', 'ripe', 'respectable', 'undecomposed', 'well', 'adept', 'in_force', 'expert', 'just', 'sound'} """ print(set(antonyms)) """ {'evil', 'evilness', 'badness', 'ill', 'bad'} """  
  10. إجابة Ali Haidar Ahmad سؤال في تقسيم النص إلى جمل باستخدام NLTK في بايثون كانت الإجابة المقبولة   
    يمكنك استخدام الدالة sent_tokenize من NLTK لتقسيم النصوص إلى جمل، على سبيل المثال الجملة التالية:
    INPUT: "Life is like riding a bicycle. To keep your balance, you must keep moving."\ OUTPUT: 'Life is like riding a bicycle.' 'To keep your balance, you must keep moving.' الحل:
    # استيراد الوحدات import nltk from nltk.tokenize import sent_tokenize # تحديد النص txt = "Life is like riding a bicycle. To keep your balance, you must keep moving." # تقسيم النص إلى جمل sent = sent_tokenize(txt) print(sent) # ['Life is like riding a bicycle.', 'To keep your balance, you must keep moving.']  
  11. إجابة Ali Haidar Ahmad سؤال في كيف يمكننا إيجاد العلامات النحوية أو ال Part of Speech Tagging (POS) باستخدام NLTK في بايثون كانت الإجابة المقبولة   
    نعم في الحقيقة NLTK هي أفضل من قام بذلك. في NLTK يُشار إلى كل علامة نحوية (أو جزء من الكلام) برمز محدد وهذه هي قائمة الرموز:
    VB verb, base form take VBD verb, past tense took VBG verb, gerund/present participle taking VBN verb, past participle taken VBP verb, sing. present, non-3d take VBZ verb, 3rd person sing. present takes WDT wh-determiner which WP wh-pronoun who, what WP$ possessive wh-pronoun whose WRB wh-abverb where, when CC coordinating conjunction CD cardinal digit DT determiner EX existential there (like: “there is” … think of it like “there exists”) FW foreign word IN preposition/subordinating conjunction JJ adjective ‘big’ JJR adjective, comparative ‘bigger’ JJS adjective, superlative ‘biggest’ LS list marker 1) MD modal could, will NN noun, singular ‘desk’ NNS noun plural ‘desks’ NNP proper noun, singular ‘Harrison’ NNPS proper noun, plural ‘Americans’ PDT predeterminer ‘all the kids’ POS possessive ending parent‘s PRP personal pronoun I, he, she PRP$ possessive pronoun my, his, hers RB adverb very, silently, RBR adverb, comparative better RBS adverb, superlative best RP particle give up TO to go ‘to‘ the store. UH interjection errrrrrrrm الآن لإيجاد ال POS في النص الخاص بك أو أي نص اتبع الكود التالي فقط:
    # استيراد الوحدات import nltk from nltk.corpus import stopwords from nltk.tokenize import word_tokenize, sent_tokenize # كلمات التوقف stop_words = set(stopwords.words('english')) # تحديد النص txt = "Life is like riding a bicycle. To keep your balance, you must keep moving." # تقسيم النص إلى جمل sent = sent_tokenize(txt) # هنا لدينا جملتين في النص أعلاه # منها POS نقوم الآن بالمرور على كل جملة ونستخرج ال for i in sent: # لإيجاد الكلمات وعلامات الترقيم word_tokenize نستخدم الآن wordsList = nltk.word_tokenize(i) # نقوم بحذف كلمات التوقف منها wordsList = [w for w in wordsList if not w in stop_words] # تصنيف كل كلمة nltk ونمرر لها الكلمات وستتولى pos_tag نقوم الآن باستدعاء الدالة POS = nltk.pos_tag(wordsList) print(POS) والخرج:
    [('Life', 'NNP'), ('like', 'IN'), ('riding', 'VBG'), ('bicycle', 'NN'), ('.', '.')] [('To', 'TO'), ('keep', 'VB'), ('balance', 'NN'), (',', ','), ('must', 'MD'), ('keep', 'VB'), ('moving', 'NN'), ('.', '.')]  
  12. إجابة Ali Haidar Ahmad سؤال في كيف يمكننا القيام بعملية Tokinaization للنص باستخدام NLTK في بايثون كانت الإجابة المقبولة   
    من خلال مكتبة nltk يمكنك القيام بهذه العملية من خلال الدالة word_tokenize بالشكل التالي:
    # word_tokenize استيراد الدالة from nltk.tokenize import word_tokenize # تحديد النص text = """Stopwords are the English words which does not add much meaning to a sentence. They can safely be ignored without sacrificing the meaning of the sentence. For example, the words like the, he, have etc. Such words are already captured this in corpus named corpus. We first download it to our python environment. """ # استخدامها tokens=word_tokenize(text) print(tokens) """ ['Stopwords', 'are', 'the', 'English', 'words', 'which', 'does', 'not', 'add', 'much', 'meaning', 'to', 'a', 'sentence', '.', 'They', 'can', 'safely', 'be', 'ignored', 'without', 'sacrificing', 'the', 'meaning', 'of', 'the', 'sentence', '.', 'For', 'example', ',', 'the', 'words', 'like', 'the', ',', 'he', ',', 'have', 'etc', '.', 'Such', 'words', 'are', 'already', 'captured', 'this', 'in', 'corpus', 'named', 'corpus', '.', 'We', 'first', 'download', 'it', 'to', 'our', 'python', 'environment', '.'] """ كما يمكنك استخادم الكلاس RegexpTokenizer الذي يمكنك من استخدام التعابير المنتظمة لإنجاز عملية ال Tokenization كالتالي:
    # RegexpTokenizer استيراد الكلاس from nltk.tokenize import RegexpTokenizer # تحديد النص text = """Stopwords are the English words which does not add much meaning to a sentence. They can safely be ignored without sacrificing the meaning of the sentence. For example, the words like the, he, have etc. Such words are already captured this in corpus named corpus. We first download it to our python environment. """ # تعريف كائن من الصنف السابق tk = RegexpTokenizer('\s+', gaps = True) # الوسيط الأول هو التعبير المنتظم الوسيط # tokenizeation المعرفة ضمن هذا الصنف للقيام بعملية ال tokenize نقوم الآن باستدعاء الدالة tokens=tk.tokenize(text) print(tokens) """ ['Stopwords', 'are', 'the', 'English', 'words', 'which', 'does', 'not', 'add', 'much', 'meaning', 'to', 'a', 'sentence.', 'They', 'can', 'safely', 'be', 'ignored', 'without', 'sacrificing', 'the', 'meaning', 'of', 'the', 'sentence.', 'For', 'example,', 'the', 'words', 'like', 'the,', 'he,', 'have', 'etc.', 'Such', 'words', 'are', 'already', 'captured', 'this', 'in', 'corpus', 'named', 'corpus.', 'We', 'first', 'download', 'it', 'to', 'our', 'python', 'environment.'] """  
  13. إجابة Ali Haidar Ahmad سؤال في إزالة كلمات التوقف stop words باستخدام NLTK في بايثون كانت الإجابة المقبولة   
    يمكنك القيام بذلك من خلال nltk حيث أنه لديها قاموساً يجمع هذه الكلمات. ويمكنك الوصول لها واستعراضها (وتعديلها إذا أردت عن طريق إضافة أو حذف بعض الكلمات) بالشكل التالي:
    # stopwords نقوم باستيراد الوحدة from nltk.corpus import stopwords # 'english' ونمرر لها الوسيط words نقوم باستدعاء الدالة stopwords من خلال الوحدة sw=stopwords.words('english') # الآن أصبح لدينا مجموعة كلمات التوقف الأساسية في اللغة الإنجليزية print(sw) """ ['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', "you're", "you've", "you'll", "you'd", 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', "she's", 'her', 'hers', 'herself', 'it', "it's", 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', "that'll", 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', "don't", 'should', "should've", 'now', 'd', 'll', 'm', 'o', 're', 've', 'y', 'ain', 'aren', "aren't", 'couldn', "couldn't", 'didn', "didn't", 'doesn', "doesn't", 'hadn', "hadn't", 'hasn', "hasn't", 'haven', "haven't", 'isn', "isn't", 'ma', 'mightn', "mightn't", 'mustn', "mustn't", 'needn', "needn't", 'shan', "shan't", 'shouldn', "shouldn't", 'wasn', "wasn't", 'weren', "weren't", 'won', "won't", 'wouldn', "wouldn't"] """ الآن سنقوم بكتابة مثال لاستخدام هذه القائمة لحذف كلمات التوقف:
    from nltk.corpus import stopwords from nltk.tokenize import word_tokenize # تحديد النص text = """Stopwords are the English words which does not add much meaning to a sentence. They can safely be ignored without sacrificing the meaning of the sentence. For example, the words like the, he, have etc. Such words are already captured this in corpus named corpus. We first download it to our python environment. """ # إنشاء مجموعة من كلمات التوقف sw = set(stopwords.words('english')) # للنص tokenization القيام بعملية word_tokens = word_tokenize(text) # word_tokens تصفية كلمات التوقف من ال filteredText = [word for word in word_tokens if not word.lower() in sw] print(filteredText)  
  14. إجابة Ali Haidar Ahmad سؤال في استخراج الوحدات Token من النص بدون المسافات الفارغة والأسطر الجديدة n\ باستخدام NLTK في بايثون كانت الإجابة المقبولة   
    يمكنك استخدام الكلاس WhitespaceTokenizer لحل المشكلة، حيث يمكّنك من تنفيذ عملية ال tokinezation مع معالجة تلقائية للمسافات والأسطر الجديدة (تجاهلها)، ويمكنك استخدامها كما يلي:
    # WhitespaceTokenizer استيراد الكلاس from nltk.tokenize import WhitespaceTokenizer # إنشاء كائن من هذا الكلاس tk = WhitespaceTokenizer() # تحديد النص text = "The price\t of burger \nin BurgerKing is Rs.36.\n" # لتأدية المطلوب WhitespaceTokenizer المعرفة ضمن الكلاس tokenize استخدام الدالة tokens = tk.tokenize(text) print(tokens) # ['The', 'price', 'of', 'burger', 'in', 'BurgerKing', 'is', 'Rs.36.']  
  15. إجابة Ali Haidar Ahmad سؤال في كيف تتحقق مما إذا كانت الكلمة هي كلمة إنجليزية باستخدام NLTK في بايثون؟ كانت الإجابة المقبولة   
    يمكنك استخدام الدالة words المعرّفة ضمن الوحدة nltk.corpus.words، حيث تعيد لك هذه الدالة قائمة تحوي جميع الكلمات الإنجليزية تقريباً، وبالتالي يمكنك استخدامها واختبار انتماء كلمة لمجموعة المفردات الإنجليزية من خلال المعامل in كما يلي:
    from nltk.corpus import words "can" in words.words() # True "try" in words.words() # True "I" in words.words() # True وكحالة خاصة يمكنك استخدام المكتبة PyEnchant المتخصصة بالتدقيق الإملائي بالشكل التالي:
    # استيراد المكتبة import enchant # وبالتالي يعطيك قاموساً بكل الكلمات الانجليزية en_US القيمة enchant المعرفة ضمن المكتبة Dict نمرر للدالة words = enchant.Dict("en_US") # لاختبار انتماء كلمة لهذا المعجم check ثم نستخدم الدالة words.check("can") # True  
  16. إجابة Ali Haidar Ahmad سؤال في الحصول على نص من عناصر متعددة من نفس الفئة class باستخدام selenium في بايثون كانت الإجابة المقبولة   
    يمكنك استخدام الدالة find_element_by_xpath، حيث تُرجع قائمة بجميع العناصر المطابقة للتعبير الذي تمرره لها وهنا نحتاج إلى العنصر span ذو الكلاس rule لذا نكتب:
    spans = driver.find_elements_by_xpath("//span[@class='rule']") الآن نقوم بالمرور على القائمة spans لاستخراج النص من كل عنصر من خلال استخدام الواصفة text:
    for span in spans: print(span.text)  
  17. إجابة Ali Haidar Ahmad سؤال في تثبيت مكتبة NLTK في بايثون كانت الإجابة المقبولة   
    على أنظمة لينوكس:
    1. قم بتحديث فهرس الحزمة عن طريق كتابة الأمر أدناه:
    sudo apt update 2. تحميل مدير الحزم pip لبايثون 3:
    sudo apt install python3-pip 3. استخدم الأمر التالي لتثبيت NLTK:
    sudo pip install -U nltk sudo pip3 install -U nltk على نظام ويندوز:
    pip install nltk في حال كنت تعمل ضمن بيئة أناكوندا، افتح Anaconda prompt ثم اكتب الأمر التالي:
    conda install -c anaconda nltk  
  18. إجابة Ali Haidar Ahmad سؤال في استخراج البيانات من جدول في صفحة ويب باستخدام Selenium في بايثون كانت الإجابة المقبولة   
    يمكنك استخدام الدالة find_element بالشكل التالي:
    # سنقوم باستخدام الدالة التي ذكرناها # css_selector سنقوم بإيجاد الجدول من خلال هذه الدالة من خلال ال table = find_element_by_css_selector('table.dAta') # كمعطى للدالة table نقوم بتمرير كلاس الوسم # الآن بعد أن حصلنا على الجدول نقوم باستخدام نفس الدالة لكن هذه المرة لإيجاد جميع الصفوف rows=table.find_elements_by_css_selector('tr') # الآن نقوم بالتكرار عليها for row in rows: # إيجاد كل الخلايا ضمن الصف cells=row.find_elements_by_tag_name('td') # التكرار عليها for td in cells: # text طباعة النص الموجود ضمنها من خلال الواصفة print(td.text)  
  19. إجابة Ali Haidar Ahmad سؤال في إيجاد الأخ sibling التالي لعنصر ضمن صفحة ال HTML باستخدام Selenium في بايثون كانت الإجابة المقبولة   
    يمكننا العثور على عنصر شقيق تالي من نفس الأب من خلال ال xpath مع استخدام العبارة following-sibling ضمنها بالشكل التالي:
    driverObj.find_element_by_xpath("//p[@id='A']/following-sibling::p") من المهم ملاحظة أنه من الممكن فقط الانتقال من الأخ الحالي إلى الأخ التالي من خلال ال xpath.
     
  20. إجابة Ali Haidar Ahmad سؤال في تحديد قيمة من القائمة المنسدلة باستخدام Selenium في بايثون كانت الإجابة المقبولة   
    يمكنك استخدام اسم المعرف id لتحديد الوسم المطلوب ثم تحديد القيمة value المطلوب تحديدها بالشكل التالي:
    # xpath من خلال ال driverObj.find_element_by_xpath("//select[@id='X']/option[@value='B']").click() # css_selector أو من خلال driverObj.find_element_by_css_selector("select#X > option[value='B']").click() # لاختيار القيمة المطلوبة select_by_value لكن هنا سنستخدم الدالة css_selector أو من خلال Select(driverObj.find_element_by_css_selector("select#X")).select_by_value(B).click()  
  21. إجابة Ali Haidar Ahmad سؤال في هل أستطيع تعلم الذكاء الاصطناعي من دون استخدام مكتبة tensorflow كانت الإجابة المقبولة   
    كيراس أو باي تورش ..
    باي تورش عموماً هي الأحدث (تم إطلاقها 2017) لكن تنسرفلو وكيراس هم الأكثر استخدماً، لكن التوجه الآن سيكون لباي تورش و خلال الأعوام ال 4 القادمة ستكون باي تورش الأكثر استخدماً، بسبب دعمها لل TPU (معالجات فائقة السرعة).
  22. إجابة Ali Haidar Ahmad سؤال في تحويل بنية XML إلى DataFrame باستخدام BeautifulSoup في بايثون كانت الإجابة المقبولة   
    بشكل عام يمكنك القيام بالخطوات التالية للإمساك بأي ملف XML وتحويله ل DF:
    # استيراد الوحدات اللازمة from bs4 import BeautifulSoup import pandas as pd # xml قراءة ملف ال contents = open("file.xml",'r').read() # BeautifulSoup تحليل الملف الذي تم الحصول عليه من خلال soup = BeautifulSoup(contents, 'lxml') # find_all الآن نقوم باستخراج البيانات حيث نستخدم الدالة # التي تُرجع البيانات المستخرجة الموجودة داخل الوسم الذي يتم تمريره لها authors = soup.find_all('author') pubdate = soup.find_all('publish_date') genres = soup.find_all('genre') des = soup.find_all('description') titles = soup.find_all('title') prices = soup.find_all('price') # xml الآن ، لدينا جميع البيانات المستخرجة من ملف # نحتاج الآن إلى دمج جميع البيانات المتعلقة بكتاب واحد من قوائم مختلفة # لذا سوف نستخدم حلقة # rows حيث يتم تخزين جميع بيانات كتاب معين من قوائم مختلفة في قائمة واحدة # data ثم يتم إضاقة كل صف في قائمة أخرى هي # كما يلي data = [] for i in range(0,len(authors)): rows = [authors[i].get_text(),titles[i].get_text(), genres[i].get_text(),prices[i].get_text(), pubdate[i].get_text(),des[i].get_text()] data.append(rows) # وأخيراً سنشكل الداتافريم df = pd.DataFrame(data,columns = ['Author','Book Title', 'Genre','Price','Publish Date', 'Description'])  
  23. إجابة Ali Haidar Ahmad سؤال في تغليف عنصر بوسم جديد باستخدام BeautifulSoup في بايثون كانت الإجابة المقبولة   
    يمكنك القيام بذلك من خلال استخدام الدالة wrap كما يلي:
    # importing BeautifulSoup Module from bs4 import BeautifulSoup htmlDoc = '<p> sometexthere </p>' # BeautifulSoup تحليل النص الذي تم الحصول عليه من خلال soup = BeautifulSoup(htmlDoc, 'lxml') # تنفيذ عملية تغليف حول السلسلة soup.p.string.wrap(soup.new_tag("i")) print(soup) # <html><body><p><i> sometexthere </i></p></body></html> # تنفيذ عملية تغليف حول الوسم soup.p.wrap(soup.new_tag("div")) print(soup) # <html><body><div><p><i> sometexthere </i></p></div></body></html>  
  24. إجابة Ali Haidar Ahmad سؤال في كيفية إزالة الوسوم الفارغة Tags باستخدام BeautifulSoup في بايثون؟ كانت الإجابة المقبولة   
    يمكنك القيام بذلك بالشكل التالي:
    # استيراد الوحدات اللازمة from bs4 import BeautifulSoup # المستند الخاص بك htmlDoc = """ <p> <p></p> <strong>some<br>text<br>here</strong></p> """ # BeautifulSoup تحليل النص الذي تم الحصول عليه من خلال soup = BeautifulSoup(htmlDoc, 'lxml') # الآن نقوم بالمرور على كل الوسوم for x in soup.find_all(): # نقوم بجلب النص من الوسم وإزالة المسافات الفارغة # وبعد محو المسافات الفارغة نتحقق فيما إذا كان طوله يساوي 0 # في حالة أصبح طوله 0 نقوم بحذف الوسم if len(x.get_text(strip=True)) == 0: x.extract() # طباعة النتيجة print(soup) /* <html><body> <strong>sometexthere</strong> </body></html> */  
  25. إجابة Ali Haidar Ahmad سؤال في كيفية العثور على كل الأصناف classes الموجودة ضمن URL محدد، باستخدام BeautifulSoup في بايثون كانت الإجابة المقبولة   
    بشكل عام يمكنك الحصول على جميع الأصناف الموجودة ضمن أي رابط بالشكل التالي:
    # استيراد الوحدات اللازمة from bs4 import BeautifulSoup import requests # تحديد الموقع الهدف URL = "https://en.wikipedia.org/wiki/2019_Ballon_d%27Or" # والحصول على كائن الاستجابة URL طلب عنوان responseObj = requests.get(URL) # BeautifulSoup تحليل النص الذي تم الحصول عليه من خلال soup = BeautifulSoup(responseObj.content, 'lxml') # مجموعة لوضع الأصناف ضمنها class_set = set() # الحصول على جميع الوسوم tags = {tag.name for tag in soup.find_all()} # المرور على كل الوسوم for tag in tags: # الحصول على جميع عناصر الوسم for i in soup.find_all( tag ): # class للتحقق فيما إذا كانت تحمل السمة has_attr نستخدم الدالة if i.has_attr( "class" ): if len( i['class'] ) != 0: class_set.add(" ".join( i['class'])) class_list=list(class_set) # طباعة بعض منها print(class_list[0:5]) # ['infobox-data', 'searchButton mw-fallbackSearchButton', # 'searchButton', 'mw-portlet mw-portlet-tb vector-menu vector-menu-portal portal', # 'mw-portlet mw-portlet-cactions emptyPortlet vector-menu-dropdown-noicon vector-menu vector-menu-dropdown']  
×
×
  • أضف...