Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Generator For Dictionary #11

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions chapters/literature.tex
Original file line number Diff line number Diff line change
Expand Up @@ -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} ذکر شده است، خوشه در خوشه‌بندی تعریف واحدی ندارد و یکی از دلایل وجود الگوریتم‌های متفاوت، همین تفاوت تعریف‌ها از خوشه است.
Expand All @@ -28,7 +30,7 @@

\فقره
\مهم{مدل‌های مبتی بر توزیع نقاط}: در این مدل، دسته‌ها با فرض پیروی از یک توزیع احتمالی مشخص می‌شوند.
از جمله الگوریتم‌های معروف ارائه شده در این مدل، الگوریتم بیشینه‌سازی امید ریاضی\پاورقی{Expectation-maximization} است.
از جمله الگوریتم‌های معروف ارائه شده در این مدل، الگوریتم بیشینه‌سازی \پاورق{امید ریاضی}{Expectation-maximization} است.

\فقره
\مهم{مدل‌های مبتنی بر تراکم نقاط}: در این مدل، خوشه‌ها متناسب با ناحیه‌های متراکم نقاط در مجموعه داده مورد استفاده قرار می‌گیرد.
Expand Down Expand Up @@ -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}.
Expand Down
132 changes: 29 additions & 103 deletions front/dictionary.tex
Original file line number Diff line number Diff line change
@@ -1,115 +1,41 @@

\clearpage
\phantomsection
\addcontentsline{toc}{chapter}{واژه‌نامه}
\rhead{واژه‌نامه فارسی به انگلیسی}

\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

44 changes: 44 additions & 0 deletions front/dictionary_en.tex
Original file line number Diff line number Diff line change
@@ -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

83 changes: 83 additions & 0 deletions generate_dictionary.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
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"""
\rhead{واژه‌نامه فارسی به انگلیسی}

\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.capitalize()}}}{{{farsi}}}\n')


texfile.write(r"""
\end{multicols}

\newpage
""")

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
""")
2 changes: 1 addition & 1 deletion styles/common.tex
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@
\newcommand{\کد}[1]{\lr{\tt #1}}
\newcommand{\پاورقی}[1]{\footnote{\lr{#1}}}


\newcommand{\پاورق}[2]{#1 \footnote{\lr{#2}}}

% -------------------- Dictionary --------------------

Expand Down
2 changes: 1 addition & 1 deletion thesis.tex
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@

\include{bibs/bibs}
\include{front/dictionary}

\include{front/dictionary_en}

% -------------------- Appendices --------------------

Expand Down