Apache Spark ile Kullanıcı Yorumlarının Duygu Analizi

Bu senaryoda, bir web uygulaması üzerinden kullanıcı yorumlarını toplayacağız. Apache Spark kullanarak bu yorumların duygu analizini yapacağız, yani yorumların pozitif, negatif ya da nötr olduğunu belirleyeceğiz. Sonuçlar, Java Spring Boot ile geliştirilmiş bir web arayüzünde gösterilecek.



Apache Spark ile Duygu Analizi:

Spark'ın MLlib kütüphanesini kullanarak basit bir duygu analizi modeli oluşturabiliriz. Bu model, önceden etiketlenmiş veri seti üzerinde eğitilebilir. Yorumları işleyerek duygu skorları elde ederiz.


Java Spring Boot ile Web Arayüzü:

Spring Boot, REST API'ları oluşturmak için kullanılabilir. Kullanıcılar yorumlarını gönderir ve bu yorumlar Spark'a iletilir. Spark'tan gelen duygu analizi sonuçları kullanıcıya web arayüzü üzerinden sunulur.


Örnek bir Spring Boot Controller metodu şöyle olabilir:


java

Copy code

@RestController

@RequestMapping("/api")

public class CommentController {

    

    @Autowired

    private SparkService sparkService; // Spark işlemlerini yürüten servis


    @PostMapping("/analyze-comment")

    public ResponseEntity<?> analyzeComment(@RequestBody String comment) {

        String sentiment = sparkService.analyzeComment(comment);

        return ResponseEntity.ok().body("Yorumun Duygu Durumu: " + sentiment);

    }

}

Bu kod, kullanıcının gönderdiği yorumu alır ve Spark servisine iletir. Spark servisi, yorumu analiz eder ve duygu durumunu belirler.


Unutmayın ki bu sadece basit bir örnek. Gerçek bir uygulamada, duygu analizi için daha karmaşık modeller ve büyük veri işlemleri gerekebilir. Spark'ta duygu analizi yapmak için uygun bir veri seti ve model eğitimi de gereklidir.


Bu senaryoyu daha da detaylandırmak için, Apache Spark'ta duygu analizi işlemlerinin nasıl yapılabileceğini ve Java Spring Boot'ta bu işlemlerin nasıl entegre edilebileceğini aşama aşama ele alalım.


1. Apache Spark ile Duygu Analizi:

Apache Spark, büyük veri işlemleri için güçlü bir araçtır ve MLlib kütüphanesi makine öğrenimi işlemleri için geniş olanaklar sunar. Duygu analizi için, öncelikle eğitim veri setine ihtiyacınız olacak. Bu veri seti, metinler ve bunların ilişkili duygu etiketleri (pozitif, negatif, nötr) içermelidir.


Örnek bir duygu analizi veri seti genellikle metinler ve bu metinlere ilişkin duygu etiketlerini içerir. Bu etiketler genellikle "pozitif", "negatif" veya "nötr" gibi duygusal durumları temsil eder. Gerçek bir veri setinin yapısı ve içeriği değişkenlik gösterse de, temel bir örnek aşağıdaki gibi olabilir:


json

Copy code

[

    {"text": "Bu ürünü çok beğendim, herkese tavsiye ederim!", "sentiment": "pozitif"},

    {"text": "Maalesef beklentilerimi karşılamadı, memnun kalmadım.", "sentiment": "negatif"},

    {"text": "Ürün idare eder, ne çok iyi ne de kötü.", "sentiment": "nötr"},

    {"text": "Kargo çok hızlı geldi, teşekkürler.", "sentiment": "pozitif"},

    {"text": "Ürün açıklamada belirtilen özelliklere sahip değil.", "sentiment": "negatif"},

    {"text": "Fiyatına göre performansı iyi.", "sentiment": "nötr"}

]

Bu basit JSON formatındaki veri seti, her bir yorumun metnini ve ilgili duygu etiketini içerir. Gerçek dünya uygulamalarında, daha büyük ve karmaşık veri setleri kullanılır. Bu veri setlerini elde etmek için çeşitli kaynaklardan toplanan büyük miktarda verinin işlenmesi ve etiketlenmesi gerekir. Özellikle, duygu analizi modellerini eğitmek için yeterli miktarda ve çeşitlilikte veriye ihtiyaç vardır.


Apache Spark ile bu tür bir veri setini işlemek ve model eğitmek için, veri setinin Spark'ın anlayacağı formatta (genellikle bir DataFrame olarak) yüklenmesi ve uygun makine öğrenimi teknikleriyle işlenmesi gerekir.


Spark'ta Veri Setinin Hazırlanması ve Model Eğitimi:

java

Copy code

import org.apache.spark.api.java.JavaRDD;

import org.apache.spark.api.java.JavaSparkContext;

import org.apache.spark.ml.classification.LogisticRegression;

import org.apache.spark.ml.classification.LogisticRegressionModel;

import org.apache.spark.ml.feature.Tokenizer;

import org.apache.spark.ml.feature.HashingTF;

import org.apache.spark.ml.feature.IDF;

import org.apache.spark.ml.Pipeline;

import org.apache.spark.ml.PipelineModel;

import org.apache.spark.ml.PipelineStage;

import org.apache.spark.sql.Dataset;

import org.apache.spark.sql.Row;

import org.apache.spark.sql.SparkSession;


public class SparkSentimentAnalysis {


    public PipelineModel trainModel(String dataPath, SparkSession sparkSession) {

        // Veri setini yükle

        Dataset<Row> trainingData = sparkSession.read().json(dataPath);


        // Metni tokenize et

        Tokenizer tokenizer = new Tokenizer().setInputCol("text").setOutputCol("words");


        // Kelimeleri sayısal vektörlere dönüştür

        HashingTF hashingTF = new HashingTF()

            .setInputCol(tokenizer.getOutputCol())

            .setOutputCol("features");


        // Lojistik Regresyon Modeli

        LogisticRegression lr = new LogisticRegression();


        // Pipeline oluştur

        Pipeline pipeline = new Pipeline().setStages(new PipelineStage[]{tokenizer, hashingTF, lr});


        // Modeli eğit

        return pipeline.fit(trainingData);

    }

}

Bu kod parçası, eğitim veri setini yükler, metin verisini işler ve lojistik regresyon modeli kullanarak eğitim yapar. Gerçek bir uygulamada, modelin performansını artırmak için daha gelişmiş teknikler ve hiperparametre ayarlamaları yapılabilir.


2. Java Spring Boot ile Entegrasyon:

Spring Boot uygulamasında, yukarıda tanımlanan CommentController sınıfı kullanıcı yorumlarını alır ve Spark servisine iletir. Spark servisinde, Spark ile duygu analizi yapılır ve sonuçlar geri döndürülür.


Spark Servisi:

java

Copy code

import org.apache.spark.ml.PipelineModel;

import org.apache.spark.sql.Dataset;

import org.apache.spark.sql.Row;

import org.apache.spark.sql.SparkSession;

import org.springframework.stereotype.Service;


@Service

public class SparkService {


    private final PipelineModel model;

    private final SparkSession sparkSession;


    public SparkService() {

        // SparkSession ve Modelin başlatılması

        this.sparkSession = SparkSession.builder().appName("SentimentAnalysis").getOrCreate();

        this.model = new SparkSentimentAnalysis().trainModel("path/to/data", sparkSession);

    }


    public String analyzeComment(String comment) {

        // Yorumun Spark DataFrame'e dönüştürülmesi

        Dataset<Row> commentData = sparkSession.createDataFrame(Collections.singletonList(comment), String.class);

        

        // Duygu analizi

        Dataset<Row> predictions = model.transform(commentData);


        // Sonucun alınması ve döndürülmesi

        Row prediction = predictions.collectAsList().get(0);

        return prediction.getAs("prediction").toString();

    }

}

Bu servis, Spark'ın duygu analizi modelini kullanarak gelen yorumları analiz eder ve duygu durumunu tahmin eder.


Sonuç:

Bu kodlar, bir Spring Boot uygulaması içinde Apache Spark ile duygu analizi yapmanın basit bir örneğidir

Hiç yorum yok

Rastgele İçerik

DonanımHaber

© tüm hakları saklıdır
made with by templateszoo