Example #1
0
    def make_suggestions(self, ):
        """ add suggestion """
        suggestions = ""
        if self.category == u"صفة":
            suggestions = """<match no="1"/>&nbsp;"""
            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>&nbsp;<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>&nbsp;في<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
Example #2
0
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
Example #4
0
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'))
Example #5
0
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
Example #6
0
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
Example #7
0
def token_text(text):
    """
    tokenize a text into words
    """
    tasha = tashaphyne.stemming.ArabicLightStemmer()
    return araby.tokenize(text)
    return tasha.tokenize(text)
Example #8
0
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
Example #9
0
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
Example #10
0
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
Example #11
0
 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)
Example #12
0
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
Example #13
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
Example #14
0
def token_text(text):
    """
    tokenize a text into words
    """
    tasha = tashaphyne.stemming.ArabicLightStemmer()
    return araby.tokenize(text)
    return tasha.tokenize(text)
Example #15
0
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);
Example #16
0
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);
Example #17
0
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
Example #18
0
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
Example #20
0
    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)
Example #21
0
    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
Example #22
0
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
Example #23
0
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    
Example #24
0
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
Example #25
0
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
Example #26
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
Example #27
0
 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)
Example #28
0
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
Example #29
0
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
Example #30
0
    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)
Example #31
0
    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
Example #33
0
    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
Example #34
0
 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)
Example #35
0
 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)
Example #36
0
    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
Example #37
0
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
Example #40
0
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
Example #41
0
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
Example #42
0
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
Example #43
0
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)
Example #44
0
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
Example #45
0
 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;
Example #46
0
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);
Example #47
0
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    
Example #48
0
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
Example #49
0
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
Example #50
0
 #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")
Example #51
0
                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')
Example #52
0
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)
Example #53
0
	#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');
Example #54
0
    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}
Example #55
0
 def test_tokenize(self):
     """Test  tokenize function ?"""
     text1 = u"العربية: لغة جميلة."
     wordlist = [u'العربية',u":", u"لغة", u"جميلة", u"."]
     self.assertEqual(ar.tokenize(text1), wordlist)
Example #56
0
        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:
Example #57
0
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');

Example #58
0
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')