আমি কীভাবে কোনও পাঠ্যকে বাক্যে বিভক্ত করতে পারি?


114

আমার কাছে একটি টেক্সট ফাইল আছে। আমার বাক্যগুলির একটি তালিকা পাওয়া উচিত।

এটি কীভাবে বাস্তবায়ন করা যায়? সংক্ষিপ্তসারগুলিতে বিন্দু হিসাবে ব্যবহৃত হচ্ছে এমন অনেকগুলি সূক্ষ্মতা রয়েছে।

আমার পুরানো নিয়মিত প্রকাশটি খারাপভাবে কাজ করে:

re.compile('(\. |^|!|\?)([A-Z][^;↑\.<>@\^&/\[\]]*(\.|!|\?) )',re.M)

18
"বাক্য" সংজ্ঞায়িত করুন।
মার্টিনিউ

আমি এটি করতে চাই, তবে যেখানেই সময় বা নতুন লাইন রয়েছে সেখানেই আমি বিভক্ত হতে চাই
yishairasowsky

উত্তর:


157

প্রাকৃতিক ভাষা সরঞ্জামকিট ( nltk.org ) আপনার যা প্রয়োজন তা রয়েছে। এই গ্রুপ পোস্টিং ইঙ্গিত করে যে এটি করে:

import nltk.data

tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
fp = open("test.txt")
data = fp.read()
print '\n-----\n'.join(tokenizer.tokenize(data))

(আমি চেষ্টা করে দেখিনি!)


4
@ আর্টিয়াম: এটি সম্ভবত রাশিয়ানদের সাথে কাজ করতে পারে - দেখুন এনএলটিকে / পাইএনএলটিকে "প্রতি ভাষা" (অর্থাত্ ইংরেজী নয়) কাজ করতে পারে এবং কীভাবে?
মার্টিনিউ

4
@ আর্টিয়াম: এর জন্য অনলাইন ডকুমেন্টেশনের সরাসরি লিঙ্ক nltk .tokenize.punkt.PunktSentenceTokenizer
মার্টিনিউ

12
আপনাকে nltk.download()প্রথমে নির্বাহ করতে হবে এবং মডেলগুলি ডাউনলোড করতে হতে পারে ->punkt
মার্টিন থোমা

4
এটি শেষ উদ্ধৃতি চিহ্ন সহ ক্ষেত্রে ব্যর্থ হয়। আমাদের যদি এমন একটি বাক্য থাকে যা "এই" এর মতো শেষ হয়।
ফোসা

4
ঠিক আছে, আপনি আমাকে বোঝাতে। তবে আমি কেবল পরীক্ষা করেছি এবং এটি ব্যর্থ বলে মনে হচ্ছে না। আমার ইনপুটটি 'This fails on cases with ending quotation marks. If we have a sentence that ends like "this." This is another sentence.'এবং আমার আউটপুটটি আমার ['This fails on cases with ending quotation marks.', 'If we have a sentence that ends like "this."', 'This is another sentence.']কাছে সঠিক বলে মনে হচ্ছে ।
শেজেজানি

105

এই ফাংশনটি হ্যাকলবেরি ফিনের পুরো পাঠ্যকে প্রায় 0.1 সেকেন্ডের মধ্যে বাক্যে বিভক্ত করতে পারে এবং অনেক বেদনাদায়ক প্রান্তের কেসকে পরিচালনা করে যা বাক্যটিকে পার্থক্যহীন উদাহরণ হিসাবে দেখায় যেমন " মিঃ জন জনসন জুনিয়র মার্কিন যুক্তরাষ্ট্রে জন্মগ্রহণ করেছিলেন তবে তার পিএইচএইচ অর্জন করেছিলেন। ইঞ্জিনিয়ার হিসাবে নাইকে ইনক। এ যোগদানের আগে ইস্রায়েলে ডি। তিনি ব্যবসা বিশ্লেষক হিসাবে ক্রেগলিস্ট.আর.এও কাজ করেছিলেন। "

# -*- coding: utf-8 -*-
import re
alphabets= "([A-Za-z])"
prefixes = "(Mr|St|Mrs|Ms|Dr)[.]"
suffixes = "(Inc|Ltd|Jr|Sr|Co)"
starters = "(Mr|Mrs|Ms|Dr|He\s|She\s|It\s|They\s|Their\s|Our\s|We\s|But\s|However\s|That\s|This\s|Wherever)"
acronyms = "([A-Z][.][A-Z][.](?:[A-Z][.])?)"
websites = "[.](com|net|org|io|gov)"

def split_into_sentences(text):
    text = " " + text + "  "
    text = text.replace("\n"," ")
    text = re.sub(prefixes,"\\1<prd>",text)
    text = re.sub(websites,"<prd>\\1",text)
    if "Ph.D" in text: text = text.replace("Ph.D.","Ph<prd>D<prd>")
    text = re.sub("\s" + alphabets + "[.] "," \\1<prd> ",text)
    text = re.sub(acronyms+" "+starters,"\\1<stop> \\2",text)
    text = re.sub(alphabets + "[.]" + alphabets + "[.]" + alphabets + "[.]","\\1<prd>\\2<prd>\\3<prd>",text)
    text = re.sub(alphabets + "[.]" + alphabets + "[.]","\\1<prd>\\2<prd>",text)
    text = re.sub(" "+suffixes+"[.] "+starters," \\1<stop> \\2",text)
    text = re.sub(" "+suffixes+"[.]"," \\1<prd>",text)
    text = re.sub(" " + alphabets + "[.]"," \\1<prd>",text)
    if "”" in text: text = text.replace(".”","”.")
    if "\"" in text: text = text.replace(".\"","\".")
    if "!" in text: text = text.replace("!\"","\"!")
    if "?" in text: text = text.replace("?\"","\"?")
    text = text.replace(".",".<stop>")
    text = text.replace("?","?<stop>")
    text = text.replace("!","!<stop>")
    text = text.replace("<prd>",".")
    sentences = text.split("<stop>")
    sentences = sentences[:-1]
    sentences = [s.strip() for s in sentences]
    return sentences

20
এটি একটি দুর্দান্ত সমাধান। তবে আমি এটিতে আরও দুটি লাইন সংখ্যার সাথে যুক্ত করেছি = "([0-9])" নিয়মিত প্রকাশ এবং টেক্সট = রি.সুব (অঙ্কগুলি + "[।]" + সংখ্যা, "\\ 1 <prd> \" \ 2 ", পাঠ্য) ফাংশনে। এখন এটি দশমিক দশমিক পাঁচটি হিসাবে লাইনটি বিভক্ত করে না। এই উত্তরের জন্য আপনাকে ধন্যবাদ।
আমেয়া কুলকারনী

4
আপনি কীভাবে পুরো হকলবিবের ফিনকে পার্স করেছিলেন? পাঠ্য বিন্যাসে এটি কোথায়?
পাসক্যালভিকুটেন

6
একটি দুর্দান্ত সমাধান। ফাংশনে, আমি "উদাহরণস্বরূপ" পাঠ্যে যুক্ত করেছি: পাঠ্য = পাঠ্য.রেপ্লেস ("উদাহরণস্বরূপ", "e <prd> g <prd>") যদি "ie" পাঠ্যে: পাঠ্য = পাঠ্য.রেজ ("ie" , "i <prd> e <prd>") এবং এটি আমার সমস্যার সম্পূর্ণ সমাধান করেছে solved
সিসায় চালা

4
খুব সহায়ক মন্তব্য সহ দুর্দান্ত সমাধান! : শুধু এটা একটু আরো জোরালো যদিও করতে prefixes = "(Mr|St|Mrs|Ms|Dr|Prof|Capt|Cpt|Lt|Mt)[.]", websites = "[.](com|net|org|io|gov|me|edu)"এবংif "..." in text: text = text.replace("...","<prd><prd><prd>")
Dascienz

4
এই ফাংশনটি এইরকম বাক্যগুলিকে একটি বাক্য হিসাবে দেখার জন্য করা যেতে পারে: যখন কোনও শিশু তার মাকে জিজ্ঞাসা করে "শিশুরা কোথা থেকে আসে?", তখন তার কী উত্তর দেওয়া উচিত?
twhale

53

বাক্যগুলিতে পাঠ্যকে বিভক্ত করার জন্য রেগেক্স ব্যবহার করার পরিবর্তে, আপনি এনল্টেকে পাঠাগারটিও ব্যবহার করতে পারেন।

>>> from nltk import tokenize
>>> p = "Good morning Dr. Adams. The patient is waiting for you in room number 3."

>>> tokenize.sent_tokenize(p)
['Good morning Dr. Adams.', 'The patient is waiting for you in room number 3.']

রেফ: https://stackoverflow.com/a/9474645/2877052


গৃহীত উত্তরের চেয়ে দুর্দান্ত, সহজ এবং পুনরায় ব্যবহারযোগ্য উদাহরণ।
জে ডি

যদি আপনি কোনও বিন্দুর পরে কোনও স্থান সরিয়ে ফেলেন, টোকেনাইজ.সেন্ট_টোকেনাইজ () কাজ করে না, তবে টোকেনাইজার. টোকানাইজ () কাজ করে! হুম ...
লিওনিড গ্যানলাইন

4
for sentence in tokenize.sent_tokenize(text): print(sentence)
ভিক্টোরিয়া স্টুয়ার্ট

11

আপনি রেগেক্সের পরিবর্তে স্প্যাসি ব্যবহারের চেষ্টা করতে পারেন । আমি এটি ব্যবহার করি এবং এটি কাজ করে।

import spacy
nlp = spacy.load('en')

text = '''Your text here'''
tokens = nlp(text)

for sent in tokens.sents:
    print(sent.string.strip())

4
স্পেস মেগা দুর্দান্ত। আপনি যদি কেবল বাক্যগুলিতে পৃথক করতে চান তবে পাঠ্য স্থানটিতে পাঠাতে খুব বেশি সময় লাগবে যদি আপনি কোনও ডাটা পাইপ নিয়ে কাজ করে থাকেন
বারলাইনস

@ বার্লাইনগুলি আমি সম্মত তবে অন্য কোনও লাইব্রেরি খুঁজে পাইনি যা স্পাইসির মতো পরিষ্কার কাজ করে। তবে আপনার যদি কোনও পরামর্শ থাকে তবে আমি চেষ্টা করতে পারি।
এল্ফ

4
এছাড়াও এডাব্লুএস ল্যাম্বডা সার্ভারলেস ব্যবহারকারীদের জন্য, স্পেসির সমর্থনের ডেটা ফাইলগুলি অনেকগুলি 100MB (ইংলিশ বৃহত>> 400 এমবি) তাই আপনি বাক্সের বাইরে এই জাতীয় জিনিসগুলি ব্যবহার করতে পারবেন না, খুব দুঃখের সাথে (স্প্যাসির বিশাল ভক্ত এখানে)
জুলিয়ান এইচ

9

এখানে রাস্তার পদ্ধতির মাঝামাঝি যা কোনও বাহ্যিক গ্রন্থাগারের উপর নির্ভর করে না। সংক্ষিপ্ত বিবরণ এবং টার্মিনেটরগুলির মধ্যে ওভারল্যাপগুলি বাদ দেওয়ার পাশাপাশি টার্মিনেশনের পরিবর্তনের মধ্যে ওভারল্যাপগুলি বাদ দেওয়ার জন্য আমি তালিকা বোধগম্য ব্যবহার করি, উদাহরণস্বরূপ: ''। বনাম '। "'

abbreviations = {'dr.': 'doctor', 'mr.': 'mister', 'bro.': 'brother', 'bro': 'brother', 'mrs.': 'mistress', 'ms.': 'miss', 'jr.': 'junior', 'sr.': 'senior',
                 'i.e.': 'for example', 'e.g.': 'for example', 'vs.': 'versus'}
terminators = ['.', '!', '?']
wrappers = ['"', "'", ')', ']', '}']


def find_sentences(paragraph):
   end = True
   sentences = []
   while end > -1:
       end = find_sentence_end(paragraph)
       if end > -1:
           sentences.append(paragraph[end:].strip())
           paragraph = paragraph[:end]
   sentences.append(paragraph)
   sentences.reverse()
   return sentences


def find_sentence_end(paragraph):
    [possible_endings, contraction_locations] = [[], []]
    contractions = abbreviations.keys()
    sentence_terminators = terminators + [terminator + wrapper for wrapper in wrappers for terminator in terminators]
    for sentence_terminator in sentence_terminators:
        t_indices = list(find_all(paragraph, sentence_terminator))
        possible_endings.extend(([] if not len(t_indices) else [[i, len(sentence_terminator)] for i in t_indices]))
    for contraction in contractions:
        c_indices = list(find_all(paragraph, contraction))
        contraction_locations.extend(([] if not len(c_indices) else [i + len(contraction) for i in c_indices]))
    possible_endings = [pe for pe in possible_endings if pe[0] + pe[1] not in contraction_locations]
    if len(paragraph) in [pe[0] + pe[1] for pe in possible_endings]:
        max_end_start = max([pe[0] for pe in possible_endings])
        possible_endings = [pe for pe in possible_endings if pe[0] != max_end_start]
    possible_endings = [pe[0] + pe[1] for pe in possible_endings if sum(pe) > len(paragraph) or (sum(pe) < len(paragraph) and paragraph[sum(pe)] == ' ')]
    end = (-1 if not len(possible_endings) else max(possible_endings))
    return end


def find_all(a_str, sub):
    start = 0
    while True:
        start = a_str.find(sub, start)
        if start == -1:
            return
        yield start
        start += len(sub)

আমি এই এন্ট্রি থেকে কার্লের ফাইন্ড_ল ফাংশনটি ব্যবহার করেছি: পাইথনে একটি স্ট্রাস্টিংয়ের সমস্ত উপস্থিতি সন্ধান করুন


4
পারফেক্ট অ্যাপ্রোচ! অন্যরা ধরেনা ...এবং ?!
শেন স্মিসকোল

6

সাধারণ ক্ষেত্রে (যেখানে বাক্যগুলি সাধারণত বন্ধ করা হয়), এটি কাজ করা উচিত:

import re
text = ''.join(open('somefile.txt').readlines())
sentences = re.split(r' *[\.\?!][\'"\)\]]* *', text)

রেজেক্সটি হ'ল *\. +, যা 0 বা তার বেশি জায়গা বাম দিকে এবং 1 বা ডানদিকে ডানদিকে ঘিরে একটি সময়ের সাথে মেলে (পুনরায় স্প্লিটের সময়কালের মতো কিছুটিকে বাক্য পরিবর্তনের হিসাবে গণ্য করা রোধ করতে)।

স্পষ্টতই, সর্বাধিক শক্তিশালী সমাধান নয়, তবে বেশিরভাগ ক্ষেত্রেই এটি কার্যকর হবে। কেবলমাত্র এটিই সংক্ষিপ্তসারগুলি আবরণ করবে না (সম্ভবত বাক্যগুলির তালিকার মধ্য দিয়ে চলতে হবে এবং পরীক্ষা করুন যে প্রতিটি স্ট্রিং sentencesএকটি মূল অক্ষর দিয়ে শুরু হয়?)


30
আপনি ইংরেজির এমন পরিস্থিতিটি ভাবতে পারবেন না যেখানে কোনও বাক্যটি পিরিয়ডের সাথে শেষ হয় না? ভাবুন তো! তাতে আমার প্রতিক্রিয়া হবে, "আবার ভাবুন।" (আমি সেখানে কী করেছি দেখুন?)
নেড ব্যাচেল্ডার

@ নেড বাহ, বিশ্বাস করতে পারি না আমি সেই বোকা। আমার অবশ্যই মাতাল হতে হবে বা কিছু।
রাফ কেটলার

আমি উইন 7 x86 এ পাইথন ২.7.২ ব্যবহার করছি, এবং উপরের কোডে রেজেক্স আমাকে এই ত্রুটিটি দেয়:, SyntaxError: EOL while scanning string literalবন্ধ হওয়া বন্ধনী (পরে text) নির্দেশ করে । এছাড়াও, আপনার পাঠ্যে আপনি যে রেজেক্সটি উল্লেখ করেছেন তা আপনার কোডের নমুনায় বিদ্যমান নেই।
সবুঙ্কু

4
রেজেক্স পুরোপুরি সঠিক নয়, যেমনটি হওয়া উচিতr' *[\.\?!][\'"\)\]]* +'
fsocity

এটি অনেক সমস্যা সৃষ্টি করতে পারে এবং ছোট বাক্যগুলিতে একটি বাক্য ফেলে দিতে পারে। আমাদের "এই আইসক্রিমের জন্য আমি 3.5 ডলার দিয়েছি" কেসটি বিবেচনা করুন তাদের খণ্ডগুলি হ'ল "আমি এই আইসক্রিমের জন্য $ 3" ​​দিয়েছি এবং "5" দিয়েছি। ডিফল্ট nltk বাক্যটি ব্যবহার করুন। টোকেনাইজার নিরাপদ!
রেহান_ম্ন

6

আপনি এনএলটিকে বাক্য টোকেনাইজেশন ফাংশনটিও ব্যবহার করতে পারেন:

from nltk.tokenize import sent_tokenize
sentence = "As the most quoted English writer Shakespeare has more than his share of famous quotes.  Some Shakespare famous quotes are known for their beauty, some for their everyday truths and some for their wisdom. We often talk about Shakespeare’s quotes as things the wise Bard is saying to us but, we should remember that some of his wisest words are spoken by his biggest fools. For example, both ‘neither a borrower nor a lender be,’ and ‘to thine own self be true’ are from the foolish, garrulous and quite disreputable Polonius in Hamlet."

sent_tokenize(sentence)

2

@ আর্টিয়াম,

ওহে! আপনি এই ফাংশনটি ব্যবহার করে রাশিয়ান (এবং কিছু অন্যান্য ভাষায়) জন্য একটি নতুন টোকেনাইজার তৈরি করতে পারেন:

def russianTokenizer(text):
    result = text
    result = result.replace('.', ' . ')
    result = result.replace(' .  .  . ', ' ... ')
    result = result.replace(',', ' , ')
    result = result.replace(':', ' : ')
    result = result.replace(';', ' ; ')
    result = result.replace('!', ' ! ')
    result = result.replace('?', ' ? ')
    result = result.replace('\"', ' \" ')
    result = result.replace('\'', ' \' ')
    result = result.replace('(', ' ( ')
    result = result.replace(')', ' ) ') 
    result = result.replace('  ', ' ')
    result = result.replace('  ', ' ')
    result = result.replace('  ', ' ')
    result = result.replace('  ', ' ')
    result = result.strip()
    result = result.split(' ')
    return result

এবং তারপরে এটিকে কল করুন:

text = 'вы выполняете поиск, используя Google SSL;'
tokens = russianTokenizer(text)

শুভকামনা, মেরিলেনা।


1

এছাড়াও, উপরের কয়েকটি উত্তরের অন্তর্ভুক্ত নয় এমন অতিরিক্ত শীর্ষ স্তরের ডোমেনগুলি সম্পর্কে সতর্ক থাকুন।

উদাহরণস্বরূপ .info, .বিজ, .রু, .অনলাইন কিছু বাক্য পার্সার ফেলবে কিন্তু উপরে অন্তর্ভুক্ত করা হয়নি।

শীর্ষ স্তরের ডোমেনগুলির ফ্রিকোয়েন্সি সম্পর্কে এখানে কিছু তথ্য দেওয়া হয়েছে: https://www.westhost.com/blog/the-most-popular-top-level-domains-in-2017/

এটি পড়তে উপরের কোড সম্পাদনা করে সম্বোধন করা যেতে পারে:

alphabets= "([A-Za-z])"
prefixes = "(Mr|St|Mrs|Ms|Dr)[.]"
suffixes = "(Inc|Ltd|Jr|Sr|Co)"
starters = "(Mr|Mrs|Ms|Dr|He\s|She\s|It\s|They\s|Their\s|Our\s|We\s|But\s|However\s|That\s|This\s|Wherever)"
acronyms = "([A-Z][.][A-Z][.](?:[A-Z][.])?)"
websites = "[.](com|net|org|io|gov|ai|edu|co.uk|ru|info|biz|online)"

এটি সহায়ক তথ্য, তবে এটি মূল উত্তরের একটি সংক্ষিপ্ত মন্তব্য হিসাবে যুক্ত করা আরও উপযুক্ত হতে পারে।
vlz

4
এটি আমার আসল পরিকল্পনা ছিল, তবে এখনও পর্যন্ত এটির জন্য আমার খ্যাতি নেই। ভেবেছিলাম এটি কারও সাহায্য করতে পারে তাই আমি ভেবেছিলাম আমি এটাকে যথাসাধ্য পোস্ট করব। যদি এটি করার কোনও উপায় থাকে এবং প্রথমে "আপনার 50 টি খ্যাতি দরকার" এর আশেপাশে পাওয়া যায় তবে আমি পছন্দ করব :)
cogijl

0

সন্দেহ নেই যে NLTK এই উদ্দেশ্যে সবচেয়ে উপযুক্ত। তবে এনএলটিকে দিয়ে শুরু করা বেশ বেদনাদায়ক (তবে এটি ইনস্টল করার পরে - আপনি কেবল পুরষ্কার কাটাবেন)

সুতরাং এখানে সহজ পুনরায় ভিত্তিক কোড পাওয়া যায় http://pythonicprose.blogspot.com/2009/09/python-split-paraراف-into-sentences.html

# split up a paragraph into sentences
# using regular expressions


def splitParagraphIntoSentences(paragraph):
    ''' break a paragraph into sentences
        and return a list '''
    import re
    # to split by multile characters

    #   regular expressions are easiest (and fastest)
    sentenceEnders = re.compile('[.!?]')
    sentenceList = sentenceEnders.split(paragraph)
    return sentenceList


if __name__ == '__main__':
    p = """This is a sentence.  This is an excited sentence! And do you think this is a question?"""

    sentences = splitParagraphIntoSentences(p)
    for s in sentences:
        print s.strip()

#output:
#   This is a sentence
#   This is an excited sentence

#   And do you think this is a question 

4
ইয়ে তবে এটি এত সহজে ব্যর্থ হয়: "মিঃ স্মিথ জানেন এটি একটি বাক্য" "
থমাস

0

আমাকে সাবটাইটেল ফাইলগুলি পড়তে হয়েছিল এবং সেগুলিকে বাক্যে বিভক্ত করতে হয়েছিল। প্রাক-প্রক্রিয়াজাতকরণের পরে (যেমন .এসআরটি ফাইলগুলিতে সময় সম্পর্কিত তথ্য ইত্যাদি অপসারণ), ভেরিয়েবল ফুলফাইলে সাবটাইটেল ফাইলটির সম্পূর্ণ পাঠ্য থাকে। নীচে অপরিশোধিত উপায় ঝরঝরে তাদের বাক্যে বিভক্ত। সম্ভবত আমি ভাগ্যবান যে বাক্যগুলি সর্বদা একটি স্থান দিয়ে শেষ হয় (সঠিকভাবে)। প্রথমে এটি ব্যবহার করে দেখুন এবং এর কোনও ব্যতিক্রম থাকলে আরও চেক এবং ব্যালেন্স যুক্ত করুন।

# Very approximate way to split the text into sentences - Break after ? . and !
fullFile = re.sub("(\!|\?|\.) ","\\1<BRK>",fullFile)
sentences = fullFile.split("<BRK>");
sentFile = open("./sentences.out", "w+");
for line in sentences:
    sentFile.write (line);
    sentFile.write ("\n");
sentFile.close;

উহু! আমরা হব. আমি এখন বুঝতে পেরেছি যেহেতু আমার বিষয়বস্তু স্প্যানিশ, তাই আমার কাছে "মিঃ স্মিথ" ইত্যাদির সাথে ডিল করার বিষয়গুলি ছিল না, তবুও কেউ যদি দ্রুত এবং নোংরা পার্সার চান ...


0

আমি আশা করি এটি আপনাকে লাতিন, চাইনিজ, আরবিক পাঠ্যে সহায়তা করবে

import re

punctuation = re.compile(r"([^\d+])(\.|!|\?|;|\n|。|!|?|;|…| |!|؟|؛)+")
lines = []

with open('myData.txt','r',encoding="utf-8") as myFile:
    lines = punctuation.sub(r"\1\2<pad>", myFile.read())
    lines = [line.strip() for line in lines.split("<pad>") if line.strip()]

0

অনুরূপ টাস্কে কাজ করা হয়েছিল এবং এই কোয়েরিটি জুড়ে এসেছিল, কয়েকটি লিঙ্কগুলি অনুসরণ করে এবং এনটিএলটিকের জন্য কয়েকটি অনুশীলনে কাজ করে নীচের কোডটি যাদুটির মতো আমার জন্য কাজ করেছিল।

from nltk.tokenize import sent_tokenize 
  
text = "Hello everyone. Welcome to GeeksforGeeks. You are studying NLP article"
sent_tokenize(text) 

আউটপুট:

['Hello everyone.',
 'Welcome to GeeksforGeeks.',
 'You are studying NLP article']

সূত্র: https://www.geeksforgeeks.org/nlp-how-tokenizing-text-senferences-words-works/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.