Wake: Context-Sensitive Automatic Keyword Extraction Using Word2vec
با رشد روز افزون اسناد و متون الکترونیکی به زبان فارسی، به کارگیری روشهایی سریع و ارزان برای دسترسی بـه متـون مورد نظر از میان مجموعه وسیع این مستندات، اهمیت بیشتری مییابد. برای رسیدن به این هدف، استخراج کلمات کلیدی که بیانگر مضمون اصلی متن باشند، روشی بسیار مؤثر است. تعداد تکرار یک کلمه در متن نمیتواند نشاندهنده اهمیت یک کلمه و کلیدی بودن آن باشد. همچنین در اکثر روشهای استخراج کلمات کلیدی مفهوم و معنای متن نادیده گرفته میشوند. از طرفی دیگر بدون ساختار بودن متون جدید در اخبار و اسناد الکترونیکی، استخراج این کلمات را مشکل میسازد. در این مقاله روشی بدون نظارت و خودکار برای استخراج این کلمات در زبان فارسی که دارای ساختار مناسبی نمیباشد، پیشنهاد شده است که نه تنها احتمال رخ دادن کلمه در متن و تعداد تکرار آن را در نظر میگیرد، بلکه با آموزش مدل word2vec روی متن، مفهوم و معنای متن را نیز درک میکند. در روش پیشنهادی که روشی ترکیبی از دو مدل آماری و یادگیری ماشین میباشد، پس از آموزش word2vec روی متن، کلماتی که با سایر کلمات دارای فاصله کمی بوده استخراج شده و سپس با استفاده از همرخدادی و فرکانس رابطهای آماری برای محاسبه امتیاز پیشنهاد شده است. درنهایت با استفاده از حدآستانه کلمات با امتیاز بالاتر بهعنوان کلمه کلیدی در نظر گرفته میشوند. ارزیابیها بیانگر کارایی روش با معیار F برابر 53.92% و با 11% افزایش نسبت به دیگر روشهای استخراج کلمات کلیدی میباشد.
This project requires a data set as the context and target text (which is short text: between 500 and 1000 tokens).
In the code the name of the Context text is cntText and the name of target text is shortTxt. The main part of the program consists of two lines of code:
wake = Wake.wake(cntTxt , use_PreTrain_Model, word2vec_param, model_add) key = wake.keyword_EXT(shortTxt,numKey)
word2vec_param is a tuple contains parameters for traning Word2vec: (window_size, min_count) use_PreTrain_Model is a binary variable that indicates whether the pre-trained model is being used: if use_PreTrain_Model=1 -> using pretrain Model model_add is the address of pretrain model that can be empty
In this project, text keywords are automatically extracted based on its context. For example for the following input text:
The 10 keywords extracted by the model are:
('ایران', 4.05292034373375)
('عربستان', 4.193905604785485)
('کشور', 4.7680901504699245)
('آمریکا', 4.941453550088568)
('منطقه', 4.949306749139798)
('ایالات', 5.365563238340798)
('متحده', 5.444792335101005)
('توافق', 5.479569006927752)
('خارجه', 5.616200457615028)
('ترامپ', 5.829934633246103)
In this model, lower score means higher priority.