![]() |
سیستم autosuggest گوگل دقیقا چطور کار میکنه؟
دوستان این سرویس گوگل که وقتی چند حرف را مینویسید کلمه به شما پیشنهاد میکنه و حتی کلمات بعدی رو هم به شما پیشنهاد میده دقیقا به چه صورتی کار میکنه؟
خوب این بدیهیه که از فاکتور های زیادی استفاده میکنه مثل موقعیت شما، زمان، رخداد های اخیر، جستجوی های رایج شما و دیگران، ارتباط کلمات و ... منظورم اینه که دقیقا از چه تکنیکی استفاده میکنه؟ از کدوم سیستم های هوش مصنوعی استفاده میکنه؟ (یا شاید فقط یه سیستم امتیاز دهی به کلمات هست؟) و در کل اگه بخواهیم یک سیستم مشابه طراحی کنیم، به چه صورتی باید انجام بشه؟ متشکرم |
نقل قول:
|
نقل قول:
ولی منظورم توضیح دقیق بود، یعنی اگه بخوام یک سیستم مشابه طراحی کنیم، دقیقا به جه صورت باید عمل کنیم؟ در ضمن فکر نمیکنم تنها Data Mining باشه! چون باید یک سیستم یادگیری، یا Indexing داشته باشه که با توجه به فاکتور های زیادی پیشنهاد هاش رو ارایه بده. |
نقل قول:
نه همون دیتا ماینینگ هم اضافی است! شما می توانید کاری مشابه گوگل را با ایندکس کردن دیکشنری اجرا کنید، مرسوم اینه که پس از 3 کاراکتر لیست پرمصرفی از کلماتی که با آن سه حرف شروع شده را برایتان نمایش دهد که معمولا بصورت وزنی است یعنی کلمات بیشتر استفاده شده بالاتر. بحث یادگیری چیزی دیگر است، از متن شما چیزی استنتاج نکردم که قراره مباحث مرتبط با یادگیری هم داشته باشید. همان دیتا ماینینگ هم برای اینکه بخش وزن دهی را آپدیت کند و اصطلاحا بروز شود والا همش کدنویسی معمولی (ایندکس کردن دیکشنری) است. با یادگیری میشه کارهای جالبتری انجام داد، مثلا نمونه های زیادی از یک یا چند آیتم خاص از بیماران را به سیستم دهیم و نمونه هایی از همان آیتم (ها) مربوط به آدم سالم؛ سپس بخواهیم سیستم در مورد یک آیتم جدید که نمی دانیم مربوط به بیمار است یا غیربیمار نظر دهد که فرد چه وضعیتی دارد. این رویه کلی یادگیری است ولی بسیار گسترده تر. موضوع یادگیری در فضاهای پیچیده (جاییکه عامل های موثر زیاد هستند) میتونه خیلی موفقیت آمیز نقش خودش رو نشون بده. موفق باشید |
نقل قول:
خوب اجازه بدید دقیق تر سوال کنم: اگه فقط قرار بود یک سیستم autocorrection ساده داشته باشیم، فقط با ایندکس کردن کلمات پر مصرف به نتیجه می رسیدیم. ولی فرض کنیم که این کلمه پیشنهادی، یا autocorrect باید بر اساس مثلا بیست فاکتورها مختلف داده بشه. مثلا موقعیت شخص، دیوایسی که استفاده میکنه، ساعت شبانه روز، اینکه مرد هست یا زن، چند سالشه، و از همه مهمتر، قبلا به چه سایتهایی سر زده و ... . حال وقتی شخص در نهایت کلمه خودش رو مینویسه، سیستم بهش تعدادی کلمه، یا جمله یا ... پیشنهاد میکنه. وقتی کاربر روی یکی از این کلمه ها کلیک میکنه، سیستم یاد میگیره که با توجه به تمام اون ۲۰ فاکتور مختلف، این کلمه احتمال بالاتری داره که به این کاربر خاص بخوره. بنابر این سیستم باید یاد بگیره! به نوعی سیستم باید به تمام اون فاکتور ها وزن بده. و این وزن دهی به مرور باید تغییر کنه. فکر میکنم این دقیقا کاریه که گوگل میکنه و تا اونجا که از اطلاعات ارزشمند این سایت یادگرفتم، فکر میکنم باید ترکیبی از data mining و شبکه عصبی، یا یادگیری بیزی باشه. ممنون میشم اگر بتونید این رو بیشتر توضیح بدید. |
گوگل گردن کلفت تر از این حرف ها هستش.
خیلی تعداد پارامتر ها بیشتر از این حرفها هستش شاید 10 هزار پارامتر رو دخیل بدونن. مثال Search History که فرمودید یکی از نمونه هاشه و به نظر من هم این آقای گوگل برای این کار حتما ما به ازای هر کاربر مجموعه ای از کلمات سابقاً جستجو شده رو نگه می داره و اونها رو با اون بخش ناتمام متن وارد شده به یک شبکه عصبی بزرگ میده و بعد بر مبنای یک سیستم نگه داری داده بزرگ دوباره با توجه به رفتار کاربر تغییراتی رو به بخشی از سیستم خواهد داد. حداقل اونچه شما انتخاب کردید (از تو لیستی که بهتون ارائه کرده) رو برای شما ثبت می کنه و در دفعات مراجعه بعدی اون ها رو دخیل می دونه و تا اونجا که به فکرم می رسه اونها از یک سیستم برچسب زنی برای هر حساب کاربری و هر کلمه باید استفاده کرده باشند به نحوی که باید جداولی وجود داشته باشند که کاربران رو به واسطه اون و بر مبنای جستجوی خودشون در شاخه های مختلف نوع استفاده گروه بندی یا خوشه بندی می کنند و به هر کاربر چند نوع برچسب رو می زنند(اختصاص می دن). به هر حال سیستم پیچیده ای هست. اون سیستم معنا و املا صحیح خیلی از کلمات رو می دونه و حتی گاهی در زمان جستجو وقتی یک کلمه رو فارسی تایپ می کنید هم معنی لاتین اون رو تو نتایج جستجو به شکل Bold نشون میده! انگار برای هر زبان یک سیستم ترجمه و جستجو طراحی کردند حالا این یک شبکه عصبی خیلی بزرگ هست یا چندین شبکه و الگوریتم مجزا که با هم اجرا می شن؟ قابل حدس هستش که هیچ کدوم نمی دونیم! درست مثل مغز که ما نمی دونیم چه طور این همه کار رو انجام می ده (در قالب یک شبکه عصبی بزرگ). به هرحال برای نظر دادن در مورد سیستم کار گوگل (شرکتی با چند ده هزار کارمند) می طلبه که باید بشینیم و در عمل با مشکلات اجرایی جستجوگر درگیر بشیم یا لااقل از دوستانی که قبلاً تجربش رو داشتن کمک بگیریم. |
به نام خدا
چند نکته زیر رو توجه کنید 1- گوگل یک مجموعه تجاری است پس دلیلی ندارد جزئیات الگوریتم هایش را که با میلیون ها دلار هزینه و سالها زحمت کسب شده است علنی کند. 2- چنانکه دوستمان اشاره کردند، مسلما پارامترهای زیادی در عملکرد این قول بی شاخ و دم وجود دارد! 3- سیستم های موفق تا جاییکه ضرورت نداشته باشند از پیچیدگی اجتناب می کنند زیرا هر پیچیدگی جزئی، زمان و هزینه های پردازش را در یک سیستم بزرگ بشدت افزایش می دهد. (به رهنمودهای Google SEO نگاه کنید) با این مقدمه باید خدمتتان عرض کنم اگر چه گوگل و عملکرد آن می تواند الگو یا انگیزه خوبی باشد ولی بدلایل فوق باید از گوگلیاریسم پرهیز کرد، شما ببینید چه می خواهید و سپس برای آن از ابزار مناسب استفاده کنید. مجدد تاکید می کنم اگر قرار بر این بود که یک سیستم اتوکارکشن داشته باشیم ایندکس کردن دیکشنری کفایت می کند اما اگر قرار است سیستم را در یک حوزه تخصصی مجرب کنیم آنوقت داستان های زیاد دیگری هم می توانند پارالل شوند، چنانکه اشاره شد شبکه عصبی یک ابزار برای این کار است منتهی مجدد به دلیل اهمیت بهره وری یادآور میشم اگر ابزار مناسب استفاده نشود سیستم بی خود پیچیده خواهد شد. اگر مثال شما صرفا یک مثال است که هیچ اگر نه باید بگم برای یک سیستم اتوکارکشن ما نیازی به مثلا موقعیت فرد نداریم! (فعلا موجه نیست) حتی اگر فرض کنیم یک اتوکارکشن تخصصی است بازهم به کمک یک دیکشنری تخصصی قابل اجراست لذا بنظر می رسد امکان پرهیز از هزینه های اجرایی و پردازش بی مورد وجود دارد. منتهی اگر دلایل موجهی وجود دارد که سیستم نیازمند یادگیری است بله چنانکه فرمودید یک سیستم یادگیری نه چندان سخت می تونه با الگوریتم های ساده ای مثل وزن دهی اقلیدسی بر روی بردار داده ها بازخورد سیستم را به طرز شگفت انگیزی بهبود دهد. البته من احساس می کنم شما این سیستم را برای کاربرد خاصی مدنظر قرار دادید لذا برای اینکه بحث دقیق تر دنبال شود بهتر است از همان عنوان Autosuggestion بجای Autocorrection استفاده شود چون فکر می کنم شما احتمالا دنبال چنین چیزی هستید. موفق یاشید |
نقل قول:
دقیقا منظورم Autosuggestion هست (وگرنه autocorrection الزاما چیز خیلی پیچیده ای نیست). حال اینکه کلمات بعدی که پیشنهاد میده چی باشه، میتونه به خیلی پارامترها ربط داشته باشه. حالا در مورد اینکه هر کدوم از این پارامترها چه ضریبی داشته باشند، اصل سوال من هست، و اینکه چطور این پارامتر ها پیشبینی میشه؟ قاعدتا باید یک ضریب اولیه داده بشه، و بعد با یک سیستم یادگیری، اون ضریب ها رو اصلاح کنیم. ولی هنوز مطمئن نیستم که راهش این باشه. از طرفی اگر راهش این باشه، از چه سیستمی میشه استفاده کرد؟ آیا میشه یه شبکه عصبی برای ده ها فاکتور که هر کدوم هزاران ایتم دارند طراحی کرد؟ یا باید از سیستم های یادگیری بیزی استفاده کرد؟ یا چیز دیگه ای ؟ متشکرم |
تعیین پارامتر های موثر و وزن دهی اونها خیلی مهم هست و بروز رسانی اوزان هم ایضاً. و برای این کار روش های بسیار زیادی وجود داره که دو نمونه خودتون فرمودید.
اما اینکه روش مناسب برای تعیین پارامترها، وزن دهی اولیه و روش و زمان بروز رسانی وزن ها و خود سیستم ارائه پیشنهاد و حتی سیستم سنجش رفتار کاربر در اضای پیشنهاد چی هستش، سوال ساده ای نیست. پاسخ به اون به شدت به طراحی سیستم و طرح های طراح برای توسعه احتمالی در آینده بر می گرده. بزارید یک مسال بزنم یک database که در اون متن مقالات، کلید واژه و عنوان و... ثبت شده و برای طراحی قسمت جستجو نیاز به سیستم پیشنهاد داریم. اگر سیستم پیشنهاد "عبارت ناتمام وارد شده برای جستجو" رو در عنوان یا کلید واژه (با فرض وزن بیشتر نسبت به متن) جستجو کنه حتماً نتایج پیشنهاد بهتر از جستجو در خود متن نیست (شایدم باشه). وزن دهی در این شرایط مشکل می شه. باید به محتوا و نوع مقالاتمون هم نگاه بکنیم. شاید شاخص های بهتری رو تونستیم پیدا کنیم. شاید بهترین منبع برای انتخاب شاخص ها کاربرهای نهایی سیستم باشند. کاربر تا یک مقاله رو مطالعه نکنه در مورد این که آیا برای او مفید بوده یا نه نمی تونه نظر بده. برای سیستم پیشنهاد هم عیناً به همین صورت، یعنی با توجه به این که نتایج سیستم پیشنهاد رو کاربر می تونه بخونه و همون لحظه عمل کنه اگر کاربر یکی از نتایج سیستم پیشنهاد رو انتخاب کنه یا چیزی که جستجو کرده جز نتایج سیستم پیشنهاد باشه اون عبارت یا نتیجه توجه کاربر رو جلب کرده و یک نتیجه جستجو حاصل شده. (ممکنه یک امتیاز مثبت برای اون پیشنهاد در نظر بگیریم) در این مرحله اگر نتایج جستجو از نظر کاربر مهم باشند از بین اونها یکی از مقالات رو انتخاب می کنه.!! وگرنه امتیاز اون پیشنهاد منفی هستش!! و اگر کاربر یا کاربران اصلاً بر مبنای نتایج سیستم پیشنهاد جستجو نمی کرد یا نمی کردند امتیاز اون منفی تر بود. اینجا مهم میشه که چند بار سیستم نتایج خودش رو در طول تایپ کلید جستجو عوض کرده. خب با این روش که نیاز به ثبت رفتار کاربر و بعد داده کاوی روی اون ها رو داریم و نهایتاً ما می تونیم بفهمیم وزن متن مقالات و کلید واژه ها و عنوان و... چقدر باید باشند. نکته قابل توجه هم نسبت جستجو های خود نوشته کاربران به جستجو های حاصل از سیستم پیشنهاد هست که می شود تحت عنوان معیار موفقیت سیستم پیشنهاد در مورد اون نظر داد. |
زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۹:۲۳ قبل از ظهر ميباشد. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.