محب علوی
مدیر
اس دھاگے کی وجہ تسمیہ ہے یہ دھاگہ
اردو ٹیکسٹ آرکائیو کی طرف پہلا قدم
ایک پائتھون سکرپٹ میرے ہاتھ بھی لگا ہے جو اردو ٹیکسٹ سے جملے کشید کرتا ہے۔
دلچسپ بات یہ ہے کہ اسے ایک امریکی نے لکھا ہے جو بروکلین میں ہی رہتا ہے اور اردو نہیں جانتا بلکہ کوڈ لکھ کر متفسر بھی ہے کہ اردو جملے کے اختتام کے لیے کیا واضح کلیہ ہے۔
میں نے یہ کوڈ اس بلاگ پوسٹ سے اٹھایا تھا۔
Converting a Perl Urdu sentence splitter to Python
اس پوسٹ کا اختتام اس جملے پر ہوتا ہے
I would really like some feedback on people’s views of sentence splitting if anyone is interested. Please email me.
گھوم پھر کر کوڈ میں نے GitHub سے اٹھایا جس کا لنک یہ ہے
WikiTrans Pootle WT_Articles Splitting
بنیادی طور پر موصوف نے ایک پرل کوڈ کو پائتھون میں ڈھالا ہے جسے MIT کے طالب علم دانش منیر نے لکھا تھا مگر پبلک نہیں کیا۔
کوڈ کا جائزہ لے لیا ہے اور دھاگے کو زندہ کرنے کی خاطر شیئر بھی کروں، کچھ سوالات بھی ہیں جن کا جواب چاہوں گا اور امید ہے کہ تحقیق کسی قدر آگے بڑھے گی۔
اردو ٹیکسٹ آرکائیو کی طرف پہلا قدم
ایک پائتھون سکرپٹ میرے ہاتھ بھی لگا ہے جو اردو ٹیکسٹ سے جملے کشید کرتا ہے۔
دلچسپ بات یہ ہے کہ اسے ایک امریکی نے لکھا ہے جو بروکلین میں ہی رہتا ہے اور اردو نہیں جانتا بلکہ کوڈ لکھ کر متفسر بھی ہے کہ اردو جملے کے اختتام کے لیے کیا واضح کلیہ ہے۔
میں نے یہ کوڈ اس بلاگ پوسٹ سے اٹھایا تھا۔
Converting a Perl Urdu sentence splitter to Python
اس پوسٹ کا اختتام اس جملے پر ہوتا ہے
I would really like some feedback on people’s views of sentence splitting if anyone is interested. Please email me.
گھوم پھر کر کوڈ میں نے GitHub سے اٹھایا جس کا لنک یہ ہے
WikiTrans Pootle WT_Articles Splitting
بنیادی طور پر موصوف نے ایک پرل کوڈ کو پائتھون میں ڈھالا ہے جسے MIT کے طالب علم دانش منیر نے لکھا تھا مگر پبلک نہیں کیا۔
کوڈ کا جائزہ لے لیا ہے اور دھاگے کو زندہ کرنے کی خاطر شیئر بھی کروں، کچھ سوالات بھی ہیں جن کا جواب چاہوں گا اور امید ہے کہ تحقیق کسی قدر آگے بڑھے گی۔
PHP:
### Urdu Sentence Splitter
import sys
import re
#import nltk.data
#Unicode Code Points for - ? ! . /r .
DASH = u'\u06D4' # Arabic full stop
QUESTION = u'\u061F' # ?
ELLIPSIS = u'\u2026' # !
BULLET = u'\u2022' #
CR = u'\u000D' # /r
SPACE = u'\u0020' #
FULL_STOP = u'\u002e' # .
text = '''
انجری کا شکار پاکستانی فاسٹ بائولر کو کولہے کی ہڈی میں تکلیف کی وجہ سے میگا ایونٹ کے بقیہ میچز نہ کھلانے کا فیصلہ کیا گیا ہے۔ ترجمان پی سی بی نے بتایا کہ فاسٹ بائولر کو وطن واپس بھجوایا جا رہا ہے!فاسٹ بائولر کا آج میڈیکل ٹیسٹ کروایا گیا جس میں انہیں ان فٹ قرار دیا گیا ۔
میگا ایونٹ میں محمد عرفان کی جگہ احسان عادل کو ٹیم میں شامل کیے جانے کا امکان ہے۔
اچھا جی!!!
'''
text = text.replace('\r','')
text = text.replace('\n','\n\n')
reg_bullet = u'\s*%s\s*' % BULLET
text = re.sub(reg_bullet, '\n\n\n\n\n', text)
text = text.replace('\t* +\t*$', ' ')
reg_cr = u'[\n%s][ ]+[\n%s]' % (CR, CR)
text = re.sub(reg_cr, '\n\n', text)
reg_space = u'^[\t%s]+$' % SPACE
text = re.sub(reg_space, '\n\n', text)
text = text.replace('|','')
#/(\n{2,}|!|\x{061f}|\x{06D4}|\x{2022}|\x{000d}|\s{2,}|\x{2026}|\x{002e})/
# '\n{2,}|!|QUESTION|DASH |BULLET |CR |\s{2,}|ELLIPSIS|FULL_STOP'
regex = u'(\n{2,}|!|%s|%s|%s|%s|\s{2,}|%s|\%s)' % (QUESTION, DASH, BULLET, CR, ELLIPSIS, FULL_STOP)
p = re.compile(regex)
sentences = p.split(text)
new_string = ''
segment_id = 1
follow_up_punctuation = re.compile('[\n%s%s]' % (CR, BULLET))
i = 0
new_sentences = []
while i < len(sentences):
sent = sentences[i]
sent = sent.strip() # remove whitespace
if len(sent) < 1: # skip empty lines
i = i+2
continue
new_string = new_string + sent
# check punctuation in following sentence
# if not newline, CR or BULLET, print it
next_sent = sentences[i+1]
if not follow_up_punctuation.match(next_sent):
new_string = new_string + next_sent
new_sentences.append(sent + '\n')
segment_id = segment_id + 1
i = i + 2
for sent in new_sentences:
print(sent)
آخری تدوین: