প্রাকৃতিক ভাষা প্রক্রিয়াকরণে চাঙ্কিং কি?

উত্স নোড: 1878431

প্রিয় পাঠকবৃন্দ,

এই ব্লগে, আমি পাইথনে তাত্ত্বিক এবং ব্যবহারিকভাবে উভয় অংশে অংশ নিয়ে আলোচনা করব।

তো, শুরু করা যাক…

লক্ষ্য করুন: বাস্তবায়নের জন্য, পাইথন আইডিএল ব্যবহার করা ভাল কারণ আউটপুটটি একটি গাছের অঙ্কন যা একটি পৃথক উইন্ডোতে পপ আপ হয়।

বিষয়সূচি

  • chunking কি?
  • চাঙ্কিং কোথায় ব্যবহার করা হয়?
  • খণ্ডের প্রকারভেদ
  • পাইথনে চাঙ্কিং এর বাস্তবায়ন
  • ফলাফল

chunking কি?

chunking একটি প্রদত্ত বাক্যে উপস্থিত বক্তৃতা এবং সংক্ষিপ্ত বাক্যাংশের অংশ সনাক্ত করতে ব্যবহৃত প্রাকৃতিক ভাষা প্রক্রিয়াকরণের প্রক্রিয়া হিসাবে সংজ্ঞায়িত করা হয়।

স্কুলে আমাদের পুরানো ইংরেজি ব্যাকরণের ক্লাসগুলিকে স্মরণ করে, মনে রাখবেন যে বিশেষ্য, ক্রিয়া, বিশেষণ, ক্রিয়াবিশেষণ, অব্যয়, সংযোজন, সর্বনাম এবং ইন্টারজেকশন নামে বক্তৃতার আটটি অংশ রয়েছে। এছাড়াও, চঙ্কিংয়ের উপরোক্ত সংজ্ঞায়, সংক্ষিপ্ত বাক্যাংশগুলি বক্তৃতার এই অংশগুলির যে কোনও একটিকে অন্তর্ভুক্ত করে গঠিত বাক্যাংশগুলিকে বোঝায়।

উদাহরণ স্বরূপ, chunking শনাক্ত করতে করা যেতে পারে এবং এইভাবে বিশেষ্য বাক্যাংশ বা বিশেষ্যকে একা, বিশেষণ বা বিশেষণ বাক্যাংশ ইত্যাদিকে গোষ্ঠীভুক্ত করা যেতে পারে। নিচের বাক্যটি বিবেচনা করুন:

"আমার নাস্তার জন্য বার্গার এবং পেস্ট্রি ছিল।"

এই ক্ষেত্রে, আমরা যদি বিশেষ্য বাক্যাংশগুলিকে গোষ্ঠী বা খণ্ড করতে চাই, আমরা "বার্গার", "পেস্ট্রি" এবং "লাঞ্চ" পাব যা বাক্যের বিশেষ্য বা বিশেষ্য গোষ্ঠী।

চাঙ্কিং কোথায় ব্যবহার করা হয়?

কেন আমরা কিছু শিখতে চাই যেখানে এটি ব্যাপকভাবে ব্যবহৃত হয় না জেনে?! ব্লগের এই বিভাগে আলোচিত অ্যাপ্লিকেশনগুলি দেখে আপনাকে শেষ পর্যন্ত কৌতূহলী থাকতে সাহায্য করবে!

একটি প্রদত্ত বাক্য থেকে প্রয়োজনীয় বাক্যাংশ পেতে চাঙ্কিং ব্যবহার করা হয়। যাইহোক, POS ট্যাগিং শুধুমাত্র বক্তৃতার অংশগুলি চিহ্নিত করতে ব্যবহার করা যেতে পারে যা বাক্যের প্রতিটি শব্দের অন্তর্গত।

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

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

চাঙ্কিং এর প্রকারভেদ

বিস্তৃতভাবে, দুটি ধরণের খণ্ড রয়েছে:

  • চঙ্কিং আপ
  • চঙ্কিং ডাউন

খণ্ডিত করা:

এখানে, আমরা গভীরে ডুব দিই না; পরিবর্তে, আমরা তথ্যের একটি ওভারভিউ দিয়ে খুশি। এটি আমাদের প্রদত্ত ডেটা সম্পর্কে একটি সংক্ষিপ্ত ধারণা পেতে সহায়তা করে।

ছোট করা:

আগের ধরনের chunking থেকে ভিন্ন, chunking down আমাদের বিস্তারিত তথ্য পেতে সাহায্য করে।

সুতরাং, আপনি যদি কেবল একটি অন্তর্দৃষ্টি চান, তাহলে "চঙ্কিং আপ" বিবেচনা করুন অন্যথায় "চঙ্কিং ডাউন" পছন্দ করুন।

পাইথনে চাঙ্কিং এর বাস্তবায়ন

এমন একটি পরিস্থিতি কল্পনা করুন যেখানে আপনি আপনার বিশ্লেষণের জন্য প্রদত্ত পাঠ্য থেকে সমস্ত ক্রিয়াপদ বের করতে চান। সুতরাং, এই ক্ষেত্রে, আমাদের অবশ্যই ক্রিয়া বাক্যাংশের অংশবিশেষ বিবেচনা করতে হবে। কারণ আমাদের উদ্দেশ্য হল প্রদত্ত টেক্সট থেকে সমস্ত ক্রিয়া বাক্যাংশ বের করা। নিয়মিত এক্সপ্রেশনের সাহায্যে চাঙ্কিং করা হয়।

"নিয়মিত অভিব্যক্তি" শব্দটি আপনি যদি প্রথমবারের মতো আসছেন তবে চিন্তা করবেন না। নীচের টেবিলটি এখানে, আপনার উদ্ধারে:

প্রতীক

Meaning

উদাহরণ

*

পূর্ববর্তী অক্ষরটি শূন্য বা তার বেশি বার হতে পারে যার অর্থ পূর্ববর্তী অক্ষরটি সেখানে থাকতে পারে বা নাও থাকতে পারে।

ab* ab দিয়ে শুরু হওয়া সমস্ত ইনপুট মেলে এবং তারপর b এর শূন্য বা তার বেশি সংখ্যা দ্বারা অনুসরণ করে। প্যাটার্নটি ab, abb, abbb ইত্যাদির সাথে মিলবে।

+

পূর্ববর্তী অক্ষরটি অন্তত একবার হওয়া উচিত।

a+ a, aa, aaa ইত্যাদি মেলে।

?

পূর্ববর্তী অক্ষরটি মোটেও ঘটতে পারে না বা শুধুমাত্র একবার ঘটতে পারে যার অর্থ পূর্ববর্তী অক্ষরটি ঐচ্ছিক।

ab? ab,abb মেলে কিন্তু abbb নয় ইত্যাদি।

উপরের সারণিতে ব্যবহৃত সবচেয়ে সাধারণ রেগুলার এক্সপ্রেশন রয়েছে। রেগুলার এক্সপ্রেশন কমান্ড লাইনে খুব দরকারী, বিশেষ করে ফাইল মুছে ফেলা, লোকেটিং, রিনেমিং বা সরানোর সময়।

যাইহোক, এই বাস্তবায়নের জন্য, আমরা শুধুমাত্র * ব্যবহার করব। প্রতীকের সাথে নিজেকে পরিচিত করতে উপরের টেবিলটি দেখতে নির্দ্বিধায়!

আমরা সবচেয়ে জনপ্রিয় NLP লাইব্রেরি nltk ব্যবহার করে চঙ্কিং করব। সুতরাং, আসুন প্রথমে এটি আমদানি করি।

আমদানি এনটিলেট

আসুন নীচের নমুনা পাঠটি বিবেচনা করি যা আমি নিজেই তৈরি করেছি। আপনি chunking বাস্তবায়ন করতে চান যে কোনো নমুনা পাঠ্য সঙ্গে নীচের প্রতিস্থাপন নির্দ্বিধায়!

sample_text=""" লঙ্কা থেকে সীতাকে বাঁচানোর জন্য রাম রাবণকে হত্যা করেছিলেন৷ রামায়ণের কিংবদন্তি হল সবচেয়ে জনপ্রিয় ভারতীয় মহাকাব্য৷ রামায়ণের উপর ভিত্তি করে ভারতে ইতিমধ্যে বেশ কয়েকটি সিনেমা এবং সিরিয়ালের শুটিং হয়েছে৷"""

স্পষ্টতই, আমরা এগিয়ে যাওয়ার আগে ডেটাটিকে বাক্য টোকেনাইজ করতে হবে এবং তারপরে শব্দটিকে টোকেনাইজ করতে হবে। টোকেনাইজেশন হল প্রদত্ত টেক্সটকে ছোট ছোট ইউনিটে বিভক্ত করার প্রক্রিয়া ছাড়া কিছুই নয়, যেমন বাক্য, বাক্যের টোকেনাইজেশন এবং শব্দের ক্ষেত্রে, শব্দ টোকেনাইজেশনের ক্ষেত্রে।

টোকেনাইজেশনের পরে, প্রতিটি শব্দের জন্য POS (পার্ট-অফ-স্পিচ) ট্যাগিং করা হয়, যেখানে প্রতিটি শব্দের অংশ-অফ-স্পীচ চিহ্নিত করা হবে। এখন, আমরা শুধুমাত্র ক্রিয়াপদের অংশ-অব-স্পীচের প্রতি আগ্রহী এবং একইটি বের করতে চাই।

অতএব, নিম্নরূপ প্রয়োজনীয় নিয়মিত অভিব্যক্তি ব্যবহার করে আমাদের আগ্রহের অংশ-বক্তৃতা নির্দিষ্ট করুন:

ভিবি: {}

tokenized=nltk.sent_tokenize(নমুনা_টেক্সট) in tokenized i এর জন্য: words=nltk.word_tokenize(i) # print(words) tagged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram=r"""VB: {}" "" chunkParser=nltk.RegexpParser(chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()

রেগুলার এক্সপ্রেশন (RE) কৌণিক বন্ধনী() এর মধ্যে আবদ্ধ থাকে যা ঘুরে কোঁকড়া বন্ধনী ({ এবং }) এর মধ্যে আবদ্ধ থাকে।

লক্ষ্য করুন: প্রয়োজনীয় POS অনুযায়ী RE উল্লেখ করুন

VB ক্রিয়াপদ POS এর জন্য দাঁড়ায়। VB-এর পরে বিন্দুর মানে হল VB-এর অনুসরণ করা যেকোনো অক্ষরের সাথে মিলে যাওয়া। বিন্দুর পরের প্রশ্নবোধক চিহ্নটি উল্লেখ করে যে B-এর পরে যেকোন অক্ষর অবশ্যই একবার ঘটতে হবে বা ঘটবে না। যাইহোক, টেবিল থেকে যা আমরা আগে দেখেছি, এই চরিত্রটি ঐচ্ছিক। আমরা এই পদ্ধতিতে রেগুলার এক্সপ্রেশন তৈরি করেছি কারণ, NLTK-তে, ক্রিয়াপদ বাক্যাংশগুলি নিম্নলিখিত POS ট্যাগগুলিকে অন্তর্ভুক্ত করে:

পিওএস

Meaning

VB

ক্রিয়া তার ভিত্তি আকারে

ভিবিডি

এর অতীত কালের ক্রিয়া

ভিবিজি

বর্তমান কালের ক্রিয়া

ভিবিএন

ক্রিয়াটি তার অতীতের অংশীদার ফর্মে

ভিবিপি

Verb এর বর্তমান কাল কিন্তু থার্ড পারসন একবচনে নয়

ভিবিজেড

Verb এর বর্তমান কাল এবং তৃতীয় ব্যক্তি একবচন

সুতরাং, ক্রিয়াপদ বাক্যাংশগুলি উপরের POS-এর যেকোনো একটির অন্তর্গত হতে পারে। তাই রেগুলার এক্সপ্রেশনকে VB হিসেবে ফ্রেম করা হয় কেন? যা উপরের সমস্ত বিভাগ অন্তর্ভুক্ত করে। RegexpParser প্যাকেজটি পরীক্ষা করতে ব্যবহৃত হয় যে একটি POS আমাদের প্রয়োজনীয় প্যাটার্নকে সন্তুষ্ট করে কিনা যা আমরা পূর্বে RE ব্যবহার করে উল্লেখ করেছি।

সম্পূর্ণ কোড নিম্নলিখিত হিসাবে দেখা যেতে পারে:

import nltk nltk.download('averaged_perceptron_tagger') sample_text=""" রাম রাবণকে বধ করেছিলেন লঙ্কা থেকে সীতাকে বাঁচাতে৷ রামায়ণের কিংবদন্তি হল সবচেয়ে জনপ্রিয় ভারতীয় মহাকাব্য৷ ইতিমধ্যেই এখানে বেশ কয়েকটি ভাষায় প্রচুর সিনেমা ও সিরিয়ালের শুটিং হয়েছে৷ ভারতে রামায়ণের উপর ভিত্তি করে """ tokenized=nltk.sent_tokenize(sample_text) in tokenized: words=nltk.word_tokenize(i) # print(words) tagged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram =r"""VB: {}""" chunkParser=nltk.RegexpParser(chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()

ফলাফল

খণ্ডিত ফলাফল
খণ্ডিত ফলাফল

অবশেষে, আমরা সেই শব্দগুলির সাথে শব্দগুলির POS-এর একটি ট্রি ফর্ম পাই যার POS প্রদত্ত RE-এর সাথে মেলে। আমাদের দ্বারা পাস করা নমুনা পাঠ্যের জন্য প্রাপ্ত আউটপুটের স্ন্যাপশট উপরের চিত্রগুলিতে দেখা যেতে পারে।

লক্ষ্য করুন যে যে শব্দগুলি শুধুমাত্র ক্রিয়া বাক্যাংশগুলির জন্য আমাদের RE-কে সন্তুষ্ট করে তা আউটপুটে স্পষ্টভাবে হাইলাইট করা হয়েছে। তাই, ক্রিয়াপদ বাক্যাংশের খণ্ড সফলভাবে সঞ্চালিত হয়েছে।

আশা করি আপনি আমার নিবন্ধটি দরকারী খুঁজে পেয়েছেন।

ধন্যবাদ!

তথ্যসূত্র

1. পাইথনে চাঙ্কিং প্রয়োগ করা হচ্ছে

2. খণ্ডের পিছনে তত্ত্ব

3. NLP এ উপলব্ধ POS এর সম্পূর্ণ তালিকা

আমার সম্পর্কে

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

এখানে আমার LinkedIn প্রোফাইল: আমার লিঙ্কডইন

আপনি বিশ্লেষণ বিদ্যা থেকে আমার অন্যান্য নিবন্ধ পড়তে পারেন এখানে.

এই নিবন্ধে দেখানো মিডিয়া Analytics বিদ্যার মালিকানাধীন নয় এবং লেখকের বিবেচনার ভিত্তিতে ব্যবহার করা হয়।

সূত্র: https://www.analyticsvidhya.com/blog/2021/10/what-is-chunking-in-natural-language-processing/

সময় স্ট্যাম্প:

থেকে আরো বিশ্লেষণ বিদ্যা