From 273e714cad52b4cb1966b43b48f42ed428f3ca79 Mon Sep 17 00:00:00 2001 From: Amir Pourmand Date: Thu, 16 Feb 2023 07:24:53 +0330 Subject: [PATCH 1/3] add generator for dictioanry --- chapters/literature.tex | 22 ++++--- front/dictionary.tex | 134 ++++++++++------------------------------ generate_dictionary.py | 55 +++++++++++++++++ styles/common.tex | 2 +- 4 files changed, 100 insertions(+), 113 deletions(-) create mode 100644 generate_dictionary.py diff --git a/chapters/literature.tex b/chapters/literature.tex index 2ff9925..2db3280 100644 --- a/chapters/literature.tex +++ b/chapters/literature.tex @@ -8,12 +8,14 @@ \قسمت{مسائل خوشه‌بندی} -مسئله‌ی \مهم{خوشه‌بندی}\پاورقی{Clustering} یکی از مهم‌ترین مسائل در زمینه‌ی داده‌کاوی به حساب می‌آید. +مسئله‌ی +\پاورق{خوشه‌بندی}{Clustering} یکی از مهم‌ترین مسائل در زمینه‌ی داده‌کاوی به حساب می‌آید. در این مسئله، هدف دسته‌بندی تعدادی شیء به‌گونه‌ای است که اشیاء درون یک دسته (خوشه)، نسبت به یکدیگر در برابر دسته‌های دیگر شبیه‌تر باشند (معیارهای متفاوتی برای تشابه تعریف می‌گردد). -این مسئله در حوزه‌های مختلفی از علوم کامپیوتر از جمله داده‌کاوی، جست‌وجوی الگو\پاورقی{Pattern recognition}، پردازش تصویر\پاورقی{Image analysis}، بازیابی اطلاعات\پاورقی{Information retrieval} و رایانش زیستی\پاورقی{Bioinformatics} مورد استفاده قرار می‌گیرد~\مرجع{han2006}. +این مسئله در حوزه‌های مختلفی از علوم کامپیوتر از جمله داده‌کاوی، \پاورق{جست‌وجوی الگو}{Pattern recognition}، \پاورق{پردازش تصویر}{Image analysis}، \پاورق{بازیابی اطلاعات}{Information retrieval} و \پاورق{رایانش زیستی}{Bioinformatics} + مورد استفاده قرار می‌گیرد~\مرجع{han2006}. تا کنون راه‌حل‌های زیادی برای این مسئله ارائه شده است که از لحاظ معیار تشخیص خوشه‌ها و نحوه‌ی انتخاب یک خوشه، با یک‌دیگر تفاوت بسیاری دارند. -به همین خاطر مسئله‌ی خوشه‌بندی یک مسئله‌ی بهینه‌سازی چندهدفه\پاورقی{Multi-objective} محسوب می‌شود. +به همین خاطر مسئله‌ی خوشه‌بندی یک مسئله‌ی بهینه‌سازی \پاورق{چندهدفه}{Multi-objective} محسوب می‌شود. همان طور که در مرجع \مرجع{estivill2002so} ذکر شده است، خوشه در خوشه‌بندی تعریف واحدی ندارد و یکی از دلایل وجود الگوریتم‌های متفاوت، همین تفاوت تعریف‌ها از خوشه است. @@ -28,7 +30,7 @@ \فقره \مهم{مدل‌های مبتی بر توزیع نقاط}: در این مدل، دسته‌ها با فرض پیروی از یک توزیع احتمالی مشخص می‌شوند. -از جمله الگوریتم‌های معروف ارائه شده در این مدل، الگوریتم بیشینه‌سازی امید ریاضی\پاورقی{Expectation-maximization} است. +از جمله الگوریتم‌های معروف ارائه شده در این مدل، الگوریتم بیشینه‌سازی \پاورق{امید ریاضی}{Expectation-maximization} است. \فقره \مهم{مدل‌های مبتنی بر تراکم نقاط}: در این مدل، خوشه‌ها متناسب با ناحیه‌های متراکم نقاط در مجموعه داده مورد استفاده قرار می‌گیرد. @@ -169,20 +171,22 @@ \پایان{equation} \پایان{مسئله} -از آنجایی که گونه‌ی جویبار داده و داده پرت مسئله‌ی $k$-مرکز به علت به‌روز بودن مبحث داده‌های حجیم\پاورقی{Big data}، به تازگی مورد توجه قرار گرفته است. +از آنجایی که گونه‌ی جویبار داده و داده پرت مسئله‌ی $k$-مرکز به علت به‌روز بودن مبحث \پاورق{داده‌های حجیم}{Big data}، به تازگی مورد توجه قرار گرفته است. در این تحقیق سعی شده است که تمرکز بر روی این‌گونه‌ی خاص از مسئله باشد. همچنین در این پژوهش سعی می‌شود گونه‌های مسئله را برای انواع متریک‌ها و برای $k$های کوچک نیز مورد بررسی قرار داد. \قسمت{مدل جویبار داده} همان‌طور که ذکر شد مسئله‌ی $k$-مرکز در حالت داده‌های پرت و جویبار داده، گونه‌های تعمیم‌یافته از مسئله‌ی $k$-مرکز هستند و در حالت‌های خاص به مسئله‌ی $k$-مرکز کاهش پیدا می‌کنند. -مسئله‌ی $k$-مرکز در حوزه‌ی مسائل ان‌پی-سخت\پاورقی{NP-hard} قرار می‌گیرد و با فرض $P \neq NP$ الگوریتم دقیق با زمان چندجمله‌ای برای آن وجود ندارد \مرجع{michael1979computers}. -بنابراین برای حل کارای\پاورقی{Efficient} این مسائل از الگوریتم‌های تقریبی\پاورقی{Approximation algorithm} استفاده می‌شود. +مسئله‌ی $k$-مرکز در حوزه‌ی مسائل +\پاورق{ان‌پی-سخت}{NP-hard} + قرار می‌گیرد و با فرض $P \neq NP$ الگوریتم دقیق با زمان چندجمله‌ای برای آن وجود ندارد \مرجع{michael1979computers}. +بنابراین برای \پاورقی{حل کارا}{Efficient} این مسائل از \پاورق{الگوریتم‌های تقریبی}{Approximation algorithm} استفاده می‌شود. برای مسئله‌ی $k$-مرکز، دو الگوریتم تقریبی معروف وجود دارد. -در الگوریتم اول، که به روش حریصانه\پاورقی{Greedy} عمل می‌کند، در هر مرحله بهترین مرکز ممکن را انتخاب می‌کند به طوری تا حد ممکن از مراکز قبلی دور باشد~\مرجع{megiddo1984complexity}. +در الگوریتم اول، که به \پاورق{روش حریصانه}{Greedy} عمل می‌کند، در هر مرحله بهترین مرکز ممکن را انتخاب می‌کند به طوری تا حد ممکن از مراکز قبلی دور باشد~\مرجع{megiddo1984complexity}. این الگوریتم، الگوریتم تقریبی با ضریب تقریب 2 ارائه می‌دهد. -در الگوریتم دوم، با استفاده از مسئله‌ی مجموعه‌ی غالب کمینه\پاورقی{Dominating set}، الگوریتمی با ضریب تقریب ۲ ارائه می‌گردد \مرجع{vazirani2013approximation}. +در الگوریتم دوم، با استفاده از مسئله‌ی \پاورق{مجموعه‌ی غالب کمینه}{Dominating set}، الگوریتمی با ضریب تقریب ۲ ارائه می‌گردد \مرجع{vazirani2013approximation}. همچنین ثابت شده است، که بهتر از این ضریب تقریب، الگوریتمی نمی‌توان ارائه داد مگر آن‌که $P = NP$ باشد. برای مسئله‌ی $k$-مرکز در حالت جویبار داده برای ابعاد بالا، بهترین الگوریتم موجود ضریب تقریب $2 + \epsilon$ دارد \مرجع{mccutchen2008streaming, guha2009tight, ahn2014computing} و ثابت می‌شود الگوریتمی با ضریب تقریب بهتر از $2$ نمی‌توان ارائه داد. برای مسئله‌ی $k$-مرکز با داده‌ی پرت در حالت جویبار داده نیز، بهترین الگوریتم ارائه شده، الگوریتمی با ضریب تقریب $4 + \epsilon$ است که با کران پایین $3$ هنوز اختلاف قابل توجهی دارد \مرجع{charikar2001algorithms}. diff --git a/front/dictionary.tex b/front/dictionary.tex index a754202..13b254f 100644 --- a/front/dictionary.tex +++ b/front/dictionary.tex @@ -1,115 +1,43 @@ -\clearpage -\phantomsection -\addcontentsline{toc}{chapter}{واژه‌نامه} + \clearpage + \phantomsection + \addcontentsline{toc}{chapter}{واژه‌نامه} -\chapter*{واژه‌نامه} -\begin{multicols}{2} -\small + \chapter*{واژه‌نامه} + \begin{multicols}{2} + \small + + \dicalphabet{ا} + \dic{Approximation algorithm}{الگوریتم‌های تقریبی} + \dic{Expectation-maximization}{امید ریاضی} + \dic{NP-hard}{ان‌پی-سخت} -\dicalphabet{الف} -\dic{heuristic}{ابتکاری} -\dic{high dimensions}{ابعاد بالا} -\dic{bias}{اریب} -\dic{threshold}{آستانه} -\dic{pigeonhole principle}{اصل لانه‌ی کبوتری} -\dic{NP-Hard}{ان‌پی‌-سخت} -\dic{transition}{انتقال} + \dicalphabet{ب} + \dic{Information retrieval}{بازیابی اطلاعات} -\dicalphabet{ب} -\dic{online}{برخط} -\dic{linear programming}{برنامه‌ریزی خطی} -\dic{optimum}{بهینه} -\dic{maximum}{بیشینه} + \dicalphabet{ج} + \dic{Pattern recognition}{جست‌وجوی الگو} -\dicalphabet{پ} -\dic{outlier}{پرت} -\dic{query}{پرسمان} -\dic{cover}{پوشش} -\dic{complexity}{پیچیدگی} + \dicalphabet{خ} + \dic{Clustering}{خوشه‌بندی} -\dicalphabet{ت} -\dic{experimental}{تجربی} -\dic{density}{تراکم} -\dic{approximation}{تقریب} -\dic{partition}{تقسیم‌بندی} -\dic{mesh}{توری} -\dic{distributed}{توزیع‌شده} + \dicalphabet{د} + \dic{Big data}{داده‌های حجیم} -\dicalphabet{ج} -\dic{separable}{جداپذیر} -\dic{black box}{جعبه سیاه} -\dic{data stream}{جویبار داده} + \dicalphabet{ر} + \dic{Bioinformatics}{رایانش زیستی} + \dic{Greedy}{روش حریصانه} -\dicalphabet{ح} -\dic{extreme}{حدی} -\dic{greedy}{حریصانه} + \dicalphabet{م} + \dic{Dominating set}{مجموعه‌ی غالب کمینه} -\dicalphabet{خ} -\dic{cluster}{خوشه} -\dic{linear}{خطی} + \dicalphabet{پ} + \dic{Image analysis}{پردازش تصویر} -\dicalphabet{د} -\dic{data}{داده} -\dic{data mining}{داده‌کاوی} -\dic{outlier data}{داده‌ی پرت} -\dic{doubling}{دوبرابرسازی} -\dic{binary}{دودویی} + \dicalphabet{چ} + \dic{Multi-objective}{چندهدفه} -\dicalphabet{ر} -\dic{vertex}{رأس} -\dic{formal}{رسمی} - -\dicalphabet{ز} -\dic{sublinear}{زیرخطی} - -\dicalphabet{س} -\dic{amortized}{سرشکن} -\dic{hierarchichal}{سلسه‌مراتبی} - -\dicalphabet{ش} -\dic{pseudocode}{شبه کد} -\dic{object}{شیء} - -\dicalphabet{ص} -\dic{satisfiability}{صدق‌پذیری} - -\dicalphabet{غ} -\dic{dominate}{غلبه} - -\dicalphabet{ف} -\dic{distance}{فاصله} -\dic{space}{فضا} - -\dicalphabet{ق} -\dic{deterministic}{قطعی} - -\dicalphabet{ک} -\dic{efficient}{کارا} -\dic{candidate}{کاندیدا} -\dic{minimum}{کمینه} - -%\dicalphabet{گ} -%\dic{pass}{گذر} - -\dicalphabet{م} -\dic{set}{مجموعه} -\dic{coreset}{مجموعه هسته} -\dic{planar}{مسطح} -\dic{parallelization}{موازی‌سازی} -\dic{buffer}{میان‌گیر} - -\dicalphabet{ن} -\dic{inversion}{نابه‌جایی} -\dic{invariant}{ناوردا} -\dic{center point}{نقطه‌ی مرکزی} -\dic{half space}{نیم‌فضا} - -\dicalphabet{هـ} -\dic{price of anarchy (POA)}{هزینه‌ی آشوب} - -\dicalphabet{ی} -\dic{edge}{یال} - -\end{multicols} + \end{multicols} + \newpage + \ No newline at end of file diff --git a/generate_dictionary.py b/generate_dictionary.py new file mode 100644 index 0000000..02539f0 --- /dev/null +++ b/generate_dictionary.py @@ -0,0 +1,55 @@ +import os +import re + +# Set the directory to search for '.tex' files +directory = '.' + +# Define the pattern to match against +pattern = r'\\پاورق\s*?{(.+?)}\s*?{(.+?)}' + +# Initialize a list to store the matched results +matched_results = [] + +# Traverse the directory and its subdirectories +for root, dirs, files in os.walk(directory): + # Loop over each file in the directory + for filename in files: + # Check if the file is a '.tex' file + if filename.endswith('.tex'): + # Read the content of the file + filepath = os.path.join(root, filename) + with open(filepath, 'r', encoding="utf-8") as file: + content = file.read() + # Match the content against the pattern + matches = re.findall(pattern, content) + # Append the matched results to the list + for match in matches: + matched_results.append([m.strip() for m in match]) + +matched_results = sorted(matched_results, key=lambda x: x[0]) + +with open('front/dictionary.tex','w',encoding='utf-8') as texfile: + texfile.write(r""" + \clearpage + \phantomsection + \addcontentsline{toc}{chapter}{واژه‌نامه} + + \chapter*{واژه‌نامه} + \begin{multicols}{2} + \small + """) + previous_letter = '' + for farsi,english in matched_results: + current_letter = farsi[0] + if previous_letter != current_letter: + texfile.write(f'\n\t\\dicalphabet{{{current_letter}}}\n') + previous_letter = current_letter + + texfile.write(f'\t\\dic{{{english}}}{{{farsi}}}\n') + + + texfile.write(r""" + \end{multicols} + + \newpage + """) \ No newline at end of file diff --git a/styles/common.tex b/styles/common.tex index acff893..87d26f4 100755 --- a/styles/common.tex +++ b/styles/common.tex @@ -142,7 +142,7 @@ \newcommand{\کد}[1]{\lr{\tt #1}} \newcommand{\پاورقی}[1]{\footnote{\lr{#1}}} - +\newcommand{\پاورق}[2]{#1 \footnote{\lr{#2}}} % -------------------- Dictionary -------------------- From f2eaab64cc16b625107251dd07a2685bd64e2825 Mon Sep 17 00:00:00 2001 From: Amir Pourmand Date: Sat, 17 Jun 2023 14:33:18 -0700 Subject: [PATCH 2/3] Update generate_dictionary.py --- generate_dictionary.py | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/generate_dictionary.py b/generate_dictionary.py index 02539f0..fd407c4 100644 --- a/generate_dictionary.py +++ b/generate_dictionary.py @@ -1,6 +1,7 @@ import os import re + # Set the directory to search for '.tex' files directory = '.' @@ -26,15 +27,15 @@ for match in matches: matched_results.append([m.strip() for m in match]) + matched_results = sorted(matched_results, key=lambda x: x[0]) + with open('front/dictionary.tex','w',encoding='utf-8') as texfile: texfile.write(r""" - \clearpage - \phantomsection - \addcontentsline{toc}{chapter}{واژه‌نامه} + \rhead{واژه‌نامه فارسی به انگلیسی} - \chapter*{واژه‌نامه} + \chapter*{واژه‌نامه فارسی به انگلیسی} \begin{multicols}{2} \small """) @@ -45,11 +46,38 @@ texfile.write(f'\n\t\\dicalphabet{{{current_letter}}}\n') previous_letter = current_letter - texfile.write(f'\t\\dic{{{english}}}{{{farsi}}}\n') + texfile.write(f'\t\\dic{{{english.capitalize()}}}{{{farsi}}}\n') texfile.write(r""" \end{multicols} \newpage - """) \ No newline at end of file + """) + +matched_results = sorted(matched_results, key=lambda x: x[1]) + +with open('front/dictionary_en.tex','w',encoding='utf-8') as texfile: + texfile.write(r""" + \rhead{واژه‌نامه انگلیسی به فارسی} + + \chapter*{واژه‌نامه انگلیسی به فارسی} + \begin{multicols}{2} + \LTRmulticolcolumns + \small + """) + previous_letter = '' + for farsi,english in matched_results: + current_letter = english[0] + if previous_letter != current_letter: + texfile.write(f'\n\t\\dicalphabet{{{current_letter.upper()}}}\n') + previous_letter = current_letter + + texfile.write(f'\t\\dic{{{english.capitalize()}}}{{{farsi}}}\n') + + + texfile.write(r""" + \end{multicols} + + \newpage + """) From 538432683db754833a5a33e59ce1c3cdbea333ca Mon Sep 17 00:00:00 2001 From: Amir Pourmand Date: Sun, 18 Jun 2023 01:10:56 +0330 Subject: [PATCH 3/3] add multi-lingual --- front/dictionary.tex | 8 +++----- front/dictionary_en.tex | 44 +++++++++++++++++++++++++++++++++++++++++ thesis.tex | 2 +- 3 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 front/dictionary_en.tex diff --git a/front/dictionary.tex b/front/dictionary.tex index 13b254f..dce4449 100644 --- a/front/dictionary.tex +++ b/front/dictionary.tex @@ -1,16 +1,14 @@ - \clearpage - \phantomsection - \addcontentsline{toc}{chapter}{واژه‌نامه} + \rhead{واژه‌نامه فارسی به انگلیسی} - \chapter*{واژه‌نامه} + \chapter*{واژه‌نامه فارسی به انگلیسی} \begin{multicols}{2} \small \dicalphabet{ا} \dic{Approximation algorithm}{الگوریتم‌های تقریبی} \dic{Expectation-maximization}{امید ریاضی} - \dic{NP-hard}{ان‌پی-سخت} + \dic{Np-hard}{ان‌پی-سخت} \dicalphabet{ب} \dic{Information retrieval}{بازیابی اطلاعات} diff --git a/front/dictionary_en.tex b/front/dictionary_en.tex new file mode 100644 index 0000000..982b2ea --- /dev/null +++ b/front/dictionary_en.tex @@ -0,0 +1,44 @@ + + \rhead{واژه‌نامه انگلیسی به فارسی} + + \chapter*{واژه‌نامه انگلیسی به فارسی} + \begin{multicols}{2} + \LTRmulticolcolumns + \small + + \dicalphabet{A} + \dic{Approximation algorithm}{الگوریتم‌های تقریبی} + + \dicalphabet{B} + \dic{Big data}{داده‌های حجیم} + \dic{Bioinformatics}{رایانش زیستی} + + \dicalphabet{C} + \dic{Clustering}{خوشه‌بندی} + + \dicalphabet{D} + \dic{Dominating set}{مجموعه‌ی غالب کمینه} + + \dicalphabet{E} + \dic{Expectation-maximization}{امید ریاضی} + + \dicalphabet{G} + \dic{Greedy}{روش حریصانه} + + \dicalphabet{I} + \dic{Image analysis}{پردازش تصویر} + \dic{Information retrieval}{بازیابی اطلاعات} + + \dicalphabet{M} + \dic{Multi-objective}{چندهدفه} + + \dicalphabet{N} + \dic{Np-hard}{ان‌پی-سخت} + + \dicalphabet{P} + \dic{Pattern recognition}{جست‌وجوی الگو} + + \end{multicols} + + \newpage + \ No newline at end of file diff --git a/thesis.tex b/thesis.tex index ad6fa97..6ef03e6 100755 --- a/thesis.tex +++ b/thesis.tex @@ -67,7 +67,7 @@ \include{bibs/bibs} \include{front/dictionary} - +\include{front/dictionary_en} % -------------------- Appendices --------------------