N-گرم بهبود بهینه سازی داخلی با کمک رقبا ببینید "N-gram" در فرهنگ های دیگر چیست

با استفاده از N-gram

استفاده عمومی از N-gram

  • استخراج داده‌ها برای خوشه‌بندی مجموعه‌ای از تصاویر ماهواره‌ای زمین از فضا، به منظور تصمیم‌گیری در مورد قسمت‌های خاصی از زمین در تصویر،
  • جستجوی توالی های ژنتیکی،
  • در زمینه ژنتیک برای تعیین نمونه های DNA از گونه های حیوانی خاص استفاده می شود.
  • در فشرده سازی کامپیوتر،
  • با استفاده از N-grams، به عنوان یک قاعده، داده های مربوط به صدا نمایه می شوند.

N-gram ها نیز به طور گسترده در پردازش زبان طبیعی استفاده می شوند.

استفاده از N-gram برای نیازهای پردازش زبان طبیعی

در زمینه پردازش زبان طبیعی، N-گرم عمدتاً برای پیش‌بینی بر اساس مدل‌های احتمالی استفاده می‌شود. مدل N-gram احتمال آخرین کلمه N-gram را در صورتی محاسبه می کند که تمام کلمات قبلی شناخته شده باشند. هنگام استفاده از این رویکرد برای مدلسازی یک زبان، فرض بر این است که ظاهر هر کلمه فقط به کلمات قبلی بستگی دارد.

یکی دیگر از کاربردهای N-gram، تشخیص سرقت ادبی است. اگر متن را به چند قطعه کوچک که با n-گرم نشان داده شده است تقسیم کنید، می توان آنها را به راحتی با یکدیگر مقایسه کرد و در نتیجه درجه تشابه اسناد کنترل شده را به دست آورد. N-gram اغلب با موفقیت برای دسته بندی متن و زبان استفاده می شود. علاوه بر این، می توان از آنها برای ایجاد توابعی استفاده کرد که به شما امکان می دهد از داده های متنی دانش کسب کنید. با استفاده از N-grams می توان به طور موثر نامزدهایی را برای جایگزینی کلمات غلط املایی پیدا کرد.

پروژه های تحقیقاتی گوگل

مراکز تحقیقاتی گوگل از مدل های N-gram برای طیف وسیعی از تحقیق و توسعه استفاده کرده اند. اینها شامل پروژه هایی مانند ترجمه آماری از یک زبان به زبان دیگر، تشخیص گفتار، تصحیح املا، استخراج اطلاعات و غیره می شود. برای اهداف این پروژه‌ها، متن‌هایی حاوی چندین تریلیون کلمه استفاده شد.

گوگل تصمیم گرفته است ساختمان آموزشی خود را ایجاد کند. این پروژه Google teracorpus نام دارد و شامل 1,024,908,267,229 کلمه است که از وب سایت های عمومی جمع آوری شده است.

روش های استخراج n-گرم

با توجه به استفاده مکرر از N-gram برای حل مسائل مختلف، الگوریتمی مطمئن و سریع برای استخراج آنها از متن مورد نیاز است. یک ابزار استخراج n-gram مناسب باید بتواند با اندازه متن نامحدود کار کند، سریع کار کند و از منابع موجود استفاده بهینه کند. روش های مختلفی برای استخراج N-gram از متن وجود دارد. این روش ها بر اساس اصول مختلفی هستند:

یادداشت

را نیز ببینید


بنیاد ویکی مدیا 2010 .

  • n-tv
  • N-cadherin

ببینید "N-gram" در سایر لغت نامه ها چیست:

    گرم- (گرم فرانسوی، از صفت گرامای یونانی). واحد فرانسوی وزن \u003d وزن 1 سانتی متر مکعب آب مقطر \u003d 22.5 روسی. سهام فرهنگ لغات کلمات خارجی موجود در زبان روسی. Chudinov A.N., 1910. گرم واحد اندازه گیری وزن در فرانسه ... فرهنگ لغت کلمات خارجی زبان روسی

    گرم- گرم، جنس. pl گرم و مجاز (در گفتار شفاهی بعد از اعداد) گرم. صد گرم (گرم). در دفاع از شکل جدید جنس. مورد pl. تعداد گرم توسط یک خبره نویسنده روسی زبان K. Chukovsky ساخته شده است. او در کتاب "زندگی به عنوان زندگی" چنین نوشته است: ... فرهنگ لغت تلفظ و مشکلات استرس در روسی مدرن

    گرم- گرم، گرم، شوهر. (از علامت دستور زبان یونانی، حرف). واحد اصلی وزن در سیستم متریک برابر با وزن 1 سانتی متر مکعب آب است. یک گرم حدود 1/400 پوند وزن دارد. ❖ اتم گرم (فیزیک) تعداد گرم یک ماده برابر با وزن اتمی آن. فرهنگ لغت توضیحی اوشاکوف

    گرم رونتگن- اشعه ایکس گرم / n، گرم اشعه ایکس / روشن، میله. pl گرم رونتگن و گرم رونتگن ... ادغام شد. جدا از هم. از طریق خط فاصله.

    گرم- گرام، این کلمه ساده را نمی شد در فرهنگ لغات خطاها آورد، اگر نه برای دو مورد; اولاً ، اگر می خواهید با زبان کاملاً صحیح خودنمایی کنید ، پس از آمدن به فروشگاه ، فروشنده را با زبان صحیح متحیر کنید: من را دویست گرم وزن کنید (نه ... ... فرهنگ لغت خطاهای زبان روسی

    GRAM-ATOM- GRAM ATOM مقدار عنصری که جرم آن بر حسب گرم برابر با جرم اتم آن است. با مول واحد SI جایگزین شد. به عنوان مثال، یک گرم از اتم هیدروژن (H، جرم اتمی = 1) برابر با یک گرم است. b> معادل گرم، وزن آن بر حسب گرم…… فرهنگ دانشنامه علمی و فنی

    گرم- GRAM، آه، جنس. pl گرم و گرم شوهر واحد جرم در سیستم اعشاری اندازه گیری، یک هزارم کیلوگرم. نه یک اونس (نه) از هیچ چیز (عامیانه) نه اصلاً، نه اصلاً. این مرد (نه) ذره ای وجدان دارد. | صفت گرم، اوه، اوه توضیحی...... فرهنگ لغت توضیحی اوژگوف

    گرم- ولی؛ pl جنس گرم و گرم؛ متر [فرانسوی. گرم] واحد جرم در سیستم متریک، یک هزارم کیلوگرم. ◊ (یک گرم) وجود ندارد. نه اصلا، نه اصلا. در چه کسی ل. نه ذره ای دروغ هیچکس وجدان نداره * * * گرم (فرانسوی ... فرهنگ لغت دایره المعارفی

    گرم زنوب تئوفیلوس- (Gramme) (1826 1901)، مهندس برق. متولد بلژیک، کار در فرانسه. ثبت اختراع برای یک ژنراتور الکتریکی عملی با آرمیچر حلقوی (1869) دریافت کرد. او تولید صنعتی ماشین های الکتریکی را پایه گذاری کرد. * * * گرم زنوب…… فرهنگ لغت دایره المعارفی

    اتم گرم- مقدار یک ماده بر حسب گرم، عددی برابر جرم اتمی آن است. این اصطلاح برای استفاده توصیه نمی شود. در SI مقدار یک ماده بر حسب مول بیان می شود. * * * GRAM ATOM GRAM ATOM، مقدار یک ماده بر حسب گرم، عددی برابر با جرم اتمی آن (نگاه کنید به ... فرهنگ لغت دایره المعارفی

    مولکول گرم- مقدار یک ماده بر حسب گرم، عددی برابر با وزن مولکولی آن است. این اصطلاح برای استفاده توصیه نمی شود. در SI مقدار یک ماده بر حسب مول بیان می شود. * * * مولکول گرم مولکول گرم، مقدار یک ماده بر حسب گرم، عددی برابر با ... ... فرهنگ لغت دایره المعارفی

هسته معنایی

برای توسعه موفقیت آمیز و افزایش دید سایت در واقعیت های مدرن، لازم است به طور مداوم هسته معنایی گسترش یابد. یکی از بهترین راه ها برای رشد، جمع آوری کلمات کلیدی رقبا است.

امروزه بدست آوردن معناشناسی رقبا دشوار نیست، زیرا. خدمات زیادی وجود دارد، هم پولی و هم رایگان.

لیست رایگان:

- megaindex.ru - ابزار مشاهده سایت

- xtool.ru - یک سرویس شناخته شده که همچنین کلمات کلیدی که سایت برای آنها رتبه بندی شده است را نشان می دهد

لیست پرداخت شده:

— spywords.ru — مناسب برای Yandex و Google

- semrush.ru - فقط بر روی گوگل متمرکز شده است

— prodvigator.ua — آنالوگ اوکراینی spywords.ru

علاوه بر خدمات، می توانید از روش دستی مبتنی بر تقسیم عنوان و توضیحات به n-gram نیز استفاده کنید که در نتیجه یک لیست اضافی از عبارات در خروجی به دست می آید.

N-gram - دنباله ای از n عنصر. در عمل، N-gram بیشتر به عنوان یک سری کلمات رایج است. دنباله ای از دو عنصر متوالی اغلب نامیده می شود نمودار، دنباله ای از سه عنصر نامیده می شود سه گرام. حداقل چهار یا چند عنصر به عنوان N-گرم تعیین می شوند، N با تعداد عناصر متوالی جایگزین می شود.

این تکنیک را مرحله به مرحله در نظر بگیرید:

- عنوان (توضیحات) رقبا را بارگذاری کنید. با Screaming Frog SEO قابل انجام است.

- در یک ویرایشگر متن، لیست به دست آمده را از قسمت های خدمات گفتار، علائم نگارشی و سایر زباله ها پاک می کنیم. من از تابع "جستجو و جایگزینی" در متن عالی ویرایشگر متن (کلید داغ ctrl+H)، با استفاده از عبارات منظم استفاده می کنم:

- n-gram مورد نظر را انتخاب کنید و فرکانس را حداقل یک تنظیم کنید. بهترین گزینه تریگرم و 4 گرم است:

- نتیجه زیر را می گیریم:

ستونشمردنتعداد تکرارها را نشان می دهدn-گرم، ستونفرکانس - فرکانسn-گرم

پس از دریافت لیستی از عبارات، باید آن را تجزیه و تحلیل کنیم و کلمات کلیدی مناسب را برای گسترش هسته معنایی انتخاب کنیم. جزئیات بیشتر را می توانید در بخش مربوطه وبلاگ ما بیابید.

گروه بندی درخواست ها

درک چگونگی گروه بندی هسته معنایی رقبا بسیار مهم است، زیرا این به توزیع صحیح عبارات کلیدی در صفحات سایت کمک می کند.

برای انجام این کار، پس از ایجاد یک لیست کامل از پرس و جوها، باید صفحات و موقعیت های مرتبط رقبا را بدست آوریم (شما می توانید از سرویس seolib.ru استفاده کنید)، و سپس با گروه بندی خود مقایسه کنید. اگر می بینید که یک رقیب موقعیت های خوبی دارد و در عین حال گروه بندی آن با ما متفاوت است (مثلاً درخواست های یک رقیب در صفحات مختلف توزیع می شود در حالی که درخواست های ما در یک صفحه یکسان است) باید توجه کنید. این و صفحات فرود سایت خود را اصلاح کنید.

بیایید یک مثال کوچک از مقایسه گروه بندی یک سایت شرطی و رقیب آن را در نظر بگیریم.

همانطور که از جدول می بینید، site.ru یک صفحه فرود برای همه کلمات کلیدی دارد. در یک رقیب، صفحات مختلف برای پرس و جوهای یکسان رتبه بندی می شوند و موقعیت های TOP یا نزدیک به TOP را اشغال می کنند. بر این اساس، می توان نتیجه گرفت که گروه بندی سایت.ru نیاز به تجدید نظر دارد، به ویژه، لازم است صفحه جداگانه ای برای عبارات کلیدی با کلمه "نما" ایجاد شود.

کیفیت متن

اولین و مهمترین چیزی که باید در هنگام تجزیه و تحلیل متون رقبا به آن توجه کرد، جزء کمی (تعداد رخدادها، طول متن و غیره) نیست، بلکه جزء کیفی یا معنایی است - میزان مفید بودن اطلاعات، آنچه رقیب ارائه می دهد و چگونه او این کار را انجام می دهد.

بیایید به چند نمونه نگاه کنیم.

فرض کنید در حال تحویل گل هستید و در صفحه اصلی متن تازگی آنها را تضمین می کنید. به عنوان مثال، مانند این:

خدمات ارسال گلسایت. enایمنی دسته گل ها را حتی در فصل سرد تضمین می کند.

در اینجا یک مثال از یکی از رقبا آورده شده است:

سفارش ترکیبات معطر به ما سودآور است، زیرا در صورت شک در تازگی گلها، تضمین 100% بازگشت وجه را داریم.

ضمانت رقیب پشتوانه پولی است که از ضمانت انتزاعی مهمتر است.

مثال دیگری را در نظر بگیرید - متن صفحه دسته "کاشی و سرامیک" یک فروشگاه آنلاین:

این متن هیچ بار معنایی مفیدی ندارد، آب جامد. به احتمال زیاد، شخصی که به سایت آمده و تصمیم خرید می‌گیرد، می‌خواهد از مزایای محصول و تنظیمات احتمالی مطلع شود، در عوض مجموعه‌ای از شخصیت‌های بی‌معنی دریافت می‌کند.

حال بیایید به متن یک رقیب نگاه کنیم:

این متن مفیدتر است زیرا به طور خلاصه تفاوت‌های بین کاشی‌ها را بیان می‌کند و به شما کمک می‌کند تا نحوه انتخاب مناسب را درک کنید.

بنابراین، با مقایسه متون رقبا با متن خود، می توانید اطلاعات مفید زیادی به دست آورید که به کپی رایترها در هنگام کامپایل TOR کمک می کند.

مرتبط بودن متون

با ادامه موضوع کیفیت متون، نمی توان به ارتباط آنها دست زد. امروزه برای اینکه متن مناسب باشد، فقط درج کلمات کلیدی کافی نیست. برای افزایش ارتباط صفحه و در عین حال اسپم نشدن متن، باید از کلمات مرتبط با موضوع استفاده کنید.

هنگام ارزیابی ارتباط یک متن با یک پرس و جو، موتور جستجو نه تنها وجود کلمات کلیدی، بلکه کلمات اضافی را نیز تجزیه و تحلیل می کند، بنابراین معنای متن را تعیین می کند. به عنوان مثال، اگر متنی در مورد یک فیل بنویسیم، می توان کلمات مرتبط را در نظر گرفت: "تنه"، "عاج"، "طبیعت"، "باغ وحش". اگر متن مربوط به مهره شطرنج "فیل" باشد، این کلمات عبارتند از: "شکل"، "چک"، "ملکه" و غیره.

شما می توانید مناسب ترین لیست کلمات را برای نیازهای خود در متن های رقبا دریافت کنید. برای این کار باید مراحل زیر را انجام دهید:

- ما تمام متون را از TOP-10 برای درخواست با فرکانس بالا در فایل های متنی مختلف کپی می کنیم.

- بخش های خدماتی گفتار، علائم نگارشی و اعداد را از متون حذف می کنیم (که قبلاً در نظر گرفته شد).

- کلمات را در یک خط ردیف کنید - از تابع "جستجو و جایگزینی" با عبارات منظم استفاده کنید. فضا را با \n جایگزین کنید.

- در مرحله بعد، شما باید تمام فرم های کلمه را به فرم دیکشنری معمولی (لما) بیاورید. برای انجام این کار، می توانید از سرویس https://tools.k50project.ru/lemma/ استفاده کنید. در فیلد، لیستی از کلمات هر فایل را جداگانه وارد کنید و روی دکمه "lemmetize and output as a csv table" کلیک کنید. نتیجه باید 10 فایل با کلمات lemmetized باشد.

- در هر فایل کلمات تکراری را حذف می کنیم.

- کلمات را از فایل ها در یک لیست ترکیب کنید.

- اکنون باید یک فرهنگ لغت فرکانس ایجاد کنیم. برای انجام این کار، لیست حاصل را به سرویس https://tools.k50project.ru/lemma/ اضافه کنید و روی "ساخت فرهنگ لغت فرکانس در قالب CSV" کلیک کنید.

- لیست کلمات ما آماده است:

اگر فرکانس 10 باشد، این کلمه در هر 10 سایت، اگر 8، فقط در 8 و غیره استفاده شده است. توصیه می کنیم از پرتکرارترین کلمات استفاده کنید، اما راه حل های جالبی در میان کلمات کمیاب پیدا می شود.

به این روش ساده، می توانید لیستی از کلمات موضوعی برای کامپایل TOR برای کپی رایترها دریافت کنید.

همانطور که می بینید، رقبا منبع بسیار مهمی از اطلاعات هستند که می توانند به شما در بهینه سازی بهتر سایت خود کمک کنند. در این مقاله، من به دور از همه جنبه ها پوشش داده ام، و در آینده به نوشتن در مورد آنچه مفید است و چگونه می توانید از رقبای خود بیاموزید، ادامه خواهم داد.

مشترک شدن در خبرنامهاین الگوریتم‌ها برای جستجو در متن ناشناخته قبلی طراحی شده‌اند و می‌توانند به عنوان مثال در ویرایشگرهای متن، نمایشگرهای اسناد یا مرورگرهای وب برای جستجو در یک صفحه استفاده شوند. آنها نیازی به پیش پردازش متن ندارند و می توانند با جریان مداوم داده کار کنند.

جستجوی خطی

یک کاربرد متوالی ساده از یک متریک معین (مثلاً متریک Levenshtein) برای کلمات از متن ورودی. هنگام استفاده از یک متریک با محدودیت، این روش به شما امکان می دهد به عملکرد مطلوب دست پیدا کنید. اما، در همان زمان، بیشتر ک، زمان اجرا بیشتر می شود. تخمین زمان مجانبی - O(kn).

Bitap (همچنین به عنوان Shift-Or یا Baeza-Yates-Gonnet نیز شناخته می شود، و اصلاح آن از Wu-Manber)

الگوریتم bitapو اصلاحات مختلف آن اغلب برای جستجوی فازی بدون نمایه سازی استفاده می شود. از تنوع آن برای مثال در ابزار یونیکس agrep استفاده می‌شود که عملکردهایی مشابه grep استاندارد را انجام می‌دهد، اما با پشتیبانی از خطاها در جستجوی جستجو و حتی فرصت‌های محدودی برای استفاده از عبارات منظم فراهم می‌کند.

برای اولین بار ایده این الگوریتم توسط شهروندان مطرح شد ریکاردو بائزا یتسو گاستون گونت، انتشار مقاله مرتبط در سال 1992.
نسخه اصلی الگوریتم فقط با جایگزینی کاراکترها سروکار دارد و در واقع فاصله را محاسبه می کند همینگ. اما کمی بعد سان ووو اودی منبراصلاح این الگوریتم را برای محاسبه فاصله پیشنهاد کرد لونشتاین، یعنی پشتیبانی از درج و حذف را ارائه کرد و اولین نسخه از ابزار agrep را بر اساس آن توسعه داد.






مقدار نتیجه

جایی که ک- تعداد اشتباهات j- شاخص شخصیت، س x - ماسک کاراکتر (در ماسک، تک بیت ها در موقعیت های مربوط به موقعیت های کاراکتر داده شده در درخواست قرار دارند).
مطابقت یا عدم تطابق با پرس و جو توسط آخرین بیت از بردار R حاصله تعیین می شود.

سرعت بالای این الگوریتم با موازی بیت محاسبات تضمین می شود - در یک عملیات امکان انجام محاسبات روی 32 بیت یا بیشتر به طور همزمان وجود دارد.
در عین حال، اجرای بی اهمیت از جستجوی کلماتی با طول بیش از 32 پشتیبانی می کند. این محدودیت با عرض نوع استاندارد تعیین می شود. بین المللی(در معماری های 32 بیتی). شما همچنین می توانید از انواع ابعاد بزرگ استفاده کنید، اما این می تواند تا حدی الگوریتم را کاهش دهد.

علیرغم اینکه زمان اجرای مجانبی این الگوریتم O(kn)مانند روش خطی است، با پرس و جوهای طولانی و تعداد خطاها بسیار سریعتر است کبیش از 2.

آزمایش کردن

آزمایش بر روی متنی با 3.2 میلیون کلمه انجام شد که میانگین طول کلمه 10 بود.
جستجوی دقیق
زمان جستجو: 3562 میلی‌ثانیه
جستجو با استفاده از متریک Levenshtein
زمان جستجو در k=2: 5728 میلی‌ثانیه
زمان جستجو در k=5: 8385 میلی‌ثانیه
با استفاده از الگوریتم Bitap با تغییرات Wu-Manber جستجو کنید
زمان جستجو در k=2: 5499 میلی‌ثانیه
زمان جستجو در k=5: 5928 میلی‌ثانیه

بدیهی است که یک جستجوی ساده با استفاده از متریک، برخلاف الگوریتم Bitap، به شدت به تعداد خطاها بستگی دارد. ک.

با این حال، وقتی صحبت از جستجوی مقادیر زیادی از متن بدون تغییر می شود، زمان جستجو را می توان با پیش پردازش چنین متنی کاهش داد. نمایه سازی.

الگوریتم های جستجوی فازی با نمایه سازی (آفلاین)

یکی از ویژگی‌های همه الگوریتم‌های جستجوی فازی با نمایه‌سازی این است که نمایه بر اساس فرهنگ لغت گردآوری شده از متن منبع یا فهرستی از رکوردها در پایگاه داده ساخته می‌شود.

این الگوریتم ها از روش های مختلفی برای حل مسئله استفاده می کنند - برخی از آنها از کاهش برای جستجوی دقیق استفاده می کنند، برخی دیگر از خواص متریک برای ساختن ساختارهای فضایی مختلف و غیره استفاده می کنند.

اول از همه، در مرحله اول، یک فرهنگ لغت از متن مبدأ ساخته می شود که حاوی کلمات و موقعیت آنها در متن است. همچنین، می توانید تعداد کلمات و عبارات را برای بهبود کیفیت نتایج جستجو بشمارید.

فرض بر این است که نمایه، مانند فرهنگ لغت، به طور کامل در حافظه بارگذاری شده است.

مشخصات تاکتیکی و فنی فرهنگ لغت:

  • متن منبع - 8.2 گیگابایت مواد از کتابخانه Moshkov (lib.ru)، 680 میلیون کلمه؛
  • حجم دیکشنری - 65 مگابایت;
  • تعداد کلمات - 3.2 میلیون.
  • میانگین طول کلمه 9.5 کاراکتر است.
  • ریشه میانگین طول کلمه مربع (ممکن است هنگام ارزیابی برخی از الگوریتم ها مفید باشد) - 10.0 کاراکتر.
  • الفبا - حروف بزرگ A-Z، بدون E (برای ساده کردن برخی از عملیات). کلمات حاوی کاراکترهای غیر الفبایی در فرهنگ لغت گنجانده نشده است.
وابستگی اندازه فرهنگ لغت به حجم متن کاملاً خطی نیست - تا یک حجم خاص، یک قاب اصلی کلمه تشکیل می شود که از 15٪ در 500 هزار کلمه تا 5٪ در 5 میلیون متغیر است و سپس وابستگی به خطی نزدیک می شود. ، به آرامی کاهش می یابد و در 680 میلیون کلمه به 0.5٪ می رسد. حفظ بعدی رشد در بیشتر موارد با کلمات نادر تضمین می شود.

الگوریتم بسط نمونه

این الگوریتم اغلب در سیستم‌های غلط‌گیر املا (یعنی غلط‌گیر املا)، جایی که اندازه فرهنگ لغت کوچک است یا سرعت معیار اصلی نیست، استفاده می‌شود.
این مبتنی بر کاهش مشکل جستجوی فازی به مشکل جستجوی دقیق است.

از پرس و جو اصلی، مجموعه ای از کلمات "اشتباه" ساخته شده است که برای هر یک از آنها جستجوی دقیق در فرهنگ لغت انجام می شود.

زمان اجرای آن به شدت به تعداد k خطا و اندازه الفبای A بستگی دارد و در مورد استفاده از جستجوی فرهنگ لغت باینری به این صورت است:

مثلاً وقتی k = 1و کلمات با طول 7 (مثلاً "کروکودیل") در الفبای روسی، مجموعه کلمات اشتباه حدود 450 اندازه خواهد بود، یعنی باید 450 جستجوی فرهنگ لغت ایجاد کرد که کاملاً قابل قبول است.
اما در حال حاضر در k = 2اندازه چنین مجموعه ای بیش از 115 هزار گزینه خواهد بود که مربوط به شمارش کامل یک فرهنگ لغت کوچک یا در مورد ما 1/27 است و بنابراین زمان اجرا بسیار زیاد خواهد بود. در عین حال، نباید فراموش کرد که برای هر یک از این کلمات باید مطابقت دقیق را در فرهنگ لغت جستجو کرد.

ویژگی ها:
الگوریتم را می توان به راحتی برای تولید انواع "اشتباه" طبق قوانین دلخواه تغییر داد، و علاوه بر این، نیازی به پردازش اولیه فرهنگ لغت و بر این اساس، حافظه اضافی ندارد.
بهبودهای احتمالی:
می توان نه کل مجموعه کلمات "اشتباه"، بلکه فقط آنهایی از آنها را که به احتمال زیاد در یک موقعیت واقعی رخ می دهند، تولید کرد، برای مثال، کلماتی با در نظر گرفتن اشتباهات رایج املایی یا تایپی.

این روش برای مدت طولانی وجود داشته است و بیشترین استفاده را دارد، زیرا اجرای آن بسیار ساده است و عملکرد نسبتا خوبی را ارائه می دهد. الگوریتم بر اساس این اصل است:
"اگر کلمه A با کلمه B مطابقت داشته باشد، با توجه به چندین خطا، با درجه احتمال بالا حداقل یک زیررشته مشترک به طول N خواهند داشت."
این رشته های فرعی با طول N N-گرم نامیده می شوند.
در طول نمایه سازی، کلمه به N-گرم هایی تقسیم می شود و سپس این کلمه در لیست های هر یک از این N-gram ها قرار می گیرد. در حین جستجو، پرس و جو نیز به N-gram تقسیم می شود و برای هر یک از آنها لیستی از کلمات حاوی چنین زیررشته ای به ترتیب جستجو می شود.

متداول ترین مواردی که در عمل مورد استفاده قرار می گیرند، تریگرام ها هستند - رشته های فرعی با طول 3. انتخاب مقدار بزرگتر N منجر به محدودیت در حداقل طول کلمه می شود، که در آن تشخیص خطا از قبل امکان پذیر است.

ویژگی ها:
الگوریتم N-gram همه کلمات اشتباه املایی ممکن را پیدا نمی کند. اگر مثلاً کلمه VOTKA را بگیریم و آن را به تریگرام تجزیه کنیم: IN تی KA → VO تیدر باره تیبه تی KA - می بینید که همه آنها حاوی خطای T هستند. بنابراین، کلمه "VODKA" یافت نمی شود، زیرا حاوی هیچ یک از این سه گرام ها نیست و در لیست های مربوط به آنها قرار نمی گیرد. بنابراین، هرچه طول یک کلمه کوتاهتر باشد و خطاهای آن بیشتر باشد، احتمال اینکه در لیست های مربوط به N-گرم پرس و جو قرار نگیرد و در نتیجه وجود نداشته باشد بیشتر است.

در همین حال، روش N-gram فضای کاملی را برای استفاده از معیارهای خود با ویژگی‌ها و پیچیدگی دلخواه باقی می‌گذارد، اما شما باید برای این هزینه بپردازید - هنگام استفاده از آن، هنوز باید حدود 15٪ از فرهنگ لغت را به صورت متوالی برشمارید، که کاملاً یک مقدار است. مقدار زیادی برای دیکشنری های بزرگ

بهبودهای احتمالی:
می توان جداول هش N-گرم را بر اساس طول کلمات و موقعیت N-gram در کلمه تقسیم کرد (اصلاح 1). چگونه طول کلمه جستجو شده و پرس و جو نمی تواند بیش از آن متفاوت باشد ک، و موقعیت یک N-گرم در یک کلمه نمی تواند بیش از k متفاوت باشد. بنابراین، لازم است فقط جدول مربوط به موقعیت این N-گرم در کلمه و همچنین k جدول در سمت چپ و k جدول در سمت راست بررسی شود. جمع 2k+1جداول مجاور

شما می توانید با تقسیم جداول بر اساس طول کلمه، و به طور مشابه فقط در جداول همسایه، اندازه مجموعه مورد نیاز برای اسکن را کاهش دهید. 2k+1جداول (اصلاح 2).

این الگوریتم در مقاله L.M. Boytsov توضیح داده شده است. هش کردن امضا این بر اساس یک نمایش نسبتا واضح از "ساختار" یک کلمه به شکل بیت است که به عنوان هش (امضا) در جدول هش استفاده می شود.

در حین نمایه سازی، چنین هش هایی برای هر یک از کلمات محاسبه می شود و مطابقت فهرست کلمات فرهنگ لغت با این هش در جدول وارد می شود. سپس، در طول جستجو، یک هش برای پرس و جو محاسبه می شود و همه هش های مجاور که با هش اصلی بیش از k بیت تفاوت ندارند مرتب می شوند. برای هر یک از این هش ها، لیست کلمات مربوطه جستجو می شود.

فرآیند محاسبه هش - به هر بیت از هش گروهی از کاراکترهای الفبا اختصاص داده می شود. بیت 1 در موقعیت مندر هش به این معنی است که کلمه اصلی حاوی یک کاراکتر از i-thگروه های الفبا ترتیب حروف در کلمه کاملاً بی ربط است.

حذف یک کاراکتر یا مقدار هش را تغییر نمی‌دهد (اگر هنوز کاراکترهایی از همان گروه الفبا در کلمه وجود داشته باشد)، یا بیت مربوط به این گروه به 0 تغییر می‌کند. هنگامی که درج می‌شود، به همین ترتیب، یکی از بیت‌ها تغییر می‌کند. روی 1 تنظیم شود، در غیر این صورت هیچ تغییری وجود نخواهد داشت. هنگام جایگزینی کاراکترها، همه چیز کمی پیچیده تر است - هش می تواند اصلاً بدون تغییر بماند یا در 1 یا 2 موقعیت تغییر کند. هنگام جابجایی، هیچ تغییری به هیچ وجه رخ نمی دهد، زیرا ترتیب کاراکترها در هنگام ساخت هش، همانطور که قبلا ذکر شد، در نظر گرفته نمی شود. بنابراین، برای پوشش کامل k خطا، حداقل باید تغییر دهید 2 هزاربیت در هش.

زمان اجرا، به طور متوسط، با k "ناقص" (درج، حذف و جابجایی، و همچنین بخش کوچکی از جایگزینی) خطاها:

ویژگی ها:
با توجه به این واقعیت که هنگام جایگزینی یک کاراکتر، دو بیت می توانند به طور همزمان تغییر کنند، الگوریتمی که مثلاً اعوجاج بیش از 2 بیت را همزمان اجرا می کند، در واقع به دلیل عدم وجود بخش قابل توجهی (بسته به نسبت اندازه هش به حروف الفبا) از کلمات با دو جایگزین (و هر چه اندازه هش بزرگتر باشد، اغلب جایگزینی کاراکتر منجر به اعوجاج دو بیت در یک زمان می شود و کامل تر می شود. نتیجه خواهد بود). علاوه بر این، این الگوریتم امکان جستجوی پیشوند را ندارد.

درختان BK

درختان بورکهارد-کلردرخت‌های متریک هستند، الگوریتم‌های ساخت چنین درخت‌هایی بر اساس ویژگی متریک برای برآوردن نابرابری مثلث است:

این ویژگی به متریک ها اجازه می دهد تا فضاهای متریک با ابعاد دلخواه را تشکیل دهند. چنین فضاهای متریک لزوماً نیستند اقلیدسی، به عنوان مثال، معیارها لونشتاینو Damerau-Levenshteinفرم غیر اقلیدسیفضا. بر اساس این ویژگی‌ها، می‌توانید یک ساختار داده بسازید که در چنین فضای متریکی که درخت‌های Barkhard-Keller است جستجو کند.

بهبودها:
می‌توانید با تعیین حد بالایی برابر با مجموع حداکثر فاصله تا نوادگان رأس و فاصله حاصله، از توانایی برخی معیارها برای محاسبه فاصله با یک محدودیت استفاده کنید، که این روند را کمی تسریع می‌کند:

آزمایش کردن

آزمایش بر روی یک لپ‌تاپ با Intel Core Duo T2500 (2GHz/667MHz FSB/2MB)، 2Gb RAM، OS - Ubuntu 10.10 Desktop i686، JRE - OpenJDK 6 Update 20 انجام شد.

آزمایش با استفاده از فاصله Damerau-Levenshtein و تعداد خطاها انجام شد k = 2. اندازه فهرست به همراه فرهنگ لغت مشخص شده است (65 مگابایت).

حجم فهرست: 65 مگابایت
زمان جستجو: 320ms / 330ms
کامل بودن نتایج: 100%

N-گرم (اصلی)
حجم فهرست: 170 مگابایت
زمان ایجاد ایندکس: 32 ثانیه
زمان جستجو: 71 میلی‌ثانیه / 110 میلی‌ثانیه
کامل بودن نتایج: 65%
N-گرم (اصلاح 1)
حجم فهرست: 170 مگابایت
زمان ایجاد ایندکس: 32 ثانیه
زمان جستجو: 39ms / 46ms
کامل بودن نتایج: 63%
N-گرم (اصلاح 2)
حجم فهرست: 170 مگابایت
زمان ایجاد ایندکس: 32 ثانیه
زمان جستجو: 37 میلی‌ثانیه / 45 میلی‌ثانیه
کامل بودن نتایج: 62%

حجم فهرست: 85 مگابایت
زمان ایجاد ایندکس: 0.6 ثانیه
زمان جستجو: 55 میلی‌ثانیه
کامل بودن نتایج: 56.5%

درختان BK
حجم فهرست: 150 مگابایت
زمان ایجاد ایندکس: 120 ثانیه
زمان جستجو: 540 میلی‌ثانیه
کامل بودن نتایج: 63%

جمع

اکثر الگوریتم‌های جستجوی فازی نمایه‌شده واقعاً زیرخطی نیستند (یعنی زمان اجرای مجانبی دارند. O (log n)یا کمتر)، و سرعت عملکرد آنها معمولاً مستقیماً به آن بستگی دارد ن. با این وجود، پیشرفت‌ها و پیشرفت‌های متعدد این امکان را فراهم می‌آورد که حتی با حجم بسیار زیادی از دیکشنری‌ها، به زمان کافی کوتاه برسید.

همچنین روش‌های متنوع‌تر و ناکارآمدتری وجود دارد که از جمله، بر اساس انطباق تکنیک‌ها و تکنیک‌های مختلفی که قبلاً در جاهای دیگر به یک حوزه موضوعی خاص استفاده شده‌اند، هستند. از جمله این روش ها تطبیق درختان پیشوند (Trie) با مشکلات جستجوی فازی است که به دلیل کارایی پایین آن را رها کردم. اما الگوریتم هایی نیز بر اساس رویکردهای اصلی وجود دارد، به عنوان مثال، الگوریتم ماس نواک، که اگرچه زمان اجرای مجانبی زیرخطی دارد، اما به دلیل ثابت های عظیم نهفته در پشت چنین تخمین زمانی که خود را به شکل یک اندازه شاخص بزرگ نشان می دهد، بسیار ناکارآمد است.

استفاده عملی از الگوریتم‌های جستجوی فازی در موتورهای جستجوی واقعی، ارتباط نزدیکی با الگوریتم‌های آوایی، الگوریتم‌های ریشه واژگانی دارد - برجسته کردن قسمت پایه اشکال مختلف کلمه یک کلمه (به عنوان مثال، چنین عملکردی توسط Snowball و Yandex mystem ارائه می‌شود) همچنین رتبه بندی بر اساس اطلاعات آماری یا با استفاده از معیارهای پیچیده پیچیده.

  • فاصله Levenshtein (با گزینه برش و پیشوند)؛
  • فاصله Damerau-Levenshtein (با گزینه برش و پیشوند)؛
  • الگوریتم Bitap (Shift-OR / Shift-AND با تغییرات Wu-Manber)؛
  • الگوریتم بسط نمونه;
  • روش N-gram (اصلی و با تغییرات)؛
  • روش هش امضا؛
  • درختان BK.
من می‌خواستم کد را برای فهم آسان و در عین حال به اندازه کافی برای استفاده عملی کارآمد کنم. بیرون کشیدن آخرین آب میوه از JVM بخشی از وظایف من نبود. لذت ببرید.

شایان ذکر است که در روند مطالعه این مبحث، من به برخی از پیشرفت های خودم رسیدم که به من امکان می دهد به دلیل افزایش متوسط ​​​​اندازه شاخص و برخی محدودیت ها، زمان جستجو را به ترتیبی کاهش دهم. آزادی انتخاب معیارها اما این یک داستان کاملا متفاوت است.


تعریف مثال کاربردها ایجاد یک مدل زبان n-گرام محاسبه احتمال n-گرم حذف پراکندگی یک مجموعه آموزشی o هموارسازی افزودنی o تخفیف ویتن-بل o تخفیف تورینگ خوب o کاتز عقب نشینی o درون یابی حذف شده تخمین مدل زبان n گرم با استفاده از آنتروپی محتویات


N-gram (انگلیسی N-gram) دنباله ای از N عنصر از یک دنباله. توالی کلمات را در نظر بگیرید. گربه یونیگرام، سگ، اسب،... گربه کوچک بیگرام، سگ بزرگ، اسب قوی،... تریگرام گربه کوچک می خورد، سگ بزرگ پارس می کند، دویدن اسب قوی،... تعریف


نمونه هایی از وظایف کاربردی تشخیص گفتار. برخی از کلمات با املای متفاوت یکسان تلفظ می شوند. وظیفه این است که کلمه صحیح را در زمینه انتخاب کنید. تولید متون در مورد یک موضوع معین. مثال: Yandex.Abstracts. جستجوی خطاهای معنایی او در تلاش است تا دقیق شود - از نظر نحو، درست است، از نظر معنایی، نه. او در حال تلاش برای کشف کردن است - درست است. تلاش برای پیدا کردن در متون انگلیسی بسیار بیشتر از تلاش برای دقیق کردن اتفاق می افتد، به این معنی که اگر آمار در دسترس باشد، می توانید این نوع خطا را پیدا کنید و از بین ببرید.


ایجاد یک مدل زبان n-gram برای حل مشکلات کاربردی ذکر شده، لازم است یک مدل زبان N-gram ایجاد شود. برای ایجاد یک مدل، شما باید: 1. محاسبه احتمال n گرم در پیکره آموزشی. 2. مشکل پراکندگی بدنه را با یکی از روش های ضد آلیاسینگ برطرف کنید. 3. کیفیت مدل زبانی حاصل از n-gram را با استفاده از آنتروپی ارزیابی کنید.


محاسبه احتمال N-گرم (1) در پیکره آموزشی، n-گرم خاصی با فرکانس های مختلف رخ می دهد. برای هر n-گرم، می‌توانیم شمارش کنیم که چند بار در بدنه رخ می‌دهد. بر اساس داده‌های به‌دست‌آمده، می‌توان یک مدل احتمالی ساخت که سپس می‌توان از آن برای تخمین احتمال n-گرم در برخی از مجموعه‌های آزمایشی استفاده کرد.


محاسبه احتمال N-گرم (2) یک مثال را در نظر بگیرید. بگذارید مجموعه از یک جمله تشکیل شده باشد: آنها کنار استخر پیک نیک زدند، سپس روی چمن دراز کشیدند و به ستاره ها نگاه کردند بیایید n-gram را انتخاب کنیم. Unigrams: They, picknicked, by, … Digrams: They Picknicked, Picknicked by, by the, … Trigrams They pickned by, picknicked by the, by the pool,…


محاسبه احتمال N-گرم (3) اکنون می توان n-گرم را شمارش کرد. همه دو و سه گرام های انتخاب شده یک بار در بدنه رخ می دهند. همه یونیگرام ها به استثنای کلمه the نیز یک بار رخ می دهند. کلمه the سه بار تکرار می شود. اکنون که می دانیم هر n گرم چند بار اتفاق می افتد، می توانیم یک مدل احتمالی از n گرم بسازیم. در مورد تک‌گرم‌ها، احتمال کلمه u را می‌توان با این فرمول محاسبه کرد: به عنوان مثال، برای کلمه احتمال 16/3 خواهد بود (زیرا 16 کلمه در مجموعه وجود دارد که 3 کلمه آن کلمه the است). . تعداد تکرار کلمه u در مجموعه آموزشی آنها در کنار استخر پیک نیک کردند، سپس روی چمن دراز کشیدند و به ستاره ها نگاه کردند.


1، احتمال تا حدودی متفاوت در نظر گرفته می شود. مورد بیگرام ها را در نظر بگیرید: اجازه دهید محاسبه احتمال بیگرام استخر ضروری باشد. اگر هر کلمه بیگرام را به عنوان یک رویداد در نظر بگیریم، آنگاه باور کنیم" title="(!LANG:N-gram probability calculation (4) برای n-gram، که در آن n>1، احتمال تا حدودی متفاوت محاسبه می شود. مورد بیگرام ها را در نظر بگیرید. : لازم است که دیگرام استخر را محاسبه کنیم اگر هر کلمه از نمودار را به عنوان یک رویداد در نظر بگیریم، آنگاه باور کنیم" class="link_thumb"> 9 !}محاسبه احتمال N-گرم (4) برای n-گرم، جایی که n>1، احتمال تا حدودی متفاوت محاسبه می شود. مورد بیگرام ها را در نظر بگیرید: اجازه دهید محاسبه احتمال بیگرام استخر ضروری باشد. اگر هر کلمه بیگرام را به عنوان یک رویداد در نظر بگیریم، احتمال مجموعه ای از رویدادها را می توان با فرمول محاسبه کرد: بنابراین، احتمال بیگرام برابر استخر:، جایی که 1، احتمال تا حدودی متفاوت در نظر گرفته می شود. مورد بیگرام ها را در نظر بگیرید: اجازه دهید محاسبه احتمال بیگرام استخر ضروری باشد. اگر هر کلمه بیگرام را به عنوان یک رویداد در نظر بگیریم، پس با اعتقاد به "> 1، احتمال تا حدودی متفاوت در نظر گرفته می شود. مورد بیگرام ها را در نظر بگیرید: اجازه دهید لازم باشد که احتمال بیگرام استخر را محاسبه کنیم. اگر هر کلمه بزرگ را به عنوان در نظر بگیریم. برخی از رویدادها، سپس احتمال مجموعه ای از رویدادها را می توان با فرمول محاسبه کرد: بنابراین، احتمال بیگرام استخر:، جایی که "> 1، احتمال کمی متفاوت محاسبه می شود. مورد بیگرام ها را در نظر بگیرید: اجازه دهید محاسبه احتمال بیگرام استخر ضروری باشد. اگر هر کلمه بیگرام را به عنوان یک رویداد در نظر بگیریم، آنگاه باور کنیم" title="(!LANG:N-gram probability Calculation (4) برای n-gram، که در آن n>1، احتمال تا حدودی متفاوت محاسبه می شود. مورد بیگرام ها را در نظر بگیرید. : لازم است دیگرام استخر را محاسبه کنیم اگر هر کلمه از نمودار را به عنوان یک رویداد در نظر بگیریم، آنگاه باور کنیم"> title="محاسبه احتمال N-گرم (4) برای n-گرم، جایی که n>1، احتمال تا حدودی متفاوت محاسبه می شود. مورد بیگرام ها را در نظر بگیرید: اجازه دهید محاسبه احتمال بیگرام استخر ضروری باشد. اگر هر کلمه از نمودار را به عنوان یک رویداد در نظر بگیریم، آنگاه باور داریم"> !}


محاسبه احتمال N-گرم (5) حال محاسبه احتمال یک n گرم دلخواه (یا جمله ای به طول n) را در نظر بگیرید. با گسترش حالت بیگرام، فرمول احتمال n-گرم را به دست می آوریم بنابراین، محاسبه احتمال یک جمله به محاسبه احتمال شرطی N-گرم های تشکیل دهنده این جمله کاهش می یابد:




حذف پراکندگی پیکره (1) مشکل یک مدل زبان ساده (غیرصاف) n-gram: برای برخی از n-gram ها، احتمال می توان تا حد زیادی دست کم گرفت (یا حتی صفر)، اگرچه در واقعیت (در پیکره آزمایشی) این موارد n-گرم می تواند اغلب رخ دهد. دلیل: مجموعه آموزشی محدود و ویژگی آن. راه حل: با کاهش احتمال برخی از n-گرم ها، احتمال آن n-gram هایی را که در مجموعه آموزشی رخ نداده اند (یا به ندرت با آنها مواجه می شوند) افزایش دهید.




حذف پراکندگی بدنه (3) مفاهیم زیر در الگوریتم‌های حذف پراکندگی استفاده می‌شوند: انواع - کلمات مختلف (توالی کلمات) در متن. نشانه ها همه کلمات (توالی کلمات) در متن هستند. آنها کنار استخر پیک نیک زدند، سپس روی چمن ها دراز کشیدند و به ستاره ها نگاه کردند - 14 نوع، 16 نشانه





هموارسازی افزودنی (4) این روش یک خطای قوی در محاسبات ایجاد می کند (به عنوان مثال، در اسلاید قبلی نشان داده شد که برای کلمه چینی تعداد بیگرام ها 8 برابر کاهش یافته است). آزمایش‌ها نشان داده‌اند که مدل صاف‌نشده اغلب نتایج دقیق‌تری نشان می‌دهد. بنابراین، روش فقط از نظر نظری جالب است.


تنزیل Witten-Bell (1) بر اساس یک ایده ساده: از داده های مربوط به n-گرم های موجود در مجموعه آموزشی برای تخمین احتمال گم شدن n-گرم استفاده کنید. ایده روش از الگوریتم های فشرده سازی گرفته شده است: دو نوع رویداد در نظر گرفته می شود - آنها با یک کاراکتر جدید (نوع) ملاقات کردند و آنها با یک کاراکتر (توکن) ملاقات کردند. فرمول احتمال برای همه n-گرم های از دست رفته (یعنی احتمال ملاقات با یک n-گرم در مجموعه آزمایشی که در پیکره آموزشی نبود): N تعداد نشانه ها در پیکره آموزشی است، T تعداد انواع است. که قبلاً در مجموعه آموزشی با آنها مواجه شده اند






تخفیف ویتن بل (4) =>=> =>"> =>"> =>" title="(!LANG:Witten-Bell Discounting (4) =>=>"> title="تخفیف ویتن بل (4) =>=>"> !}




تخفیف Good-Turing (1) ایده: برای n-گرم هایی که صفر بار (c بار) اتفاق می افتد، امتیاز متناسب با تعداد n-گرم هایی است که یک بار اتفاق می افتد (c + 1 بار). یک مثال را در نظر بگیرید: فرض کنید 18 ماهی صید شده است. در مجموع 6 گونه مختلف صید شد و تنها یک نماینده در سه گونه صید شد. ما باید این احتمال را پیدا کنیم که ماهی بعدی متعلق به یک گونه جدید باشد. در مجموع 7 گونه احتمالی وجود دارد (6 گونه قبلاً صید شده اند).








بازگشت کاتز (2) ضریب α برای توزیع صحیح احتمال باقیمانده N-گرم مطابق با توزیع احتمال (N-1) -گرم ضروری است. اگر α را وارد نکنید، تخمین اشتباه خواهد بود، زیرا برابری برآورده نخواهد شد: محاسبه α در پایان گزارش داده شده است. ارزیابی یک مدل زبان با استفاده از آنتروپی (1) آنتروپی معیار عدم قطعیت است. با کمک آنتروپی، می توان مناسب ترین مدل زبان N-gram را برای یک کار کاربردی معین تعیین کرد. فرمول آنتروپی باینری: مثال: آنتروپی تست پرتاب سکه را محاسبه کنید. پاسخ: 1 بیت، مشروط بر اینکه نتایج آزمایش به یک اندازه محتمل باشد (هر یک از طرفین با احتمال 1/2 سقوط می کند).




ارزیابی مدل زبان با استفاده از آنتروپی (3) آنتروپی متقاطع برای مقایسه مدل‌های زبانی مختلف استفاده می‌شود: هر چه مقدار آنتروپی متقاطع H(p,m) به آنتروپی واقعی H(p) نزدیک‌تر باشد، مدل زبان بهتر است: در مورد ما، H(p) آنتروپی بدنه آزمون است. m(w) – مدل زبان (مثلاً مدل N-gram)


ارزیابی یک مدل زبان با استفاده از آنتروپی (4) روش دیگری برای ارزیابی کیفیت یک مدل زبان وجود دارد که به اصطلاح بر اساس آن است. نشانگر اتصال (سرگشتگی). ایده: احتمال کل مجموعه آزمون را محاسبه کنید. مدل بهتر احتمال بیشتری را نشان می دهد. فرمول گیجی: بنابراین، هر چه گیجی کوچکتر باشد، مدل بهتر است. گیجی را می‌توان به‌عنوان میانگین تعداد کلماتی که می‌توانند بعد از یک کلمه خاص بیایند تفسیر کرد (یعنی هر چه گیجی بیشتر باشد، ابهام بیشتر است و بنابراین، مدل زبان بدتر است). رابطه بین گیجی و آنتروپی باینری:


تخمین یک مدل زبان با استفاده از آنتروپی (5) به عنوان مثال، مقادیر گیجی را برای برخی پیکره‌ها در نظر بگیرید که با استفاده از مدل‌های آموزش‌دیده یونیگرام‌ها، بیگرام‌ها و سه‌گرام‌ها به دست آمده‌اند: در مورد سه‌گرام‌ها، گیجی کوچک‌ترین است، زیرا ابهام‌زدایی با طولانی‌ترین طول تاریخ همه مدل‌ها (برابر 2) هنگام محاسبه احتمالات شرطی سه‌گرام‌ها تسهیل می‌شود. UnigramBigramTrigram Perplexity


من می خواهم چند برنامه n-gram (ترجیحاً در PHP) پیاده سازی کنم.

چه نوع n-gram برای بیشتر اهداف مناسب تر است؟ سطح کلمه یا سطح کاراکتر سطح n-گرم؟ چگونه می توان توکنایزر n-grammatical را در PHP پیاده سازی کرد؟

ابتدا می خواهم بدانم N-gram چیست. درست است؟ من n-gram را اینگونه می فهمم:

پیشنهاد: "من در نیویورک زندگی می کنم."

بیرام های سطح کلمه (2 برای n): "# I"، "I live"، "live in"، "in New York"، "NY #"

بیرام های سطح کاراکتر (2 برای n): "#I"، "I #"، "#l"، "li"، "iv"، "ve"، "e #"، "#i"، "in"، "n#"، "#N"، "NY"، "Y#"

هنگامی که این آرایه از قطعات n-gram را دارید، موارد تکراری را اضافه می کنید و برای هر قسمت یک شمارنده اضافه می کنید که فرکانس را مشخص می کند:

بیگرام های سطح کلمه:

بیگرام های سطح کاراکتر:

درسته؟

همچنین، می‌خواهم در مورد کارهایی که می‌توانید با n-grams انجام دهید بیشتر بدانم:

  • چگونه می توانم زبان یک متن را با استفاده از n-gram تشخیص دهم؟
  • آیا امکان ترجمه ماشینی با استفاده از n-gram وجود دارد، حتی اگر مجموعه دو زبانه نداشته باشید؟
  • چگونه یک فیلتر اسپم (اسپم، ژامبون) ایجاد کنیم؟ n-گرم را با فیلتر بیزی ترکیب کنید؟
  • چگونه می توانم موضوعی را پیدا کنم؟ به عنوان مثال: آیا متنی در مورد بسکتبال یا سگ وجود دارد؟ رویکرد من (با مقاله ویکی‌پدیا برای «سگ» و «بسکتبال» موارد زیر را انجام دهید): بردارهای n-gram را برای هر دو سند رسم کنید، آنها را عادی کنید، فاصله منهتن/اقلیدس را محاسبه کنید، هر چه نتیجه به 1 نزدیک‌تر باشد، بالاتر است. شباهت خواهد بود

در مورد درخواست من، به خصوص آخرین مورد، چه احساسی دارید؟

امیدوارم که شما بتوانید به من کمک کنید. پیشاپیش متشکرم

2 پاسخ

Word n-gram عموماً برای اکثر برنامه‌های تحلیل متنی که ذکر کردید مفیدتر خواهد بود، به استثنای تعریف زبان، جایی که چیزی مانند سه خط کاراکتر ممکن است نتایج بهتری به همراه داشته باشد. به طور موثر، شما می توانید بردار n-gram را برای متن در هر زبانی که به آن علاقه دارید ایجاد کنید و سپس فرکانس های سه گرامی را در هر مجموعه با آن هایی که در سندی که طبقه بندی می کنید مقایسه کنید. برای مثال، تریگرام the به احتمال زیاد در انگلیسی بسیار بیشتر از آلمانی ظاهر می شود و سطحی از همبستگی آماری را ارائه می دهد. هنگامی که اسناد n-gram را دارید، می توانید الگوریتم های زیادی را برای تجزیه و تحلیل بیشتر انتخاب کنید، فیلترهای Baysian، N نزدیکترین همسایه، ماشین های بردار پشتیبانی و غیره.

از بین برنامه‌هایی که نام بردید، ترجمه ماشینی احتمالاً دور از ذهن‌ترین برنامه است، زیرا n-gram به تنهایی نمی‌تواند شما را از این مسیر دور کند. تبدیل یک فایل ورودی به نمایش n-gram تنها راهی برای قرار دادن داده ها در قالبی برای تجزیه بیشتر ویژگی ها است، اما از آنجایی که اطلاعات متنی زیادی را از دست می دهید ممکن است برای ترجمه مفید نباشد.

نکته ای که باید به آن توجه داشت این است که در صورت عدم تطابق ابعاد، ایجاد بردار برای یک سند و بردار برای سند دیگر کافی نیست. یعنی اولین ورودی در بردار نمی تواند در یک سند باشد و در سند دیگری باشد یا الگوریتم ها کار نمی کنند. در نهایت با بردارهایی مانند، مواجه خواهید شد، زیرا اکثر اسناد حاوی بیش از n-gram مورد نظر شما نیستند. این "لاینینگ" همچنین مستلزم آن است که از قبل تعیین کنید که کدام ngram ها را در تجزیه و تحلیل خود قرار دهید. اغلب این به عنوان یک الگوریتم دو گذری اجرا می شود تا ابتدا اهمیت آماری n-gram های مختلف را تعیین کند تا تصمیم بگیرد چه چیزی را حفظ کند. Google "انتخاب ویژگی" برای اطلاعات بیشتر.

n-grams مبتنی بر کلمه به علاوه پشتیبانی از ماشین‌های برداری روشی عالی برای تعریف یک موضوع است، اما برای تهیه یک طبقه‌بندی‌کننده به مجموعه بزرگی از متن نیاز دارید که از قبل در موضوعات «در موضوع» و «خارج از موضوع» طبقه‌بندی شده باشد. در سایتی مانند citeseerx، تعداد زیادی مقاله تحقیقاتی را خواهید یافت که رویکردهای مختلف برای این مشکل را توضیح می دهند. من رویکرد فاصله اقلیدسی را برای این مشکل توصیه نمی‌کنم، زیرا n-گرم‌های فردی را بر اساس اهمیت آماری وزن نمی‌کند، بنابراین دو سندی که شامل، a، is و of هستند، تطابق بهتری نسبت به دو سند در نظر گرفته می‌شوند. که شامل بیزیان می شد. حذف کلمات توقف از n-گرم مورد علاقه شما کمی این موضوع را بهبود می بخشد.

در مورد تعریف n-gram حق با شماست.

می توانید از n-gram سطح کلمه برای برنامه های کاربردی نوع جستجو استفاده کنید. n-gram سطح کاراکتر را می توان بیشتر برای تجزیه خود متن استفاده کرد. به عنوان مثال، برای شناسایی زبان یک متن، من از فرکانس های حروف در برابر فرکانس های زبان تعیین شده استفاده می کنم. یعنی متن باید تقریباً با فراوانی وقوع حروف در این زبان مطابقت داشته باشد.

توکنایزر n-grammatical برای کلمات در PHP را می توان با استفاده از sttok انجام داد:

برای کاراکترها از split استفاده کنید:

سپس می توانید آرایه را هر طور که دوست دارید به هر تعداد n گرم تقسیم کنید.

فیلترهای بیزی برای استفاده به عنوان فیلترهای هرزنامه که می توانند همراه با n-gram استفاده شوند باید آموزش ببینند. با این حال، باید به او اطلاعات زیادی بدهید تا یاد بگیرد.

آخرین رویکرد شما به نظر می رسد مناسب است زیرا زمینه صفحه را می آموزد... با این حال هنوز انجام آن بسیار دشوار است، اما n-gram ها نقطه شروع خوبی برای این به نظر می رسند.