{"id":43136,"date":"2026-07-07T08:01:34","date_gmt":"2026-07-07T05:01:34","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=43136"},"modified":"2026-07-07T08:01:56","modified_gmt":"2026-07-07T05:01:56","slug":"python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/","title":{"rendered":"Python 3 ve NLTK Kullanarak Duygu Analizi (Sentiment Analysis) Nas\u0131l Yap\u0131l\u0131r?"},"content":{"rendered":"<h2>Python 3 ve NLTK Kullanarak Duygu Analizi (Sentiment Analysis) Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>Do\u011fal Dil \u0130\u015fleme (NLP &#8211; Natural Language Processing), g\u00fcn\u00fcm\u00fcz teknoloji d\u00fcnyas\u0131nda insan dilini anlamland\u0131rmak, analiz etmek ve makine \u00f6\u011frenimi modelleriyle i\u015flemek i\u00e7in kullan\u0131lan en kritik alanlardan biridir. NLP&#8217;nin en pop\u00fcler ve ticari a\u00e7\u0131dan en de\u011ferli alt dallar\u0131ndan biri ise Duygu Analizi (Sentiment Analysis) veya di\u011fer ad\u0131yla fikir madencili\u011fidir. Duygu analizi; bir metnin yazar\u0131n\u0131n belirli bir konu, \u00fcr\u00fcn veya durum hakk\u0131nda olumlu, olumsuz veya n\u00f6tr bir tav\u0131r sergileyip sergilemedi\u011fini otomatik olarak belirleme s\u00fcrecidir.<\/p>\n<p>Bu makalede, Python 3 ve Do\u011fal Dil \u0130\u015fleme d\u00fcnyas\u0131n\u0131n en k\u00f6kl\u00fc k\u00fct\u00fcphanelerinden biri olan <strong>Natural Language Toolkit (NLTK)<\/strong> kullanarak ad\u0131m ad\u0131m u\u00e7tan uca bir duygu analizi modelinin nas\u0131l kurulaca\u011f\u0131n\u0131 \u00f6\u011freneceksiniz. Ger\u00e7ek\u00e7i bir senaryo \u00fczerinden ilerlemek ad\u0131na, Twitter (yeni ad\u0131yla X) verileriyle \u00e7al\u0131\u015facak, ham metinleri temizleyecek, normalle\u015ftirecek ve bir Naive Bayes s\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 e\u011fiterek yeni metinlerin duygu durumunu tahmin edece\u011fiz.<\/p>\n<h3>Duygu Analizinin \u00d6nemi ve Kullan\u0131m Alanlar\u0131<\/h3>\n<p>Duygu analizi, \u015firketlerin ve ara\u015ft\u0131rmac\u0131lar\u0131n b\u00fcy\u00fck miktardaki metin verilerinden anlaml\u0131 i\u00e7g\u00f6r\u00fcler elde etmelerini sa\u011flar. Manuel olarak okunmas\u0131 imkans\u0131z olan milyonlarca sat\u0131rl\u0131k veriler, bu algoritmalar sayesinde saniyeler i\u00e7inde analiz edilebilir. Ba\u015fl\u0131ca kullan\u0131m alanlar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>M\u00fc\u015fteri Geri Bildirimleri ve \u00dcr\u00fcn De\u011ferlendirmeleri:<\/strong> E-ticaret sitelerindeki kullan\u0131c\u0131 yorumlar\u0131n\u0131n analiz edilerek \u00fcr\u00fcnlerin g\u00fc\u00e7l\u00fc ve zay\u0131f y\u00f6nlerinin belirlenmesi.<\/li>\n<li><strong>Sosyal Medya \u0130zleme (Social Listening):<\/strong> Bir marka, kampanya veya siyasi fig\u00fcr hakk\u0131nda sosyal medyada yap\u0131lan payla\u015f\u0131mlar\u0131n genel e\u011filiminin (olumlu\/olumsuz) \u00f6l\u00e7\u00fclmesi.<\/li>\n<li><strong>Finansal Analiz:<\/strong> Haber ba\u015fl\u0131klar\u0131n\u0131n ve finansal raporlar\u0131n analiz edilerek borsa e\u011filimlerinin veya hisse senedi hareketlerinin tahmin edilmesi.<\/li>\n<li><strong>M\u00fc\u015fteri Hizmetleri:<\/strong> Destek taleplerinin (ticket) aciliyetini ve m\u00fc\u015fterinin \u00f6fke d\u00fczeyini tespit ederek \u00f6nceliklendirme yap\u0131lmas\u0131.<\/li>\n<\/ul>\n<h3>Gereksinimler ve \u00c7al\u0131\u015fma Ortam\u0131n\u0131n Haz\u0131rlanmas\u0131<\/h3>\n<p>Bu k\u0131lavuzu takip edebilmek i\u00e7in bilgisayar\u0131n\u0131zda Python 3&#8217;\u00fcn kurulu olmas\u0131 gerekmektedir. Projemizde kullanaca\u011f\u0131m\u0131z temel k\u00fct\u00fcphane NLTK&#8217;dir. Ayr\u0131ca metin temizleme i\u015flemleri i\u00e7in Python&#8217;un yerle\u015fik d\u00fczenli ifadeler (regular expressions &#8211; <code>re<\/code>) k\u00fct\u00fcphanesinden yararlanaca\u011f\u0131z.<\/p>\n<p>\u0130lk olarak terminalinizi veya komut sat\u0131r\u0131n\u0131z\u0131 a\u00e7arak NLTK k\u00fct\u00fcphanesini sisteminize y\u00fckleyin:<\/p>\n<pre><code>pip install nltk<\/code><\/pre>\n<p>NLTK k\u00fct\u00fcphanesi kurulduktan sonra, k\u00fct\u00fcphanenin sundu\u011fu veri k\u00fcmelerini (corpora) ve dil modellerini indirmemiz gerekir. Python etkile\u015fimli kabu\u011funu (Python REPL) veya bir Python dosyas\u0131n\u0131 a\u00e7arak a\u015fa\u011f\u0131daki kodlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>import nltk\n\n<h2>Twitter veri k\u00fcmesini indiriyoruz<\/h2>\nnltk.download('twitter_samples')\n\n<h2>Metinleri kelimelere ay\u0131rmak i\u00e7in gerekli olan tokenizer modelini indiriyoruz<\/h2>\nnltk.download('punkt')\n\n<h2>Kelimelerin k\u00f6klerini bulmak (lemmatization) i\u00e7in WordNet veritaban\u0131n\u0131 indiriyoruz<\/h2>\nnltk.download('wordnet')\nnltk.download('omw-1.4')\n\n<h2>Kelime t\u00fcrlerini (isim, fiil vb.) belirlemek i\u00e7in POS tagger modelini indiriyoruz<\/h2>\nnltk.download('averaged_perceptron_tagger')\n\n<h2>Etkisiz kelimeleri (stopwords) indiriyoruz<\/h2>\nnltk.download('stopwords')<\/code><\/pre>\n<p>Bu indirmeler tamamland\u0131\u011f\u0131nda, projemiz i\u00e7in gerekli olan t\u00fcm veri tabanlar\u0131 ve modeller yerel diskinize kaydedilmi\u015f olacakt\u0131r. Art\u0131k veri setimizi incelemeye ba\u015flayabiliriz.<\/p>\n<h3>Ad\u0131m 1: Veri Setini \u0130ncelemek ve Y\u00fcklemek<\/h3>\n<p>NLTK, duygu analizi modellerini e\u011fitmek ve test etmek i\u00e7in haz\u0131r bir Twitter veri k\u00fcmesi (<code>twitter_samples<\/code>) sunar. Bu veri k\u00fcmesinde 5.000 adet olumlu (positive) tweet, 5.000 adet olumsuz (negative) tweet ve 20.000 adet genel (n\u00f6tr\/kar\u0131\u015f\u0131k) tweet bulunmaktad\u0131r. Biz bu \u00e7al\u0131\u015fmada dengeli bir s\u0131n\u0131fland\u0131rma yapmak i\u00e7in olumlu ve olumsuz tweetleri kullanaca\u011f\u0131z.<\/p>\n<p>Veri setini y\u00fcklemek ve i\u00e7eri\u011fine g\u00f6z atmak i\u00e7in a\u015fa\u011f\u0131daki kodu yazal\u0131m:<\/p>\n<pre><code>from nltk.corpus import twitter_samples\n\n<h2>Olumlu ve olumsuz tweetleri y\u00fckl\u00fcyoruz<\/h2>\npositive_tweets = twitter_samples.strings('positive_tweets.json')\nnegative_tweets = twitter_samples.strings('negative_tweets.json')\n\nprint(f\"Toplam Olumlu Tweet Say\u0131s\u0131: {len(positive_tweets)}\")\nprint(f\"Toplam Olumsuz Tweet Say\u0131s\u0131: {len(negative_tweets)}\")\n\n<h2>\u00d6rnek tweetleri yazd\u0131ral\u0131m<\/h2>\nprint(\"\\n\u00d6rnek Olumlu Tweet:\")\nprint(positive_tweets[0])\n\nprint(\"\\n\u00d6rnek Olumsuz Tweet:\")\nprint(negative_tweets[0])<\/code><\/pre>\n<p>Yukar\u0131daki kodu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, tweetlerin ham hallerini g\u00f6receksiniz. Tweetler genellikle emojiler, kullan\u0131c\u0131 etiketleri (@kullanici), web ba\u011flant\u0131lar\u0131 (URL) ve noktalama i\u015faretleri gibi makine \u00f6\u011frenimi modellerinin anlamland\u0131rmakta zorlanaca\u011f\u0131 &#8220;g\u00fcr\u00fclt\u00fcl\u00fc&#8221; (noisy) \u00f6\u011feler i\u00e7erir. Bu nedenle, modelimizi e\u011fitmeden \u00f6nce metin \u00f6n i\u015fleme (text preprocessing) ad\u0131mlar\u0131n\u0131 uygulamam\u0131z \u015fartt\u0131r.<\/p>\n<h3>Ad\u0131m 2: Metin \u00d6n \u0130\u015fleme ve Normalizasyon<\/h3>\n<p>Do\u011fal Dil \u0130\u015fleme projelerinin ba\u015far\u0131s\u0131, b\u00fcy\u00fck oranda verinin ne kadar iyi temizlendi\u011fine ba\u011fl\u0131d\u0131r. Metin \u00f6n i\u015fleme s\u00fcreci \u015fu a\u015famalardan olu\u015fur:<\/p>\n<ol>\n<li><strong>Tokenization (Belirte\u00e7lere Ay\u0131rma):<\/strong> Metni kelimeler, say\u0131lar ve noktalama i\u015faretleri gibi anlaml\u0131 en k\u00fc\u00e7\u00fck birimlere (token) b\u00f6lmek.<\/li>\n<li><strong>G\u00fcr\u00fclt\u00fc Temizleme (Noise Removal):<\/strong> K\u00f6pr\u00fc metinleri (URL&#8217;ler), Twitter kullan\u0131c\u0131 adlar\u0131 (@ i\u015faretleri), \u00f6zel karakterler ve noktalama i\u015faretlerinin kald\u0131r\u0131lmas\u0131.<\/li>\n<li><strong>Stopwords (Etkisiz Kelimeler) Filtreleme:<\/strong> &#8220;and&#8221;, &#8220;the&#8221;, &#8220;is&#8221;, &#8220;a&#8221; gibi c\u00fcmleye dilbilgisel yap\u0131 kazand\u0131ran ancak duygu y\u00f6n\u00fcnden anlam ifade etmeyen s\u0131k kullan\u0131lan kelimelerin \u00e7\u0131kar\u0131lmas\u0131.<\/li>\n<li><strong>Lemmatization (S\u00f6zl\u00fck Birimle\u015ftirme):<\/strong> Kelimeleri k\u00f6klerine indirgemek. \u00d6rne\u011fin, &#8220;running&#8221;, &#8220;runs&#8221; ve &#8220;ran&#8221; kelimelerini ortak k\u00f6k olan &#8220;run&#8221; kelimesine d\u00f6n\u00fc\u015ft\u00fcrmek. Bu i\u015flem, modelin farkl\u0131 \u00e7ekim ekleri alm\u0131\u015f ayn\u0131 kelimeleri tek bir kavram olarak \u00f6\u011frenmesini sa\u011flar.<\/li>\n<\/ol>\n<h4>Kelime T\u00fcrlerinin Belirlenmesi (POS Tagging) ve Lemmatizasyon<\/h4>\n<p>NLTK&#8217;deki <code>WordNetLemmatizer<\/code> s\u0131n\u0131f\u0131, bir kelimeyi do\u011fru \u015fekilde k\u00f6k\u00fcne indirgeyebilmek i\u00e7in o kelimenin c\u00fcmle i\u00e7indeki t\u00fcr\u00fcne (isim, fiil, s\u0131fat vb.) ihtiya\u00e7 duyar. Bu i\u015fleme POS (Part-of-Speech) Tagging denir. Kelimenin t\u00fcr\u00fcn\u00fc WordNet format\u0131na d\u00f6n\u00fc\u015ft\u00fcren yard\u0131mc\u0131 bir fonksiyon yazal\u0131m:<\/p>\n<pre><code>from nltk.tag import pos_tag\nfrom nltk.stem import WordNetLemmatizer\n\ndef get_wordnet_pos(tag):\n    \"\"\"POS etiketini WordNet format\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcr.\"\"\"\n    if tag.startswith('J'):\n        return 'a' # Adjective (S\u0131fat)\n    elif tag.startswith('V'):\n        return 'v' # Verb (Fiil)\n    elif tag.startswith('N'):\n        return 'n' # Noun (\u0130sim)\n    elif tag.startswith('R'):\n        return 'r' # Adverb (Zarf)\n    else:\n        return 'n' # Varsay\u0131lan olarak isim kabul ediyoruz<\/code><\/pre>\n<h4>G\u00fcr\u00fclt\u00fc Temizleme ve Temizleme Fonksiyonunun Yaz\u0131lmas\u0131<\/h4>\n<p>\u015eimdi, yukar\u0131daki fonksiyonu ve d\u00fczenli ifadeleri (regex) kullanarak t\u00fcm temizleme ad\u0131mlar\u0131n\u0131 ger\u00e7ekle\u015ftirecek olan <code>clean_text<\/code> fonksiyonunu olu\u015ftural\u0131m:<\/p>\n<pre><code>import re\nimport string\nfrom nltk.corpus import stopwords\n\ndef clean_text(tweet_tokens):\n    cleaned_tokens = []\n    lemmatizer = WordNetLemmatizer()\n    stop_words = set(stopwords.words('english'))\n\n    # Kelime t\u00fcrlerini analiz ediyoruz\n    pos_tags = pos_tag(tweet_tokens)\n\n    for token, tag in pos_tags:\n        # URL'leri temizliyoruz (http:\/\/ veya https:\/\/ ile ba\u015flayanlar)\n        token = re.sub(r\"http[s]?:\/\/(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+\", '', token)\n        \n        # Twitter kullan\u0131c\u0131 adlar\u0131n\u0131 temizliyoruz (@kullanici)\n        token = re.sub(r\"(@[A-Za-z0-9_]+)\", '', token)\n\n        # Kelime t\u00fcr\u00fcne g\u00f6re k\u00f6k bulma (Lemmatization) i\u015flemini uyguluyoruz\n        pos = get_wordnet_pos(tag)\n        token = lemmatizer.lemmatize(token, pos)\n\n        # Karakter uzunlu\u011fu kontrol\u00fc, noktalama i\u015faretleri ve stopword filtrelemesi\n        if len(token) > 0 and token not in string.punctuation and token.lower() not in stop_words:\n            cleaned_tokens.append(token.lower())\n            \n    return cleaned_tokens<\/code><\/pre>\n<p>Bu fonksiyon, girdi olarak token&#8217;lara ayr\u0131lm\u0131\u015f bir liste al\u0131r; g\u00fcr\u00fclt\u00fcleri temizler, kelimeleri k\u00f6klerine indirger, etkisiz kelimeleri atar ve tamamen temizlenmi\u015f k\u00fc\u00e7\u00fck harfli token listesi d\u00f6nd\u00fcr\u00fcr.<\/p>\n<p>NLTK&#8217;nin <code>twitter_samples.tokenized()<\/code> metodu, tweetleri do\u011frudan token listesi olarak alman\u0131z\u0131 sa\u011flar. Fonksiyonumuzu test etmek i\u00e7in bir \u00f6rnek yapal\u0131m:<\/p>\n<pre><code># Tokenize edilmi\u015f ham tweet listesini alal\u0131m\npos_tweet_tokens = twitter_samples.tokenized('positive_tweets.json')\n\n<h2>\u0130lk tweetin ham halini ve temizlenmi\u015f halini kar\u015f\u0131la\u015ft\u0131ral\u0131m<\/h2>\nprint(\"Ham Tokenlar:\")\nprint(pos_tweet_tokens[0])\n\nprint(\"\\nTemizlenmi\u015f ve Normalize Edilmi\u015f Tokenlar:\")\nprint(clean_text(pos_tweet_tokens[0]))<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131y\u0131 inceledi\u011finizde, emojilerin (\u00f6rne\u011fin g\u00fclen y\u00fcz &#8220;:)&#8221; gibi duygu belirten ifadelerin) korundu\u011funu, ancak gereksiz kelimelerin ve noktalama i\u015faretlerinin elendi\u011fini g\u00f6receksiniz. Emojiler duygu analizinde \u00e7ok g\u00fc\u00e7l\u00fc sinyaller ta\u015f\u0131d\u0131\u011f\u0131 i\u00e7in temizleme esnas\u0131nda tamamen silinmemeleri \u00f6nemlidir.<\/p>\n<h3>Ad\u0131m 3: Verilerin Model \u0130\u00e7in Haz\u0131rlanmas\u0131 (\u00d6znitelik \u00c7\u0131kar\u0131m\u0131)<\/h3>\n<p>Makine \u00f6\u011frenimi modelleri do\u011frudan metinler veya kelime listeleriyle \u00e7al\u0131\u015famaz. Kelimeleri, modellerin anlayabilece\u011fi say\u0131sal veya yap\u0131sal formata d\u00f6n\u00fc\u015ft\u00fcrmemiz gerekir. NLTK&#8217;nin Naive Bayes S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 (Naive Bayes Classifier), girdi olarak bir s\u00f6zl\u00fck (dictionary) yap\u0131s\u0131 bekler. Bu s\u00f6zl\u00fckte anahtarlar (keys) kelimeleri, de\u011ferler (values) ise o kelimenin metinde var olup olmad\u0131\u011f\u0131n\u0131 belirten Boolean (True) de\u011ferini temsil eder.<\/p>\n<p>Bu d\u00f6n\u00fc\u015f\u00fcm\u00fc ger\u00e7ekle\u015ftirecek olan bir jenerat\u00f6r fonksiyon yazal\u0131m:<\/p>\n<pre><code>def get_tweets_for_model(cleaned_tokens_list):\n    \"\"\"Token listesini NLTK Naive Bayes format\u0131na (s\u00f6zl\u00fck yap\u0131s\u0131na) d\u00f6n\u00fc\u015ft\u00fcr\u00fcr.\"\"\"\n    for tweet_tokens in cleaned_tokens_list:\n        yield dict([token, True] for token in tweet_tokens)<\/code><\/pre>\n<p>\u015eimdi t\u00fcm olumlu ve olumsuz tweetleri temizleyelim ve model format\u0131na d\u00f6n\u00fc\u015ft\u00fcrelim:<\/p>\n<pre><code># 1. T\u00fcm tweetleri tokenize edilmi\u015f olarak y\u00fckl\u00fcyoruz\npositive_tweet_tokens = twitter_samples.tokenized('positive_tweets.json')\nnegative_tweet_tokens = twitter_samples.tokenized('negative_tweets.json')\n\n<h2>2. T\u00fcm tweetleri temizliyoruz<\/h2>\ncleaned_positive_tokens = [clean_text(tokens) for tokens in positive_tweet_tokens]\ncleaned_negative_tokens = [clean_text(tokens) for tokens in negative_tweet_tokens]\n\n<h2>3. Model format\u0131na (Dictionary) d\u00f6n\u00fc\u015ft\u00fcr\u00fcyoruz<\/h2>\npositive_dataset = list(get_tweets_for_model(cleaned_positive_tokens))\nnegative_dataset = list(get_tweets_for_model(cleaned_negative_tokens))<\/code><\/pre>\n<p>Bu a\u015famada elimizde iki adet liste bulunmaktad\u0131r. <code>positive_dataset<\/code> i\u00e7erisindeki her bir eleman, olumlu bir tweette ge\u00e7en temizlenmi\u015f kelimelerin <code>{'harika': True, 'hizli': True}<\/code> \u015feklinde haritalanm\u0131\u015f halidir.<\/p>\n<h3>Ad\u0131m 4: E\u011fitim ve Test Veri Setlerinin Olu\u015fturulmas\u0131<\/h3>\n<p>Modelimizin do\u011frulu\u011funu (accuracy) tarafs\u0131z bir \u015fekilde \u00f6l\u00e7ebilmek i\u00e7in elimizdeki verileri ikiye b\u00f6lmeliyiz: <strong>E\u011fitim Seti (Training Set)<\/strong> ve <strong>Test Seti (Test Set)<\/strong>. E\u011fitim setini modeli e\u011fitmek i\u00e7in kullan\u0131rken, test setini modelin daha \u00f6nce hi\u00e7 g\u00f6rmedi\u011fi veriler \u00fczerindeki performans\u0131n\u0131 \u00f6l\u00e7mek i\u00e7in kullanaca\u011f\u0131z.<\/p>\n<p>Verilerimizi kar\u0131\u015ft\u0131rarak (shuffle) %70&#8217;ini e\u011fitim, %30&#8217;unu ise test i\u00e7in ay\u0131ral\u0131m:<\/p>\n<pre><code>import random\n\n<h2>Verileri etiketliyoruz (Positive veya Negative)<\/h2>\npositive_dataset_labeled = [(tweet_dict, \"Positive\") for tweet_dict in positive_dataset]\nnegative_dataset_labeled = [(tweet_dict, \"Negative\") for tweet_dict in negative_dataset]\n\n<h2>\u0130ki veri setini birle\u015ftiriyoruz<\/h2>\ndataset = positive_dataset_labeled + negative_dataset_labeled\n\n<h2>Verilerin s\u0131ras\u0131n\u0131 rastgele kar\u0131\u015ft\u0131r\u0131yoruz<\/h2>\nrandom.seed(42) # Sonu\u00e7lar\u0131n tekrarlanabilir olmas\u0131 i\u00e7in sabit bir seed de\u011feri veriyoruz\nrandom.shuffle(dataset)\n\n<h2>Veriyi b\u00f6l\u00fcyoruz (7000 e\u011fitim, 3000 test)<\/h2>\ntrain_data = dataset[:7000]\ntest_data = dataset[7000:]\n\nprint(f\"E\u011fitim Veri Say\u0131s\u0131: {len(train_data)}\")\nprint(f\"Test Veri Say\u0131s\u0131: {len(test_data)}\")<\/code><\/pre>\n<h3>Ad\u0131m 5: Naive Bayes S\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131n\u0131n E\u011fitilmesi ve De\u011ferlendirilmesi<\/h3>\n<p><strong>Naive Bayes<\/strong>, \u00f6zellikle metin s\u0131n\u0131fland\u0131rma ve duygu analizi g\u00f6revlerinde son derece h\u0131zl\u0131 ve etkili \u00e7al\u0131\u015fan olas\u0131l\u0131ksal bir makine \u00f6\u011frenimi algoritmas\u0131d\u0131r. Bayes Teoremi&#8217;ne dayan\u0131r ve metindeki kelimelerin birbirlerinden ba\u011f\u0131ms\u0131z oldu\u011funu varsayar (bu y\u00fczden &#8220;Naive&#8221; yani saf\/safdil olarak adland\u0131r\u0131l\u0131r). Bu varsay\u0131m ger\u00e7ek dilde her zaman do\u011fru olmasa da, pratik uygulamalarda \u015fa\u015f\u0131rt\u0131c\u0131 derecede y\u00fcksek ba\u015far\u0131 oranlar\u0131 sunar.<\/p>\n<p>NLTK k\u00fct\u00fcphanesinin sundu\u011fu haz\u0131r Naive Bayes s\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131n\u0131 kullanarak modelimizi e\u011fitelim ve test verisi \u00fczerindeki do\u011frulu\u011funu \u00f6l\u00e7elim:<\/p>\n<pre><code>from nltk import classify\nfrom nltk import NaiveBayesClassifier\n\n<h2>Modeli e\u011fitiyoruz<\/h2>\nclassifier = NaiveBayesClassifier.train(train_data)\n\n<h2>Modelin do\u011frulu\u011funu (Accuracy) hesapl\u0131yoruz<\/h2>\naccuracy = classify.accuracy(classifier, test_data)\nprint(f\"Modelin Do\u011fruluk Oran\u0131 (Accuracy): {accuracy * 100:.2f}%\")<\/code><\/pre>\n<p>Bu kod blo\u011funu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, modelin yakla\u015f\u0131k olarak <strong>%99<\/strong> civar\u0131nda bir do\u011fruluk oran\u0131na ula\u015ft\u0131\u011f\u0131n\u0131 g\u00f6receksiniz. Bu, Twitter gibi g\u00fcr\u00fclt\u00fcl\u00fc bir platformdan al\u0131nan veriler i\u00e7in olduk\u00e7a y\u00fcksek bir ba\u015far\u0131d\u0131r.<\/p>\n<h4>En Bilgi Verici \u00d6zniteliklerin (Most Informative Features) \u0130ncelenmesi<\/h4>\n<p>Naive Bayes s\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131n\u0131n en g\u00fczel yanlar\u0131ndan biri, hangi kelimelerin karara ne kadar etki etti\u011fini \u015feffaf bir \u015fekilde g\u00f6sterebilmesidir. Modelin kararlar\u0131n\u0131 en \u00e7ok etkileyen kelimeleri listelemek i\u00e7in a\u015fa\u011f\u0131daki fonksiyonu kullanabiliriz:<\/p>\n<pre><code>print(classifier.show_most_informative_features(15))<\/code><\/pre>\n<p>Bu \u00e7\u0131kt\u0131da, \u00f6rne\u011fin &#8220;:)&#8221; emojisinin g\u00f6r\u00fcld\u00fc\u011f\u00fc tweetlerin ezici bir \u00e7o\u011funlukla &#8220;Positive&#8221; olarak s\u0131n\u0131fland\u0131r\u0131ld\u0131\u011f\u0131n\u0131 veya &#8220;sad&#8221; (\u00fczg\u00fcn) kelimesinin &#8220;Negative&#8221; s\u0131n\u0131f\u0131 i\u00e7in ne kadar belirleyici oldu\u011funu oranlar\u0131yla birlikte g\u00f6rebilirsiniz. Oranlar (Ratio), bir kelimenin bir s\u0131n\u0131fta di\u011fer s\u0131n\u0131fa k\u0131yasla ka\u00e7 kat daha s\u0131k ge\u00e7ti\u011fini g\u00f6sterir (\u00f6rne\u011fin <code>sad : Positive = 35.2 : 1.0<\/code> gibi).<\/p>\n<h3>Ad\u0131m 6: Modelin Yeni ve \u00d6zg\u00fcn Metinler \u00dczerinde Test Edilmesi<\/h3>\n<p>E\u011fitti\u011fimiz modelin ger\u00e7ek d\u00fcnyada nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmek i\u00e7in kendi yazaca\u011f\u0131m\u0131z \u00f6rnek c\u00fcmleleri modele girdi olarak verelim. Bu i\u015flem i\u00e7in girdiyi \u00f6nce tokenize etmeli, ard\u0131ndan temizlemeli ve son olarak s\u0131n\u0131fland\u0131r\u0131c\u0131ya g\u00f6ndermeliyiz. Bu ad\u0131mlar\u0131 otomatikle\u015ftiren bir fonksiyon yazal\u0131m:<\/p>\n<pre><code>from nltk.tokenize import word_tokenize\n\ndef predict_sentiment(custom_tweet):\n    # C\u00fcmleyi kelimelerine (token) ay\u0131r\u0131yoruz\n    custom_tokens = word_tokenize(custom_tweet)\n    \n    # Temizleme ad\u0131mlar\u0131n\u0131 uyguluyoruz\n    cleaned_tokens = clean_text(custom_tokens)\n    \n    # Modelin bekledi\u011fi s\u00f6zl\u00fck format\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcyoruz\n    custom_features = dict([token, True] for token in cleaned_tokens)\n    \n    # S\u0131n\u0131fland\u0131rma yap\u0131yoruz\n    decision = classifier.classify(custom_features)\n    \n    # Olas\u0131l\u0131k da\u011f\u0131l\u0131mlar\u0131n\u0131 g\u00f6rmek istersek:\n    prob_dist = classifier.prob_classify(custom_features)\n    pred_prob = prob_dist.prob(decision)\n    \n    return decision, pred_prob\n\n<h2>Test C\u00fcmleleri<\/h2>\ntest_sentences = [\n    \"I love this product! It works perfectly and saved me a lot of time.\",\n    \"This is the worst customer service I have ever experienced. Extremely disappointed.\",\n    \"The movie was okay, not great but not terrible either.\",\n    \"Thank you for your quick response, I appreciate your help. :)\",\n    \"I lost my keys today, what a bad start to the week.\"\n]\n\nprint(\"--- \u00d6ZEL MET\u0130N TAHM\u0130NLER\u0130 ---\")\nfor sentence in test_sentences:\n    sentiment, confidence = predict_sentiment(sentence)\n    print(f\"Metin: '{sentence}'\")\n    print(f\"Tahmin: {sentiment} (G\u00fcven Oran\u0131: {confidence * 100:.2f}%)\\n\")<\/code><\/pre>\n<p>Yukar\u0131daki kod \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda, modelin olumlu c\u00fcmleleri y\u00fcksek g\u00fcven oranlar\u0131yla &#8220;Positive&#8221;, olumsuz c\u00fcmleleri ise &#8220;Negative&#8221; olarak ba\u015far\u0131yla s\u0131n\u0131fland\u0131rd\u0131\u011f\u0131n\u0131 g\u00f6receksiniz. N\u00f6tr veya karma\u015f\u0131k c\u00fcmlelerde (\u00f6rne\u011fin &#8220;The movie was okay&#8230;&#8221;) modelin iki s\u0131n\u0131ftan birine y\u00f6neldi\u011fini ancak g\u00fcven oran\u0131n\u0131n daha d\u00fc\u015f\u00fck kald\u0131\u011f\u0131n\u0131 g\u00f6zlemleyebilirsiniz. Bu durum, ikili (binary) s\u0131n\u0131fland\u0131rma modellerinin do\u011fal bir s\u0131n\u0131r\u0131d\u0131r.<\/p>\n<h3>Duygu Analizinde Kar\u015f\u0131la\u015f\u0131lan Zorluklar ve S\u0131n\u0131rlar<\/h3>\n<p>NLTK ve Naive Bayes ile geli\u015ftirdi\u011fimiz bu model olduk\u00e7a y\u00fcksek bir ba\u015far\u0131 g\u00f6sterse de, ger\u00e7ek d\u00fcnya senaryolar\u0131nda do\u011fal dilin karma\u015f\u0131kl\u0131\u011f\u0131ndan kaynaklanan baz\u0131 zorluklar mevcuttur:<\/p>\n<ul>\n<li><strong>Alayc\u0131l\u0131k ve \u0130roni (Sarcasm):<\/strong> &#8220;Harika, sipari\u015fim tam 3 hafta sonra k\u0131r\u0131k ula\u015ft\u0131!&#8221; c\u00fcmlesi kelime d\u00fczeyinde &#8220;harika&#8221; gibi olumlu kelimeler i\u00e7erse de asl\u0131nda derin bir olumsuzluk ta\u015f\u0131r. Klasik kelime torbas\u0131 (Bag of Words) modelleri bu ironiyi yakalamakta zorlan\u0131r.<\/li>\n<li><strong>Ba\u011flam Kayb\u0131:<\/strong> Kelimelerin s\u0131ras\u0131n\u0131 g\u00f6z ard\u0131 etti\u011fimiz i\u00e7in &#8220;not bad&#8221; (k\u00f6t\u00fc de\u011fil &#8211; olumlu) ifadesi, &#8220;not&#8221; ve &#8220;bad&#8221; kelimelerinin tekil olumsuz etkileri nedeniyle yanl\u0131\u015f s\u0131n\u0131fland\u0131r\u0131labilir. Bu sorunu a\u015fmak i\u00e7in n-gram (ikili veya \u00fc\u00e7l\u00fc kelime gruplar\u0131) yakla\u015f\u0131mlar\u0131 kullan\u0131labilir.<\/li>\n<li><strong>Dil Deste\u011fi:<\/strong> Bu \u00e7al\u0131\u015fmada kullan\u0131lan modeller ve WordNet veritaban\u0131 \u0130ngilizce odakl\u0131d\u0131r. T\u00fcrk\u00e7e gibi sondan eklemeli dillerde morfolojik analiz (k\u00f6k bulma) \u00e7ok daha karma\u015f\u0131k olup, T\u00fcrk\u00e7e i\u00e7in geli\u015ftirilmi\u015f \u00f6zel k\u00fct\u00fcphanelerin (Zemberek gibi) veya T\u00fcrk\u00e7e uyumlu stopword listelerinin kullan\u0131lmas\u0131 gerekir.<\/li>\n<\/ul>\n<h3>Sonu\u00e7 ve \u0130leri Ad\u0131mlar<\/h3>\n<p>Bu makalede, Python 3 ve NLTK k\u00fct\u00fcphanesini kullanarak s\u0131f\u0131rdan bir duygu analizi boru hatt\u0131n\u0131n (pipeline) nas\u0131l kurulaca\u011f\u0131n\u0131 \u00f6\u011frendik. Verilerin g\u00fcr\u00fclt\u00fclerden ar\u0131nd\u0131r\u0131lmas\u0131, kelimelerin k\u00f6klerine indirgenmesi, \u00f6zellik \u00e7\u0131kar\u0131m\u0131 yap\u0131lmas\u0131 ve Naive Bayes s\u0131n\u0131fland\u0131r\u0131c\u0131s\u0131 ile e\u011fitilerek tahminler \u00fcretilmesi ad\u0131mlar\u0131n\u0131 pratik kod \u00f6rnekleriyle uygulad\u0131k.<\/p>\n<p>Kendinizi bu alanda daha da geli\u015ftirmek ve modelinizin ba\u015far\u0131s\u0131n\u0131 art\u0131rmak i\u00e7in \u015fu ileri seviye ad\u0131mlar\u0131 deneyebilirsiniz:<\/p>\n<ul>\n<li><strong>N-gram Modelleri:<\/strong> Sadece tekil kelimeleri (unigrams) de\u011fil, yan yana gelen ikili kelime gruplar\u0131n\u0131 (bigrams) da modelinize \u00f6znitelik olarak ekleyin. Bu sayede &#8220;not good&#8221; gibi kal\u0131plar\u0131n anlam\u0131 korunur.<\/li>\n<li><strong>TF-IDF (Term Frequency-Inverse Document Frequency):<\/strong> Kelimelerin sadece var olup olmad\u0131\u011f\u0131n\u0131 (True\/False) de\u011fil, metin i\u00e7erisindeki \u00f6nem derecelerini a\u011f\u0131rl\u0131kland\u0131rarak modele aktar\u0131n.<\/li>\n<li><strong>VADER Duygu Analizi:<\/strong> NLTK i\u00e7erisinde yer alan ve \u00f6zellikle sosyal medya dilleri i\u00e7in kural tabanl\u0131 olarak geli\u015ftirilmi\u015f olan <code>SentimentIntensityAnalyzer<\/code> (VADER) arac\u0131n\u0131 ara\u015ft\u0131r\u0131n. VADER, e\u011fitim verisine ihtiya\u00e7 duymadan do\u011frudan duygu skorlamas\u0131 yapabilmektedir.<\/li>\n<li><strong>Derin \u00d6\u011frenme:<\/strong> Daha karma\u015f\u0131k metin yap\u0131lar\u0131 i\u00e7in Word Embeddings (Word2Vec, GloVe) y\u00f6ntemlerini ve LSTM veya Transformer tabanl\u0131 (BERT, RoBERTa) modern derin \u00f6\u011frenme modellerini inceleyin.<\/li>\n<\/ul>\n<p>Do\u011fal Dil \u0130\u015fleme, yapay zeka d\u00fcnyas\u0131n\u0131n en dinamik alanlar\u0131ndan biridir ve NLTK ile edindi\u011finiz bu temel bilgiler, daha karma\u015f\u0131k NLP projelerine ge\u00e7i\u015f yapabilmeniz i\u00e7in sa\u011flam bir zemin olu\u015fturacakt\u0131r.<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/python-nltk-sentiment-analysis-tutorial\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/python-nltk-sentiment-analysis-tutorial<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"Do\u011fal Dil \u0130\u015fleme (NLP &#8211; Natural Language Processing), g\u00fcn\u00fcm\u00fcz teknoloji d\u00fcnyas\u0131nda insan dilini anlamland\u0131rmak, analiz etmek ve makine \u00f6\u011frenimi modelleriyle i\u015flemek i\u00e7in kullan\u0131lan en kritik alanlardan biridir.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1403],"tags":[],"class_list":{"0":"post-43136","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-python","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python 3 ve NLTK Kullanarak Duygu Analizi (Sentiment Analysis) Nas\u0131l Yap\u0131l\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python 3 ve NLTK Kullanarak Duygu Analizi (Sentiment Analysis) Nas\u0131l Yap\u0131l\u0131r?\" \/>\n<meta property=\"og:description\" content=\"Do\u011fal Dil \u0130\u015fleme (NLP - Natural Language Processing), g\u00fcn\u00fcm\u00fcz teknoloji d\u00fcnyas\u0131nda insan dilini anlamland\u0131rmak, analiz etmek ve makine \u00f6\u011frenimi modelleriyle i\u015flemek i\u00e7in kullan\u0131lan en kritik alanlardan biridir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-07T05:01:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-07T05:01:56+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Python 3 ve NLTK Kullanarak Duygu Analizi (Sentiment Analysis) Nas\u0131l Yap\u0131l\u0131r?\",\"datePublished\":\"2026-07-07T05:01:34+00:00\",\"dateModified\":\"2026-07-07T05:01:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/\"},\"wordCount\":2155,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Python\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/\",\"name\":\"Python 3 ve NLTK Kullanarak Duygu Analizi (Sentiment Analysis) Nas\u0131l Yap\u0131l\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-07-07T05:01:34+00:00\",\"dateModified\":\"2026-07-07T05:01:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python 3 ve NLTK Kullanarak Duygu Analizi (Sentiment Analysis) Nas\u0131l Yap\u0131l\u0131r?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Python 3 ve NLTK Kullanarak Duygu Analizi (Sentiment Analysis) Nas\u0131l Yap\u0131l\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/","og_locale":"tr_TR","og_type":"article","og_title":"Python 3 ve NLTK Kullanarak Duygu Analizi (Sentiment Analysis) Nas\u0131l Yap\u0131l\u0131r?","og_description":"Do\u011fal Dil \u0130\u015fleme (NLP - Natural Language Processing), g\u00fcn\u00fcm\u00fcz teknoloji d\u00fcnyas\u0131nda insan dilini anlamland\u0131rmak, analiz etmek ve makine \u00f6\u011frenimi modelleriyle i\u015flemek i\u00e7in kullan\u0131lan en kritik alanlardan biridir.","og_url":"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-07-07T05:01:34+00:00","article_modified_time":"2026-07-07T05:01:56+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"15 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Python 3 ve NLTK Kullanarak Duygu Analizi (Sentiment Analysis) Nas\u0131l Yap\u0131l\u0131r?","datePublished":"2026-07-07T05:01:34+00:00","dateModified":"2026-07-07T05:01:56+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/"},"wordCount":2155,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Python"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/","url":"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/","name":"Python 3 ve NLTK Kullanarak Duygu Analizi (Sentiment Analysis) Nas\u0131l Yap\u0131l\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-07-07T05:01:34+00:00","dateModified":"2026-07-07T05:01:56+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/python-3-ve-nltk-kullanarak-duygu-analizi-sentiment-analysis-nasil-yapilir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Python 3 ve NLTK Kullanarak Duygu Analizi (Sentiment Analysis) Nas\u0131l Yap\u0131l\u0131r?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=43136"}],"version-history":[{"count":2,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43136\/revisions"}],"predecessor-version":[{"id":43138,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43136\/revisions\/43138"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=43136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=43136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=43136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}