स्ट्रिंग नॉर्मलाइज़ेशन

Java में डेटा क्लीनिंग

Dennis Lee

Software Engineer

ग्रोसरी इन्वेंटरी डेटासेट

  • इस चैप्टर में पूरे समय ग्रोसरी इन्वेंटरी डेटासेट पर काम करें
  • डेटा ट्रांसफॉर्मेशन दिखाने के लिए product name जैसे कुछ कॉलम बदलें

 

Product Name Category Status Date Received Quantity
Eggplant Fruits & Vegetables Discontinued 3/1/25 46
VEGETABLE OIL Oils & Fats Backordered 4/1/25 51
Cheese Dairy Active 6/1/25 78
Fresh (Organic) *Carrots* Fruits & Vegetables Discontinued 5/1/25 51
Bell Pepper Fresh Fruits & Vegetables Active 5/2/25 67
Java में डेटा क्लीनिंग

स्ट्रिंग नॉर्मलाइज़ेशन क्यों ज़रूरी है

  • गड़बड़ स्ट्रिंग्स: कंप्यूटर टेक्स्ट नहीं पहचान पाते
  • उदाहरण: ग्रोसरी स्टोर इन्वेंटरी
  • समाधान: स्ट्रिंग्स को नॉर्मलाइज़ करें

 

String[] messyProducts = {
    "Eggplant ",              // Extra whitespace at the end
    "VEGETABLE OIL",             // Inconsistent case
    "Fresh (Organic) *Carrots*", // Special characters
    "Bell   Pepper    Fresh",    // Extra whitespace between words
};
Java में डेटा क्लीनिंग

लीडिंग/ट्रेलिंग whitespace हटाना

String[] products = {"Eggplant ", "  Vegetable Oil", " Cheese "};
for (String product : products) {
    String cleaned = product.trim(); // Removes leading/trailing whitespace
    System.out.println(cleaned);
}
Eggplant
Vegetable Oil
Cheese
Java में डेटा क्लीनिंग

टेक्स्ट केस को स्टैंडर्डाइज़ करना

List<String> products = Arrays.asList("Eggplant", "VEGETABLE OIL", "cheese");

products.stream()
.map(String::toLowerCase) // Convert all to lowercase
.forEach(System.out::println); // Print each product
eggplant
vegetable oil
cheese
Java में डेटा क्लीनिंग

Regex पैटर्न

  • रेगुलर एक्सप्रेशंस (regex): टेक्स्ट मिलाने के लिए विशेष पैटर्न$^1$
  • [^a-zA-Z\\s]: कोई भी कैरेक्टर ढूँढता है जो अक्षर या स्पेस नहीं है
// यह पैटर्न उन कैरेक्टर्स को मैच करता है जो ये नहीं हैं:
[       // Start a character set
^       // NOT - इस सेट में न हो तो मैच करो
a-z     // कोई भी लोअरकेस अक्षर
A-Z     // कोई भी अपरकेस अक्षर
\\s     // कोई भी whitespace कैरेक्टर (Java में \s के लिए extra \ चाहिए)
]       // End character set

1 https://www.datacamp.com/cheat-sheet/regular-expresso
Java में डेटा क्लीनिंग

स्पेशल कैरेक्टर्स साफ करना

String dirtyName = "Fresh (Organic) *Carrots*"; // Special characters: (, ), *

String cleaned = dirtyName.replaceAll("[^a-zA-Z\\s]", ""); // Non-letters हटाएँ
System.out.println(cleaned); // Output: "Fresh Organic Carrots"
Fresh Organic Carrots
Java में डेटा क्लीनिंग

मल्टीपल स्पेसेज़ साफ करना

import java.util.regex.Pattern;
Pattern pattern = Pattern.compile("\\s+"); // कई स्पेसेज़ मैच करें

String messyProduct = "Bell Pepper Fresh"; // अतिरिक्त स्पेस हैं // कई स्पेसेज़ को एक स्पेस से बदलें String cleanedProduct = pattern.matcher(messyProduct).replaceAll(" ");
System.out.println(cleanedProduct);
Bell Pepper Fresh
Java में डेटा क्लीनिंग

सबको साथ में लागू करना

List<String> messyProducts = Arrays.asList(
        "Eggplant ", "VEGETABLE OIL",
        "Fresh (Organic) *Carrots*", "Bell   Pepper    Fresh"
); // हमारे ग्रोसरी इन्वेंटरी डेटासेट से निकले प्रोडक्ट नाम

messyProducts.stream()
        .map(s -> s.trim()                       // बाहरी स्पेस ठीक करें
                .replaceAll("[^a-zA-Z\\s]", "")  // स्पेशल कैरेक्टर्स हटाएँ
                .replaceAll("\\s+", " ")         // अंदरूनी स्पेस ठीक करें
                .toLowerCase())                  // केस स्टैंडर्डाइज़ करें
        .forEach(System.out::println);
Java में डेटा क्लीनिंग

सबको साथ में: आउटपुट

eggplant
vegetable oil
fresh organic carrots
bell pepper fresh
Java में डेटा क्लीनिंग

अभ्यास करते हैं!

Java में डेटा क्लीनिंग

Preparing Video For Download...