اپلیکیشن دیکشنری

ساخت وبلاگ


اول اپلیکیشنی که قرار میباشد درین خصوصی راهنماهای پایتون بنویسیم یک دیکشنری میباشد. طراحی اپلیکیشن این دیکشنری از نوع تعاملی میباشد. شاید این فعالیت به حیث بی آلایش بیاید؛ ولی یک هجرت هزاران کیلومتری هم از قدم در آغاز مقدمه می گردد، به این ترتیب درین نوشته اولی قدم خویش را برمی‌داریم. در حال حاضر سؤال این میباشد که‌این دیکشنری چه فعالیت خواهد کرد؟ دیکشنری ما چنان که انتظار می‌رود تمجید یک کلمه و واژه را که استفاده کننده وارد نموده است رجوع میدهد. افزون بر آن در صورتی‌که مخاطب هنگام وارد کردن واژه و کلمه‌های متبوع خویش، خطا املایی داشته باشد، نرم افزار ما مجاورت‌ترین واژه را بابیان «آیا منظورتان این بود؟» (did you mean this instead) توصیه می‌نماید و در صورتیکه واژه و کلمه‌ای بیش تر از یک تعریف و تمجید داشته باشید، همگی آنان‌را بازیابی می‌نماید. شاید تولید این اپ در حال حاضر دیگر به نظرتان بی آلایش نیاید. در هر هم اکنون با ما همدم باشید.

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

قدم 1: داده‌ها
برای این که بدانید دیکشنری چه طور فعالیت خواهد کرد، بایستی بدانید که از چه داده‌هایی برای اجرای اعمال فوق‌الذکر استعمال می‌نماید. داده‌ها در‌این نرم‌افزار در قالب JSON می باشند. در شرایطی که از قبلی JSON را میشناسید، می توانید یکسری خط آینده را رد نمائید و به ادامه مطالعه این راهنما بپردازید. با این هم اکنون در شرایطی که اولیه باری میباشد که کلمه و واژه JSON را می‌شنوید و یا این که به پاره ای یاداوری داده ها نیاز دارید، می توانید در پی مثال‌ای از قالب JSON را مشاهده کنید:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
{

  "abandoned industrial site": [

    "Site that cannot be used for any purpose, being contaminated by pollutants."

  ],

  "abandoned vehicle": [

    "A vehicle that has been discarded in the environment, urban or otherwise, often found wrecked, destroyed, damaged or with a major component part stolen or missing."

  ],

  "abiotic factor": [

    "Physical, chemical and other non-living environmental factor."

  ],

  "access road": [

    "Any street or narrow stretch of paved surface that leads to a specific destination, such as a main highway."

  ],

  "access to the sea": [

    "The ability to bring goods to and from a port that is able to harbor sea faring vessels."

  ],

  "accident": [

    "An unexpected, unfortunate mishap, failure or loss with the potential for harming human life, property or the environment.",

    "An event that happens suddenly or by chance without an apparent cause."

  ],

  "accumulator": [

    "A rechargeable device for storing electrical energy in the form of chemical energy, consisting of one or more separate secondary cells.\\n(Source: CED)"

  ],

  "acidification": [

    "Addition of an acid to a solution until the pH falls below 7."

  ],

  "acidity": [

    "The state of being acid that is of being capable of transferring a hydrogen ion in solution."

  ],

  "acidity degree": [

    "The amount of acid present in a solution, often expressed in terms of pH."

  ],

  "acid rain": [

    "Rain having a pH less than 5.6."

  ],

  "acid": [

    "A compound capable of transferring a hydrogen ion in solution.",

    "Being harsh or corrosive in tone.",

    "Having an acid, sharp or tangy taste.",

    "A powerful hallucinogenic drug manufactured from lysergic acid.",

    "Having a pH less than 7, or being sour, or having the strength to neutralize  alkalis, or tuing a litmus paper red."

  ],

  "acoustic filter": [

    "A device employed to reject sound in a particular range of frequencies while passing sound in another range of frequencies."

  ],

  "acoustic insulation": [

    "The process of preventing the transmission of sound by surrounding with a nonconducting material."

  ]
}

شاید اطلاع نداشته باشید که در سال 2017 در هر ثانیه 2,500,000,000,000,000,000 (2.5 کوینتیلیون) بایت داده ساخت و ساز شده‌است.

JSON چه می‌باشد؟
JSON اختصاری برای عبارت «نمادگذاری شیء جاوا اسکریپت» (JavaScript Object Notation) به صورت عمده دربرگیرنده دو قسمت کلید و مقدار میباشد که یک مقدار را به یک کلید انتساب میدهد.

در حال حاضر نوبت به ارزیابی کد رسیده میباشد. نخست کتابخانه JSON را ایمپورت می کنیم و بعد از متد load این کتابخانه برای بار گذاری داده‌هایی که در قالب JSON می‌باشند به کار گیری خوا هیم کرد. نکته حائض اهمیت آن میباشد که ما داده‌ها را در قالب JSON بار گذاری میکنیم؛ ولی این داده‌ها در متغیر data در قالب «دیکشنری» پایتون ذخیره میگردند. در صورتی در امر نوع داده دیکشنری در پایتون اطلاع ندارید، می بایست بگوییم که‌این نوع داده یک قالب برای ذخیره‌سازی داده‌ها میباشد که شباهت متعددی به قالب JSON داراست و از به عبارتی موقعیت «کلید-مقدار» (key-value) پیروی می‌نماید.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#Import library

import json
 
#Loading the json data as python dictionary
#Try typing "type(data)" in terminal after executing first two line of this snippet

data = json.load(open("data.json"))
 
#Function for retriving definition

def retrive_definition(word):

    retu data[word]
 
#Input from user

word_user = input("Enter a word: ")
 
#Retrive the definition using function and print the result

print(retrive_definition(word_user))
به محض این که داده‌ها در پایتون بار گذاری شدند، یک تابع می‌نویسیم که واژه و کلمه را بگیرد و درپی تعریف‌و‌تمجید آن در داده‌ها بگردد. این عمل راحت میباشد:


قدم 1– داده‌ها (خروجی) — برای مشاهد تصویر در بعدها مهم روی این لینک و پیوند کلیک فرمائید (+).
قدم 2: ارزیابی لغت ها ناموجود
ما می توانیم با سود‌گیری از یک ساختار if-else به تحلیل حالت وجود یا این که عدم وجود کلمه ها فی مابین داده‌های خویش بپردازیم. در شرایطی‌که واژه و کلمه‌ای دربین داده‌ها جانور نباشد، این دستور را به مخاطب اطلاع می دهیم. در این باره این فعالیت با اکران پیام «The word doesn’t exist, please double check it» شکل میگیرد.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#Import library

import json
 
#Loading the json data as python dictionary
#Try typing "type(data)" in terminal after executing first two line of this snippet

data = json.load(open("dictionary.json"))
 
#Function for retriving definition

def retrive_definition(word):

    #Check for non existing words

    if word in data:

        retu data[word]

    else:

        retu ("The word doesn't exist, please double check it.")
 
#Input from user

word_user = input("Enter a word: ")
 
#Retrive the definition using function and print the result

print(retrive_definition(word_user))

قدم 2– تحلیل عدم وجود واژه‌ها (خروجی)
قدم 3: آلرژی به حروف کوچک یا این که گسترده
هر استفاده کننده طرز خاصی برای تایپ کردن کلمه ها دارااست. با این که بعضی اشخاص تمامی حروف را به طور کوچک می‌نویسند؛ البته بعضی دیگر حروف اولِ لغات را عظیم می‌نویسند، غرض ما این میباشد که خروجی واژه و کلمه‌هایی که به طور‌های متعدد نوشته می گردند، همواره یکسان باشد. برای مثال Rain و rain هر دو یک خروجی ساخت‌و‌ساز می‌نمایند. چهت نیل به‌این غرض می بایست کلمه و واژه‌ای که استفاده کننده وارد کرده را به وضعیت «کلیه حروف کوچک»، تبدیل کنیم، زیرا داده‌های ما در همین قالب می‌باشند. این فعالیت در پایتون با استعمال از متد ()lower ممکن میباشد.

شرایط 1 – برای اطمینان از این که نرم افزار ما تعریف‌و‌تمجید کلماتی را که با کلام وسیع مقدمه گردیده‌اند (مانند Texas یا این که Tehran) به صدق رجوع میدهد بایستی با استعمال از یک شرط if-else این موقعیت را تحلیل کنیم.
وضعیت 2– برای اطمینان از این که اپلیکیشن ما تعریف و تمجید لغات اختصاری (مانند USA یا این که UN) را به صدق رجوع و برگشت می دهد، می بایست وضعیت‌های حروف پهناور را نیز ارزیابی کنیم.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#Import library

import json
 
#Loading the json data as python dictionary
#Try typing "type(data)" in terminal after executing first two line of this snippet

data = json.load(open("dictionary.json"))
 
#Function for retriving definition

def retrive_definition(word):

    #Removing the case-sensitivity from the program

    #For example 'Rain' and 'rain' will give same output

    #Converting all letters to lower because out data is in that format

    word = word.lower()
 

    #Check for non existing words

    #1st elif: To make sure the program retu the definition of words that start with a capital letter (e.g. Delhi, Texas)

    #2nd elif: To make sure the program retu the definition of acronyms (e.g. USA, NATO)

    if word in data:

        retu data[word]

    elif word.title() in data:

        retu data[word.title()]

    elif word.upper() in data:

        retu data[word.upper()]
 
#Input from user

word_user = input("Enter a word: ")
 
#Retrive the definition using function and print the result

print(retrive_definition(word_user))

قدم 3– آلرژی به کوچکی/بزرگی حروف – برای مشاهده تصویر در بعدها اساسی روی این لینک و پیوند کلیک فرمایید (+).
در این‌حالت دیکشنری ما مهیا ارائه هدف ها اول خویش شده‌است، یعنی تعاریف کلمه‌ها را بازیابی می‌نماید. البته بایستی یک قدم دیگر نیز به پیش برویم. آیا تا به امروز از طریق توصیه عبارات از سوی گوگل، برای تصحیح واژه و کلمه‌ها در هنگام وارد کردن یک عبارت نادرست در نوار کاوش شگفت‌زده گردیده‌اید؟

 

ما میخواهیم این قابلیت دیدنی را در دیکشنری خویش در اختیار بگذاریم. قبل از آن که‌این عمل را در قدم 5 این راهنما انجام دهیم، می بایست سازوکار عملی این عمل را در قدم 4 ادراک کنیم.

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

شیوه اولیه: Sequence Matcher
برای شعور این متد، در آغاز بایستی کتابخانه را ایمپورت کنیم و متد متبوع را از آن واکشی کنیم. تابع ()SequenceMatcher کلاً سه پارامتر میگیرد. پارامتر نخستین به ارزیابی درستی واژه و کلمه می پردازد، یعنی آیا کاراکتر مسافت یا این که خطوط خالی دارااست یا این که خیر، که در خصوص ما چنین چیزی نیست. پارامترهای دوم و سوم، دو واژه‌ای میباشند که میخواهید مشابهت‌های آنها‌را بیابید. این متد سود را به طور یکی کسری ارائه می‌نماید.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#Import library

import json
# This is a python library for 'Text Processing Serveices', as the offcial site suggests.

import difflib

from difflib import SequenceMatcher
 
#Let's load the same data again

data = json.load(open("dictionary.json"))
 
#Run a Sequence Matcher
#First parameter is 'Junk' which includes white spaces, blank lines and so onself.
#Second and third parameters are the words you want to find similarities in-between.
#Ratio is used to find how close those two words are in numerical terms

value = SequenceMatcher(None, "rainn", "rain").ratio()
 
#Print out the value

print(value)

قدم 4.1 – Sequence Matcher (خروجی)
همان گونه که شاهد می‌باشید، شباهت در بین واژه و کلمه‌های rainn و rain برابر با 0.89 میباشد که به عبارتی 89% میباشد. این یک نحوه برای انجام فعالیت فوق میباشد. با این وجود طرز دیگری نیز وجود دارااست که در همین کتابخانه قابل اجرا میباشد و در آن مجاورت‌ترین آیتم هم خوانی بی واسطه با یک واژه ارائه می گردد و دیگر از اعداد استعمال نمیشود.

شیوه دوم: اخذ مجاورت‌ترین آیتم منطبق
نحوه عمل این متد چنین میباشد که پارامتر در آغاز تحت عنوان واژه‌ای میباشد که میخواهیم مطابق آن را پیدا کنیم و پارامتر دوم فهرست کلماتی میباشد که هم خوانی داشته‌اند. پارامتر سوم تعداد موردها مطابقتی را مشتمل بر می‌گردد که می خواهید در خروجی خویش داشته باشید. پارامتر انتها نیز یک ترازو میباشد که به طور عددی نسبی، مانند متد گذشته فعالیت می‌نماید. بنابراین می توانیم برای مثالً یک واحد سنجش به طور 99% گزینش کنیم که فقطً کلماتی که‌این میزان را دارا هستند رجوع و برگشت یابند. بر حسب نیاز خویش یک واحد سنجش برای این پارامتر گزینش فرمایید.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#Import library

import json
# This is a python library for 'Text Processing Serveices', as the offcial site suggests.

import difflib

from difflib import get_close_matches
 
#Let's load the same data again

data = json.load(open("dictionary.json"))
 
#Before you dive in, the basic template of this function is as follows
#get_close_matches(word, posibilities, n=3, cutoff=0.66)
#First parameter is of course the word for which you want to find close matches
#Second is a list of sequences against which to match the word
#[optional]Third is maximum number of close matches
#[optional]where to stop considering a word as a match (0.99 being the closest to word while 0.0 being otherwise)
 

output = get_close_matches("rain", ["help","mate","rainy"], n=1, cutoff = 0.75)
 
# Print out output, any guesses?

print(output)

قدم 4.2 – اخذ مجاورت‌ترین گزینه هم خوانی (خروجی)
همانطور که شاهد می‌باشید، خروجی فوق نیازی به توضیح ندارد. مجاورت‌ترین واژه و کلمه میان آن سه واژه، عبارت «rainy» میباشد. در حالتی‌که به‌این مرحله رسیده‌اید، بایستی بدانید که فعلا قسمت مشقت بار عمل را به انجام رسانده‌اید. پیرو کافی میباشد این قسمت را در کد خویش در اختیار بگذاریم تا بتوانیم خروجی‌های مربوطه را داشته باشیم.

مقالات کامل و جامع طراحی اپلیکیشن...
ما را در سایت مقالات کامل و جامع طراحی اپلیکیشن دنبال می کنید

برچسب : نویسنده : عباسی app02 بازدید : 160 تاريخ : پنجشنبه 23 مرداد 1399 ساعت: 13:29