PDA

View Full Version : راهنمایی در مورد یک برنامه مدیریت محتوا فایل متنی



samiblog
سه شنبه 08 اسفند 1391, 15:52 عصر
قضیه از این قراره که یکی از اساتید محترم بنده یک پروژه با عنوان مدیریت محتوای فایل متنی به بنده دادن که تا 92/3/15 باید تحویل بدم . اما توضیح پروژه اینکه این برنامه من باید یک سری فایل متنی راکه در یک پوشه هستش (مثلا 100 متنی) این فایل ها رو بخونه و بعد تشخیص بده که هریک از این فایل های متنی در چه زمینه ای و موضوعی هستند . مثلا تشخیص بده که از 100 فایل چندتا در زمینه کامپیوتر و یا الکترونیک یا ریاضی و غیره و بعدش اینها رو جدا و هر دسته رو بر اساس موضوع دریک پوشه جداگونه کپی کنه (فایل های متنی کامپیوتر در پوشه ای به اسم کامپیوتر )
حالا خواسته من از دوستان اینه که به من کمک یا راهنمایی کنن که این پروه رو انجام بدم البته خودم چندتا راه حل دارم و با استادش هم در میان گذاشتم ولی می خوام شماها هم راهنماییم کنید چندتا مغز بهتر از یکی هست. زبان مورد نظر برا کد نویسی #C است.مرسی.

veniz2008
سه شنبه 08 اسفند 1391, 18:09 عصر
سلام.
راه حل های خودت چیه؟.
اونا رو بگو تا دوستان بگن درسته یا غلطه و همچنین ایده های جدید رو بهتون بگن.

samiblog
سه شنبه 08 اسفند 1391, 18:25 عصر
یکی از را ه حل های ساده این بوده که ما یه دیتابیس تعریف کنیم مثلا در زمینه کامپیوتر برای فتوشاپ یک جدولی تعریف بشه و تعدادی کلمه کلیدی(مثلا 100 تا) در مورد فتوشاپ توش ذخیره کنیم و بعد نرم افزار با مقایسه فایل های متنی با جدل تشخیص بده که این در رابطه با فتوشاپ هستش که می تونیم میزان دقت هم براش تعریف کنیم یعنی اگر دقت رو 10 باشه با 10کلمه جدول مقاسیه کنه یا 100 با همین تعداد. این تا حدودی جواب می ده ولی در بعضی جاها ناکارامده مثلا فرومول های ریاضی مثل انتیگرال در فیزیک هم استفاده می شه و این کارو سخت می کنه . من این راه حل رو به استاد هم گفتم اونم گفت بله باید یه چنین کاری بکنی یه چیزی شبیه پایگاه دانش براش تعریف کنی که قابل کسترش باشه بعد یه بحث ریاضی به اسم vector space (فضای برداری) رو مطرح کرد و گفت این بحث هم کمک بگیر ولی من نتونستم رابطه اینا رو پیدا کنم. برا همین از دوستان این سایت هم کمک خواستم .

veniz2008
سه شنبه 08 اسفند 1391, 18:56 عصر
اگر 100 رشته داشته باشی که بطور میانگین هر رشته هم 100 کلمه کلیدی داشته باشه تقریبا 10000 کلمه باید ذخیره بشه که برای sql چیزی محسوب نمیشه. فقط میمونه نحوه پیاده سازی این کار.
یه روش میتونه این باشه:
شما فایل متنی رو باز میکنید و تمام کلمات متن رو میخونی و داخل یک آرایه رشته ای ذخیره میکنی. حالا داخل یه حلقه for که به تعداد کلمات هست، عمل جستجو رو انجام میدی که آیا کلمه ذخیره شده در آرایه با کلمه ذخیره شده در دیتابیس یکسان (یا شبیه LIKE ) هست یا نه. این احتمال خیلی زیاده که متن شما مثلا 20000 کلمه داشته باشه، سوال اینجاست که باید حلقه for ما 20 هزار بار تکرار بشه؟. قطعا نه. پس یه متغیر نیاز دارید که اگر هر کلمه داخل آرایه با دیتابیس یکسان (یا شبیه) بود یکی به اون متغیر اضافه کنی و واسه خودت یه ملاک بذاری که مثلا اگر مقدار متغیر به 20 رسید دیگه ادامه نده و از حلقه خارج بشید.
یه چیزی رو که باید مد نظر داشته باشید و خودتون هم اشاره کردید کلمات مشترک بین تمام رشته ها هست. به نظر چنین کلماتی رو در جدول ذخیره نکنید. بنابراین موقع جستجو هم چنین کلمه ای پیدا نمیشه و به مقدار متغیر هم اضافه نمیشه.
طراحی جدول هم میتونه اینطوری باشه:
جدول رشته ها:
1. کد رشته (int و کلید )
2. نام رشته (nvarchar )
جدول زیر رشته ها:
1. کد رشته
2. کد زیر رشته(کلید)
3. نام زیر رشته (nvarchar)
فکر کنم لینک زیر هم میتونه در کار با متن ها بهتون کمک کنه.
http://barnamenevis.org/showthread.php?370224-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D9%81%D8%A7%DB%8C%D9%84-text-%D8%A8%D9%87-SQL-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-%DA%A9%D8%AF&p=1634876#post1634876
موفق باشید.

samiblog
سه شنبه 08 اسفند 1391, 20:55 عصر
مرسی دوست عزیز از راهنمایی هاتون استفاده می کنم اگه بازم مشکلی بود مطرح می کنم.