def make_suggestions(self, ): """ add suggestion """ suggestions = "" if self.category == u"صفة": suggestions = """<match no="1"/> """ for sug in self.suggestions: sug_tokens = araby.tokenize(sug) sug_tokens = [araby.strip_lastharaka(s) for s in sug_tokens] tokens = [araby.strip_tashkeel(t) for t in self.pattern] if len(tokens) >= 2: match = tokens[1] else: match = "TODO" if len(sug_tokens) >= 2: suggest = sug_tokens[1] else: suggest = sug suggestions += u""" <suggestion><match no="2" regexp_match="%s" regexp_replace="%s"/></suggestion>\n""" % ( match, suggest) elif self.category in (u"كلمة واحدة", u"فعل"): suggestions = "" for sug in self.suggestions: sug_tokens = araby.tokenize(sug) sug_tokens = [araby.strip_lastharaka(s) for s in sug_tokens] tokens = [araby.strip_tashkeel(t) for t in self.pattern] if len(tokens) >= 1: match = tokens[0] else: match = "TODO" if len(sug_tokens) >= 1: suggest = sug_tokens[0] else: suggest = sug elif self.category in (u"متعدي بحرف", u"متعدي إلى مفعولين"): match = self.pattern[0] # add some suggestions suggestions += u"<!-- Verb Intransitive to transitive\n" suggestions += u"""<suggestion><match no="1" postag="(V.*a.;..)(-)" postag_replace="$1H">%s</match><match no="2" regexp_match="ل" regexp_replace=""/></suggestion>""" % ( match) suggestions += u"\n-->\n" suggestions += u"<!-- Verb Intransitive to transitive, when the preposition letter is attached to a noun\n" suggestions += u"""<suggestion><match no="1" postag="(V.*a.;..)(-)" postag_replace="$1H">%s</match> <match no="2" regexp_match="^ب" regexp_replace=""/></suggestion>""" % ( match) suggestions += u"\n-->\n" suggestions += u"<!-- Verb Transitive to intransitive\n" suggestions += u""" <suggestion><match no="1" postag="(V-1.*)(.)" postag_replace="$1-" postag_regexp="yes">%s</match> في<match no="1" regexp_match="(.*)((&verb_encletics;)$)|(.*)((&verb_encletics;)?$)" regexp_replace="$2"/></suggestion>""" % ( match) suggestions += u"\n-->\n" # make suggestion for verb category else: for sug in self.suggestions: suggestions += u" <suggestion>%s</suggestion>\n" % sug return suggestions
def treat_example(wrong_example, correct_example): """ create an element to represent an example of error """ # split tokens correct_example = correct_example.split('/')[0] correct_tokens = araby.tokenize(correct_example) wrong_tokens = araby.tokenize(wrong_example) correct_word , wrong_tokens = diff(wrong_tokens, correct_tokens) correct_word = u" ".join(correct_word) wrong_output = u" ".join(wrong_tokens) example = u"<example correction='%s'>%s</example>\n"%(correct_word, wrong_output) return example
def diff_line(rule): """ extract information from a rule example tuple """ # a line contains a correct and incorrect exqmple marker_begin = "<marker>" marker_end = "</marker>" debug = False a, b = rule a = araby.tokenize(a) b = araby.tokenize(b) s = difflib.SequenceMatcher(None, a, b) if debug: for block in s.get_matching_blocks(): print(block) # extract patterns patterns = [] # extract suggestions suggestions = [] wrong_example = [] marker_pos = [] correct_example = [] categories = [] for tag, i1, i2, j1, j2 in s.get_opcodes(): if debug: print('{:7} a[{}:{}] --> b[{}:{}] {!r:>8} --> {!r}'.format( tag, i1, i2, j1, j2, a[i1:i2], b[j1:j2])) if tag == "equal": wrong_example.extend(a[i1:i2]) elif tag in ("delete", "insert", "replace"): wrong_example.append(marker_begin) wrong_example.extend(a[i1:i2]) wrong_example.append(marker_end) suggestions.append(b[j1:j2]) patterns.append(a[i1:i2]) marker_pos.append((i1, i2)) #~ cat = self.guess_category(a[i1:i2], b[j1:j2]) #~ if cat : #~ categories.append(cat) else: wrong_example.extend(a[i1:i2]) result = { "patterns": patterns, "suggestions": suggestions, "example_wrong": wrong_example, "context": a, "marker_pos": marker_pos, "example_correct": b, #~ "categories": list(set(categories)), } return result
def test(): args = grabargs() filename = args.filename cpt = 0 cpt_not = 0 list_roots = [] with open(filename) as myfile: for line in myfile: line = line.decode('utf8').strip('\n') tokens = araby.tokenize(line) tokens = [normalize(x) for x in tokens] tokens = [x for x in tokens if 3 <= len(x) <= 4] list_roots.extend(tokens) # set uniq list_roots = set(list_roots) rootexistants = set(roots_const.ROOTS) diff = list(list_roots - rootexistants) cpt_not = len(diff) cpt = len(list_roots & rootexistants) #~ for root in list_roots: #~ if root not in roots_const.ROOTS: #~ print(root.encode('utf8')) #~ cpt_not +=1 #~ else: #~ cpt += 1 print("#list root %d, found %d\n# not found %d" % (len(list_roots), cpt, cpt_not)) print(u"\n".join(diff).encode('utf8'))
def extract_vocab(f_name): vocab = set() with open(f_name, 'r', encoding="utf-8") as fin: lines = fin.readlines() for line in tqdm(lines): vocab.update(strip_tashkeel(t) for t in tokenize(line)) return vocab
def extract_poem(): """[summary] might not be using it Returns: [type] -- [description] dict -- postings lists of arabic words """ postings_list = {} tokens = [] with open("short story.txt", encoding='utf-8') as ofile: for loc, line in enumerate(ofile, 1): words = araby.tokenize(araby.strip_tashkeel(line)) tokens.extend(words) for word in words: if (araby.is_tatweel(word)): word = araby.strip_tatweel(word) # if word not in postings_list: # postings_list[word]=[loc] # else: # postings_list[word].append(loc) #return postings_list return tokens
def token_text(text): """ tokenize a text into words """ tasha = tashaphyne.stemming.ArabicLightStemmer() return araby.tokenize(text) return tasha.tokenize(text)
def extractNamed(text): """ Extract Named Enteties in the text. @param text: a given text. @type text: unicode. @return : the text have Named enteties quoted @rtype: unicode >>> extractNamed(u"قال خالد بن رافع حدثني أحمد بن عنبر عن خاله") ("خالد بن رافع"، "أحمد بن عنبر ") """ import pyarabic.named wordlist = araby.tokenize(text) taglist = pyarabic.named.detect_named(wordlist) text_output = "" opened = False for word, tag in zip(wordlist, taglist): if tag in ("named", 'NI', 'NB'): if not opened: text_output += "<mark class='named'>" opened = True text_output += word + " " else: if opened: text_output += "</mark>" opened = False text_output += word + " " return text_output
def extract_number_context(text, ): """ Extract number words in a text within context. Example: >>> extract_number_context(u"وجدت خمسمئة وثلاثة وعشرين دينارا فاشتريت ثلاثة عشر دفترا") وجدت، خمسمئة وثلاثة وعشرين، دينارا فاشتريت، ثلاثة عشر ، دفتر @param text: input text @type text: unicode @return: number words extracted from text @rtype: integer """ phrases = [] wordlist = araby.tokenize(text) positions = detect_number_phrases_position(wordlist) for pos in positions: if len(pos) >= 2: if pos[0] <= len(wordlist) and pos[1] <= len(wordlist): if pos[0] - 1 >= 0: prev = wordlist[pos[0] - 1] else: prev = '' if pos[1] + 1 < len(wordlist): nextword = wordlist[pos[1] + 1] else: nextword = '' phrases.append( \ (prev, ' '.join(wordlist[pos[0]:pos[1]+1]), nextword)) return phrases
def extractor(text, user_id, file_name): keys = {} tagger = make_tagger() text = clean_text(text) token = tokenize(text) POS_tag = tagger.tag(token) stemmed = stemming(POS_tag) pos = tagger.tag(stemmed) preprocessed_text, stopwords = remove_stopwords(pos, stemmed) vocabulary = vocab_creation(preprocessed_text) weighted_edge, score = build_graph(preprocessed_text, vocabulary) inout = summation(vocabulary, weighted_edge) scor = scores(inout, weighted_edge, vocabulary, score) for i in range(0, len(vocabulary)): sc = str(scor[i]) word = vocabulary[i] keys[word] = sc sort = dict(sorted(keys.items(), key=operator.itemgetter(1), reverse=True)[:20]) lis = '' for k in sort.keys(): lis = lis + str(k) + ' ' terms = lis terms = re.sub("[a-zA-Z]", "", terms) # remove english letters keys.clear() sort.clear() edges_list = edges(weighted_edge, vocabulary) draw_graph(edges_list, user_id, file_name) return terms
def freq_dist(self, str): words = araby.tokenize(str) # print(words) freq = nltk.FreqDist(words) for key, val in freq.items(): print(str(key) + ':' + str(val)) return str(key) + ':' + str(val)
def extractNumbered(text): """ Extract number phrases in the text. @param text: a given text. @type text: unicode. @return : the text have number phrases quoted @rtype: unicode >>> extractNumber(u"وجدت خمسمئة وثلاثة وعشرين دينارا"); وجدت خمسمئة وثلاثة وعشرين دينارا ") """ import pyarabic.number phrases = [] wordlist = araby.tokenize(text) positions = pyarabic.number.detectNumberPhrasesPosition(wordlist) previousPos = 0 # to keep the previous pos in the list for pos in positions: if len(pos) >= 2: if pos[0] <= len(wordlist) and pos[1] <= len(wordlist): phrases.append((u' '.join(wordlist[previousPos:pos[0]]), '')) phrases.append( (u' '.join(wordlist[pos[0]:pos[1] + 1]), 'named')) previousPos = pos[1] + 1 #add the last part of the wordlist; phrases.append((u' '.join(wordlist[previousPos:]), '')) # return phrases; newText = "" for tuple in phrases: if tuple[1] == 'named': newText += " <span class='named'>%s</span> " % tuple[0] else: newText += tuple[0] return newText
def show_collocations(text): """ Show collocations found in the text. The collocations is looked up from a data base extracted from a corpus. @param text: a given vocalized text. @type text: unicode. @return : the text have collocations quoted @rtype: unicode """ """import tashkeel.tashkeel as ArabicVocalizer vocalizer = ArabicVocalizer.TashkeelClass() vocalized_text = vocalizer.stat_tashkeel(text) return vocalized_text """ import maskouk.collocations as colloc coll = colloc.CollocationClass(True) text = coll.lookup4long_collocations(text) wordlist = araby.tokenize(text) vocalized_list, taglist = coll.lookup(wordlist) #return u" ".join(zip(vocalized_list,taglist)) text_output = u"" opened = False for word, tag in zip(vocalized_list,taglist): if tag in ( "CB", "CI"): if not opened: text_output += "<mark class='coll'>" opened = True text_output += word + " " else: if opened: text_output += "</mark>" opened = False text_output += word + " " return text_output
def extractNamed(text): """ Extract Named Enteties in the text. @param text: a given text. @type text: unicode. @return : the text have Named enteties quoted @rtype: unicode >>> extractNamed(u"قال خالد بن رافع حدثني أحمد بن عنبر عن خاله"); ("خالد بن رافع"، "أحمد بن عنبر ") """ import pyarabic.named as named phrases=[]; wordlist = araby.tokenize(text); positions= named.detectNamedPosition(wordlist); previousPos=0; # to keep the previous pos in the list for pos in positions: if len(pos)>=2: if pos[0]<=len(wordlist) and pos[1]<=len(wordlist): phrases.append((u' '.join(wordlist[previousPos:pos[0]]),'')) phrases.append((u' '.join(wordlist[pos[0]: pos[1]+1]),'named')) previousPos=pos[1]+1 #add the last part of the wordlist; phrases.append((u' '.join(wordlist[previousPos:]),'')) # return phrases; newText=""; for tuple in phrases: if tuple[1]=='named': newText+=" <span class='named'>%s</span> "%tuple[0]; else: newText+=tuple[0]; return newText;#u"<br>".join(phrases);
def extractNumbered(text): """ Extract number phrases in the text. @param text: a given text. @type text: unicode. @return : the text have number phrases quoted @rtype: unicode >>> extractNumber(u"وجدت خمسمئة وثلاثة وعشرين دينارا"); وجدت خمسمئة وثلاثة وعشرين دينارا ") """ import pyarabic.number phrases=[]; wordlist = araby.tokenize(text); positions= pyarabic.number.detectNumberPhrasesPosition(wordlist); previousPos=0; # to keep the previous pos in the list for pos in positions: if len(pos)>=2: if pos[0]<=len(wordlist) and pos[1]<=len(wordlist): phrases.append((u' '.join(wordlist[previousPos:pos[0]]),'')) phrases.append((u' '.join(wordlist[pos[0]: pos[1]+1]),'named')) previousPos=pos[1]+1 #add the last part of the wordlist; phrases.append((u' '.join(wordlist[previousPos:]),'')) # return phrases; newText=""; for tuple in phrases: if tuple[1]=='named': newText+=" <span class='named'>%s</span> "%tuple[0]; else: newText+=tuple[0]; return newText;#u"<br>".join(phrases);
def extractNamed(text): """ Extract Named Enteties in the text. @param text: a given text. @type text: unicode. @return : the text have Named enteties quoted @rtype: unicode >>> extractNamed(u"قال خالد بن رافع حدثني أحمد بن عنبر عن خاله") ("خالد بن رافع"، "أحمد بن عنبر ") """ import pyarabic.named wordlist = araby.tokenize(text) taglist = pyarabic.named.detect_named(wordlist) text_output = "" opened = False for word, tag in zip(wordlist, taglist): if tag in ("named", 'NI','NB'): if not opened: text_output += "<mark class='named'>" opened = True text_output += word + " " else: if opened: text_output += "</mark>" opened = False text_output += word + " " return text_output
def extractNumbered(text): """ Extract number phrases in the text. @param text: a given text. @type text: unicode. @return : the text have number phrases quoted @rtype: unicode >>> extractNumber(u"وجدت خمسمئة وثلاثة وعشرين دينارا") وجدت خمسمئة وثلاثة وعشرين دينارا ") """ import pyarabic.number wordlist = araby.tokenize(text) taglist = pyarabic.number.detect_numbers(wordlist) # return phrases text_output = "" opened = False for word, tag in zip(wordlist, taglist): if tag in ("named", 'DI','DB'): if not opened: text_output += "<mark class='number'>" opened = True text_output += word + " " else: if opened: text_output += "</mark>" opened = False text_output += word + " " return text_output
def tokenize(text, language): """ Tokenize text based on language """ if language in SPACE_SEPARATED_LANGUAGES: return text.split() elif language == 'vi': temp = ViTokenizer.tokenize(text) temp = temp.split() return temp elif language == 'th': return pythainlp.tokenize.word_tokenize(text) elif language == 'zh_tw' or language == 'zh_cn': return list(jieba.cut(text, HMM=False)) elif language == 'ja': token = [] string_ = ja_tagger.parse(text) for line in string_.split("\n"): if line.split()[0] == "EOS": break token.append(line.split()[0]) token = [x for x in token] return token elif language == 'ar': return araby.tokenize(text) elif language == 'ko': result_temp = ko_tokenizer.tokenize_to_strings(text) result = [] for word in result_temp: result.append(str(word)) return result return None
def test_tokenize(self): #tokenize(text = u"") tests = ['اللُّغَةُ الْعَرَبِيَّةُ جَمِيلَةٌ.', 'انما الْمُؤْمِنُونَ اخوه فاصلحوا بَيْنَ اخويكم', 'الْعَجُزُ عَنِ الْإِدْرَاكِ إِدْرَاكٌ، وَالْبَحْثَ فِي ذاتِ اللَّه اشراك.', 'اللَّهُمُّ اُسْتُرْ عُيُوبَنَا وَأَحْسَنَ خَوَاتِيمَنَا الْكَاتِبِ: نَبِيلُ جلهوم', 'الرَّأْي قَبْلَ شَجَاعَة الشّجعَانِ', 'فَأَنْزَلْنَا مِنْ السَّمَاء مَاء فَأَسْقَيْنَاكُمُوهُ', 'سُئِلَ بَعْضُ الْكُتَّابِ عَنِ الْخَطّ، مَتَى يَسْتَحِقُّ أَنْ يُوصَفَ بِالْجَوْدَةِ ؟' ] results = [] for test in tests: result = Araby.tokenize(test) results.append(result) target = [['اللُّغَةُ', 'الْعَرَبِيَّةُ', 'جَمِيلَةٌ', '.'], ['انما', 'الْمُؤْمِنُونَ', 'اخوه', 'فاصلحوا', 'بَيْنَ', 'اخويكم'], ['الْعَجُزُ', 'عَنِ', 'الْإِدْرَاكِ', 'إِدْرَاكٌ', '،', 'وَالْبَحْثَ', 'فِي', 'ذاتِ', 'اللَّه', 'اشراك', '.'], ['اللَّهُمُّ', 'اُسْتُرْ', 'عُيُوبَنَا', 'وَأَحْسَنَ', 'خَوَاتِيمَنَا', 'الْكَاتِبِ', ':', 'نَبِيلُ', 'جلهوم'], ['الرَّأْي', 'قَبْلَ', 'شَجَاعَة', 'الشّجعَانِ'], ['فَأَنْزَلْنَا', 'مِنْ', 'السَّمَاء', 'مَاء', 'فَأَسْقَيْنَاكُمُوهُ'], ['سُئِلَ', 'بَعْضُ', 'الْكُتَّابِ', 'عَنِ', 'الْخَطّ', '،', 'مَتَى', 'يَسْتَحِقُّ', 'أَنْ', 'يُوصَفَ', 'بِالْجَوْدَةِ', '؟'] ] self.assertEqual(results, target)
def extract_chunks(self, text, context=False): """ Extract chunks words in a text. Example: >>> extract_chunk(u"قال خالد بن رافع حدثني أحمد بن عنبر عن خاله") ("خالد بن رافع"، "أحمد بن عنبر ") >>> extract_chunks(u"تصدق عبد الله بن عمر بدينار", context=True) ("تصدق"، "عبد الله بن عمر"، "بدينار") @param text: input text @type text: unicode @return: named enteties words extracted from text @rtype: integer """ phrases = [] wordlist = araby.tokenize(text) positions = self.detect_positions(wordlist) for pos in positions: if len(pos) >= 2: if pos[0] <= len(wordlist) and pos[1] <= len(wordlist): if pos[0]-1 >= 0: previous = wordlist[pos[0]-1] else: previous = u'' if pos[1]+1 < len(wordlist): nextword = wordlist[pos[1]+1] else: nextword = u'' if context: phrases.append((previous, u' '.join(wordlist[pos[0]: pos[1]+1]), nextword)) else: phrases.append(u' '.join(wordlist[pos[0]: pos[1]+1])) return phrases
def extract_number_context(text, ): """ Extract number words in a text. @param text: input text @type text: unicode @return : number words extracted from text @rtype: integer >>> extract_number_context(u"وجدت خمسمئة وثلاثة وعشرين دينارا فاشتريت ثلاثة عشر دفترا") وجدت، خمسمئة وثلاثة وعشرين، دينارا فاشتريت، ثلاثة عشر ، دفترا """ phrases = [] wordlist = araby.tokenize(text) positions = detect_number_phrases_position(wordlist) for pos in positions: if len(pos) >= 2: if pos[0] <= len(wordlist) and pos[1] <= len(wordlist): if pos[0]-1 >= 0: prev = wordlist[pos[0]-1] else: prev = u'' if pos[1]+1 < len(wordlist): nextword = wordlist[pos[1]+1] else: nextword = u'' phrases.append( \ (prev, u' '.join(wordlist[pos[0]:pos[1]+1]), nextword)) return phrases
def extract_named_within_context(text): """ Extract number words in a text. @param text: input text @type text: unicode @return : number words extracted from text @rtype: integer >>> extractNumberPhrasesWithinContext(u"تصدق عبد الله بن عمر بدينار") ("تصدق"، "عبد الله بن عمر"، "بدينار") """ phrases = [] wordlist = araby.tokenize(text) positions = detect_named_position(wordlist) for pos in positions: # print pos if len(pos) >= 2: if pos[0] <= len(wordlist) and pos[1] <= len(wordlist): if pos[0]-1 >= 0: previous = wordlist[pos[0]-1] else: previous = u'' if pos[1]+1 < len(wordlist): nextword = wordlist[pos[1]+1] else: nextword = u'' phrases.append((previous, \ u' '.join(wordlist[pos[0]: pos[1]+1]), nextword)) return phrases
def extractNamed(text): """ Extract Named Enteties in the text. @param text: a given text. @type text: unicode. @return : the text have Named enteties quoted @rtype: unicode >>> extractNamed(u"قال خالد بن رافع حدثني أحمد بن عنبر عن خاله"); ("خالد بن رافع"، "أحمد بن عنبر ") """ import pyarabic.named as named phrases = [] wordlist = araby.tokenize(text) positions = named.detectNamedPosition(wordlist) previousPos = 0 # to keep the previous pos in the list for pos in positions: if len(pos) >= 2: if pos[0] <= len(wordlist) and pos[1] <= len(wordlist): phrases.append((u' '.join(wordlist[previousPos:pos[0]]), '')) phrases.append( (u' '.join(wordlist[pos[0]:pos[1] + 1]), 'named')) previousPos = pos[1] + 1 #add the last part of the wordlist; phrases.append((u' '.join(wordlist[previousPos:]), '')) # return phrases; newText = "" for tuple in phrases: if tuple[1] == 'named': newText += " <span class='named'>%s</span> " % tuple[0] else: newText += tuple[0] return newText
def main(args): # #test syn text = u"إلى البيت" text = u"""هل تحتاج إلى ترجمة كي تفهم خطاب الملك؟ اللغة "الكلاسيكية" (الفصحى) موجودة في كل اللغات وكذلك اللغة "الدارجة" .. الفرنسية التي ندرس في المدرسة ليست الفرنسية التي يستخدمها الناس في شوارع باريس .. وملكة بريطانيا لا تخطب بلغة شوارع لندن .. لكل مقام مقال """ text = u"اسمائها وصفاتها" result = [] lemmer = qalsadi.lemmatizer.Lemmatizer() lemmer.set_vocalized_lemma() #~ result = lemmer.analyze_text(text) #~ lemmas = lemmer.get_lemmas(result) print('****************') lemmas = lemmer.lemmatize_text(text, return_pos=True) #~ lemmas = lemmer.lemmatize_text(text) print(lemmas) print('****************') # the result contains objects pprint.pprint(result) tokens = araby.tokenize(text) pprint.pprint(list(zip(tokens, lemmas))) for tok in tokens: result = lemmer.lemmatize(tok, return_pos=True) #~ lemma, pos = lemmer.lemmatize(tok, return_pos=True) print(tok,result) word = u"وفي" result = lemmer.lemmatize(tok, return_pos=True) return 0
def show_collocations(text): """ Show collocations found in the text. The collocations is looked up from a data base extracted from a corpus. @param text: a given vocalized text. @type text: unicode. @return : the text have collocations quoted @rtype: unicode """ """import tashkeel.tashkeel as ArabicVocalizer vocalizer = ArabicVocalizer.TashkeelClass() vocalized_text = vocalizer.stat_tashkeel(text) return vocalized_text """ import maskouk.collocations as colloc coll = colloc.CollocationClass(True) text = coll.lookup4long_collocations(text) wordlist = araby.tokenize(text) vocalized_list, taglist = coll.lookup(wordlist) #return u" ".join(zip(vocalized_list,taglist)) text_output = u"" opened = False for word, tag in zip(vocalized_list, taglist): if tag in ("CB", "CI"): if not opened: text_output += "<mark class='coll'>" opened = True text_output += word + " " else: if opened: text_output += "</mark>" opened = False text_output += word + " " return text_output
def test_ngramfinder(self): """####Detect collocation in a phrase""" mydict = msk.CollocationClass() text = u"لعبنا مباراة كرة القدم في بيت المقدس" inpt = araby.tokenize(text) output = ['لعبنا', 'مباراة', 'كرة القدم', 'في', 'بيت المقدس'] self.assertEqual(mydict.ngramfinder(2, inpt), output)
def extractNumbered(text): """ Extract number phrases in the text. @param text: a given text. @type text: unicode. @return : the text have number phrases quoted @rtype: unicode >>> extractNumber(u"وجدت خمسمئة وثلاثة وعشرين دينارا") وجدت خمسمئة وثلاثة وعشرين دينارا ") """ import pyarabic.number wordlist = araby.tokenize(text) taglist = pyarabic.number.detect_numbers(wordlist) # return phrases text_output = "" opened = False for word, tag in zip(wordlist, taglist): if tag in ("named", 'DI', 'DB'): if not opened: text_output += "<mark class='number'>" opened = True text_output += word + " " else: if opened: text_output += "</mark>" opened = False text_output += word + " " return text_output
def normalize_text(text): text = text.strip() text = araby.strip_tashkeel(text) text = ' '.join(araby.tokenize(text)) # remove extra spaces text = re.sub(' +', ' ', text) # remove html tags text = re.sub(re.compile('<.*?>'), ' ', text) # remove twitter usernames, web addresses text = re.sub(r"#[\w\d]*|@[.]?[\w\d]*[\'\w*]*|https?:\/\/\S+\b|" r"www\.(\w+\.)+\S*|", '', text) # strip repeated chars (extra vals) text = re.sub(r'(.)\1+', r"\1\1", text) # separate punctuation from words and remove not included marks text = " ".join(re.findall(r"[\w']+|[?!,;:]", text)) # remove underscores text = text.replace('_', ' ') # remove double quotes text = text.strip('\n').replace('\"', '') # remove single quotes text = text.replace("'", '') # remove numbers text = ''.join(i for i in text if not i.isdigit()) # remove extra spaces text = re.sub(' +', ' ', text) return text
def correct(self, inputVar): targetWords = [ ['احمد', 'أحمد'], ['المدرسه', 'المدرسة'], ['الي', 'إلى'], ['شاطئ', 'شاطيء'], ['بادئ', 'باديء'], ['ناشئ', 'ناشيء'], ['لاجئ', 'لاجيء'], ['الهندسيه', 'الهندسية'], ['المستويه', 'المستوية'], ['المثلثيه', 'المثلثية'], ['اللاحقه', 'اللاحقة'], ] try: inputVar = str(inputVar) errorCount = 0 sentenceSplitter = araby.tokenize(inputVar) correctCount = len(sentenceSplitter) lenOfsentence = len(sentenceSplitter) words = [] for n, s in enumerate(sentenceSplitter): for n2, x in enumerate(targetWords): if str(s) == x[0]: errorCount += 1 correctCount -= 1 sentenceSplitter[n] = x[1] words.append(x[1]) return (self.convertArrayToStr(sentenceSplitter), errorCount, correctCount, lenOfsentence, words) except Exception as e: print('we have error in ', e)
def make_examples(self, ): """ make xml format example """ corrections = u"|".join(self.suggestions) examples = "" #~ print('#********************%s'%self.example_marker_pos) #~ print(self.example_marker_pos) for exmp in self.examples["incorrect"]: ex_tokens = araby.tokenize(exmp) exmp_xml = "" begin_tag = False end_tag = False for i in range(len(ex_tokens)): if i == self.example_marker_pos[0]: exmp_xml += u"<marker>" begin_tag = True exmp_xml += ex_tokens[i] if i == self.example_marker_pos[1]: exmp_xml += u"</marker>" end_tag = True exmp_xml += " " if begin_tag and not end_tag: exmp_xml += u"</marker>" examples += u"<example correction='%s' type='incorrect'> %s </example>\n" % ( corrections, exmp_xml) for exmp in self.examples["correct"]: #~ exmp = exmp.replace(pat, "<marker>%s</marker>"%pat) examples += u"<example type='correct'> %s </example>" % (exmp) return examples
def treat_example(wrong_example, correct_example): """ create an element to represent an example of error """ # split tokens correct_example = correct_example.split('/')[0] correct_tokens = araby.tokenize(correct_example) wrong_tokens = araby.tokenize(wrong_example) correct_word , wrong_tokens = diff(wrong_tokens, correct_tokens) correct_word = u" ".join(correct_word ) wrong_output = u" ".join(wrong_tokens ) example = u"<example correct='%s'>%s </example>"%(correct_word, wrong_output) return example
def create_sentence(self, idx): line = self.lines[idx] tokens = tokenize(line.strip()) word_x = [] char_x = [] diac_x = [] diac_y = [] diac_y_tmp = [] for word in tokens: split_word = self.data_utils.split_word_on_characters_with_diacritics( word) cx, cy, cy_3head = self.data_utils.create_label_for_word( split_word) word_strip = strip_tashkeel(word) word_x += [ self.data_utils.w2idx[word_strip] if word_strip in self.data_utils.w2idx else self.data_utils.w2idx["<pad>"] ] char_x += [ self.data_utils.pad_sequence(cx, self.data_utils.max_word_len) ] diac_y += [ self.data_utils.pad_sequence( cy, self.data_utils.max_word_len, pad=self.data_utils.pad_target_val) ] diac_y_tmp += [ self.data_utils.pad_sequence( cy_3head, self.data_utils.max_word_len, pad=[self.data_utils.pad_target_val] * 3) ] diac_x = self.data_utils.create_decoder_input(diac_y_tmp) max_slen = self.data_utils.max_sent_len max_wlen = self.data_utils.max_word_len p_val = self.data_utils.pad_val pt_val = self.data_utils.pad_target_val word_x = self.data_utils.pad_sequence(word_x, max_slen) char_x = self.data_utils.pad_sequence(char_x, max_slen, pad=[p_val] * max_wlen) diac_x = self.data_utils.pad_sequence(diac_x, max_slen, pad=[[p_val] * 8] * max_wlen) diac_y = self.data_utils.pad_sequence(diac_y, max_slen, pad=[pt_val] * max_wlen) return word_x, char_x, diac_x, diac_y
def tokenize(self, text = u""): """ Tokenize text into words @param text: the input text. @type text: unicode. @return: list of words. @rtype: list. """ return araby.tokenize(text)
def compare(self, baseline, vocalized_output): """ compare base line with automatic vocalized result """ myconsole.lineCorrect = 0 myconsole.lineWLMIncorrect = 0 inputVocalizedLine = baseline inputlist = araby.tokenize(inputVocalizedLine) if type(vocalized_output) == list: outputlist = [x.get("chosen", '') for x in vocalized_output] result = vocalized_output outputlistsemi = [x.get("semi", '') for x in vocalized_output] elif type(vocalized_output) == str: outputlist = araby.tokenize(vocalized_output) outputlistsemi = [araby.strip_lastharaka(x) for x in outputlist] else: print("Incompatible vocaluzed output, must be dict or string", type(vocalized_output), vocalized_output) sys.exit() self.total += len(inputlist) self.lineTotal = len(inputlist) if len(inputlist) != len(outputlist): print("lists haven't the same length") print(len(inputlist), len(outputlist)) print(u"# ".join(inputlist).encode('utf8')) print(u"# ".join(outputlist).encode('utf8')) else: for inword, outword, outsemiword in zip(inputlist, outputlist, outputlistsemi): simi = araby.vocalized_similarity(inword, outword) if simi < 0: self.LettersError += -simi self.incorrect += 1 # evaluation without last haraka simi2 = araby.vocalized_similarity(inword, outsemiword) if simi2 < 0: self.WLMIncorrect += 1 self.lineWLMIncorrect += 1 else: self.correct += 1 self.lineCorrect += 1 self.counter += 1
def main(): args = grabargs() filename = args.filename outfile = args.outfile all_stemmers = args.all lines = [] try: with open(filename, ) as inputfile: for line in inputfile: lines.append(line.decode('utf8')) except: print " Can't Open the given File ", filename sys.exit() analyzer = qalsadi.analex.Analex() analyzer.disable_allow_cache_use() #~ text = u"\n".join(lines[:10]) text = u"\n".join(lines) text = araby.strip_tashkeel(text) text = u" ".join(araby.tokenize(text, conditions=araby.is_arabicrange)) result = analyzer.check_text(text) adapted_result = [] for word_analyz_list in result: for word_analyz in word_analyz_list: adapted_result.append(word_analyz.__dict__) df = pd.DataFrame(adapted_result) # the original word is vocalized # customize fields df['lemma'] = df['original'].apply(araby.strip_tashkeel) df['tag'] = df['type'].apply(lambda x: x.split(':')[0]) # choose fields display = df[['word', 'root', 'lemma', 'stem', 'tag', 'original']] #join originals into one field dispgroup = display.groupby( ['word', 'root', 'lemma', 'stem', 'tag'])['original'].apply(lambda x: u';'.join(list(set(list(x))))) dispgroup = dispgroup.drop_duplicates() dispgroup.to_csv(outfile, sep='\t', encoding='utf8') # drop duplicata # mmake stats on data display = display[['word', 'root', 'lemma', 'stem', 'tag']].drop_duplicates() x = calcul_stats(display) #~ print(x) x.to_csv(outfile + '.stats', sep='\t', encoding='utf8') print("Output data is stored in %s" % outfile) print("Statistics data is stored in %s" % outfile + 'stats')
def countWords(tweetText): tweetText = araby.strip_tashkeel(tweetText) words = araby.tokenize(tweetText) #tokenize text into words cleaned_words = cleanWords(words) unique_words = [] for word in sorted(set(cleaned_words)): times = cleaned_words.count(word) unique_words.append((word, times)) return len(cleaned_words), len(unique_words)
def treat_pattern(pattern, suggestions, message): """ Extract infos and fields from input """ tokens = araby.tokenize(pattern) patternxml = u"""<token>%s</token>"""%u"</token>\n\t\t<token>".join(tokens) sugs = suggestions.split('|') sugsxml = u"""\t\t<suggestion>%s</suggestion>"""%u"</suggestion>\n\t\t<suggestion>".join(sugs) messagexml = u"""يفضل أن يقال:\n%s\n%s"""%(sugsxml, message) return patternxml, messagexml
def detect_named2(text): """ Detect named enteties in a text @param text: input text @type text: unicode @return : extract named enteties @rtype: integer >>> text2number(u"وجد عبد الله بن عمر دينارا") عبد الله بن عمر """ words = araby.tokenize(text) phrase = [] phrases = [] previous = u"" for i in range(len(words)): word = words[i] if i+1 < len(words): nextword = words[i+1] else: nextword = u"" key = word # the first word can have prefixes if not phrase and word and word[0] in (u'و', u'ف', u'ل', u'ب', u'ك'): key = word[1:] if not phrase and key in (u'ابن', ): phrase.append(word) elif key in (u'بن', u'أبو', u'أبا', u'أبي', u'عبد' , ): phrase.append(word) elif previous in (u'بن', u'ابن', u'أبو', u'أبا', u'أبي', u'عبد',): phrase.append(word) elif nextword in (u'بن', u'عبد' , u'أبو', u'أبي') \ and word in (u'الدين',): phrase.append(previous) phrase.append(word) elif nextword in (u'بن', ) : phrase.append(word) else: if len(phrase) >= 1: if word.startswith(u'ال') and word.endswith(u'ي'): phrase.append(word) phrases.append(u" ".join(phrase)) #~phrases.append(u"".join(phrase)) phrase = [] previous = key # add the final phrases if phrase: #~phrases.append(u" ".join(phrase)) phrases.append(u"".join(phrase)) return phrases
def detectNamed(text): """ Detect named enteties in a text @param text: input text @type text: unicode @return : extract named enteties @rtype: integer >>> text2number(u"وجد عبد الله بن عمر دينارا"); عبد الله بن عمر """ words=araby.tokenize(text); #print words; phrase = []; phrases = []; tags= u""; majrour = False; previous=u""; for i in range(len(words)): word = words[i]; if i+1<len(words): next = words[i+1]; else: next= u""; key=word; # the first word can have prefixes if not phrase and word and word[0] in (u'و', u'ف', u'ل', u'ب', u'ك'): key=word[1:]; if not phrase and key in (u'ابن', ): phrase.append(word); elif key in (u'بن',u'أبو',u'أبا', u'أبي', u'عبد' , ): phrase.append(word); elif previous in (u'بن', u'ابن', u'أبو',u'أبا', u'أبي', u'عبد',): phrase.append(word); elif next in (u'بن', u'عبد' , u'أبو', u'أبي') and word in (u'الدين',): phrase.append(previous); phrase.append(word); elif next in (u'بن', ) : phrase.append(word); else: if len(phrase)>=1: if word.startswith(u'ال') and word.endswith(u'ي'): phrase.append(word); phrases.append(u" ".join(phrase)); phrase=[]; previous = key; # add the final phrases if phrase: phrases.append(u" ".join(phrase)); return phrases
def extract_enteties(text): """ Extract enteties as numbers, named enteties, collocations. @param text: a given text. @type text: unicode. @return : the text have enteties phrases quoted @rtype: unicode """ import pyarabic.number import pyarabic.named import maskouk.collocations as colloc coll = colloc.CollocationClass(True) wordlist = araby.tokenize(text) taglist_nb = pyarabic.number.detect_numbers(wordlist) voclist_nb = pyarabic.number.pre_tashkeel_number(wordlist) taglist_nmd = pyarabic.named.detect_named(wordlist) voclist_nmd = pyarabic.named.pretashkeel_named(wordlist) voclist_coll, taglist_coll = coll.lookup(wordlist) # return phrases text_output = [] opened = False for word, tagnb, vocnb, tagnmd, vocnmd, tagcol, voccol in zip(wordlist, taglist_nb,voclist_nb, taglist_nmd, voclist_nmd, taglist_coll, voclist_coll): if tagnb == 'DB': if opened: text_output.append("</mark>") text_output.extend(["<mark class='number'>",vocnb] ) opened = True elif tagnmd == 'NB': if opened: text_output.append("</mark>") text_output.extend(["<mark class='named'>",vocnmd] ) opened = True elif tagcol =='CB': if opened: text_output.append("</mark>") text_output.extend(["<mark class='coll'>",voccol] ) opened = True elif tagnmd == "NI": text_output.append(vocnmd) elif tagnb == "DI": text_output.append(vocnb) elif tagcol == "CI": text_output.append(voccol) else: if opened: text_output.append("</mark>") opened = False text_output.append(word) if opened: text_output.append("</mark>") return u" ".join(text_output)
def bigrams(text): """ split text into bigrams """ import pyarabic.araby as araby from collections import Counter # tokenize texts words = araby.tokenize(text) bigramslist = [] for i in range(len(words)-1): bigramslist.append(u" ".join([words[i], words[i+1]])) counts = Counter(bigramslist) bl =[] for item in sorted(counts): bl.append(u' '.join([item, str(counts[item])])) #~ return bigramslist return bl
def yaraspellcheck(self,inputtext,suggestion=False, format='text'): """ Vocalize the text and give suggestion to improve spellcheck by user. @param text: input text. @type text: unicode. @return: vocalized text. rtype: dict of dict or text. """ texts=[inputtext, ]; vocalized_text=u""; outputSuggestList=[] ChosenList=[] suggestsList=[] autosuggestsList=[] for text in texts: #tokenize of text words = araby.tokenize(text); for word in words: suggests=[] autosuggest = [] exists = self.speller.lookup(word) #~ print (u"'%s'\t%s"%(word, str(exists))).encode('utf8') if not exists: suggests.append(word) # create a suggest list suggests.extend(self.speller.correct(word)) #print "suggestions\n", word.encode('utf8'),u" ".join(suggests).encode('utf8') if len(suggests) > 1: autosuggest = self.speller.autocorrect(word, suggests) currentChosen = word ChosenList.append(currentChosen); suggestsList.append(suggests); outputSuggestList=[] #create texts from chosen cases for i in range(len(ChosenList)): word = ChosenList[i] vocalized_text=u" ".join([vocalized_text,self.display(word,format)]); #~vocalized_text=u"".join([vocalized_text,self.display(word,format)]); outputSuggestList.append({'chosen':word,'suggest':u";".join(suggestsList[i])}); if suggestion: return outputSuggestList; else: return vocalized_text;
def treatLine(line, action): """ treat one line at once with action""" global globalFreq if action == "extract": words=araby.tokenize(line); for word in words: extract(word); elif action =="reduce": line= line.strip(' '); fields=line.split(' '); if len(fields)>=2: freq = fields[0] word = fields[1] word_nm = araby.stripTashkeel(word); if WordsTab.has_key(word_nm): # the word has multiple vocalization WordsTab[word_nm]=False; else: WordsTab[word_nm]={'f':freq,'v':word} ; globalFreq += stringToInt(freq);
def extract_named(text): """ Extract named enteties words in a text. @param text: input text @type text: unicode @return : named enteties words extracted from text @rtype: integer >>> extract_named(u"قال خالد بن رافع حدثني أحمد بن عنبر عن خاله") ("خالد بن رافع"، "أحمد بن عنبر ") """ phrases = [] wordlist = araby.tokenize(text) positions = detect_named_position(wordlist) for pos in positions: if len(pos) >= 2: if pos[0] <= len(wordlist) and pos[1] <= len(wordlist): phrases.append(u' '.join(wordlist[pos[0]: pos[1]+1])) return phrases
def extract_enteties2(text): """ Extract enteties as numbers, named enteties, collocations. @param text: a given text. @type text: unicode. @return : the text have enteties phrases quoted @rtype: unicode """ import pyarabic.number import pyarabic.named import maskouk.collocations as colloc coll = colloc.CollocationClass(True) wordlist = araby.tokenize(text) taglist_nb = pyarabic.number.detect_numbers(wordlist) taglist_nmd = pyarabic.named.detect_named(wordlist) vocalized_list, taglist_coll = coll.lookup(wordlist) # return phrases text_output = "" opened = False for word, voc, tagnb, tagnmd, tagcol in zip(wordlist,vocalized_list, taglist_nb, taglist_nmd, taglist_coll): if tagnb in ('DI','DB'): if not opened: text_output += "<mark class='number'>" opened = True text_output += word + " " elif tagnmd in ('NI','NB'): if not opened: text_output += "<mark class='named'>" opened = True text_output += word + " " elif tagcol in ('CI','CB'): if not opened: text_output += "<mark class='coll'>" opened = True text_output += voc + " " else: if opened: text_output += "</mark>" opened = False text_output += word + " " return text_output
def extract_number_phrases(text): """ Extract number words in a text. @param text: input text @type text: unicode @return : number words extracted from text @rtype: integer >>> extract_number_phrases(u"وجدت خمسمئة وثلاثة وعشرين دينارا فاشتريت ثلاثة عشر دفترا") خمسمئة وثلاثة وعشرين ثلاثة عشر """ phrases = [] wordlist = araby.tokenize(text)#text.split(' ') positions = detect_number_phrases_position(wordlist) for pos in positions: if len(pos) >= 2: if pos[0] <= len(wordlist) and pos[1] <= len(wordlist): phrases.append(u' '.join(wordlist[pos[0]: pos[1]+1])) return phrases
#import number as ArabicNumberToLetters TEXTS = [u"مليونان وألفان وإثنا عشر", u"جاء مليونان وألفان وإثنا عشر", u"وجدت خمسمئة وثلاث وعشرون دينارا", u"خمسمئة وثلاث وعشرون دينارا", u"وجدت خمسمئة وثلاثة وعشرين دينارا فاشتريت ثلاثة عشر دفترا", u"لم أجد شيئا", u"وجدت خمسمئة وثلاثة وعشرين دينارا فاشتريت ثلاثة عشر دفترا", u'من ثلاثمئة وخمسين بلدا ', u'من ثلاثمئة وخمسين بلدا ', u'من أربعمئة وخمسين بلدا ', u'السلام عليكم 2014', ] #~ arepr = arabrepr.ArabicRepr() for txt in TEXTS: word_list = araby.tokenize(txt) positions_phrases = detect_number_phrases_position(word_list) print(positions_phrases) nb_phrases = extract_number_phrases(txt) tag_list = detect_numbers(word_list) print(tag_list) print(u" ".join(word_list)) print(zip(tag_list, word_list)) print('tashkeel') tashkeel = u" ".join(pre_tashkeel_number(word_list)) if sys.version_info < (3, 0): print(tashkeel.encode('utf8')) else: print(tashkeel) print(u'\t'.join(nb_phrases)) print("detect number word")
vocalized = vocalize_number(wordlist[startpos: endpos+1], \ tags) wordlist = wordlist[:startpos] + vocalized +wordlist[endpos+1:] return wordlist if __name__ == '__main__': #import number as ArabicNumberToLetters TEXTS = [u"مليونان وألفان وإثنا عشر", u"جاء مليونان وألفان وإثنا عشر", u"وجدت خمسمئة وثلاث وعشرون دينارا", u"خمسمئة وثلاث وعشرون دينارا", u"وجدت خمسمئة وثلاثة وعشرين دينارا فاشتريت ثلاثة عشر دفترا", u"لم أجد شيئا", u"وجدت خمسمئة وثلاثة وعشرين دينارا فاشتريت ثلاثة عشر دفترا", u'من ثلاثمئة وخمسين بلدا ', u'من ثلاثمئة وخمسين بلدا ', u'من أربعمئة وخمسين بلدا ', ] for txt in TEXTS: positions_phrases = detect_number_phrases_position(araby.tokenize(txt)) print positions_phrases nb_phrases = extract_number_phrases(txt) wordlist = araby.tokenize(txt) taglist = detect_numbers(wordlist) arepr = arabrepr.ArabicRepr() print taglist print u" ".join(wordlist).encode('utf8') print arepr.repr(zip(taglist, wordlist)).encode('utf8') print "tashkeel",u" ".join(pre_tashkeel_number(wordlist)).encode('utf8') print txt.encode('utf8') print u'\t'.join(nb_phrases).encode('utf8')
import tashkeel if __name__ == '__main__': filename, disableSyntax, disableSemantic, disableStat, ignore, limit, compare =grabargs() #filename="samples/randomtext.txt" try: myfile=open(filename) except: print " Can't Open the given File ", filename; counter=1; if not limit : limit= 100000000 nolimit = False; correct=0; total=0; line=(myfile.readline()).decode('utf8'); while line and (nolimit or counter<=limit): unvocline= araby.stripTashkeel(line); vocalized=pyarabic.number.preTashkeelNumber(araby.tokenize(unvocline)); vocalized=u' '.join(vocalized); if vocalized!=unvocline: total+=1; sim = araby.vocalizedSimilarity(vocalized, araby.stripShadda( line)); if sim>=0: correct+=1; # for res in result: if sim<0: print u"\t".join([str(sim),str(counter),str(len(vocalized)),str(len(line)),vocalized, line]).encode('utf8'); #get the next line line=(myfile.readline()).decode('utf8'); counter+=1; print correct, total, round(correct*100.00/total,2)
#print newword.encode('utf8'); # return newword; return starword def extractVocalization(word, joker=''): """ Extract all harakats from the word, all other letters will be replaced with a joker """ harakatPattern = re.sub(NON_VOCALIZATION_pattern,joker, word); return harakatPattern if __name__ == '__main__': text=u"""54:* حَدِيثٌ كم حم عم: إِذَا كَانَ يَوْمُ الْقِيَامَةِ كُنْتُ إِمَامَ النَّبِيِّينَ وَخَطِيبَهُمْ وَصَاحِبَ شَفَاعَتِهِمْ، غَيْرَ فَخْرٍ كم فِي الإِيمَانِ: ثنا الْحُسَيْنُ بْنُ الْحَسَنِ الطُّوسِيُّ، ثنا أَبُو حَاتِمٍ الرَّازِيُّ، ثنا عَبْدُ اللَّهِ بْنُ جَعْفَرٍ الرَّقِّيُّ، ثنا عُبَيْدُ اللَّهِ بْنُ عَمْرٍو وَعَنْ مُحَمَّدِ بْنِ صَالِحِ بْنِ هَانِئٍ، ثنا السَّرِيُّ بْنُ خُزَيْمَةَ، ثنا أَبُو حُذَيْفَةَ النَّهْدِيُّ، ثنا زُهَيْرُ بْنُ مُحَمَّدٍ، كِلاهُمَا عَنْ عَبْدِ اللَّهِ بْنِ مُحَمَّدِ بْنِ عَقِيلٍ، عَنِ الطُّفَيْلِ بْنِ أُبَيِّ بْنِ كَعْبٍ، عَنْ أَبِيهِ، بِهِ وَقَالَ: صَحِيحُ الإِسْنَادِ وَلَمْ يُخَرِّجَاهُ لِتَفَرُّدِ ابْنِ عَقِيلٍ بِهِ لِمَا نُسِبَ إِلَيْهِ مِنْ سُوءِ الْحِفْظِ، وَهُوَ عِنْدَ أَئِمَّتِنَا مِنَ الْمُتَقَدِّمِينَ ثِقَةٌ مَأْمُونٌ وَفِي الْفَضَائِلِ: أَنَا الْقَطِيعِيُّ، ثنا عَبْدُ اللَّهِ بْنُ أَحْمَدَ، حَدَّثَنِي أَبِي، ثنا عَبْدُ الرَّحْمَنِ، وَهُوَ ابْنُ مَهْدِيٍّ، ثنا زُهَيْرُ بْنُ مُحَمَّدٍ، عَنْ عَبْدِ اللَّهِ بْنِ مُحَمَّدٍ، بِهِ وَرَوَاهُ الإِمَامُ أَحْمَدُ: عَنْ أَبِي عَامِرٍ، عَنْ زُهَيْرٍ، يَعْنِي: ابْنَ مُحَمَّدٍ، عَنْ عَبْدِ اللَّهِ بْنِ مُحَمَّدٍ، بِهِ وَعَنْ زَكَرِيَّا بْنِ عَدِيٍّ، وَأَحْمَدَ بْنِ عَبْدِ الْمَلِكِ الْحَرَّانِيِّ، كِلاهُمَا عَنْ عُبَيْدِ اللَّهِ بْنِ عَمْرٍو، بِهِ وَعَنْ أَبِي أَحْمَدَ الزُّبَيْرِيِّ، عَنْ شَرِيكٍ، عَنْ عَبْدِ اللَّهِ بْنِ مُحَمَّدٍ، بِهِ وَرَوَاهُ ابْنُهُ عَبْدُ اللَّهِ فِي زِيَادَاتِهِ: حَدَّثَنِي عُبَيْدُ اللَّهِ الْقَوَارِيرِيُّ، ثنا مُحَمَّدُ بْنُ عَبْدِ اللَّهِ بْنِ الزُّبَيْرِ، ثنا شَرِيكٌ، بِهِ وَقَالَ أَيْضًا: ثنا هَاشِمُ بْنُ الْحَارِثِ، ثنا عُبَيْدُ اللَّهِ بْنُ عَمْرٍو، بِهِ وَحَدَّثَنِي(1/24) 56:* حَدِيثٌ كم حم: بَيْنَا نَحْنُ فِي صَلاةِ الظَّهِيرَةِ وَالنَّاسُ فِي الصُّفُوفِ فَرَأَيْنَاهُ يَتَنَاوَلُ شَيْئًا الْحَدِيثَ كم فِي الأَهْوَالِ: أنا عَبْدُ الرَّحْمَنِ بْنُ حَمْدَانَ، ثنا هِلالُ بْنُ الْعَلاءِ، ثنا أَبِي، ثنا عُبَيْدُ اللَّهِ بْنُ عَمْرٍو، عَنْ عَبْدِ اللَّهِ بْنِ مُحَمَّدِ بْنِ عَقِيلٍ، عَنِ الطُّفَيْلِ بْنِ أُبَيِّ بْنِ كَعْبٍ، عَنْ أَبِيهِ، وَقَالَ: صَحِيحُ الإِسْنَادِ رَوَاهُ أَحْمَدُ بِطُولِهِ: عَنْ أَحْمَدَ بْنِ عَبْدِ الْمَلِكِ بْنِ وَاقِدٍ الْحَرَّانِيِّ، عَنْ عُبَيْدِ اللَّهِ بْنِ عَمْرٍو، بِهِ قُلْتُ: رَوَاهُ زَكَرِيَّا بْنُ عَدِيٍّ، عَنْ عُبَيْدِ اللَّهِ بْنِ عَمْرٍو، فَقَالَ: عَنْ عَبْدِ اللَّهِ بْنِ مُحَمَّدِ بْنِ عَقِيلٍ، عَنْ جَابِرٍ وَأَخْرَجَهُ أَحْمَدُ، أَيْضًا: عَنْ زَكَرِيَّا. 68:* عَبْدُ اللَّهِ بْنُ رَبَاحٍ، عَنْ أُبَيٍّ حَدِيثٌ كم م حم عم: قَالَ لِي رَسُولُ اللَّهِ، صَلَّى اللَّهُ عَلِيهِ وَسَلَّم: أَيُّ آيَةٍ فِي كِتَابِ اللَّهِ أَعْظَمُ؟ قَالَ: قُلْتُ: {اللَّهُ لا إِلَهَ إِلا هُوَ الْحَيُّ الْقَيُّومُ} قال: فَضَرَبَ صَدْرِي وَقَالَ: لِيَهْنِكَ الْعِلْمُ أَبَا الْمُنْذِرِ كم فِي الْمَعْرِفَةِ: ثنا أَبُو عَبْدِ اللَّهِ الْحَافِظُ، ثنا إِبْرَاهِيمُ بْنُ عَبْدِ اللَّهِ، ثنا يَزِيدُ بْنُ هَارُونَ، أَنَا الْجُرَيْرِيُّ، عَنْ أَبِي السَّلِيلِ، عَنْ عَبْدِ اللَّهِ بْنِ رَبَاحٍ، عَنْهُ، بِهَذَا قُلْتُ: هُوَ فِي مُسْلِمٍ، فَلا يُسْتَدْرَكُ وَرَوَاهُ الإِمَامُ أَحْمَدُ: ثنا عَبْدُ الرَّزَّاقِ، أَنَا سُفْيَانُ، عَنْ سَعِيدٍ الْجُرَيْرِيِّ، بِهِ وَرَوَاهُ ابْنُهُ عَبْدُ اللَّهِ، فِي زِيَادَاتِهِ: حَدَّثَنِي عُبَيْدُ اللَّهِ الْقَوَارِيرِيُّ، ثنا جَعْفَرُ بْنُ سُلَيْمَانَ، ثنا الْجُرَيْرِيُّ، عَنْ بَعْضِ أَصْحَابِهِ، عَنْ عَبْدِ اللَّهِ بْنِ رَبَاحٍ، بِهِ. 79:حَدِيثٌ كم حم: إِنِّي تَلَقَّيْتُ الْقُرْآنَ مِمَّنْ تَلَقَّاهُ مِنْ جِبْرِيلَ وَهُوَ رَطِبٌ الْحَدِيثَ، وَفِيهِ قِصَّةٌ لَهُ مَعَ عُمَرَ كم فِي أَوَّلِ التَّفْسِيرِ: ثنا عَلِيُّ بْنُ حَمْشَاذَ، ثنا مُحَمَّدُ بْنُ غَالِبٍ، ثنا عَفَّانُ بْنُ مُسْلِمٍ، وَأَبُو الْوَلِيدِ قَالا: ثنا أَبُو عَوَانَةَ، عَنِ الأَسْوَدِ بْنِ قَيْسٍ، عَنْ نُبَيْحٍ الْعَنْزِيِّ، عَنِ ابْنِ عَبَّاسٍ، فَذَكَرَ قِصَّةً فِيهَا هَذَا وَقَالَ: صَحِيحُ الإِسْنَادِ رَوَاهُ أَحْمَدُ: ثنا هِشَامُ بْنُ عَبْدِ الْمَلِكِ، وَعَفَّانُ، وَهُوَ لَفْظُهُ، قَالا: ثنا أَبُو عَوَانَةَ، بِهِ.(1/34) 84:حَدِيثٌ جا حب قط عم كم: كَانَ رَسُولُ اللَّهِ، صَلَّى اللَّهُ عَلِيهِ وَسَلَّم، يُوتِرُ بِثَلاثِ رَكَعَاتٍ الْحَدِيثَ جا فِي الصَّلاةِ: ثنا إِبْرَاهِيمُ بْنُ أَبِي بَكْرِ بْنِ أَبِي شَيْبَةَ، ثنا مُحَمَّدُ بْنُ أَبِي عُبَيْدَةَ بْنِ مَعْنٍ، عَنْ أَبِيهِ، عَنِ الأَعْمَشِ، عَنْ طَلْحَةَ الْيَامِيِّ، عَنْ ذَرٍّ، عَنْ سَعِيدِ بْنِ عَبْدِ الرَّحْمَنِ بْنِ أَبْزَى، عَنْ أَبِيهِ، عَنْهُ، بِهِ حب فِي الرَّابِعِ وَالثَّلاثِينَ مِنَ الْخَامِسِ: أَنَا أَحْمَدُ بْنُ الْحَسَنِ بْنِ عَبْدِ الْجَبَّارِ، ثنا يَحْيَى بْنُ مَعِينٍ، ثنا أَبُو حَفْصٍ الأَبَّارُ، عَنِ الأَعْمَشِ، عَنْ زُبَيْدٍ، وَطَلْحَةَ الْيَامِيِّ، عَنْ ذَرٍّ، بِهِ وَعَنْ أَبِي يَعْلَى، ثنا مُحَمَّدُ بْنُ عَبْدِ اللَّهِ بْنِ نُمَيْرٍ، ثنا مُحَمَّدُ بْنُ أَبِي عُبَيْدَةَ، بِهِ قط فِي الصَّلاةِ: ثنا الْحُسَيْنُ بْنُ إِسْمَاعِيلَ، ثنا يُوسُفُ بْنُ مُوسَى، ثنا عَبْدُ الرَّحْمَنِ بْنِ عَبْدِ اللَّهِ الدَّشْتَكِيُّ، عَنْ أَبِي جَعْفَرٍ الرَّازِيُّ، عَنِ الأَعْمَشِ، بِهِ وَعَنْ عَبْدِ اللَّهِ بْنِ سُلَيْمَانَ، ثَنَا الْمُسَيَّبُ بْنُ وَاضِحٍ، نا عِيسَى بْنُ يُونُسَ، عَنْ سَعِيدِ بْنِ أَبِي عَرُوبَةَ، عَنْ قَتَادَةَ، عَنْ عَزْرَةَ، عَنْ سَعِيدِ بْنِ عَبْدِ الرَّحْمَنِ، بِهِ، وَفِيهِ أَلْفَاظٌ تَفَرَّدَ بِهَا وَقَالَ عَبْدُ اللَّهِ: وَرُبَّمَا لَمْ يَقُلِ الْمُسَيَّبُ: عَنْ عَزْرَةَ كم فِي آخِرِ الْقِرَاءَاتِ: ثَنَا أَبُو بَكْرِ بْنُ إِسْحَاقَ، ثَنَا الْحَسَنُ بْنُ عَلِيِّ بْنِ زِيَادٍ، ثنا إِبْرَاهِيمُ بْنُ مُوسَى، ثَنَا أَبُو أَنَسٍ مُحَمَّدُ بْنُ أَنَسٍ، ثنا الأَعْمَشُ، بِهِ رَوَاهُ عَبْدُ اللَّهِ بْنُ أَحْمَدَ: عَنْ أَبِي بَكْرِ بْنِ أَبِي شَيْبَةَ، عَنْ مُحَمَّدِ بْنِ أَبِي عُبَيْدَةَ، بِهِ وَعَنْ عُثْمَانَ بْنِ أَبِي شَيْبَةَ،(1/37) 87:* حَدِيثٌ كم عم: لا تَسُبُّوا الرِّيحَ، فَإِنَّهَا مِنْ نَفْسِ الرَّحْمَنِ، قَوْلُهُ: {وَتَصْرِيفِ الرِّيَاحِ} الآية، وَلَكِنْ قُولُوا: اللَّهُمَّ إِنَّا نَسْأَلُكَ مِنْ خَيْرِ هَذِهِ الرِّيحِ الْحَدِيثَ كم فِي تَفْسِيرِ الْبَقَرَةِ: أَنَا يَحْيَى بْنُ مُحَمَّدٍ الْعَنْبَرِيُّ، ثنا مُحَمَّدُ بْنُ عَبْدِ السَّلامِ، ثنا إِسْحَاقُ بْنُ إِبْرَاهِيمَ، أَنَا جَرِيرٌ، عَنِ الأَعْمَشِ، عَنْ حَبِيبِ بْنِ أَبِي ثَابِتٍ، عَنْ ذَرٍّ، عَنْ سَعِيدِ بْنِ عَبْدِ الرَّحْمَنِ، بْنِ أَبْزَى أَظُنُّهُ عَنْ أَبِيهِ، عَنْ أُبَيٍّ، بِهِ قَوْلُهُ، وَقَالَ: صَحِيحٌ عَلَى شَرْطِهِمَا، وَقَدْ أُسْنِدَ مِنْ حَدِيثِ حَبِيبٍ وَرَوَاهُ عَبْدُ اللَّهِ بْنُ أَحْمَدَ فِي زِيَادَاتِهِ: حَدَّثَنِي أَبُو مُوسَى مُحَمَّدُ بْنُ الْمُثَنَّى، ثنا أَسْبَاطُ بْنُ مُحَمَّدٍ الْقُرَشِيُّ، ثنا الأَعْمَشُ، بِهِ، لَيْسَ فِيهِ: عَنْ ذَرٍّ وَعَنْ مُحَمَّدِ بْنِ يَزِيدَ الْكُوفِيِّ، عَنِ ابْنِ فُضَيْلٍ، عَنِ الأَعْمَشِ، مِثْلَ الأَوَّلِ.(1/39) 112:* أَبُو رَافِعٍ الصَّائِغُ، عَنْ أُبَيٍّ، حَدِيثٌ خز عه حب كم حم عم: أَنَّ رَسُولَ اللَّهِ، صَلَّى اللَّهُ عَلِيهِ وَسَلَّم، كَانَ يَعْتَكِفُ، فَلَمْ يَعْتَكِفْ عَامًا، فَاعْتَكَفَ مِنَ الْعَامِ الْمُقْبِلِ عِشْرِينَ لَيْلَةً خز فِي الصِّيَامِ: ثنا عَبْدُ الْوَارِثِ بْنُ عَبْدِ الصَّمَدِ بْنِ عَبْدِ الْوَارِثِ، ثنا أَبِي، ثَنَا حَمَّادٌ، عَنْ ثَابِتٍ، عَنْ أَبِي رَافِعٍ، عَنْهُ بِهَذَا عه فِيهِ: عَنْ يُوسُفَ الْقَاضِي، عَنْ مُحَمَّدِ بْنِ أَبِي بَكْرٍ الْمُقَدِّمِيِّ، عَنْ بَهْزِ بْنِ أَسَدٍ، عَنْ حَمَّادِ بْنِ سَلَمَةَ قَالَ أَبُو عَوَانَةَ: لَمْ يُخَرِّجْهُ مُسْلِمٌ، وَفِي صِحَّتِهِ نَظَرٌ حب فِي الثَّامِنِ مِنَ الْخَامِسِ: أَنَا أَحْمَدُ بْنُ عَلِيِّ بْنِ الْمُثَنَّى، ثنا هُدْبَةُ، ثَنا حَمَّادٌ، بِهِ كم فِي الصِّيَامِ: ثنا أَبُو النَّضْرِ الْفَقِيهُ، ثنا عُثْمَانُ بْنُ سَعِيدٍ، ثنا سَهْلُ بْنُ بَكَّارٍ، وَمُوسَى بْنُ إِسْمَاعِيلَ، قَالا: ثنا حَمَّادٌ، بِهِ رَوَاهُ أَحْمَدُ: عَنْ عَبْدِ الرَّحْمَنِ بْنِ مَهْدِيٍّ، وَحَسَنِ بْنِ مُوسَى، وَعَفَّانَ، ثَلاثَتُهُمْ عَنْ حَمَّادٍ، بِهِ وَرَوَاهُ عَبْدُ اللَّهِ بْنُ أَحْمَدَ فِي زِيَادَاتِهِ: عَنْ هُدْبَةَ، بِهِ.(1/51) 121:* حَدِيثٌ عه حب كم طح حم: بَعَثَنَا رَسُولُ اللَّهِ، صَلَّى اللَّهُ عَلِيهِ وَسَلَّم، فَصَبَّحْنَا الْحُرَقَاتِ مِنْ جُهَيْنَةَ الْحَدِيثَ عه فِي الإِيمَانِ: ثنا الصَّغَانِيُّ، وَأَبُو أُمَيَّةَ، وَأَبُو عُبَيْدَةَ السَّرِيُّ بْنُ يَحْيَى، قَالُوا: ثنا يَعْلَى بْنُ عُبَيْدٍ وَعَنْ مُحَمَّدِ بْنِ عَبْدِ الْمَلِكِ الْوَاسِطِيِّ، وَمُحَمَّدِ بْنِ إِسْرَائِيلَ الْجَوْهَرِيِّ، وَمُحَمَّدِ بْنِ إِسْحَاقَ الْخَيَّاطِ، قَالُوا: ثنا أَبَوُ مَنْصُورٍ الْحَارِثُ بْنُ مَنْصُورٍ، ثنا سُفْيَانُ الثَّوْرِيُّ، كِلاهُمَا، عَنِ الأَعْمَشِ، عَنْ أَبِي ظَبْيَانَ، عَنْهُ، بِهِ وَفِيهِ قِصَّةُ سَعْدِ بْنِ أَبِي وَقَّاصٍ وَعَنِ الصَّغَانِيِّ، أَنَا خَلَفُ بْنُ سَالِمٍ، ثنا هُشَيْمٌ عَنِ الدَّنْدَانِيِّ، ثنا أَبُو الْوَلِيدِ، ثَنَا أَبُو عَوَانَةَ وَعَنْ أَبِي أُمَيَّةَ، ثَنَا مُحَمَّدُ بْنُ الصَّلْتِ، عَنْ أَبِي كُدَيْنَةَ، ثَلاثَتُهُمْ عَنْ حُصَيْنٍ، ثنا أَبُو ظَبْيَانَ، بِهِ حب فِي التَّاسِعِ وَالسِّتِّينَ مِنَ الثَّانِي: أنا أَبُو يَعْلَى: ثنا سُرَيْجُ بْنُ يُونُسَ، ثنا هُشَيْمٌ، أنا حُصَيْنٌ، ثنا أَبُو ظَبْيَانَ، سَمِعْتُ أُسَامَةَ، بِهِ كم فِي مَنَاقِبِ عَلِيٍّ: ثنا أَبُو عَبْدِ اللَّهِ مُحَمَّدُ بْنُ يَعْقُوبَ الشَّيْبَانِيُّ، ثنا حَامِدُ بْنُ أَبِي حَامِدٍ، ثنا عَبْدُ الرَّحْمَنِ بْنُ عَبْدِ اللَّهِ بْنِ سَعْدٍ الدَّشْتَكِيُّ، ثنا عَمْرُو بْنُ أَبِي قَيْسٍ، عَنْ إِبْرَاهِيمَ بْنِ مُهَاجِرٍ، عَنْ أَبِي الشَّعْثَاءِ، عَنْ عَمِّهِ، عَنْ أُسَامَةَ، بِهِ قَالَ: وَثَنَاهُ أَبُو أَحْمَدَ الْقَاضِي، ثنا أَحْمَدُ بْنُ نَصْرٍ، ثنا(1/56) 123:* حَدِيثٌ مي خز حم: أَنَّ رَسُولَ اللَّهِ، صَلَّى اللَّهُ عَلِيهِ وَسَلَّم، كَانَ يَصُومُ يَوْمَ الاثْنَيْنِ وَالْخَمِيسِ الْحَدِيثَ، وَفِيهِ قِصَّةٌ مي في الصوم: أنا وَهْبُ بْنُ جَرِيرٍ، ثنا هِشَامٌ، عَنْ يَحْيَى، عَنْ عُمَرَ بْنِ الْحَكَمِ بْنِ ثَوْبَانَ، أَنَّ مَوْلَى قُدَامَةَ بْنِ مَظْعُونٍ حَدَّثَهُ، أَنَّ مَوْلَى أُسَامَةَ بْنِ زَيْدٍ حَدَّثَهُ، عَنْهُ، بِهِ خز فِيهِ: عَنْ سَعِيدِ بْنِ أَبِي زَيْدُونٍ وَرَّاقِ الْفِرْيَابِيِّ، عَنْ مُحَمَّدِ بْنِ يُوسُفَ، عَنْ أَبِي بَكْرِ بْنِ عَيَّاشٍ، عَنْ عُمَرَ بْنِ مُحَمَّدٍ، عَنْ شُرَحْبِيلَ بْنِ سَعْدٍ، عَنْ أُسَامَةَ، نَحْوَهُ رَوَاهُ أَحْمَدُ: عَنْ زَيْدِ بْنِ الْحُبَابِ، أَخْبَرَنِي ثَابِتُ بْنُ قَيْسٍ أَبُو غُصْنٍ، حَدَّثَنِي أَبُو سَعِيدٍ الْمَقْبُرِيُّ، عَنْهُ، بِهِ وَعَنْ عَبْدِ الرَّحْمَنِ بْنِ مَهْدِيٍّ، ثنا ثَابِتُ بْنُ قَيْسٍ، وَفِيهِ زِيَادَةٌ فِي أَوَّلِهِ وَعَنْ عَفَّانَ، ثَنا أَبَانٌ، ثنا يَحْيَى بْنُ أَبِي كَثِيرٍ، حَدَّثَنِي عُمَرُ بْنُ الْحَكَمِ عَنْ مَوْلَى قُدَامَةَ بْنِ مَظْعُونٍ، عَنْ مَوْلَى أُسَامَةَ وَعَنْ إِسْمَاعِيلَ، عَنْ هِشَامٍ، عَنْ يَحْيَى، نَحْوَهُ.(1/57) 132:وَابْنُ عَبَّاسٍ يَأْمُرُ بِهِ؟ فَقَالَ: لَقَدْ لَقِيتُ ابْنَ عَبَّاسٍ، فَذَكَرَ الْقِصَّةَ، قَالَ: وَلَكِنَّ أُسَامَةَ بْنَ زَيْدٍ حَدَّثَنِي، فَذَكَرَهُ بِلَفْظِ: لا رِبَا إِلا فِي الدَّيْنِ حب فِي الْحَادِي وَالثَّمَانِينَ مِنَ الثَّانِي: ثنا مُحَمَّدُ بْنُ الْمُعَافَى بِصَيْدَا، ثنا مُحَمَّدُ بْنُ هِشَامِ بْنِ أَبِي خَيْرَةَ، ثنا عَبْدُ الرَّحْمَنِ بْنُ عُثْمَانَ الْبَكْرَاوِيُّ، ثنا عُثْمَانُ بْنُ الأَسْوَدِ، عَنِ ابْنِ أَبِي مُلَيْكَةَ، قَالَ: قَالَ ابْنُ عَبَّاسٍ لابْنِ عُمَرَ: أَتَتَّهِمُ أُسَامَةَ؟ قَالَ: لا قَالَ: فَإِنَّهُ أَخْبَرَنِي، فَذَكَرَهُ رَوَاهُ أَحْمَدُ: ثنا يَحْيَى بْنُ إِسْحَاقَ، وَعَفَّانُ قَالا: ثنا وُهَيْبٌ، ثنا عَبْدُ اللَّهِ بْنُ طَاوُسٍ، عَنْ أَبِيهِ، عَنِ ابْنِ عَبَّاسٍ، بِهِ وَعَنْ سُفْيَانَ، عَنْ عَمْرٍو، عَنْ أَبِي صَالِحٍ، سَمِعْتُ أَبَا سَعِيدٍ الْخُدْرِيَّ يَقُولُ: الذَّهَبُ بِالذَّهَبِ وَزْنًا بِوَزْنٍ، قَالَ: فَلَقِيتُ ابْنَ عَبَّاسٍ فَقُلْتُ: أَرَأَيْتَ مَا تَقُولُ؟ أَوَجَدْتَهُ فِي كِتَابِ اللَّهِ؟ فَذَكَرَ الْقِصَّةَ، قَالَ: لا، وَلَكِنْ أَخْبَرَنِي أُسَامَةُ، بِهِ وَعَنْ مُحَمَّدِ بْنِ جَعْفَرٍ، عَنْ شُعْبَةَ، عَنْ عَمْرٍو، عَنْ ذَكْوَانَ، وَهُوَ أَبُو صَالِحٍ، قَالَ: أَرَسْلَنِي أَبُو سَعِيدٍ الْخُدْرِيُّ إِلَى ابْنِ عَبَّاسٍ، فَذَكَرَهُ وَعَنْ مُحَمَّدِ بْنِ بَكْرٍ، عَنْ يَحْيَى بْنِ قَيْسٍ، عَنْ عَطَاءٍ، بِهِ وَعَنْ سُفْيَانَ، عَنْ عُبَيْدِ اللَّهِ بْنِ أَبِي يَزِيدَ، بِهِ، وَعَنْ عَبْدِ الصَّمَدِ، عَنْ دَاوُدَ بْنِ أَبِي الْفُرَاتِ، عَنْ إِبْرَاهِيمَ، يَعْنِي: الصَّائِغَ، عَنْ عَطَاءٍ، بِهِ وَعَنْ إِسْمَاعِيلَ، عَنْ خَالِدٍ الْحَذَّاءِ، عَنْ عِكْرِمَةَ، عَنِ ابْنِ عَبَّاسٍ، بِهِ وَعَنْ يَعْقُوبَ، ثنا أَبِي، عَنِ ابْنِ(1/65) 135:* عَبْدُ الرَّحْمَنِ بْنُ أَبِي لَيْلَى، عَنْ أُسَامَةَ حَدِيثٌ الطبراني: فِي قَوْلِهِ: {فَمِنْهُمْ ظَالِمٌ لِنَفْسِهِ وَمِنْهُمْ مُقْتَصِدٌ وَمِنْهُمْ سَابِقٌ بِالْخَيْرَاتِ} قَالَ، صَلَّى اللَّهُ عَلِيهِ وَسَلَّم: وَكُلُّهُمْ مِنْ هَذِهِ الأُمَّةِ قَالَ الطَّبَرَانِيُّ: حَدَّثَنَا عَبْدُ اللَّهِ بْنُ أَحْمَدَ بْنِ مُحَمَّدِ بْنِ الْعَبَّاسِ، ثنا أَبُو مَسْعُودٍ، حَدَّثَنَا سَهْلُ بْنُ عَبْدِ رَبِّهِ الرَّازِيُّ، عَنْ عَمْرِو بْنِ أَبِي قَيْسٍ، عَنِ ابْنِ أَبِي لَيْلَى، عَنْ عَبْدِ الرَّحْمَنِ، عَنْهُ، بِهِ.(1/66) 144:حَدِيثٌ عه حب كم: قُمْتُ عَلَى بَابِ الْجَنَّةِ، فَإِذَا عَامَّةُ مَنْ دَخَلَهَا الْمَسَاكِينُ، وَإِذَا أَصْحَابُ الْجَدِّ مَحْبُوسُونَ، وَأَصْحَابُ النَّارِ قَدْ أُمِرَ بِهِمْ إِلَى النَّارِ، وَنَظَرْتُ إِلَى النَّارِ فَإِذَا عَامَّةُ مَنْ دَخَلَهَا النِّسَاءُ عه فِي الْمَنَاقِبِ: ثنا مُحَمَّدُ بْنُ عَبْدِ الْمَلِكِ الْوَاسِطِيُّ، ثنا يَزِيدُ بْنُ هَارُونَ وَعَنِ الصَّغَانِيِّ، وَأَبِي أُمَيَّةَ، قَالا: ثنا هَوْذَةُ كِلاهُمَا، عَنْ سُلَيْمَانَ التَّيْمِيِّ، عَنْ أَبِي عُثْمَانَ، عَنْهُ، بِهِ حب فِي الْخَامِسِ وَالْخَمْسِينَ مِنَ الثَّانِي: أَنَا عِمْرَانُ بْنُ مُوسَى، ثنا عُبَيْدُ اللَّهِ بْنُ مُعَاذٍ، ثنا مُعْتَمِرُ بْنُ سُلَيْمَانَ، ثنا أَبِي، عَنْ أَبِي عُثْمَانَ النَّهْدِيِّ، عَنْ أُسَامَةَ بْنِ زَيْدٍ، بِهِ قَالَ ابْنُ حِبَّانَ: قَرَنَ عِمْرَانُ بْنُ مُوسَى بِأُسَامَةَ سَعِيدَ بْنَ زَيْدٍ، وَأَنَا أَهَابُهُ، وَقَدْ تَفَرَّدَ بِذَلِكَ مُعْتَمِرٌ وَفِي الثَّانِي مِنَ الثَّالِثِ: أَنَا مُحَمَّدُ بْنُ عَلِيٍّ الصَّيْرَفِيُّ غُلامُ طَالُوتَ، ثنا هُدْبَةُ بْنُ خَالِدٍ، ثنا حَمَّادُ بْنُ سَلَمَةَ، عَنِ التَّيْمِيِّ، نَحْوَهُ وَأَعَادَهُ فِي الثَّامِنِ وَالسَّبْعِينَ مِنَ الثَّالِثِ: عَنْ عِمْرَانَ بْنِ مُوسَى، بِهِ رَوَاهُ أَحْمَدُ: عَنْ إِسْمَاعِيلَ، وَيَحْيَى كِلاهُمَا: عَنِ التَّيْمِيِّ، بِهِ. 152:* حَدِيثٌ طح حم الطبراني: كَانَ رَسُولُ اللَّهِ، صَلَّى اللَّهُ عَلِيهِ وَسَلَّم، يُصَلِّي الظُّهْرَ بِالْهَجِيرِ طح فِي الصَّلاةِ: ثنا أَبُو بَكْرٍ، ثنا أَبُو دَاوُدَ، ثنا ابْنُ أَبِي ذِئْبٍ، عَنِ الزِّبْرِقَانِ، عَنْ عُرْوَةَ، عَنْهُ بِهَذَا رَوَاهُ أَحْمَدُ: ثنا يَزِيدُ، أنا ابْنُ أَبِي ذِئْبٍ، عَنِ الزِّبْرِقَانِ أَنَّ رَهْطًا مِنْ قُرَيْشٍ مَرَّ بِهِمْ زَيْدُ بْنُ ثَابِتٍ وَهُمْ مُجْتَمِعُونَ، فَأَرْسَلُوا إِلَيْهِ غُلامَيْنِ لَهُمْ يَسْأَلانِهِ عَنِ الصَّلاةِ الْوُسْطَى، فَقَالَ: هِيَ الْعَصْرُ، فَقَامَ إِلَيْهِ رَجُلانِ مِنْهُمْ فَسَأَلاهُ، فَقَالَ: هِيَ الظُّهْرُ، ثُمَّ انْصَرَفَ إِلَى أُسَامَةَ بْنِ زَيْدٍ، فَسَأَلاهُ، فَقَالَ: هِيَ الظُّهْرُ، ثُمَّ ذَكَرَ بَقِيَّةَ الْحَدِيثِ وَقَدْ رَوَاهُ الطَّبَرَانِيُّ: حَدَّثَنَا الأُسْفَاطِيُّ، ثَنا خَالِدُ بْنُ يَزِيدَ الْعُمَرِيُّ، عَنِ ابْنِ أَبِي ذِئْبٍ، عَنِ الزِّبْرِقَانِ، عَنْ زُهْرَةَ، عَنْ أُسَامَةَ: أَنَّ رَسُولَ اللَّهِ، صَلَّى اللَّهُ عَلِيهِ وَسَلَّم، صَلَّى الظُّهْرَ بِهَجِيرٍ. 154:كَانَ رَسُولُ اللَّهِ، صَلَّى اللَّهُ عَلِيهِ وَسَلَّم، يُصَلِّي الظُّهْرَ بِالْهَجِيرِ طح فِي الصَّلاةِ: ثنا أَبُو بَكْرٍ، ثنا أَبُو دَاوُدَ، ثنا ابْنُ أَبِي ذِئْبٍ، عَنِ الزِّبْرِقَانِ، عَنْ عُرْوَةَ، عَنْهُ بِهَذَا رَوَاهُ أَحْمَدُ: ثنا يَزِيدُ، أنا ابْنُ أَبِي ذِئْبٍ، عَنِ الزِّبْرِقَانِ أَنَّ رَهْطًا مِنْ قُرَيْشٍ مَرَّ بِهِمْ زَيْدُ بْنُ ثَابِتٍ وَهُمْ مُجْتَمِعُونَ، فَأَرْسَلُوا إِلَيْهِ غُلامَيْنِ لَهُمْ يَسْأَلانِهِ عَنِ الصَّلاةِ الْوُسْطَى، فَقَالَ: هِيَ الْعَصْرُ، فَقَامَ إِلَيْهِ رَجُلانِ مِنْهُمْ فَسَأَلاهُ، فَقَالَ: هِيَ الظُّهْرُ، ثُمَّ انْصَرَفَ إِلَى أُسَامَةَ بْنِ زَيْدٍ، فَسَأَلاهُ، فَقَالَ: هِيَ الظُّهْرُ، ثُمَّ ذَكَرَ بَقِيَّةَ الْحَدِيثِ وَقَدْ رَوَاهُ الطَّبَرَانِيُّ: حَدَّثَنَا الأُسْفَاطِيُّ، ثَنا خَالِدُ بْنُ يَزِيدَ الْعُمَرِيُّ، عَنِ ابْنِ أَبِي ذِئْبٍ، عَنِ الزِّبْرِقَانِ، عَنْ زُهْرَةَ، عَنْ أُسَامَةَ: - 157:كَانَ رَسُولُ اللَّهِ، صَلَّى اللَّهُ عَلِيهِ وَسَلَّم، يُصَلِّي الظُّهْرَ بِالْهَجِيرِ طح فِي الصَّلاةِ: ثنا أَبُو بَكْرٍ، ثنا أَبُو دَاوُدَ، ثنا ابْنُ أَبِي ذِئْبٍ، عَنِ الزِّبْرِقَانِ، عَنْ عُرْوَةَ، عَنْهُ بِهَذَا رَوَاهُ أَحْمَدُ: ثنا يَزِيدُ، أنا ابْنُ أَبِي ذِئْبٍ، عَنِ الزِّبْرِقَانِ أَنَّ رَهْطًا مِنْ قُرَيْشٍ مَرَّ بِهِمْ زَيْدُ بْنُ ثَابِتٍ وَهُمْ مُجْتَمِعُونَ، فَأَرْسَلُوا إِلَيْهِ غُلامَيْنِ لَهُمْ يَسْأَلانِهِ عَنِ الصَّلاةِ الْوُسْطَى، فَقَالَ: هِيَ الْعَصْرُ، فَقَامَ إِلَيْهِ رَجُلانِ مِنْهُمْ فَسَأَلاهُ، فَقَالَ: هِيَ الظُّهْرُ، ثُمَّ انْصَرَفَ إِلَى أُسَامَةَ بْنِ زَيْدٍ، فَسَأَلاهُ، فَقَالَ: هِيَ الظُّهْرُ، ثُمَّ ذَكَرَ بَقِيَّةَ الْحَدِيثِ وَقَدْ رَوَاهُ الطَّبَرَانِيُّ: حَدَّثَنَا الأُسْفَاطِيُّ، ثَنا خَالِدُ بْنُ يَزِيدَ الْعُمَرِيُّ، عَنِ ابْنِ أَبِي ذِئْبٍ، عَنِ الزِّبْرِقَانِ، عَنْ زُهْرَةَ، عَنْ أُسَامَةَ: -(1/75) """; words=araby.tokenize(text); for word in words: print word.encode('utf8'); print extractHarakat(word).encode('utf8');
counter = 1 if not limit: limit = 100000000 statTable = {} for i in range(20): statTable[i] = {} nolimit = False if not text: line = (myfile.readline()).decode("utf8") else: if len(lines) > 0: line = lines[0] while line and (nolimit or counter <= limit): if not line.startswith("#"): # lineIncorrect = 0; words = araby.tokenize(line) for word in words: # print word.encode('utf8'); pattern = harakatpattern.extractHarakat(word) patternKey = harakatpattern.extractPattern(word) # patternkey is the first level of hashing # patternKey=araby.stripTashkeel(pattern); length = len(patternKey) if statTable[length].has_key(patternKey): if statTable[length][patternKey].has_key(pattern): statTable[length][patternKey][pattern] += 1 else: statTable[length][patternKey][pattern] = 1 else: statTable[length][patternKey] = {pattern: 1}
def test_tokenize(self): """Test tokenize function ?""" text1 = u"العربية: لغة جميلة." wordlist = [u'العربية',u":", u"لغة", u"جميلة", u"."] self.assertEqual(ar.tokenize(text1), wordlist)
myfile=open(filename) except: print " Can't Open the given File ", filename; sys.exit(); counter=1; if not options['limit'] : limit= 100000000 else: limit =0; nolimit = False; line = (myfile.readline()).decode('utf8'); while line and (nolimit or counter<=limit): line = line.strip('\n') #line = araby.strip_tashkeel(line.strip('\n')); words = araby.tokenize(line); chunkPos = treatLineBySynode(line); phrase = [] for tag, word in zip(chunkPos, words): #print u'\t'.join([tag, word]).encode('utf8'); if tag == _BEGIN: if len(phrase)>1: print u" ".join(phrase).encode('utf-8') # new phrase phrase = [word, ] #print word.encode('utf8'), elif tag == _MIDDLE: phrase.append(word) #print word.encode('utf8'); else:
if __name__ == '__main__': #import number as ArabicNumberToLetters texts=[ u"وجد عبد الله بن عمر دينارا", u"جاء خالد بن الوليد وقاتل مسيلمة بن حذام الكذاب في موقعة الحديقة", u'روى أحمد بن عقيل الشامي عن أبي طلحة المغربي أنّ عقابا بن مسعود بن أبي سعاد قال', u""" 6 :* حَديثُ عَمٍّ: فَرَجُ سَقْفِ بَيْتِي وَأَنَا بِمَكَّةٍ ، فَنَزَلَ جِبْرِيلُ ، فَفَرَجُ صَدْرِي ، ثُمَّ غَسَلَهُ مِنْ مَاءِ زَمْزَمَ ، ثُمَّ جَاءَ بِطَسْتِ مَمْلُوءِ حِكْمَةِ وَإيمَانَا فَأُفْرِغُهَا فِي صَدْرِي ، ثُمَّ أَطُبِّقَهُ قَالَ عَبْدُ اللهِ بْن أَحَمْدٌ: حَدِّثِنَّي مُحَمَّدَ بْن عَبَّادٍ الْمَكِّيُّ ، ثِنَا أَبُو ضَمْرَةٌ ، عَنْ يُونِسٍ ، عَنِ الزَّهْرِيِ ، عَنْ أُنْسٍ: كَانَ أَبِي يُحَدِّثُ بِمَا هُنَا وَحَدِّثِنَّي مُحَمَّدَ بْن إسحاق بْن مُحَمَّدِ المسيبي ، ثِنَا أَنَسُ بْن عياض ، عَنْ يُونُسُ بْن يَزِيدُ ، قَالٌ: قَالَ اِبْنُ شِهَابٍ: قَالَ أَنَسُ بْن مَالِكٍ: كَانَ أَبِي بْن كَعْبِ يَحْدُثُ ، فَذُكِرَ حَديثُ الْإِسْراءِ بِطُولِهِ ، وَفِيه: قَالَ الزُّهْرِيُّ: وَأَخْبَرَنِي اِبْنُ حَزْمٍ ، أَنَّ اِبْنَ عَبَّاسٍ ، وَأَبَا حَبَّةُ الْأَنْصارِيِ يَقُولَانِّ: قَالَ رَسُولُ اللهِ ، صَلَّى اللهُ عَلَيه وَسَلَّمُ: ثَمَّ عَرَجِ بِي حَتَّى ظَهَرْتِ لِمُسْتَوى أَسْمَعُ صَرِيفَ الْأَقْلاَمِ وَفِيه قَالَ الزُّهْرِيُّ: قَالَ اِبْنُ حَزْمٍ ، وَأَنَسُ بْن مَالِكٍ: قَالَ رَسُولُ اللهِ صَلَّى اللهُ عَلَيه وَسَلَّمُ: فَرَضَ اللَّهُ عَلَى أمتي خَمْسِينَ صَلاَةٌ ، فَرَجَعْتِ بِذَلِكَ حَتَّى أَمْرِ عَلَى مُوسى الْحَديثِ ، تَفْرُدُ بِهِ .( 1 / 6) 2 71.16% 83.07% 92 54 154 319 69.85% 81.62% 28: حَديثُ كَمْ حَمُ: فِي هَذِهِ الْآيَةَ :{ وَإِذْ أَخَذَ رَبُّكَ مِنْ بُنِّيِّ آدَمِ مِنْ ظُهورِهُمْ ذَرِّيَّتِهُمْ } الْآيَةُ ، قَالٌ: جَمْعُهُمْ لَهُ يَوْمَئِذٍ جَمِيعًا فَجَعَلَهُمْ أَرَواحًا ثَمَّ صُورِهُمْ وَاِسْتَنْطَقُهُمْ الْحَديثِ ، وَفِيه قَوْلُ آدَمِ: رُبَّ لَوْ سُوِّيتِ بَيْنَ عِبَادِكَ ، قَالٌ: إِنَِّي أَحُبَّ أَنْ أَشْكَرَ ، وَفِيه ذِكْرُ عِيسَى اِبْنُ مَرْيَمٍ ، وَقَوْلُ أَبِي بْن كَعْبٍ: إِنَّ الرَّوْحَ دُخِلَ مِنْ فِي مَرْيَمِ كَمْ فِي تَفْسِيرِ الْأَعْرَافِ: أَنَا أَبُو جَعْفَرٍ مُحَمَّدُ بْن عَلِيٍّ الشَّيْبانِيُّ ، أَنَا أَحُمِدَ بْن حازِمٍ ، ثِنَا عَبِيدَ اللهِ بْن مُوسى ، ثِنَا أَبُو جَعْفَرٌ ، عَنِ الرَّبِيعُ بْن أُنْسٍ ، عَنْ أَبِي الْعَالِيَةَ ، عَنْ أَبِي بِطُولِهِ وَرَوَاهُ عَبْدُ اللهِ بْن أَحَمْدَ فِي زِيادَاتِهِ: حَدِّثِنَّي مُحَمَّدَ بْن يَعْقُوبِ الرَّبالِيِ ، ثِنَا الْمُعْتَمِرُ بْن سَلِيمَانِ ، سَمِعْتِ أَبِي يُحَدِّثُ عَنِ الرَّبِيعِ ، بِهِ. 3 72.39% 85.31% 156 83 242 565 73.98% 88.21% 44 :* حَديثُ حُبِّ حَمُ عَمٌّ: قَالَ لِي جِبْرِيلُ :{ قُلْ أَعُوذُ بِرَبِّ الْفَلْقِ } فَقِلْتِهَا الْحَديثَ حُبٌّ: فِي الْعَشْرَيْنِ مِنَ الثَّالِثِ: أَنَا عِمْرَانُ بْن مُوسى ، ثِنَا هُدْبَةُ بْن خَالِدٍ ، ثِنَا حَمَّادُ بْن سلمةٍ ، عَنْ عَاصِمٍ ، عَنْ زِرٍّ: قُلْتِ لِأَبِي بْن كَعْبٍ: إِنَّ اِبْنَ مَسْعُودِ لَا يَكْتُبْ فِي مُصْحَفِهِ المعوذتين فَقَالَ أَبِي: قَالَ لِي رَسُولُ اللهِ: قَالَ لِي جِبْرِيلُ فَذَكَرَهُ رَوَاهُ أَحْمَدُ: عَنْ أَبِي بِكَرِّ بْن عَيّاشٍ ، عَنْ عَاصِمِ بِلَفْظٍ: قُلْتِ لِأَبِي: إِنَّ عَبْدَ اللهِ يَقُولُ فِي المعوذتين فَقَالَ أَبِي: سَأَلَنَا عَنْهُمَا رَسُولُ اللهِ ، فَقَالٌ: قَيَّلَ لِي: قَلَّ وَأَنَا أَقُولُ كَمَا قَالَ وَعَنْ وكيع ، وَعَبْدُ الرَّحْمَنِ بْن مَهْدِي كِلَاهُمَا ، عَنْ سُفْيانٍ ، وَعَنْ مُحَمَّدِ بْن جَعْفَرٍ ، عَنْ شُعْبَةِ وَعَنْ عَفّانٍ ، عَنْ حَمَّادُ بْن سلمةٍ ، وَأَبِي عَوانَةٌ ، فَرَقَهُمَا ، كلَهُمْ عَنْ عَاصِمِ وَعَنْ سُفْيانِ بْن عيينة ، عَنْ عَبْدَةُ بْن أَبِي لُبَابَةٌ ، وَعَاصِمُ وَعَنْ عَبْدِ الرَّحْمَنِ بْن مَهْدِيٍّ ، عَنْ سُفْيانٍ ، عَنِ الزُّبَيْرِ بْن عِدِّيِ ، عَنْ أَبِي رَزينٌ ، ثلاثتهم عَنْ زِرِّ وَقَالَ عَبْدُ اللهِ: حَدِّثِنَّي مُحَمَّدَ بْن الحسين بْن إشكاب ، ثِنَا مُحَمَّدَ بْن أَبِي عُبَيْدَةُ بْن مِعْنَ ، ثِنَا أَبِي ، عَنِ الْأعْمَشِ ، عَنْ أَبِي إسْحَاقُ ، عَنْ عَبْدِ الرَّحْمَنِ بْن يَزِيدُ ، قَالٌ: كَانَ عَبْدُ اللهِ يَحُكُّ المعوذتين مِنْ مَصَاحِفِهِ وَيَقُولُ: إِنَّهُمَا لَيْسَتَا مِنْ كِتَابِ اللهِ قَالِ الْأعْمَشِ: وَثَنَا عَاصِمُ ، عَنْ زِرِّ فَذكرِ نَحْوَ الْأَوَّلِ .( 1 / 16) 4 74.60% 85.77% 207 116 321 815 79.60% 86.80% 54 :* حَديثُ كَمْ حَمُ عَمٌّ: إِذَا كَانَ يَوْمُ الْقِيَامَةِ كِنْتِ إمَامَ النَّبِيِّينَ وَخَطِيبُهُمْ وَصَاحِبُ شَفَاعَتِهُمْ ، غَيْرَ فَخْرُ كَمْ فِي الْإيمَانِ: ثِنَا الْحُسَيْنُ بْن الْحُسْنِ الطَّوْسِيِ ، ثِنَا أَبُو حاتِمٍ الرّازِيُّ ، ثِنَا عَبْدَ اللهِ بْن جَعْفَرٍ الرَّقِّيُّ ، ثِنَا عَبِيدَ اللهِ بْن عَمْروِ وَعَنْ مُحَمَّدِ بْن صَالِحِ بْن هَانِئٍ ، ثِنَا السَّرِيُّ بْن خَزِيمَةٍ ، ثِنَا أَبُو حُذَيْفَةُ النَّهْدِيِ ، ثِنَا زُهَيْرُ بْن مُحَمَّدٍ ، كِلَاهُمَا عَنْ عَبْدِ اللهِ بْن مُحَمَّدِ بْن عَقِيلٍ ، عَنِ الطفيل بْن أَبِي بْن كَعْبٍ ، عَنْ أَبِيه ، بِهِ وَقَالٌ: صَحِيحُ الْإِسْنادِ وَلَمْ يُخْرِجَاهُ لِتَفَرُّدِ اِبْنِ عَقِيلِ بِهِ لَمَّا نَسْبِ إِلَيه مِنْ سُوءِ الْحِفْظِ ، وَهُوَ عِنْدَ أئِمَّتُنَا مِنَ الْمُتَقَدِّمِينَ ثِقَةُ مَأْمُونِ وَفِي الْفَضَائِلِ: أَنَا الْقَطِيعِيُّ ، ثِنَا عَبْدَ اللهِ بْن أَحَمْدٌ ، حَدَّثَنِي أُبَيُّ ، ثِنَا عَبْدَ الرَّحْمَنِ ، وَهُوَ اِبْنُ مَهْدِيٍّ ، ثِنَا زُهَيْرُ بْن مُحَمَّدٍ ، عَنْ عَبْدِ اللهِ بْن مُحَمَّدٍ ، بِهِ وَرَوَاهُ الْإمَامُ أَحْمَدُ: عَنْ أَبِي عَامِرٌ ، عَنْ زُهَيْرٍ ، يَعْنِي: اِبْنُ مُحَمَّدٍ ، عَنْ عَبْدِ اللهِ بْن مُحَمَّدٍ ، بِهِ وَعَنْ زَكَرِيّا بْن عِدِّيِ ، وَأَحْمَدُ بْن عَبْدِ الْمَلِكِ الْحَرَّانِيِ ، كِلَاهُمَا عَنْ عَبِيدِ اللهِ بْن عَمْروٍ ، بِهِ وَعَنْ أَبِي أَحْمَدَ الزُّبَيْرِيُّ ، عَنْ شَرِيكِ ، عَنْ عَبْدِ اللهِ بْن مُحَمَّدٍ ، بِهِ وَرَوَاهُ اِبْنُهُ عَبْدُ اللهِ فِي زِيادَاتِهِ: حَدَّثَنِي عُبَيْدُ اللَّهِ الْقَوَارِيرِيُّ ، ثِنَا مُحَمَّدَ بْن عَبْدِ اللهِ بْن الزُّبَيْرِ ، ثِنَا شَرِيكُ ، بِهِ وَقَالَ أيضا: ثِنَا هَاشِمُ بْن الْحارِثِ ، ثِنَا عَبِيدَ اللهِ بْن عَمْروٍ ، بِهِ وَحَدِّثِنَّي ( 1 / 24) 5 75.54% 85.94% 228 131 354 932 82.05% 87.18% 56 :* حَديثُ كَمْ حَمُ: بَيَّنَا نَحْنُ فِي صَلاَةِ الظَّهيرَةِ وَالنَّاسَ فِي الصُّفُوفِ فَرَأَيْنَاهُ يَتَنَاوَلُ شِيئَا الْحَديثَ كَمْ فِي الْأَهْوَالِ: أَنَا عَبْدُ الرَّحْمَنِ بْن حَمْدانٍ ، ثِنَا هِلاَلُ بْن الْعَلاءِ ، ثِنَا أَبِي ، ثِنَا عَبِيدَ اللهِ بْن عَمْروٍ ، عَنْ عَبْدِ اللهِ بْن مُحَمَّدِ بْن عَقِيلٍ ، عَنِ الطفيل بْن أَبِي بْن كَعْبٍ ، عَنْ أَبِيه ، وَقَالٌ: صَحِيحُ الْإِسْنادِ رَوَاهُ أَحْمَدُ بِطُولِهِ: عَنْ أَحُمِدَ بْن عَبْدِ الْمَلِكِ بْن واقد الْحَرَّانِيِ ، عَنْ عَبِيدِ اللهِ بْن عَمْروٍ ، بِهِ قُلْتُ: رواه زَكَرِيّا بْن عِدِّيِ ، عَنْ عَبِيدِ اللهِ بْن عَمْروٍ ، فَقَالٌ: عَنْ عَبْدِ اللهِ بْن مُحَمَّدِ بْن عَقِيلٍ ، عَنْ جَابِرِ وَأَخْرَجَهُ أَحْمَدُ ، أيضا: عَنْ زَكَرِيّا. 6 75.46% 86.02% 265 151 403 1080 75.00% 86.49% 68 :* عَبْدُ اللهِ بْن رباحٍ ، عَنْ أَبِي حَديثُ كَمْ م حَمُ عَمٌّ: قَالَ لِي رَسُولُ اللهِ ، صَلَّى اللهُ عَلَيه وَسَلَّمُ: أَيُّ آيَةِ فِي كِتَابِ اللهِ أُعْظِمُ ؟ قَالٌ: قُلْتِ :{ اللهُ لَا إلَهُ إلّا هُوَ الْحَيُّ الْقَيُّومَ } قَالٌ: فَضَرْبُ صَدْرِي وَقَالٌ: لِيَهِنُكَ الْعِلْمَ أَبَا الْمُنْذِرَ كَمْ فِي الْمَعْرِفَةِ: ثِنَا أَبُو عَبْدُ اللَّهِ الْحافِظُ ، ثِنَا إبراهيم بْن عَبْدِ اللهِ ، ثِنَا يَزِيدُ بْن هارُونٍ ، أَنَا الْجَرِيرِيِ ، عَنْ أَبِي السَّلِيلَ ، عَنْ عَبْدِ اللهِ بْن رباحٍ ، عَنْه ، بِهَذَا قُلْتُ: هُوَ فِي مُسْلِمٍ ، فَلَا يُسْتَدْرَكُ وَرَوْاهُ الْإمَامَ أَحْمَدُ: ثِنَا عَبْدَ الرَّزَّاقِ ، أَنَا سُفْيانٌ ، عَنْ سَعِيدُ الْجَرِيرِيِ ، بِهِ وَرَوَاهُ اِبْنُهُ عَبْدُ اللهِ ، فِي زِيادَاتِهِ: حَدَّثَنِي عُبَيْدُ اللَّهِ الْقَوَارِيرِيُّ ، ثِنَا جَعْفَرُ بْن سَلِيمَانِ ، ثِنَا الْجُرَيْرِيُّ ، عَنْ بَعْضُ أَصْحَابِهِ ، عَنْ عَبْدِ اللهِ بْن رباحٍ ، بِهِ. """, u"قال مُحَمَّدُ بْنُ خَالِدُ بْنُ إسماعيلفي حديثه", u"ِنْصَرَفْنَا إِلَى أَنَسُ بْنُ مَالِكَ الْحَديثِ" ]; for text in texts: positions = detectNamedPosition(text.split(' ')); print(positions); # result=extractNamed(text); # print u"\t".join(result).encode('utf8'); # result= extractNamedWithinContext(text); text=araby.stripTashkeel(text); result= preTashkeelNamed(araby.tokenize(text)); print(u' '.join(result).encode('utf8')); # result=detectNamed(text); # print u"\t".join(result).encode('utf8');
if __name__ == '__main__': #import number as ArabicNumberToLetters TEXTS = [ u"وجد عبد الله بن عمر دينارا", u"جاء خالد بن الوليد وقاتل مسيلمة بن حذام الكذاب في موقعة الحديقة", u'''روى أحمد بن عقيل الشامي عن أبي طلحة المغربي أنّ عقابا بن مسعود بن أبي سعاد قال''', u"قال مُحَمَّدُ بْنُ خَالِدُ بْنُ إسماعيلفي حديثه", u"ِنْصَرَفْنَا إِلَى أَنَسُ بْنُ مَالِكَ الْحَديثِ" ] for text1 in TEXTS: positions_named = detect_named_position(text1.split(' ')) print positions_named text1 = araby.strip_tashkeel(text1) result1 = pretashkeel_named2(araby.tokenize(text1)) print u' '.join(result1).encode('utf8') result = pretashkeel_named(araby.tokenize(text1)) print u' '.join(result).encode('utf8') wordlist = araby.tokenize(text1) taglist = detect_named(wordlist) #print taglist #print u" ".join(wordlist).encode('utf8') arepr = arabrepr.ArabicRepr() print arepr.repr(zip(taglist, wordlist)).encode('utf8')