কীভাবে একটি লেম্যাটাইজার তৈরি করবেন

এবং কেন

আপনি যদি এনএলপিতে থাকেন তবে আপনি সম্ভবত "লেমিটাইজেশন" নামক এই ঝরঝরে বৈশিষ্ট্যযুক্ত এক ডজন সরঞ্জামের উপর হোঁচট খেয়েছেন। এই নিবন্ধে, আমি লেম্যাটাইজেশন কী, আপনাকে কেন কার্যকর এবং আমরা কীভাবে একটি লেম্যাটাইজার তৈরি করতে পারি সে সম্পর্কে আপনাকে গাইড করার জন্য যথাসাধ্য চেষ্টা করব!

আপনি যদি আমার পূর্ববর্তী নিবন্ধ থেকে কীভাবে পিওএস ট্যাগার তৈরি করবেন সে সম্পর্কে আগত হন, আপনি ইতিমধ্যে লেম্যাটাইজেশন করার গুরুত্বপূর্ণ পূর্বশর্তগুলি উপলব্ধি করেছেন। যদি তা না হয় তবে আমি এই নিবন্ধটির দৈর্ঘ্যের মাধ্যমে তাদের আলতো করে উপস্থাপন করব, তাই আসুন শুরু করা যাক!

লেম্যাটাইজেশন কী?

লেমাসকে একটি শব্দের

লেম্যাটাইজাইজেশন একটি প্রাকৃতিক ভাষা প্রক্রিয়াজাতকরণ কৌশল যা কোনও শব্দকে তার লেমায় বা ক্যানোনিকাল ফর্মের কাছে হ্রাস করার প্রস্তাব দেয়। একটি লেমা কি? একটি ইঙ্গিত - এটিকে অভিধান ফর্মও বলা হয় (একটি সাধারণ ধারণার জন্য অনেকগুলি নাম রয়েছে, আপনি কি ভাবেন না?)

সুতরাং একটি লেমা হ'ল শব্দের মূল ফর্ম - এর অর্থ সময় বা পরিমাণের সাথে সম্পর্কিত যে কোনও প্রকারটি সরানো হয়। উদাহরণস্বরূপ, বিশেষ্যগুলিতে বহুবচন (মেয়েরা, ছেলেরা, করপোরা) এর একক রূপে (মেয়ে, বালক, করপাস) কমে যায়; এবং ক্রিয়াপদে, সময় / অংশীদারি বৈকল্পিক (খাওয়া, আনা, চ্যাট) উপস্থিতি ফিরে আসে (খাওয়া, আনা, চ্যাট করা)।

কিছু ক্ষেত্রে, লেম্যাটাইজেশনে লিঙ্গ পরিবর্তনের (ডক্ট্রেস-ডক্টর) অপসারণ অন্তর্ভুক্ত থাকতে পারে, যদিও এটি ইংরেজিতে খুব অস্বাভাবিক, যেহেতু ভাষা লিঙ্গ নিরপেক্ষতার দিকে এগিয়ে গেছে - তবে এটি কিছু নির্দিষ্ট ক্ষেত্রে করা যেতে পারে (যেমন কোনও নির্দিষ্ট লিঙ্গকে কেন্দ্র করে) উদাহরণস্বরূপ: 'ষাঁড়' → 'গরু', 'মোরগ' chicken 'মুরগী')।

ওয়ার্ডওয়েব ফ্রি ডিকশনারি অনুসারে লেমা কী?

যদিও লেম্যাটাইজেশন প্রথমে ততটা কার্যকর বলে মনে হচ্ছে না, এটি পাঠ্য স্বাভাবিকের জন্য একটি শক্তিশালী হাতিয়ার, যেহেতু এটি স্বাভাবিকীকরণকে আরও সিন্ট্যাক্টিকাল পদ্ধতিতে ঘটতে দেয় (ক্রিয়াপদ ক্রিয়াপদ অব্যাহত থাকে, বিশেষ্য বিশেষ্য্য হয় আর তাই হয়) স্টেমিংয়ের চেয়ে আমরা যে অন্য আর্টিকেল বিশ্লেষণ।

এখন, আপনি যেমনটি খেয়াল করেছেন, লেম্মা শব্দটি তার বক্তৃতার অংশের সাথে ঘনিষ্ঠভাবে আবদ্ধ। কেন এমন? কারণ প্রতিটি শব্দ এক বা একাধিক লিক্সেমের কাছে "বাড়ি"। একটি লেেক্সেম, তার পালা অনুসারে, লেক্সিকাল ভাষায় "অর্থের মূল বিমূর্ত একক" [1]। অন্য "শব্দ" এ, প্রতিটি শব্দের একটি বা একাধিক অর্থ থাকতে পারে (ওহ আমার, একটি শব্দগুচ্ছের জন্য অনেকগুলি 'শব্দ' শব্দ!)। আমি এই রূপক / লেজিকাল / শব্দার্থিক আলোচনার কোনও গভীর গভীরে ডুব দেব না, তবে এই শেষ অনুমানটি মনে রাখব।

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

এখন, একটি Lexeme কি, মি। শব্দ ওয়েব?

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

যাইহোক, আমি মনে করি যে লেম্যাটাইজেশন প্রতিটি ভাষার জন্য নির্দিষ্ট একটি কাজ, তা বলা বাহুল্য?

কেন এবং কখন আমাকে লেম্যাটাইজেশন ব্যবহার করা উচিত?

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

গথামে আবাসন দামগুলি খুব ব্যয়বহুল! #myhouseisatfire #batmangettheororts # holyexpense

যেহেতু আপনি জানেন না যে লেমিটাইজেশন কীসের জন্য ভাল তা আপনি আপনার বিশ্লেষক তৈরি করা শুরু করেন: আপনি আপনার ইনপুটটির মাত্রিকতা হ্রাস করতে স্টিমার ব্যবহার করেন, আপনি কিছু ইনপুট শ্রেণিবদ্ধ করেন এবং 90% + নির্ভুলতার সাথে একটি মেশিন লার্নিং শ্রেণিবদ্ধ করেন! গুড জব মি। ডেটা সায়েন্টিস্ট! যাইহোক ... একদিন, একটি নির্দিষ্ট জাতিকে নিয়ে তার দূতাবাসের "বাসস্থান" সন্ত্রাসীদের সম্পর্কে জ্বলন্ত আলোচনা হচ্ছে। আপনার 'সাবধানে' ইঞ্জিনিয়ারড মেশিন লার্নিং মডেলটির কী ঘটবে বলে আপনি আশা করছেন?

এটি এমন পরিস্থিতি যেখানে লেমাইটিজেশন দরকারী is উদাহরণস্বরূপ, যদি আপনি প্রসেসিংয়ের আগে এন্ট্রিগুলিকে লেটম্যাটাইজ করেন তবে আপনি একটি শব্দ হিসাবে "হাউজিং" নয় বরং "টু হাউস" দিয়ে টুইটগুলি বাতিল করতে পারবেন। সুতরাং স্টেমারের মতো লেমম্যাটাইজেশন আপনাকে মাত্রিকতা হ্রাস করতে সহায়তা করতে পারে - তবে বাক্য কাঠামো এবং সঠিক লেক্সেমগুলি স্থানে রাখার ক্ষেত্রে এই কৌশলটি আরও সুনির্দিষ্ট (যদিও বাক্যটি লেমাইটিজেশনের পরে অবাস্তব মনে হতে পারে)।

আপনি যদি স্টেমিং এবং লেম্যাটাইজেশনের মধ্যে পার্থক্য সম্পর্কে আরও জানতে চান তবে আমি আপনাকে এই খুব ভালভাবে তৈরি তাত্ত্বিক নিবন্ধটি পড়তে পরামর্শ দিচ্ছি:

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

আমার মাস্টার্স থিসিসের চিত্র - লেম্যাটাইজেশন জ্ঞান গ্রাফ তৈরিতে সহায়তা করতে পারে।

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

সুতরাং লেমেটাইজড এন্ট্রিগুলি ম্যাচিংয়ের জন্য একটি ভাল পছন্দ - এটি কোনও শব্দের প্রতিটি একক প্রকরণকে মডেলিংয়ের প্রয়োজনীয়তা হ্রাস করে, আপনাকে মডেলটি অ্যাক্সেস করতে চাবিগুলিতে কম মনোযোগ দিতে সহায়তা করে এবং আরও বেশি মডেল (যা আপনি যদি খুব গুরুত্বপূর্ণ হন তবে পর্তুগিজ জাতীয় ভাষায়, যেখানে than টিরও বেশি মৌখিক সময় এবং লিঙ্গ বৈচিত্র রয়েছে)

এখন, আপনি যদি ওয়ার্ড টুভেক বাচ্চা হন তবে আপনি সম্ভবত এই কৌশলটির আসল ব্যবহার দেখতে পাবেন না - কেবল এটি ভেক্টরাইজ করুন, আপনি বলতে পারেন। শুধু অপেক্ষা করুন, আমি নিশ্চিত যে আপনার ক্যারিয়ারে, আপনি এমন পরিস্থিতি খুঁজে পাবেন যেখানে কোনও ভেক্টর সেরা সমাধান নয়।

কীভাবে একটি লেম্যাটাইজার তৈরি করবেন

কাজ পেতে সময়! লেম্যাটাইজেশনের সবচেয়ে শক্ত অংশটি কোনও শব্দের জন্য স্পিচ অব স্পিচ পুনরুদ্ধার করছে। ধন্যবাদ, আমরা ইতিমধ্যে এটি শেষ নিবন্ধে সম্পন্ন করেছি এবং এমন অনেক সরঞ্জাম রয়েছে যা আমাদের জন্য এটি করতে পারে।

এখানে কয়েকটি দ্রুত উদাহরণ দেওয়া হল:

প্রতিটি পিওএস শব্দ রয়েছে, আমরা কীভাবে লেমাইটিজেশন করতে পারি তা নিয়ে আলোচনা করতে পারি। দুটি প্রধান পদ্ধতি রয়েছে:

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

এই টিউটোরিয়ালের জন্য আমি উভয়ের সংমিশ্রণটি ব্যবহার করব, সাধারণ শব্দের জন্য কর্পাস ভিত্তিক পদ্ধতি এবং বহুবচন বিশেষ্যকরণের জন্য একটি নিয়ম-ভিত্তিক পদ্ধতি। চল শুরু করা যাক!

কর্পাস ভিত্তিক লেমমাটিজার তৈরি করা

এর আগে এই সিরিজে আমরা জিএমএম কর্পাসে একটি পিওএস ট্যাগারকে প্রশিক্ষণ দিয়েছিলাম, এটি সর্বজনীন নির্ভরতা প্রকল্পে উপলব্ধ। এই কর্পাসটি কনলএলইউ ফর্ম্যাটে উপস্থাপন করা হয়েছে যা ভাষাগত ভাষ্যযুক্ত ফাইলগুলির জন্য একটি নির্দিষ্ট বিন্যাস। জিএমএম কর্পাসের জন্য প্রদত্ত কনলএলইউ ফাইলগুলিতে, টীকাযুক্ত বাক্যাংশগুলিতে শব্দের জন্য স্পিচ অফ স্পিচ প্রদান বাদ দিয়ে, কর্পাস লেম্মা শব্দটিও সরবরাহ করে, যা আমাদের লেমাইটিজেশন প্রক্রিয়া চলাকালীন দ্রুত তাদের পুনরুদ্ধার করার জন্য একটি অভিধান তৈরি করার অনুমতি দেয়।

আমি পুরো জিএমএম কর্পসকে একটি একক ফাইলে সংযুক্ত করে ফেলেছি, তাই আমরা পরীক্ষা, ট্রেন এবং দেব পরীক্ষা থেকে লেমমাস উপভোগ করতে পারি (আমাদের এখানে বেঞ্চমার্ক করার দরকার নেই)। আপনি এখানে একীভূত কনল্লু ফাইলটি ডাউনলোড করতে পারেন।

আসুন ফাইলটিতে টীকাগত শব্দগুলির একটি অভিধান তৈরি করি। তার জন্য আমরা পিওএস ট্যাগিংয়ের জন্য ব্যবহৃত একই কনল্লু মডিউলটি ব্যবহার করি:

তবে, একটি সমস্যা আছে। ফলাফল ফলাফলের দৈর্ঘ্য যাচাই করা হলে এটি কী ঘটে?

>>> লেন (শব্দ_লেমা_ডিক্ট.কিজ ()) 12516

Eeww! যদিও জিএমএম কর্পস স্বতন্ত্র প্রসঙ্গ থেকে বর্ণিত পাঠ্য দ্বারা তৈরি করা হয়েছে, স্বতন্ত্র শব্দের সংখ্যা প্রত্যাশার চেয়ে অনেক কম। আপনি কেবল জানেন যে, একজন বয়স্ক নেটিভ স্পিকারের ইংলিশ শব্দভাণ্ডারের আকারের পরিমাণ 20k-35k স্বতন্ত্র শব্দের মধ্যে, সুতরাং 12 কে (যার মধ্যে যথাযথ বিশেষ্য অন্তর্ভুক্ত) সম্ভবত যথেষ্ট নয়। আমরা কি করতে পারি?

ভাল, একটি উপায় হ'ল অন্য কর্পোরা / শব্দ তালিকাগুলি ব্যবহার করা। Https://lexically.net/ এ একটি আকর্ষণীয় সরবরাহ করা আছে, যা শব্দের তালিকাগুলি মাথায় রেখে বিশেষত তৈরি একটি ওয়েবসাইট। আমরা যেটি আগ্রহী সে হ'ল "সি -5 সহ লেম্মা তালিকা 10" (এখানে ডাউনলোড করুন: 'বিএনসি্লেম্মা 10_3_with_c5.txt'), যা আসলে ব্রিটিশ ন্যাশনাল কর্পাস (বিএনসি) থেকে উত্তোলিত লেমাস এবং তারতম্যের একটি তালিকা এবং সি 5 ব্যবহার করে মন্তব্য করা হয়েছে is ট্যাগসেট (বিএনসির জন্য ট্যাগসেট)। এখানে এটির একটি সংক্ষিপ্ত দর্শন:

Lexically.net থেকে লেমা তালিকা। এগুলি ব্রিটিশ ন্যাশনাল কর্পাস (বিএনসি) থেকে বের করা হয়েছে এবং তারপরে ট্যাগ করা হয়েছে।

এটি ব্যবহার করার জন্য, আমাদের আরও একটি রূপান্তরকারী তৈরি করতে হবে (এটি আমাদের বর্তমান পিওএস ট্যাগগুলির সাথে কাজ করার জন্য):

ঠিক আছে, এটি একটি কুরুচিপূর্ণ ছিল, কিন্তু এটি কাজটি সম্পন্ন করে। এছাড়াও, আমার নিজের থেকে এটি করতে হয়েছিল - ভাষাবিদ বা ব্যাকরণ বিশেষজ্ঞের কোনও সহায়তা নেই। লক্ষ্য করুন যে আমি রূপান্তর করেছি " "থেকে" কিছুই না "কারণ বেশিরভাগ ক্ষেত্রে এই শব্দ তালিকায় উপস্থিত বিশেষ্যগুলি ট্যাগ করা হয়" "এনএন + কিছু পরিবর্তে something

এখন, আমাদের ইতিমধ্যে যা আছে তা ব্যবহার করি এবং আমাদের অভিধানে আরও কিছু শব্দ যুক্ত করি:

ফলাফল?

>>> লেন (word_lemma_dict.keys ()) 30987

ভাল উপায়! অবশ্যই, কিছু কুলুঙ্গি শব্দ সেখানে হবে না। তবে আসুন এটি যথেষ্ট বিবেচনা করি। এটি ব্যবহারের সময় দেওয়ার জন্য। আমাকে এখন দেখাতে যে কোনও শব্দকে লেম্যাটাইজ করা কতটা সহজ (বিটিডাব্লু, শব্দ এবং এর পিওএস যদি ডিকটিতে না থাকে, তবে এটি সর্বোত্তম সমাধান হতে পারে না) আমি কেবল এড়াচ্ছি:

এটা পরীক্ষা করো:

>>> শব্দগুলি = [('জীবিত', 'এডিজে'), ('জীবিত', 'কিছু নয়'), ('জীবিত', 'ভেরিব'), ('বন্দুকগুলি', 'নন')] >>> জন্য কথায় কথায় শব্দ: ... মুদ্রণ করুন (লেম্যাটাইজ (শব্দ_তুপ্লে [0], শব্দ_তুপ্লে [1])) ... লিভিং লাইভ লাইভ বন্দুক

কাজ করা, কিন্তু নিখুঁত নয়। 'বন্দুক' একক রূপে নেওয়া হয়নি। আমরা কি করতে পারি? এটি কেবল আমাদের ডিকটিতে যুক্ত করুন:

>>> word_lemma_dict [ 'বন্দুক'] [ 'বিশেষ্য'] = [ 'বন্দুক']

অবশ্যই, এটি সর্বোত্তম সমাধান নয়, তবে, হেই, আমাদের কাছে 30k শব্দ রয়েছে। যদি কোনও দম্পতি ব্যর্থ হয় তবে এটি খারাপ হবে না। আমরা আমাদের ডিকটিতে আরও কর্পোরাকে যুক্ত রাখতে পারি (যদি আমরা সেগুলি খুঁজে পাই)। উদাহরণস্বরূপ, আমরা ইংলিশ ওয়েব ট্রিব্যাঙ্কের সাথে কাজ করতে পারি, যার 254k এর বেশি ট্যাগ বাক্য রয়েছে! এটি নিজে চেষ্টা করো. আমি এটিকে 37 কে আলাদা শব্দ দিয়েছি।

আসুন এই অভিধানটি সংরক্ষণ করুন যাতে আমরা এটি আমাদের মূল সরঞ্জামটিতে ব্যবহার করতে পারি:

>>> আচার আমদানি করুন >>> pickle.dump (word_lemma_dict, উন্মুক্ত ('word_lemma_dict.p', 'wb'))

বহুবচন বিশেষ্যের জন্য নিয়ম ভিত্তিক লেমতিটিজার

এখন 'বন্দুক' নিয়ে সমস্যাটি আমাকে জাগিয়ে তুলল। আমি পরীক্ষা করে দেখেছি যে আমাদের তালিকার কোনওটিই একবচন রূপকে বহুবচন বিশেষ্যের জন্য লেমা হিসাবে বিবেচনা করে না। আমরা এটি মোকাবেলায় বিশেষজ্ঞ সিস্টেম তৈরি করতে পারি। Https://www.grammar.cl/Notes/Plural_Nouns.htm এ বিধিগুলি ব্যবহার করে আমি এখানে যা করেছি

প্রথমত, আমি http://www.esldesk.com/vocabulary/irregular-nouns থেকে সর্বাধিক সাধারণ অনিয়মিত নামগুলির একটি তালিকা পেয়েছি। আমি এটির চিকিত্সা করেছি এবং একটি সিএসভি তৈরি করেছি যা আপনি এখানে ডাউনলোড করতে পারেন।

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

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

এনএলপিটুলগুলিতে কাজ করা:

এই সিরিজের শুরু থেকে, আমরা স্ক্র্যাচ থেকে একসাথে একটি এনএলপি সরঞ্জাম স্যুট তৈরি করছি। এই বিভাগটি এই প্রক্রিয়াটি চালিয়ে যাওয়ার লক্ষ্য করে। এখন পর্যন্ত প্রকল্পটি এখানে উপলব্ধ।

ফোল্ডার কাঠামোর জন্য, আমাদের এটি রয়েছে:

মনে রাখবেন: সবুজগুলি নতুন সংযোজন, ইয়েলোগুলি পরিবর্তন। প্রথমত, আমরা একটি নতুন ফোল্ডার তৈরি করি এবং আমাদের শব্দটি লেমমা অভিধান এবং আমাদের অনিয়মিত বিশেষ্য অভিধান (প্রিললোড / অভিধান / লেমমাস /) যুক্ত করি।

আমি একটি ইউটিস ফোল্ডারও তৈরি করেছি এবং উপরে উল্লিখিত inflect_noun_singular ফাংশন সহ একটি word_utils.py ফাইল যুক্ত করেছি।

তারপরে, আমরা আমাদের lemmatiization.py তৈরি করতে পারি। এটি পরীক্ষা করা এবং এটি ব্যর্থ-প্রমাণ হিসাবে তৈরি করার জন্য আমি যথাসাধ্য চেষ্টা করলেও এটি এখন পর্যন্ত সরল ফাইল।

সর্বশেষ পরিবর্তনটি __init__.py এ রয়েছে, যেখানে আমি পাইপলাইনে লেমিটাইজেশন যুক্ত করেছি (ডিফল্টরূপে স্টেমিং সরানো) এবং পোস্টস্টগারটিকে ইউডি ট্যাগগুলিতে ডিফল্ট হিসাবে সেট করেছি:

এটি কাজ করে কিনা তা পরীক্ষা করা হচ্ছে:

>>> ডক = এনএলপিটুলস.প্রসেস ("আমার থাকার জায়গাতে অনেক কুকুর বসবাস করছে") >>> ডক্টে এসেন্সেন্টেন্সে প্রেরিত: ... শব্দের জন্য ([(word.get (), word.PoS) প্রিন্ট করুন in sent.tokens]) [(' ', কিছুই নেই', ('সেখানে', 'প্রোন'), ('রয়েছে', 'ভিইআরবি'), ('অনেক', 'এডিজে'), ('কুকুর', 'কিছুই নয়'), ('লাইভ', 'ভেরব'), ('ইন', 'এডিপি'), ('আমার', 'ডিইটি'), ('জীবিত', 'কিছুই নয়'), ('স্থান', 'নন'), (' ', কিছুই নেই)]

চমৎকার!

আপনি যদি স্টেমার টিউটোরিয়ালটি মনে রাখেন তবে আমরা মানবাধিকারের সর্বজনীন ঘোষণাপত্রে দক্ষতা যাচাই করে স্টেমারটি পরীক্ষা করেছি। আমরা 551 টি পৃথক শব্দ থেকে 476 এ নেমে এসেছি। আসুন আমরা এটি লেমিটাইজেশন সহ দেখতে পাই:

একটি বিশদ: এখানে আমি ডেটা প্রক্রিয়া করতে আমাদের সম্পূর্ণ পাইপলাইন ব্যবহার করছি। স্টেমিং টেস্টে, আমি কেবল একটি সাধারণ বিভাজন () মডিউল ব্যবহার করেছি, যা সেটে আরও কিছু শব্দের কারণ ঘটেছে (সম্ভবত বিরাম চিহ্ন যুক্ত শব্দগুলি)। এটি বিবেচনা করে, লেমটিটিজারের জন্য এখানে ফলাফলগুলি:

মানবাধিকারের সর্বজনীন ঘোষণাপত্রে স্বতন্ত্র শব্দের সংখ্যা: 538. লেমিটাইজেশন পরে, সংখ্যাটি: 486

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

সুতরাং আমরা লেম্যাটাইজিংয়ের সাথে সম্পন্ন করেছি!

এরপরে, আমরা ইতিমধ্যে আমাদের যে পাইপলাইনটি পাইপলাইনে রেখেছি তার সাথে কিছুটা খেলতে নতুন ধারণা নিয়ে বিরতি নিয়ে পাঠ্য স্বাভাবিককরণ এবং প্রাকপ্রসেসিং সম্পর্কে আরও শিখি।

ওহ, বর্তমান প্রতিশ্রুতিবদ্ধতার লিঙ্কটি এখানে।

মূল গিট রেপো দেখে আপনি সর্বদা প্রকল্পটি কোথায় রয়েছে তা পরীক্ষা করতে পারেন:

এছাড়াও, কোনও মন্তব্য বা পরামর্শ দেওয়া থেকে বিরত থাকবেন না। এছাড়াও, আপনি কোডটিতে কোনও বাগ খুঁজে পেলে, রেপোতে একটি অঙ্গীকারবদ্ধ করতে পারেন।

[1] https://en.wikedia.org/wiki/Lexeme