Cara Membuat Natural Language Processing Sederhana Dari Kumpulan Tweet Dengan Python

 

Natural Languange Processing merupakan sebuah kemampuan machine learning untuk menebak dan menganalisa sebuah kalimat

Konsepnya sederhana dimana kita menjadikan tiap kata sebagai array lalu mencocokinya dengan kata kata yang memiliki konotasi negatif dan positif

Tentu metode sesederhana ini akan memberikan hasil yang sangat kasar, akan tetapi setidaknya kita bisa menerapkah langkah langkah NLP agar bisa memahami konsep NLP itu sendiri bekerja

Sebenarnya apa aja sih Langkah Langkah NLP ini?

NLP memiliki langkah langkah sebagai berikut

  • Tokenizing, mengubah kata kata menjadi array
  • Stemming, menghilangkan imbuhan dari kalimat
  • Lemmatization, menjadikan kata kata dasar menjadi bentukkata yang lebih mudah dianalisis
  • Parsing, mencocokkan tweets/kalimat dengan wordlist yang sudah diambil

Pertanyaannya bagaimana cara kita menerapkan langkah langkah di atas dalam bentuk codingan? Simak ya caranya dibawah

Case Study

Cari tahu apakah tweet dari Ridwan Kamil  memiliki sentimen negatif atau positif menurut langkah langkah di atas

Langkah Langkah

Pertama kita harus mengambil tweet dari Pak Ridwan Kamil. Kalian harus memiliki akun Twitter Developer dulu untuk memiliki api_key sehingga kalian bisa bebas mengambil tweet manapun.

Jika kalian sudah memiliki akun Twitter Developer, kalian bisa mencontek script yang sudah saya buat disini

Jangan lupa untuk menginstall package Python

pip install tweepy pandas configparser 

Buat file main.py dan tulis kode berikut

import configparser
import tweepy
import pandas as pd

config = configparser.ConfigParser()
config.read('config.ini')

api_key = config['twitter']['api_key']
api_key_secret = config['twitter']['api_key_secret']

access_token = config['twitter']['access_token']
access_token_secret = config['twitter']['access_token_secret']

# authenticate
auth = tweepy.OAuthHandler(api_key, api_key_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth)

tweets = api.user_timeline(screen_name='ridwankamil',
                           # 200 is the maximum allowed count
                           count=60,
                           include_rts = False,
                           # Necessary to keep full_text
                           # otherwise only the first 140 words are extracted
                           tweet_mode = 'extended'
                           )

with open('tweets.txt', 'w') as f:
    for info in tweets:
        f.write(info.full_text)
        print("\n")

buat file config.ini yang memiliki isi seperti berikut

[twitter]

api_key =
api_key_secret =
access_token =
access_token_secret =  

Masukkan apikey kalian disana

Jika sudah, maka jalankan perintah py main.py Lalu kalian akan menjumpai terdapat file tweets.txt yang merupakan hasil

 

Lalu buat file baru benama predict.py yang bertugas untuk memberikan hasil sentimen negatif dan positif. Kalia bisa melihat kode dibawah

from Sastrawi.Stemmer.StemmerFactory import StemmerFactory
factory = StemmerFactory()
stemmer = factory.create_stemmer()

def open_txt(txt):
    data = open(txt, 'r')
    return data.read()

def turn_to_array(text):
    tokenized = []
    
    if '\n' in text:
        for word in text.split('\n'):
            tokenized.append(word)
    else:     
        for word in text.split(' '):
            tokenized.append(word)

    return tokenized

def parsing_both_words(text, neg, pos):
    sentiment = {"negative": 0, "positive": 0}    
    for i in text:
        for j in neg:
            if i == j:
                sentiment["negative"] += 1
        for k in pos:
            if i == k:
                sentiment["positive"] += 1
                
    return sentiment

tweets = open_txt('tweets.txt')
neg_word = open_txt('wordlist/negative.txt')
pos_word = open_txt('wordlist/positive.txt')

# Stemming
stemmed_tweets   = stemmer.stem(tweets)

# Tokenization
tokenized_tweets = turn_to_array(stemmed_tweets)
tokenized_neg_words = turn_to_array(neg_word)
tokenized_pos_words = turn_to_array(pos_word)

# Parsing
counted_words = parsing_both_words(tokenized_tweets, tokenized_neg_words, tokenized_pos_words)

def please_percentage(count, neg, pos):
    total = round(count/count * 100)
    positive = round(pos/count * 100)
    negative = round(neg/count * 100)
    
    return {"total": f"{total}%","positive":f"{positive}%","negative":f"{negative}%"}
    
percentage = please_percentage(len(tokenized_tweets), counted_words['negative'], counted_words['positive'])

print("Tweet Pak Ridwan memiliki sentimen buruk" if percentage['negative'] > percentage['positive'] else "Tweet Pak Ridwan memiliki sentimen baik")

Jangan lupa juga untuk menginstall Sastrai dengan perintah berikut

pip install PySastrawi 

Lalu kalian juga harus memiliki wordlist yang berisi kata kata sentimen negatif dan positif yang bisa kalian download disini

Jika sudah kalian masukkan perintah py predict.py dan akan muncul tulisan berikut

 



  Sourcecode: Github

Post a Comment (0)
Previous Post Next Post