শব্দের পরিবর্তে পাঠ্য ভাষার সনাক্তকরণে এন-গ্রাম ব্যবহার করা হয় কেন?


12

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

এছাড়াও, পাঠ্য শ্রেণিবিন্যাসে এন-গ্রাম মডেলের আরও কিছু ব্যবহার কী?

উফফফফফফফফফফফফফফফঃ মনে হয় এখানে এখানেও একই রকম প্রশ্ন রয়েছে: পাঠ্য নথির জন্য বৈশিষ্ট্য ভেক্টর তৈরি করতে বিগ্রাম (এন-গ্রাম) মডেল ব্যবহার সম্পর্কে

তবে কেউ কি আরও ব্যাপক উত্তর দিতে পারেন? ভাষা শনাক্তকরণের ক্ষেত্রে কোনটি ভাল?

(আশা করি আমি এন-গ্রাম এবং ব্যাগ-অফ-শব্দের অর্থটি সঠিকভাবে পেয়েছি, হাহাহা, যদি দয়া করে আমাকে সহায়তা না করেন))

উত্তর:


20

আমি মনে করি সর্বাধিক বিস্তারিত উত্তর মেহরিয়ার মোহরির বিষয়টিতে বিস্তৃত রচনায় পাওয়া যাবে। এই বিষয়টিতে তাঁর একটি বক্তৃতা স্লাইডের একটি লিঙ্ক এখানে দেওয়া হয়েছে: http://www.cims.nyu.edu/~mohri/amls/lecture_3.pdf

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

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

ধরে নিই যে আপনি বিগ্রামগুলি ব্যবহার করছেন (এন = 2) এবং আপনার বর্ণমালায় 26 টি বর্ণ রয়েছে, তবে সেই বর্ণমালার জন্য কেবল 26 ^ 2 = 676 সম্ভাব্য বিগ্রাম রয়েছে, যার মধ্যে অনেকগুলি কখনই ঘটবে না। সুতরাং, প্রতিটি ভাষার জন্য "প্রোফাইল" (ভাষা সনাক্তকারীর শব্দ ব্যবহার করতে) খুব ছোট একটি ডাটাবেস প্রয়োজন needs একটি ব্যাগের শব্দের শ্রেণিবদ্ধকারী, অন্যদিকে, প্রতিটি ভাষার জন্য একটি সম্পূর্ণ অভিধানের প্রয়োজন হবে যাতে গ্যারান্টি থাকে যে কোনও ভাষা যেই বাক্যটি দেওয়া হয়েছে তার ভিত্তিতে সনাক্ত করতে পারে।

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

দ্রষ্টব্য: শব্দের জন্য এন-গ্রাম সংখ্যার সাধারণ সমীকরণ l ^ n যেখানে l বর্ণমালার অক্ষরের সংখ্যা।


আমি অনুমান করি যে কয়েকটি ঘনিষ্ঠ ভাষার জন্য এন-গ্রাম ছাড়াও শব্দের তালিকা ব্যবহার করা সাহায্য করবে। আমি কখনও কখনও দেখেছি, নরওয়েজিয়ান পাঠ্যটি ডেনিশ হিসাবে বর্ণিত। আমি সন্দেহ করি যে এন-গ্রাম এই দুটি ভাষার পার্থক্য করার একটি ভাল উপায়।
কেজেটিল বি হালওয়ারসেন

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

1
@ Dennis97519 পুন: "ব্যাগ-অফ-ওয়ার্ডস ..." ধরুন আপনার অভিধানে কেবলমাত্র "কুকুর", "বিড়াল", "কচ্ছপ", "প্রাণী" English ইংরেজি এবং {"পেরো", "গাটো" শব্দটি রয়েছে , "টেরুগা", স্প্যানিশের জন্য "প্রাণী"। আপনার অভিধানটি নিম্নলিখিত বাক্যটিকে শ্রেণিবদ্ধ করতে সক্ষম হবে না: "গাধা একটি প্রাণী" কারণ উভয় অভিধানে "প্রাণী" শব্দটি উপস্থিত হয়েছে, তবে অন্য শব্দগুলির কোনওটিরই অস্তিত্ব নেই। এটি চরম উদাহরণ is 4-গ্রাম: 1) মনে রাখবেন যে আপনার প্রতিটি ভাষার জন্য একটি অভিধান প্রয়োজন, 2) এন-গ্রামগুলি স্পার (দ্রুত অনুসন্ধান) এবং 3) ডগাল যেমন বলেছেন, সেগুলি কেবল কয়েকটি বাইটে উপস্থাপন করা যেতে পারে।
justanotherbrain

1
@ ফ্লোরোপ্যারিসি - দুটি বাণিজ্য বন্ধ রয়েছে: প্রথমটি হল মডেল জটিলতা (বৃহত এন = আরও জটিল) এবং সাধারণীকরণের ত্রুটির মধ্যে (আপনি কিছু পরীক্ষার সেটটিতে কতটা ভাল করেন) - আপনি অতিরিক্ত মানা করতে চান না। দ্বিতীয় বাণিজ্য বন্ধ গণ্য জটিলতা। এন দিয়ে মেমরির জটিলতা তাত্পর্যপূর্ণভাবে বেড়ে যায় প্রশিক্ষণ সাধারণত পাঠ্যের শব্দের সংখ্যার সাথে রৈখিক হয় তাই খুব দীর্ঘ পাঠ্য থাকা সাধারণত সমস্যা হয় না। এটি বলেছিল যে বৃহত্তর পাঠ্যটি প্রায়শই আপনার অভিধান ডি এর আরও শব্দের অর্থ ডি। সুতরাং, মেমরির জটিলতা হ'ল হে (ডি ^ এন)। অনুশীলনে, সাধারণত গণনা সম্ভব যত বড় একটি এন ব্যবহার করা ভাল।
justanotherbrain

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

3

চিঠি এন-গ্রাম বিভিন্ন কারণে শব্দের পরিবর্তে ব্যবহৃত হয়:

1) প্রদত্ত ভাষার জন্য প্রয়োজনীয় শব্দের তালিকাটি বেশ বড়, সম্ভবত 100,000 আপনি যদি দ্রুত, দ্রুত, দ্রুত, দ্রুত, উপবাস, উপবাস, ... সমস্ত ভিন্ন শব্দ হিসাবে বিবেচনা করেন। ৮০ টি ভাষার জন্য আপনার প্রচুর শব্দ হিসাবে প্রায় 80x প্রয়োজন, প্রচুর জায়গা - 50+ মেগাবাইট।

২) ২-অক্ষরের বর্ণমালার জন্য চিঠির সংখ্যাটি 26 ** 3 বা প্রায় 17,000 এবং চতুর্ভুজগুলির জন্য (এন = 4) প্রায় 450,000 সেই বর্ণমালা ব্যবহার করে সমস্ত ভাষাতে আবৃত হয়। 30-100 অক্ষরের বৃহত্তর বর্ণমালায় এন-গ্রামগুলির জন্য অনুরূপ তবে কিছুটা বড় সংখ্যা। হান স্ক্রিপ্টে 4000+ অক্ষরযুক্ত সিজেকে ভাষার জন্য, ইউনিগ্রাম (এন = 1) যথেষ্ট। কিছু ইউনিকোড স্ক্রিপ্টগুলির জন্য, প্রতি স্ক্রিপ্টের জন্য কেবল একটি ভাষা রয়েছে (গ্রীক, আর্মেনিয়ান), সুতরাং কোনও বর্ণের সংমিশ্রণের প্রয়োজন নেই (তথাকথিত নীল-গ্রাম এন = 0)

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

সিএলডি 2 ল্যাটিন, সিরিলিক এবং আরবি সহ বেশিরভাগ ইউনিকোড স্ক্রিপ্টগুলির জন্য বর্ণমালা ব্যবহার করে, সিজেকে স্ক্রিপ্টগুলির জন্য ইউনিগ্রাম, অন্যান্য স্ক্রিপ্টগুলির জন্য নীলগ্রাম এবং আলাদা করার জন্য সীমিত সংখ্যক যথেষ্ট স্বতন্ত্র এবং মোটামুটি সাধারণ সম্পূর্ণ শব্দ এবং জোড় শব্দ যুক্ত করে পরিসংখ্যানগত-অনুরূপ ভাষার, যেমন ইন্দোনেশিয়ান এবং মালয় এর মতো শক্ত গ্রুপগুলির মধ্যে। চিঠি বিগ্রামগুলি এবং ট্রিগারগুলি খুব অল্প সংখ্যক ভাষার মধ্যে পার্থক্য করার জন্য দরকারী (প্রায় আটটি, https://docs.google.com/docament/d/1NtErs467Ub4yklEfK0C9AYef06G_1_9NHL5dPuKIH7k/edit দেখুন), তবে কয়েক ডজন ভাষা আলাদা করার জন্য অকেজো। সুতরাং, সিএলডি 2 এই সংমিশ্রণটি ব্যবহার করে প্রতিটি বর্ণের সংমিশ্রণের সাথে শীর্ষ তিনটি সম্ভবত ভাষা ব্যবহার করে কোয়াডগ্রাম ব্যবহার করে। এটি প্রায় 1.5 এমবি টেবিল সহ 80 টি ভাষা এবং প্রায় 5MB টেবিলের সাথে আরও বিশদে 160 টি ভাষা কভার করতে দেয়।

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