یادگیری ماشینی

چگونه با استفاده از پایتون یک چت بات ساده بسازیم؟

چت بات در پایتون و چت بات

کمپانی گارتنر تخمین می زند که تا انتهای سال 2020 چت بات ها 85 درصد از تعاملات مشتریان و خدمات را بر عهده خواهند داشت.

در این مقاله نحوه ساخت چت بات با آموزش برنامه نویسی پایتون را به صورت ساده آموزش می دهیم.


چت بات چیست؟ 

چت بات یک نرم افزار دارای هوش مصنوعی در یک دستگاه مانند (Siri ، Alexa ، Google Assistant و غیره) ، اپلیکیشن و یا وبسایتی است که سعی می کند نیازهای مصرف کنندگان را ارزیابی کرده و سپس به آن ها در انجام یک کار خاص مانند یک معامله تجاری کمک کند. مثل رزرو هتل، ارسال فرم و غیره. امروزه چت بات ها در بسیاری از شرکت ها مورد استفاده قرار می گیرند تا بتواند با کاربران تعامل داشته باشند. از جمله کاربردهای چت بات در شرکت ها می توان به موارد زیر اشاره کرد:
 ارائه اطلاعات پرواز
ارتباط با مشتریان و امور مالی آنها
پشتیبانی مشتری

چت بات چگونه کار می کند؟ 

به طور کلی دو نوع چت بات وجود دارد.

چت بات قانون محور (Rule-Based) و چت بات خودآموز(Self-Learning)  

1. در مدل قانون محور ، یک ربات به سوالات بر اساس آموزش هایی که قبلا فراگرفته پاسخ می دهد. قوانین تعریف شده می توانند بسیار ساده و یا بسیار پیچیده باشند. ربات ها می توانند پرسش و پاسخ ساده ای را انجام دهند اما در مدیریت موارد پیچیده موفق نیستند.
2. چت بات های خودآموز از برخی رویکردهای مبتنی بر ماشین لرنینگ استفاده می کنند و قطعا از چت بات های قانون محور کارآمدتر هستند. این چت بات ها به دو نوع تقسیم می شوند: مبتنی بر یازیابی و تولیدی
1-2. در مدل مبتنی بر بازیابی، چت بات از یک سری الگوریتم های فراابتکاری به منظور انتخاب پاسخ از یک کتابخانه دارای پاسخ های از پیش تعیین شده استفاده می کند.
2-2 چت بات تولیدی می تواند پاسخ ها را تولید کند و همچنین همیشه به یک سوال یک پاسخ تکراری نمی دهد. هرچه تعدا پرسش و پاسخ ها بیشتر شود، چت بات هوشمندتر می شود.

چت بات در پایتون و چت بات

ساخت چت بات با پایتون 

پیش نیازها:
داشتن دانش کلی از کتابخانه scikit و NLTK. اما اگر در NLP تازه وارد هستید باز هم می توانید مقاله را بخوانید و سپس به منابع مراجعه کنید.

پردازش زبان طبیعی ( NLP )

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

NLTK: معرفی کوتاه

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

دانلود و نصب NLTK:

NLTK را نصب کرده و pip install nltk را اجرا کنید.
آزمایش نصب: پایتون را اجرا کرده و import nltk را تایپ کنید.
نصب بسته های NLTK:
NLTK را وارد کنید و nltk.download () را اجرا کنید. با این کار NLTK downloader را باز کرده و می توانید مدل ها را برای بارگیری انتخاب کنید. همچنین می توانید همه بسته ها را به طور همزمان دانلود کنید.

پیش پردازش متن با NLTK

مسئله اصلی در مورد داده های متن این است که همه در قالب متن هستند. اما الگوریتم های یادگیری ماشین به نوعی از بردار ویژگی عددی احتیاج دارند. بنابراین قبل از شروع هر پروژه NLP باید آن را از قبل پردازش کنیم تا مناسب سازی شود. پیش پردازش متن اصلی شامل موارد زیر است:
تبدیل کل متن به حروف بزرگ یا حروف کوچک به گونه ای که الگوریتم با کلمات مشابه در موارد مختلف به صورت متفاوت رفتار نمی کند.
Tokenization: Tokenization (نشانه گذار) فقط اصطلاحی است که برای توصیف فرآیند تبدیل رشته های متن معمولی به لیستی از نشانه ها بکار رفته است. نشانه گذار جمله می تواند برای یافتن لیست جملات مورد استفاده قرار گیرد و از نشانه گذار کلمات برای یافتن لیست کلمات در رشته ها استفاده می شود.

کوله کلمات ( Bag of Words )

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

رویکرد TF-IDF

مشکل کوله کلمات در این است که کلمات پر تکرار شروع به غالب شدن در سند می کنند؛ اما ممکن است شامل محتوای اطلاعاتی (informational) نباشند. همچنین کوله کلمات به اسناد طولانی تر وزن بیشتری می دهد. یک روش برای رفع این مشکل این است که به هر کلمه متناسب با تعداد تکرار آن در کل سند امتیاز داده شود. این رویکرد امتیاز دهی Term Frequency-Inverse Document Frequency یا به اختصار TF-IDF گفته می شود. در این روش، Term Frequency به معنی امتیاز دهی تعداد کلمات در سند فعلی و Inverse Document Frequency به معنای امتیازدهی کم تکرار بودن کلمات در سند می باشد.

(تعداد کل کلمات)/(تعداد دفعات مشاهده کلمه)=TF
(تعداد اسنادی که کلمه در آن ها مشاهده شده)/(تعداد اسناد)IDF=1+log 

وزن TF-IDF ، وزنی است که اغلب در بازیابی اطلاعات و استخراج متن مورد استفاده قرار می گیرد. این وزن یک معیار آماری است که برای ارزیابی اهمیت کلمه در یک اسندیا مجموعه.
مثال:
سندی را در نظر بگیرید که شامل 100 کلمه است و در آن کلمه “تلفن” 5 بار تکرار شده است. TF برای این کلمه 5/100 است. حال ، فرض کنید ما 10 میلیون سند داریم و کلمه تلفن در هزار مورد از آنها تکرار شده است. آنگاه IDF برابر خواهد بود با: log (10،000،000 / 1،000) = 4 . بنابراین TF-IDF  0.2 می باشد.
حال ما یک دید کلی از NLP داریم، وقت آن رسیده که شروع به ساخت چت بات کنیم. عنوان چت بات را ROBO فرض می کنیم.

وارد کردن کتابخانه های ضروری:

import nltk
import numpy as np
import random
import string # to process standard python strings

مجموعه نوشته ها ( Corpus )

به عنوان مثال، ما از صفحه ویکی پدیا به عنوان مجموعه نوشته برای چت بات خود استفاده خواهیم کرد. محتویات را از صفحه کپی کرده و آن را در یک پرونده متنی بنام “chatbot.txt” قرار دهید. با این حال، شما می توانید از هر مجموعه نوشته دلخواه دیگر استفاده کنید. ما در فایل corpus.txt کل مجموعه را به لیست جملات و کلمات برای پیش پردازش بیشتر تبدیل می کنیم.

f=open("chatbot.txt","r",errors = "ignore")raw=f.read()raw=raw.lower()# converts to lowercasenltk.download("punkt") # first-time use only
nltk.download("wordnet") # first-time use only
sent_tokens = nltk.sent_tokenize(raw)# converts to list of sentences
word_tokens = nltk.word_tokenize(raw)# converts to list of words

مثالی از sent_tokens و word_tokens را ببینید:

sent_tokens[:2]
["a chatbot (also known as a talkbot, chatterbot, bot, im bot, interactive agent, or artificial conversational entity) is a computer program or an artificial intelligence which conducts a conversation via auditory or textual methods.",
"such programs are often designed to convincingly simulate how a human would behave as a conversational partner, thereby passing the turing test."]
word_tokens[:2] ["a", "chatbot", "(", "also", "known"]

پیش پردازش متن

اکنون باید تابعی به نام LemTokens تعریف کنیم.

lemmer = nltk.stem.WordNetLemmatizer()
#WordNet is a semantically-oriented dictionary of English included in NLTK.
def LemTokens(tokens):
return [lemmer.lemmatize(token) for token in tokens]
remove_punct_dict = dict((ord(punct), None) for punct in string.punctuation)
def LemNormalize(text):
return LemTokens(nltk.word_tokenize(text.lower().translate(remove_punct_dict)))

تطبیق کلید واژه

در مرحله بعد، ما باید عملکردی برای سلام توسط ربات تعریف کنیم، یعنی اگر کاربر سلام کرد، ربات پاسخ سلام را برگرداند. ELIZA از یک واژه ساده برای سلام استفاده می کند. ما در اینجا از همان مفهوم استفاده خواهیم کرد.

GREETING_INPUTS = ("hello", "hi", "greetings", "sup", "what"s up","hey",)GREETING_RESPONSES = ["hi", "hey", "*nods*", "hi there", "hello", "I am glad! You are talking to me"]def greeting(sentence):

for word in sentence.split():
if word.lower() in GREETING_INPUTS:
return random.choice(GREETING_RESPONSES)

تولید پاسخ در چت بات

برای تولید پاسخ در چت بات برای سوالات ورودی از مفهوم تشابه سند استفاده می شود. بنابراین ما با وارد کردن ماژول های لازم شروع می کنیم.

از کتابخانه scikit Learn ، بردار Tfidf را وارد کنید تا مجموعه ای از اسناد خام را به ماتریسی از ویژگی های TF-IDF تبدیل کنید.

from sklearn.feature_extraction.text import TfidfVectorizer

همچنین ، ماژول cosine similarity را از کتابخانه یادگیری scikit وارد کنید.

from sklearn.metrics.pairwise import cosine_similarity

این مورد برای یافتن شباهت بین کلمات وارد شده توسط کاربر و کلمات موجود در مجموعه نوشته استفاده می شود.
ما یک پاسخ عملکردی را تعریف می کنیم که پرسش کاربر را برای یک یا چند کلمه کلیدی شناخته شده جستجو می کند و یکی از چندین پاسخ ممکن را ارائه می دهد. اگر ورودی مطابق با هر یک از کلمات کلیدی را پیدا نکرد، به عنوان مثال پاسخ می دهد: “متاسفم! من متوجه منظور شما نمی شوم”

def response(user_response):
robo_response=""
sent_tokens.append(user_response)
TfidfVec = TfidfVectorizer(tokenizer=LemNormalize, stop_words="english")
tfidf = TfidfVec.fit_transform(sent_tokens)
vals = cosine_similarity(tfidf[-1], tfidf)
idx=vals.argsort()[0][-2]
flat = vals.flatten()
flat.sort()
req_tfidf = flat[-2]
if(req_tfidf==0):
robo_response=robo_response+"I am sorry! I don"t understand you"
return robo_response
else:
robo_response = robo_response+sent_tokens[idx]
return robo_response

سرانجام ، متنی را که می خواهیم ربات ما هنگام شروع و پایان مکالمه استفاده کند وارد می کنیم.

flag=True
print("ROBO: My name is Robo. I will answer your queries about Chatbots. If you want to exit, type Bye!")
while(flag==True):
user_response = input()
user_response=user_response.lower()
if(user_response!="bye"):
if(user_response=="thanks" or user_response=="thank you" ):
flag=False
print("ROBO: You are welcome..")
else:
if(greeting(user_response)!=None):
print("ROBO: "+greeting(user_response))
else:
print("ROBO: ",end="")
print(response(user_response))
sent_tokens.remove(user_response)
else:
flag=False
print("ROBO: Bye! take care..")

تقریبا تمام شد. ما اولین چت بات خود را در NLTK کدنویسی کرده ایم. اکنون بگذارید ببینیم که چگونه با انسان تعامل دارد:

چت بات در پایتون و چت بات

جمع بندی

اگرچه این یک ربات بسیار ساده است، اما راه خوبی برای ورود به NLP و آشنایی با چت بات است. این مثال به شما کمک می کند تا به طراحی و چالش های ایجاد چت بات و یادگیری پایتون  بیاندیشید.

آموزش برنامه نویسی در آکادمی آمانج



8 کاربرد جالب یادگیری عمیق در بینایی رایانه ای

بینایی رایانه ای و یادگیری عمیق در بینایی رایانه ای

رشته بینایی رایانه ای در حال تغییر از روش های آماری به سمت شبکه عصبی یادگیری عمیق است. هنوز هم مشکلات چالش برانگیزی در دید رایانه ای وجود دارد. با این وجود، روش های یادگیری عمیق در حال دستیابی به نتایج مدرن برای حل برخی از مشکلات خاص هستند. تنها عملکرد مدل های یادگیری عمیق در مورد مشکلات نیست که جالب است؛ بلکه این واقعیت که یک مدل واحد می تواند معنی تصاویر را بیاموزد، وظایف بینایی را انجام دهد و نیاز به روش های تخصصی و دستی را برطرف کند نیز جذابیت بسزایی را ایجاد می کند.
در این مقاله 8 کاربرد جالب یادگیری عمیق در بینایی رایانه ای را بررسی می کنیم. ما سعی کردیم به مشکلات کاربر نهایی تمرکز کنیم.

 

1. طبقه بندی تصویر (Image Classification) 

طبقه بندی تصویر شامل قرار دادن یک برچسب به کل تصویر یا عکس است. چند مثال از طبقه بندی تصویر شامل موارد زیر است:
• برچسب زدن تصاویر اشعه ایکس که آیا سرطانی هستند یا خیر
• طبقه بندی اعداد دست نویس
• اختصاص دادن نام به یک عکس یا یک چهره

بینایی رایانه ای و یادگیری عمیق در بینایی رایانه ایشکل الف:  نمونه ای از ارقام دست نویس از مجموعه داده MNIST

یک نمونه محبوب از طبقه بندی تصویر که به عنوان یک معیار مورد استفاده قرار می گیرد مجموعه داده MNIST است. نمونه هایی از طبقه بندی تصویر وجود دارد که شامل عکس اشیاء است. دو نمونه محبوب شامل مجموعه داده های CIFAR-10 و CIFAR-100 است که دارای عکس هایی هستند که به ترتیب در 10 و 100 کلاس طبقه بندی می شوند.
چالش تشخیص تصویری، یک رقابت سالانه است که در آن تیم ها برای بهترین عملکرد در طیف وسیعی از وظایف بینایی رایانه ای بر روی داده های تهیه شده از پایگاه داده ImageNet با یکدیگر رقابت می کنند. بسیاری از پیشرفت های مهم در طبقه بندی تصویر از مقالات منتشر شده حاصل می شود.

بینایی رایانه ای و یادگیری عمیق در بینایی رایانه ای

شکل ب‌:نمونه ای از عکس های اشیاء از مجموعه داده CIFAR-10

 

2. طبقه بندی تصویر با بخش بندی (Image Classification With Localization) 

طبقه بندی تصویر با بخش بندی شامل اختصاص یک برچسب به یک تصویر و نشان دادن محل شی در تصویر توسط یک باکس (کشیدن یک جعبه در اطراف جسم) است. این یک نسخه چالش برانگیز تر از طبقه بندی تصویر است. چند مثال از طبقه بندی تصویر با بخش بندی:
• برچسب زدن تصاویر اشعه ایکس که آیا سرطانی هستند یا خیر و کشیدن باکس در اطراف ناحیه سرطانی
• طبقه بندی عکس حیوانات و کشیدن یک باکس در اطراف حیوان مورد نظر در هر عکس
یک مجموعه داده کلاسیک برای طبقه بندی تصویر با بخش بندی، مجموعه داده های کلاس های بصری PASCAL است.

بینایی رایانه ای و یادگیری عمیق در بینایی رایانه ای

شکل ت‌: نمونه ای از طبقه بندی تصویر با بخش بندی یک سگ از VOC 2012

این کار ممکن است شامل اضافه کردن باکس در اطراف نمونه های متعدد از همان شی در یک تصویر باشد. این عمل را به عنوان ” تشخیص شی” می شناسیم. مجموعه داده ILSVRC2016 برای طبقه بندی تصویر با بخش بندی، یک مجموعه داده محبوب است که از 150000 عکس و 1000 دسته اشیا تشکیل شده است.

بینایی رایانه ای و یادگیری عمیق در بینایی رایانه ای

شکل ث‌: نمونه ای از طبقه بندی تصویر با بخش بندی صندلی های چندگانه از VOC 2012

3. تشخیص شی (Object Detection) 

تشخیص شی طبقه بندی تصویر با بخش بندی است، اگرچه یک تصویر ممکن است شامل چندین شی باشد که نیاز به بخش بندی و طبقه بندی دارند. این یک کار چالش برانگیزتر از طبقه بندی تصویر ساده یا طبقه بندی تصویر با بخش بندی است، زیرا غالبا چندین تصویر در انواع مختلف وجود دارد. غالبا از تکنیک هایی که برای طبقه بندی تصویر با بخش بندی وجود دارد برای شناسایی شی استفاده می شود. مجموعه داده های بصری PASCAL یک مجموعه داده رایج برای تشخیص شی است.

بینایی رایانه ای و یادگیری عمیق در بینایی رایانه ایشکل ج‌: نمونه ای از شناسایی شی در بانک اطلاعات MS COCO

 

4. انتقال سبک ( Style Transfer)

انتقال سبک یا انتقال سبک عصبی وظیفه برداشت سبک از یک یا چند تصویر و استفاده از آن سبک بر روی یک تصویر جدید است. این وظیفه را می توان به عنوان نوعی فیلتر عکس یا تبدیل تصور کرد که ممکن است ارزیابی عینی نداشته باشد. به عنوان مثال می توان به استفاده از سبک آثار هنری خاص و معروف (مثل آثار پابلو پیکاسو یا وینسنت ون گوگ) برای عکس های جدید اشاره کرد. مجموعه داده ها معمولا شامل آثار هنری معروفی است که در دسترس عموم قرار دارند و همچنین مجموعه داده های بینایی رایانه ای استاندارد.

بینایی رایانه ای و یادگیری عمیق در بینایی رایانه ایشکل ح‌: نمونه انتقال سبک عصبی از آثار هنری مشهور به یک عکس. برگرفته از “الگوریتم عصبی از سبک هنری”

 

5. رنگ آمیزی تصویر (Image Colorization)

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

بینایی رایانه ای و یادگیری عمیق در بینایی رایانه ایشکل خ‌: نمونه هایی از رنگ آمیزی عکس. برگرفته از “رنگ آمیزی تصویر رنگارنگ”

 

6. بازسازی تصویر (Image Reconstruction)

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

بینایی رایانه ای و یادگیری عمیق در بینایی رایانه ایشکل د‌: برگرفته از “تصویر حاوی سوراخ های نامنظم با استفاده از اتصالات جزئی”

7. تصویر با وضوح فوق العاده (Image Super-Resolution ) 

تصویر با وضوح فوق العاده وظیفه تولید نسخه جدید یک تصویر با وضوح و جزئیات بالاتر از تصویر اصلی را دارد. داده ها معمولا شامل مجموعه داده های عکس موجود و ایجاد نسخه های کم کیفیت عکس است که مدل ها باید برای ایجاد نسخه های با وضوح فوق العاده آموزش ببینند.

بینایی رایانه ای و یادگیری عمیق در بینایی رایانه ایشکل ذ‌: نمونه ای از نتایج حاصل از تکنیک های مختلف با وضوح فوق العاده

 

8. سنتز تصویر (Image Synthesis)

سنتز تصویر وظیفه ایجاد تغییرات هدفمند در تصاویر موجود یا تصاویر کاملا جدید را دارد. این یک حوزه بسیار گسترده است که به سرعت در حال پیشرفت می باشد. این ممکن است شامل تغییرات جزئی در تصویر و فیلم باشد، مانند:
• تغییر سبک یک شی در یک صحنه
• اضافه کردن یک شی به صحنه
• اضافه کردن چهره به صحنه

بینایی رایانه ای و یادگیری عمیق در بینایی رایانه ای

 

شکل ر‌: نمونه ای از استایلینگ گورخر و اسب

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

یادگیری دیپ لرنینگ در آکادمی آمانج

انجام گام به گام پروژه دیپ لرنینگ در پایتون

mc.jpegمحبوبیت پایتون هر روز رو به افزایش است و کاربران به این نتیجه رسیده اند که پایتون زبانی بسیار قدرتمند و ساده برای استفاده است. در این مقاله به انجام پروژه دیپ لرنینگ در پایتون با کراس (Keras )می پردازیم. کراس یک کتابخانه منبع آزاد پایتون به منظور تهیه و ارزیابی مدل های دیپ لرنینگ است. این کتابخانه به شما این امکان را می دهد که مدل های شبکه عصبی را تنها در چند خط کد تعریف و آموزش دهید.

آنچه در این نوشته خواهیم داشت.

بررسی اجمالی آموزش کراس

ما قصد داریم به آرامی و قدم به قدم توضیح دهیم تا شما بدانید که چگونه می توانید در آینده مدل های خود را ایجاد کنید. مراحلی این آموزش به شرح زیر است: • بارگیری داده ها • تعریف مدل کراس • کامپایل مدل کراس • فیت کردن مدل کراس • ارزیابی مدل کراس • ادغام این آموزش کراس چند پیش نیاز لازم دارد: • پایتون 2 یا 3 را نصب و پیکربندی کنید. • SciPy (شامل NumPy) را نصب و پیکربندی کنید. • کراس و یک بک-اند (Theano یا TensorFlow) نصب و پیکربندی کنید. فایل جدیدی به نام keras_first_network.py ایجاد کنید و کدها را در آن وارد کنید.

1. بارگیری داده ها

اولین قدم، تعریف توابع و کلاس هایی است که قصد استفاده از آن ها را در این آموزش داریم. ما از کتابخانه NumPy برای بارگذاری مجموعه داده و برای تعریف مدل از دو کلاس از کتابخانه Keras استفاده خواهیم کرد. بارگذاری های مورد نیاز عبارتند از:
# first neural network with keras tutorial from numpy import loadtxt from keras.models import Sequential from keras.layers import Dense …
اکنون می توانیم مجموعه داده خود را بارگیری کنیم. در این آموزش کراس قصد داریم از مجموعه داده های دیابت Pima Indians استفاده کنیم. این یک مجموعه داده استاندارد یادگیری ماشین از منبع UCI Machine Learning است. این مجموعه داده، اطلاعات مربوط به سابقه پزشکی بیماران و اینکه آیا آن ها در طی پنج سال اخیر به دیابت مبتلا شده اند یا خیر را، توصیف می کند. طبقه بندی به صورت باینری است (دیابت مثبت به عنوان 1 و دیابت منفی به عنوان 0). همه متغیرهای ورودی که توصیف بیماران است به صورت عددی هستند. همین امر استفاده مستقیم از شبکه های عصبی را آسان تر می کند. مجموعه داده های ما در لینک های زیر قابل دسترس می باشند:
داده ها را دانلود کرده و آن را در دایرکتوری خود، جایی که فایل پایتون قرار دارد، قرار دهید. آن را با نام زیر ذخیره کنید:
pima-indians-diabetes.csv اکنون می توانیم با استفاده از تابع loadtxt() فایل را به عنوان ماتریس اعداد بارگذاری کنیم. هشت متغیر ورودی و یک متغیر خروجی (آخرین ستون) وجود دارد. ما در حال آموزش یک مدل برای ترسیم ردیف متغیرهای ورودی (X) به یک متغیر خروجی (y) هستیم که اغلب آن ها را بصورت y = f (X) خلاصه می کنیم. متغیرها را می توان به شکل زیر خلاصه کرد: متغیرهای ورودی (X): • تعداد دفعات بارداری • غلظت گلوکز در پلاسما • فشار خون دیاستولیک (میلی متر جیوه) • ضخامت پوست ماهیچه سه سر (میلی متر) • انسولین سرم در بازه 2 ساعته (mu U / ml) • شاخص توده بدنی (2(قد به متر) / وزن به کیلوگرم) • سوابق دیابت در خانواده • سن متغیرهای خروجی (y): • متغیر کلاس (0 یا 1) پس از بارگیری فایل CSV در حافظه، می توان ستون داده ها را به متغیرهای ورودی و خروجی تقسیم کرد. داده ها در آرایه های دوبعدی شامل سطر و ستون ذخیره می شوند. می توانیم با انتخاب زیر مجموعه ستون ها توسط عملگر برش استاندارد(standard NumPy slice operator)، آرایه را به دو قسمت تقسیم کنیم. روش دیگر این است که از طریق برش 0:8، 8 ستون اول از 0 تا 7 را انتخاب کنیم. سپس می توانیم ستون خروجی (متغیر نهم) را از طریق ایندکس 8 انتخاب کنیم.
# load the dataset
dataset = loadtxt(‘pima-indians-diabetes.csv’, delimiter=’,’)
# split into input (X) and output (y) variables
X = dataset[:,0:8]
y = dataset[:,8]
اکنون زمان تعریف مدل شبکه عصبی است.

2. تعریف مدل کراس

مدل ها در کراس به عنوان دنباله ای از لایه ها تعریف می شوند. ما یک مدل Sequential ایجاد کرده و لایه ها را اضافه می کنیم. اطمینان حاصل می کنیم که لایه ورودی از تعداد ورودی های مناسب برخوردار است. غالبا بهترین نوع ساختار از نظر تعداد لایه ها و انواع آن، از طریق سعی و خطا مشخص می شود. در این پروژه، ما از یک ساختار شبکه کاملا متصل (fully-connected) با سه لایه استفاده خواهیم کرد. لایه های کاملا متصل با استفاده از کلاس Dense تعریف می شوند. ما می توانیم تعداد نورون ها یا گره ها را در لایه به عنوان اولین آرگومان مشخص کرده و با استفاده از آرگومان فعال سازی، عملکرد فعال سازی را تعیین کنیم. ما از تابع فعال سازی واحد خطی اصلاح شده که به آن ReLU گفته می شود در دو لایه اول و از تابع Sigmoid در لایه خروجی استفاده خواهیم کرد. پیش از این توابع فعال سازی Sigmoid و Tanh برای همه لایه ها ارجحیت داشتند؛ اما امروزه با استفاده از تابع فعال سازی ReLU عملکرد بهتری حاصل می شود. ما از Sigmoid روی لایه خروجی استفاده می کنیم تا اطمینان حاصل کنیم که خروجی شبکه ما بین 0 تا 1 است.
# define the keras model
model = Sequential()
model.add(Dense(12, input_dim=8, activation=’relu’))
model.add(Dense(8, activation=’relu’))
model.add(Dense(1, activation=’sigmoid’))

3. کامپایل مدل کراس

برای کامپایل این مدل از کتابخانه های عددی کارآمد مانند Theano یا TensorFlow استفاده می شود. بک-اند به طور خودکار بهترین راه برای آموزش مدل و اجرای آن بر روی سخت افزار شما را انتخاب می کند. حین کامپایل می بایست برخی از ویژگی های اضافی ضروری برای آموزش شبکه را مشخص کنیم. به یاد داشته باشید آموزش یک شبکه به معنای پیدا کردن بهترین مجموعه وزن ها برای ترسیم ورودی ها به خروجی در مجموعه داده است. برای ارزیابی مجموعه ای از وزن ها باید از تابع ضرر(loss function) استفاده کنیم. همچنین از بهینه ساز برای جستجوی وزن های مختلف در شبکه استفاده می شود. در این پروژه، از آنتروپی متقاطع به عنوان آرگومان ضرر استفاده خواهیم کرد. این تابع برای طبقه بندی مسائل باینری مورد استفاده قرار گرفته و در کراس به عنوان “binary_crossentropy” تعریف شده است. برای بهینه ساز، الگوریتم “adam”را تعریف خواهیم کرد؛ که به دلیل قابلیت تنظیم خودکار و کارآمد بودن در طیف گسترده ای از مسائل، از محبوبیت بالایی برخوردار است. در نهایت، چون این یک مساله طبقه بندی است، از آرگوکان metrics به منظور طبقه بندی و گزارش استفاده خواهیم کرد.
# compile the keras model
model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])

4. فیت کردن مدل کراس

ما می توانیم با فراخوانی تابع fit()، مدل خود را آموزش داده یا فیت کنیم. قبل از شروع این مرحله به تعریف دو مفهوم epoch و batch می پردازیم: Epoch: دوره: یک دور به روز رسانی شبکه برای مجموعه داده آموزش Batch: دسته: یک یا چند نمونه در نظر گرفته شده توسط مدل در یک دوره قبل از به روزرسانی وزن. روند آموزش برای تعداد مشخصی از تکرارها در مجموعه داده به نام epochs اجرا می شود، که ما باید با استفاده از آرگومان epochs آن را مشخص کنیم. ما همچنین می بایست تعداد ردیف های مجموعه داده را قبل از به روزرسانی وزن مدل در هر دوره، تنظیم کنیم. برای این منظور از آرگومان batch_size استفاده می کنیم. دوره و دسته در این پروژه به ترتیب برابر با 150 و 10 می باشد. این پیکربندی ها می توانند به صورت آزمایشی با سعی و خطا انتخاب شوند. مدل همیشه دارای خطا خواهد بود، اما میزان خطا پس از مدتی یکنواخت می شود. به این فرایند “همگرایی مدل” گفته می شود.
# fit the keras model on the dataset
model.fit(X, y, epochs=150, batch_size=10)

5. ارزیابی مدل کراس

شما می توانید با استفاده از تابع evaluate()، مدل خود را ارزیابی کرده و همان ورودی و خروجی مورد استفاده برای آموزش مدل را وارد کنید. تابع ارزیابی لیستی را با دو مقدار ارائه می دهد. اولین مورد ضرر مدل و دومین مورد، دقت مدل در مجموعه داده خواهد بود. ما در این پروژه فقط به گزارش دقت نیاز داریم.
# evaluate the keras model
_, accuracy = model.evaluate(X, y)
print(‘Accuracy: %.2f’ % (accuracy*100))

6. ادغام

اکنون همه را با هم ادغام می کنیم.
# first neural network with keras tutorial
from numpy import loadtxt
from keras.models import Sequential
from keras.layers import Dense
# load the dataset
dataset = loadtxt(‘pima-indians-diabetes.csv’, delimiter=’,’)
# split into input (X) and output (y) variables
X = dataset[:,0:8]
y = dataset[:,8]
# define the keras model
model = Sequential()
model.add(Dense(12, input_dim=8, activation=’relu’))
model.add(Dense(8, activation=’relu’))
model.add(Dense(1, activation=’sigmoid’))
# compile the keras model
model.compile(loss=’binary_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])
# fit the keras model on the dataset
model.fit(X, y, epochs=150, batch_size=10)
# evaluate the keras model
_, accuracy = model.evaluate(X, y)
print(‘Accuracy: %.2f’ % (accuracy*100))
می توانید کلیه کد ها را در فایل پایتون خود کپی کرده و به عنوان “keras_first_network.py” در همان فهرست داده های “pima-indians-diabet.csv” ذخیره کنید. سپس می توانید فایل پایتون را به عنوان یک اسکریپت از خط فرمان خود به شرح زیر اجرا کنید:
python keras_first_network.py
در حالت ایده آل، تمایل داریم که ضرر صفر و دقت یک باشد. اما این ممکن نیست و مدل همواره با خطا روبرو خواهد بود. هدف این است که پیکربندی را انتخاب کنیم که به کمترین میزان ضرر و بیشترین میزان دقت دست یابد.
768/768 [==============================] – 0s 63us/step – loss: 0.4817 – acc: 0.7708
Epoch 147/150
768/768 [==============================] – 0s 63us/step – loss: 0.4764 – acc: 0.7747
Epoch 148/150
768/768 [==============================] – 0s 63us/step – loss: 0.4737 – acc: 0.7682
Epoch 149/150
768/768 [==============================] – 0s 64us/step – loss: 0.4730 – acc: 0.7747
Epoch 150/150
768/768 [==============================] – 0s 63us/step – loss: 0.4754 – acc: 0.7799
768/768 [==============================] – 0s 38us/step
Accuracy: 76.56
شبکه عصبی در دیپ لرنینگ یک الگوریتم تصادفی است؛ به این معنی که همان الگوریتم روی داده های یکسان می تواند هر بار مدل متفاوتی را آموزش دهد. این یکی از ویژگی های شبکه عصبی است، نه یک اشکال. واریانس عملکرد مدل بدان معنی است که برای بدست آوردن تقریبی معقول از عملکرد مدل، ممکن است لازم باشد شما بارها و بارها آن را متناسب کرده و میانگین دقت را محاسبه کنید. برای مثال در زیر شاهد دقت های متفاوت از پنج اجرای مختلف همین مثال را مشاهده می کنید:
Accuracy: 75.00
Accuracy: 77.73
Accuracy: 77.60
Accuracy: 78.12
Accuracy: 76.17

هفت گام مهم برای موفقیت در بازاریابی وابسته ( قسمت اول)

بازاریابی واسطه ای یا وابسته

بازاریابی وابسته یا واسطه ای چیست؟ ایا شما هم دوست دارید تا وارد این صنعت پر درامد شوید؟
برای پاسخ به پرسش های خود و شروع این کار در مسیری درست و مطمئن با ما در این مقاله همراه باشید.
طیق آماری که امسال توسط Statista منتشر شد، کسب و کارها در سال 2020 در این حوزه حدود 8.2 میلیارد دلار هزینه خواهند کرد پس وقت آن رسیده که همین امروز شروع کنید تا شما هم بتوانید بخشی از این سیستم کلیدی و پردرامد باشید.

 

بازاریابی وابسته یا واسطه ای چیست؟ 

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

بازاریابی وابسته چطور کار میکند؟ 

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

1) به شرکت اول کمک میکند بفهمد که این خرید از طریق کدام بازاریاب وابسته انجام شده است
2) این لینک معمولا دارای یک تاریخ انقضای مصرف دارد( مثل رمز دوم پویای ما!) بنابر این حتی اگر خریدار در پرداخت تاخیر کند شما باز هم کمیسیون خود را دریافت خواهید کرد.

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

از بازاریابی وابسته چقدر میتوانم پول در بیاورم؟ 

بهترین پاسخ این است که واقعا درامد ازین طریق هیچ محدودیت خاصی ندارد و این کاملا به دنبال کننده های شما، جامعه هدف شما، شکل تبلیغ و میزان دقت و ممارستی که درآن به کار میبرید بستگی دارد. برای مثال پت فیلین یکی از بلاگرهای امریکایی شهر نیویورک در سال 2017 در یک ماه توانست حدود 100 هزار دلار کمیسیون از سایت امازون فقط دریافت کند که این عدد واقعا بی نظیر است.

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

چطور بازاریابی وابسته را شروع کنیم

چطور بازاریابی وابسته یا واسطه ای را شروع کنیم؟ 

برای شروع و انجام این کار، 7 قدم زیر را باید طی کنید:

1) در مورد یک شبکه اجتماعی تصمیم گیری کنید 

گرچه این‌کار تقریبا ساده به نظر می‌رسد ولی از جهاتی خیلی تخصصی است. در سنتی و متداول ترین حالت شما می‌توانید با راه اندازی یک اکانت اینستاگرام و تولید محتوای تصویری و متنی مناسب شروع به جذب مخاطب برای خود کنید.
البته راه اندازی وبلاگ شخصی نیز میتواند در این مسیر مفید باشد چرا که تقریبا هزینه خاصی ندارد و همچنین، مخاطبان با ارزشی نیز در اختیار شما قرار میدهد.
استفاده از کانال یوتوب و فیس بوک نیز بسیار مفید است البته متاسفانه نه در ایران!
قرار دادن لینک خرید در بیو پروفایل شخصیتون در اینستاگرام و تولید محتوای مناسب‌ (که در ادامه به آن اشاره خواهیم کرد) به همراه یک دعوت (call to action) خوب، شما را به سرعت در مسیر موفقیت قرار خواهد داد.

2) بازار مناسب خود را انتخاب کنید

باید صادق باشیم که اگر شما بخواهید در اینستاگرام وارد حوزه طنز یا فشن شوید، شانس شما با حضور بخش قابل توجه و قدرتمندی از بلاگرها و اینفلوئنسرها کاهش می‌یابد پس باید وارد یک میدان دیگر شد.
برای مثال نقد فیلم، معرفی کتاب، موزیک و… زمینه رشد بیشتری داشته و مسیر پیشرفت شما با محتوای متفاوت و جذاب به سرعت افزایش می‌یابد.
موضوعات خود را جذاب و داغ نگه دارید و با عکس‌های خاص و متفاوت برگ برنده خود را نشان دهید.
برای مثال وقتی همه ما درگیر موضوعات متداول و رایج اینستاگرام بودیم یکی از دوستان من شروع به نقد و بررسی مسابقات والیبال به طور حرفه ای کرد و الان میتوان گفت در حوزه خود بی رقیب است.
حالا الان او شاید نتواند بازاریاب وابسته کیف چرم باشد ولی درفروش لباس ورزشی می‌تواند عالی عمل کند.
بعد از انکه در یک زمینه خاص حرفه ای شدید و مخاطبان خود را پیدا کردید حال میتوانید زمینه فعالیت خود را گسترش دهید و شانس خود را در انتخاب جامعه هدف خود افزایش دهید.

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

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

3)‌ برنامه بازاریابی وابسته خود را پیدا کنید

ما به طور کلی سه دسته برنامه بازاریابی وابسته داریم:

1) برنامه بازاریابی با کمیسیون بالا وتعداد خریدار کم

این برنامه برای بازارهای کوچک ولی پر درامد میبباشد، برای مثال یک استارتاپ به شما میگوید اگر شما فقط ماهی 80 مشتری به روش خود و از طریق لینکی که در اختیار شما قرار می‌دهیم به سمت ما بفرستید، ما به شما ماهی 2 میلیون تومان میدهیم .
این میزان درامد برای این تعداد مشتری بسیار عالی میباشد و معمولا این برنامه ها رقابت بالاتری بین بازاریابان واسطه ای دارد . البته اگر تازه کار هستید ورود به این برنامه به شما توصیه نمیشود چون رقبای شما بازاریاب‌هایی حرفه ای، با سابقه فعالیت و اعتبار بالا هستند.

2) برنامه هایی با کمیسیون کم و تعداد خریدار بالا

این برنامه ها گرچه کمیسیون کمی دارند ولی محصولاتشان جذابیت بالاتری برای جامعه دارد.
همه ما پلی استیشن 4 بازی کرده ایم، این کنسول بازی دارای بازی های بسیار متنوعی است که فروش بالایی داشته و به طور میانگین 300-400 هزار تومان قیمت دارد.
کمیسیون فروش هر یک از این بازی ها شاید حدود 10 هزار تومان باشد.
مزیت این برنامه این است که معمولا فروشگاه ها محصولات خود را به صورت پکیج به به شما ارائه می‌دهند مثلا یکی از تبلیغات جالب سایت آمارون برای بازاریابان واسطه ای بدین شکل می‌باشد:

در هر چیزی که از آمازون بفروشید میتوانید 10? کمیسیون بگیرید

نکته جالب و خوب در مورد این برنامه ها این است که شما کمیسیون هرآنچه که از طریق لینک شما خریداری میشود را دریافت میکنید نه فقط همان چیزی که تبلیغ کرده اید.
برای مثال شما یک پودرلباس شویی تبلیغ میکنید و کاربر شما از طریق لینک شما به خرید اقدام میکند اما نظرش عوض میشود و تصمیم میگیرد یک ماشین لباس شویی هم خریداری کند!
شما کمیسیون هر دو را دریافت خواهید کرد. همینقدر هیجان انگیز!
ولی شما برای سود دهی خوب نیاز به ترافیک و حجم مخاطب قابل توجهی نیاز دارید.

3) برنامه هایی با کمیسیون بالا و تعداد خریداربالا

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

چطور تصمیم بگیریم از کدام برنامه بازاریابی وابسته استفاده کنیم؟

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

 

در قسمت دوم مقاله 7 گام مهم برای موفقیت در دیجیتال مارکتینگ رنقبازاریابی وابسته، به 4 نکته باقی مانده و اصلی این نوع بازاریابی خواهیم پرداخت و با یک نتیجه گیری اصولی و منطقی شما را در مسیری درست، به سمت هدف راهنمایی خواهیم کرد پس همراه ما باشید.

 

 


چک لیستی برای بهبود UI محصولات شما

این مقاله بیشتر برای مبتدیان یادگیری طراحی UI مفیدخواهد بود، با این وجود همه طراحان می توانند بدون توجه به تجربه قبلی، این نکات مهم را در ذهن داشته باشند. این نکات کمتر به ترند های طراحی رابط کاربری میپردازد و بیشتر در مورد اصول و مبانی طراحی که اغلب فراموش می شوند میباشد .پس با ما همراه باشید تا شما را با لیستی از اصول مهم جهت کمک به بهبود طرح هایتان آشنا کنیم.

 

تایپوگرافی 

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

حروف بزرگ 

رابط کاربری (UI)

هر بار که از متنی استفاده می کنید که کاملاً از حروف بزرگ تشکیل شده است ، فاصله بین حروف را فراموش نکنید. این باعث می شود حرف ها به یکدیگر نچسبند و متن شما را خواناتر میکند.

فونت های باریک و کم رنگ 

رابط کاربری (UI)

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

اندازه فونت سرتیتر ها و متن اصلی 

.بیایید در مورد تایپوگرافی  وب صحبت کنیم.
شش عنوان وجود دارد (h1 تا h6). ابتدا باید مطمئن شوید که بیش از چهارحالت در پروژه خود ندارید و ترتیب آنها را کنترل کنید.
بزرگترین عنوان (ممکن است در اولین بخش صفحه اصلی قرار گیرد) یک وب سایت یا صفحه فرود ممکن است از نظر بزرگی به اندازه دلخواه شما باشد.ولی اطمینان حاصل کنید که بیش از حد با بقیه عناوین خود فاصله نگیرید زیرا خواندن متن خیلی طولانی به اندازه خواندن متن خیلی کوتاه بد است.
 برای متن اصلی. تنظیمات پیش فرض مرورگر شما (اجازه دهید از Google Chrome به عنوان مرجع استفاده کنیم) هر متنی را در اندازه 16px نمایش می دهد.
این اندازه برای خواندن بسیار راحت است ،هرچند من تمایل دارم که برای متن اصلی از اندازه کمتر از 17 px و 14 px استفاده نکنم.
12px را به عنوان کمترین اندازه ممکن در نظر داشته باشید . اندازه های کمتر به دلیل مشکلات بینایی یا مانیتورهای بد قابل خواندن نیستند. به یاد داشته باشید که ازاندازه های نزدیک به هم در یک متن استفاده نکنید . مثلا از 16px و 17px در یک بخش .این باعث سردرگمی و بی نظمی در ظاهر یک محصول می شود و این کار کاملاً بی دلیل میباشد.

ارتفاع خط 

رابط کاربری (UI)

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

سلسله مراتب متن و سرتیترها

رابط کاربری UI

برای برجسته کردن قسمت های مهم یک متن باید از Bold text استفاده شود.که شامل عناوین ، پیوندها و دکمه ها و بعضی اوقات بخش های تأکید شده یک متن میباشد. ولی اگرجسورانه برای کل متن استفاده شود ، مشخص نمی شود که به دنبال چه چیزی در متن هستید و کدام قسمت ها مهمتر است پس Bold text را صحیح بگذارید. همه ی قسمت ها ممکن است یه یک اندازه مهم نباشند.

رنگ متن

طراحی رابط کاربری UI

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

 فاصله و حاشیه ها

فضاهای ی منفی (فضاهای خالی بین عناصر) برای یک طراحی خوب ضروری است.فضا به شفاف سازی روابط بین عناصر کمک کرده و ریتم و تعادل کلی را فراهم می کند.

فریم ها و خطوط اضافی را رها کنید.

آسانترین راه برای جدا کردن یک بلوک معنایی از دیگری استفاده از یک قاب یا یک خط 1px است.
من قطعات طراحی را دیده ام که باکسی در داخل یک باکس دیگر وجود داشته و چند جعبه دیگر درداخل همان باکس می باشد ، هرجعبه دارای یک قاب 1px است. در چنین مواقعی باید فکر کنید  آیا این باکس ها واقعاً مناسب و ضروری است؟ گاهی اوقات استفاده از یک فریم 1px معقول تر است .

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

حاشیه ها

حاشیه ها به صورت بصری در تعیین اینکه آیا یک عنصر متعلق به عنصر دیگر است کمک می کند. بیایید طرح یک مقاله را در یک سایت خبری در نظر بگیریم.
در نظر بگیرید شامل یک تصویر ، عنوان ، 3-4 سطر متن پیش نمایش و تاریخ انتشار است.
تاریخ باید حاشیه کمی بزرگتر از حاشیه بین عنوان و متن داشته باشد.و تصویر باید با بیشترین فاصله نسبت به تاریخ قرار گیرد.برای درک بهتر به تصویر مرتبط زیر نگاه کنید.

طراحی رابط کاربری UI

استفاده کمتر از عناصر

همیشه مشتری یا مدیری وجود دارد که می خواهد همه اطلاعات را در یک بخش یا یک صفحه برنامه تلفن همراه قرار دهد. برای مثال عنوان ، تلفن، منو، یک پیشنهاد ویژه و یک آرم بزرگ.!
فراموش نکنید هرچه کاربراطلاعات کمتری را به طورهمزمان دریافت کند ، انجام یک عمل برای او آسان تر می شود (برای مثال ، برقراری تماس تلفنی ). دریافت اطلاعات به صورت تدریجی تجربه مشتری را آسان تر و لذت بخش تر می کند. مشتری هرگز نباید به سختی طرح رابط شما را رمزگشایی کند. فراموش نکنید شماری ازعناصر کاملاً زیبا و بدون عیب در کنار هم در نهایت زیبا نخواهد بود.

حاشیه های کناری متفاوت در صفحه نمایش

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

طراحی رابط کاربری

رنگ ها و تصاویر

تصاویر ،نمادها و پس زمینه حالت کلی یک محصول را تنظیم می کنند. تصاویر باید دقیقاً آنچه را که یک شرکت ، یک برنامه یا یک وب سایت ارائه می دهد را نشان دهند.

لوگو ها

ساختن یک لوگو خوب بسیار دشوار است. با این وجود ، مطمئناً یک طراح فقط با رعایت قوانین و اصول اساسی می تواند یک لوگو مناسب را ایجاد کند. به عنوان مثال ، رعایت انتخاب دقیق رنگ.
اگر سخت است که یک تصویر (نماد) را بر روی لوگو قرار دهید – این کار را نکنید. سعی کنید آن را به یک آرم متشکل از فونت تبدیل کنید مسلما طراحی ساده ولی حرفه ای ارزشمند تر است.

سایه ها

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

آیکون ها و تصاویر

طراحی رابط کاربری

 

هرفایلی که بتواند وکتور باشد باید وکتور باشد. تمام آیکون ها ، فلش ها و لوگوها باید با فرمت SVG به توسعه دهندگان داده شوند (PDF برای توسعه گر iOS).
آیکون ها PNG دارای لبه های مبهم هستند و به خصوص در نمایشگرهای رتینا و ال ای دی ظاهری بد خواهند داشت. علاوه بر این ، تصاویر وکتور حافظه کمتری را اشغال می کنند.
اگر در حال کار روی مجموعه ای از آیکون های وب سایت یا برنامه ها هستید ، مطمئن شوید که همه آنها به یک “خانواده” تعلق دارند. این به معنای عرض برابرو شعاع مرزی برابر است. بررسی کنید تا مطمئن شوید که آیکون ها در یک مربع با اندازه برابر قرار گرفته اند و از حجم مساوی برخوردار میباشند. اگر برخی از آیکون ها دارای حلقه هستند ، مطمئن شوید که این حلقه ها قطر یکسانی دارند. شمایل کلی باید از سبک ثابتی برخوردار باشد.

 

نکات پایانی

از چیدمان های عجیب خودداری کنید.بیایید به مثال پیش نمایش اخبار که در بخش فضای خالی و حاشیه ها مطالعه کرده ایم برگردیم. اگر عناصر (تصویر ، عنوان ، متن و تاریخ) را به ترتیب غیر متعارف مرتب کنیم ، ممکن است گیج کننده باشد. سعی کنید به طرح های رابط آشنا بپردازید. تکراری بودن لزوماً به معنای کسل کننده بودن یک طرح نیست ، شما همیشه می توانید خلاقیت را در بخش های دیگر پروژه نشان دهید.
بدون یک دلیل منطقی از قراردادن آزمایشی عناصر در صفحه نمایش/ برگه و یا کارت خودداری کنید. زیرا ممکن است کاربر دچار سردرگمی شود و سایت شما را ترک کرده یا برنامه را حذف کند. به یاد داشته باشید که یک طراح و یک هنرمند حرفه های مختلفی دارند. در طراحی ما محصولات را به افراد معرفی میکنیم، این بدان معناست که انگیزه های خلاقانه شخصی شما فقط در جایی اعمال می شود که با تجربه کاربر تداخل نداشته باشد.

UI دیزاین

اندازه های طرح بندی

قبل از شروع طراحی روی یک برنامه تلفن همراه ، مهم است که در مورد اندازه صفحه نمایش از توسعه دهندگان سوال کنید.
معمولاً برای iOS 320px و برای Android 360px خواهد بود. در حالی که در برنامه های تلفن همراه کم و بیش واضح و قابل پیش بینی است ، طراحی وب سایت ممکن است چالش برانگیز باشد زیرا در طیف گسترده ای از دستگاه ها مورد استفاده قرار می گیرد.
یکی از تجارب شخصی من به عنوان یک توسعه دهنده frontend پروژه ای بود که طرح ارائه شده برای مانیتورهای عظیم ساخته شده بود و حاشیه های 400-600 پیکسل بین بلوک ها قرار داشت. اندازه قلم بزرگ  ودر کل  شبکه عجیبی وجود داشت . خوشبختانه من به عنوان یک طراح با تنظیم حاشیه ها و اندازه ها توانستم این مشکل را برطرف کنم تا در هر صفحه ای خوب به نظر برسد.

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

متن Lorem Impsum

Lorem Impsum متنی بدون معنی است که عموما برای بررسی جانمایی متن در طراحی‌های سنتی و دیجیتال استفاده می‌شود .
متن نمونه Lorem Impsum در طراحی شما غیر حرفه ای به نظر می رسد بنابراین از استفاده آن خودداری کنید.
این تنها نشان دهنده این است که یک طراح برای ایجاد  محتوای مناسب تنبل بوده است. علاوه بر این ، دیگر نیازی نیست که آن را خودتان ایجاد کنید ،برخی افزونه ها برای طرح اولیه وجود دارد که محتوا را برای شما تولید می کند. نکته دیگر: سعی کنید بلاک های کپی را تکرار نکنید ، حتی اگر فقط برای هدف نمایشی باشد. تصاویر مختلف  ، عناوین و متن های پیش نمایش با طول های مختلفی را  قرار دهید.
فراموش نکنید تمامیقوانین طراحی استثنائات خود را دارد و همیشه موردی وجود خواهد داشت که شما باید برعکس آن را انجام دهید.
اما در بیشتر موارد نکات گفته شده به بهبود طراحی شما کمک می کند. امیدوارم که این مقاله از آمانج مفید باشد.