تصحیح خودکار کیبورد با پایتون

تا حالا در مورد ویژگی تصحیح خودکار کیبورد گوشی فکر کردید؟ تقریباً کیبورد هر گوشی هوشمندی حالا جدا از قیمت و برند، مجهز به ویژگی تصحیح خودکار هست پس بیاید با نحوه کار این ویژگی آشنا بشیم. تو این مقاله، نحوه پیاده‌سازی ویژگی تصحیح خودکار با پایتون به شما عزیزان آموزش داده میشه.

نحوه کار تصحیح خودکار با پایتون

تصحیح خودکار یک تسک در زمینه یادگیری ماشین و مبتنی بر پردازش زبان طبیعیه و همونطوری که از اسمش هم مشخصه، طوری برنامه‌نویسی میشه که بتونه خطاهای املایی که حین تایپ اتفاق می افته رو تصحیح کنه؛ اما نحوه کارش چجوریه؟

قبل از اینکه وارد مطالب برنامه‌نویسی بشیم، بیاید با نحوه کار اصلاح خودکار آشنا بشیم. فرض کنید که یه کلمه رو در کیبورد خودتون مینویسین، حالا اگر این کلمه در واژگان گوشی هوشمند شما باشه، به عنوان یه کلمه درست تلقی میشه. البته فرقی نمیکنه که کلمه چی باشه، یه اسم، فعل یا هر کلمه دیگ ای که در دنیا به کار برده میشه.

اگر یک کلمه در تاریخچه گوشی هوشمند شما وجود داشته باشه، ویژگی تصحیح خودکار این کلمه رو به عنوان کلمه درست تعمیم میده. اگر کلمه موردنظر در تاریخچه وجود نداشته باشه چی؟ تصحیح خودکار طوری برنامه ریزی شده که مشابه‌ترین کلماتی که در تاریخچه گوشی وجود داره روی پیدا کنه و به عنوان گزینه‌های مناسب به شما پیشنهاد بده.

ساخت یک تصحیح گر خودکار با پایتون

توضیحات قبلی برای آشنایی بیشتر شما با نحوه کار تصحیح گر خودکار کیبورد بود. حالا نوبت اینه که ببینیم چجوری میتونیم با پایتون یه ویژگی تصحیح خودکار رو ایجاد کنیم. همونطوری که گوشی‌های ما از تاریخچه برای مطابقت با کلمات درست و نادرست استفاده میکنن، پس ما هم از برخی کلمات برای پیاده‌سازی این ویژگی استفاده می‌کنیم.

تو این پروژه از متن مربوط به یه کتاب استفاده شده که به‌راحتی می تونین از اینجا دانلود کنین. حالا دیگ وقت اینه که وارد مرحله پیاده‌سازی تصحیح گر خودکار با پایتون بشیم.

برای این کار به چند تا کتابخونه پایتون نیاز داریم. کتابخونه های مورداستفاده تو این پروژه بین برنامه نویسان یادگیری ماشین حرفه‌ای، بسیار رایج هستن. پس مطمئناً همه این کتابخونه ها رو قبلاً تو سیستمتون نصب کردید به‌جز یکی. اسم این کتابخونه textdistance هست که به راحتی از طریق دستور زیر قابل‌نصب هست:

pip install textdistance

حالا بیاید کار رو با ایمپورت همه پکیج‌های موردنیاز و خواندن فایل متنی شروع کنیم:

import pandas as pd
import numpy as np
import textdistance
import re
from collections import Counter
words = []
with open('moby.txt', 'r') as f:
    file_name_data = f.read()
    file_name_data=file_name_data.lower()
    words = re.findall('\w+',file_name_data)
# This is our vocabulary
V = set(words)
print(f"The first ten words in the text are: \n{words[0:10]}")
print(f"There are {len(V)} unique words in the vocabulary.")

بعد از اینکه فایل موردنظر رو خوندیم و با  lower() همه حروف رو به حروف کوچک تبدیل کردیم. کلمات موجود در متن رو در داخل words ذخیره کرده و یه واژگان یا لغت‌نامه از اون ایجاد می‌کنیم. طول این لغت‌نامه ۱۷۱۴۰ هست.

بعد از این‌که با کد بالا یه لیستی از کلمات رو ایجاد کردیم، نوبت اینه که با استفاده از تابع counter، فرکانس هر کدوم از این کلمات رو محاسبه کنیم:

word_freq_dict = {}  
word_freq_dict = Counter(words)
print(word_freq_dict.most_common()[0:10])




فرکانس نسبی کلمات

خب الآن میخوایم احتمال وقوع هر کلمه رو به دست بیاریم که برابره با فرکانس نسبی کلمات:

probs = {}     
Total = sum(word_freq_dict.values())    
for k in word_freq_dict.keys():
    probs[k] = word_freq_dict[k]/Total

پیدا کردن کلمات مشابه

تو این بخش، با توجه به فاصله Jaccard با محاسبه میزان شباهت هر دو کلمه، اون کلماتی که شباهت بیشتری به هم دارند رو به عنوان خروجی برمی گردونه:

def my_autocorrect(input_word):
    input_word = input_word.lower()
if input_word in V:
        return('Your word seems to be correct')
    else:
        similarities = [1-(textdistance.Jaccard(qval=2).distance(v,input_word)) for v in word_freq_dict.keys()]
        df = pd.DataFrame.from_dict(probs, orient='index').reset_index()
        df = df.rename(columns={'index':'Word', 0:'Prob'})
        df['Similarity'] = similarities
        output = df.sort_values(['Similarity', 'Prob'], ascending=False).head()
        return(output)

حالا بیایید با استفاده از این تابع، کلمات مشابه با کلمه ورودی موردنظر رو پیدا کنیم:

my_autocorrect('neverteless')

همونطوری که ما از کلمات متن یه کتاب استفاده کردیم، کلماتی که موقع تایپ به کاربر پیشنهاد میشن، یا از قبل در لغت‌نامه گوشی قرار داشتن یا بعد اینکه کاربر شروع به استفاده از کیبورد کرده، ثبت شدن.

امیدواریم که از این پست آموزشی لذت برده باشین و یادگیری نحوه پیاده‌سازی ویژگی تصحیح خودکار برای شما مفید واقع بشه.

برای هرگونه سوال در زمینه آموزش ها فقط کافیه روی لینک واتساپ یا تلگرام (در زیر همین پست) کلیک کنید. یا با شماره تماس بالای صفحه سایت تماس بگیرید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

قبلا حساب کاربری ایجاد کرده اید؟
گذرواژه خود را فراموش کرده اید؟
Loading...