أفضل الطرق لتجريد علامات الترقيم من السلاسل في Python و JavaScript

علامات ترقيم

لماذا تحتاج إلى إزالة علامات الترقيم؟

في مهام معالجة النصوص المختلفة ، غالبًا ما يكون من الضروري إزالة علامات الترقيم من السلاسل لتسهيل التحليل أو المقارنات أو التلاعبات الأخرى. يمكن أن تخلق علامات الترقيم ضوضاء في البيانات وتعيق أداء الخوارزميات في معالجة اللغة أو تحليل المشاعر أو تطبيقات التنقيب عن النصوص. سوف تستكشف هذه المقالة أفضل الطرق لتجريد علامات الترقيم من سلسلة في Python و JavaScript ، ومناقشة الطرق الأكثر فاعلية والأكثر استخدامًا ، وأمثلة التعليمات البرمجية ، وحالات الاستخدام.

أهمية إزالة علامات الترقيم

تعد إزالة علامات الترقيم أمرًا بالغ الأهمية في عدة مواقف:

  1. تسوية النص : التأكد من توافق جميع البيانات النصية مع تنسيق قياسي يجعل من السهل تحليلها ومعالجتها.

  2. مقارنة النص : تحسين دقة مطابقة السلسلة أو خوارزميات البحث عن طريق التخلص من الأحرف غير ذات الصلة.

  3. الترميز : تقسيم النص إلى كلمات أو عبارات لمزيد من التحليل ، كما هو الحال في معالجة اللغة الطبيعية أو تطبيقات التعلم الآلي.

  4. تنظيف البيانات : تحضير البيانات للتحليل بإزالة الأحرف غير الضرورية أو المشتتة للانتباه.

التحديات في تجريد علامات الترقيم

تشمل التحديات الرئيسية في تجريد علامات الترقيم من السلاسل ما يلي:

  1. الأداء : إزالة علامات الترقيم بكفاءة دون استهلاك موارد حسابية مفرطة ، خاصة عند معالجة كميات كبيرة من النص.

  2. دعم اللغة : التعامل مع النص بلغات مختلفة ، والتي قد يكون لها قواعد ترقيم فريدة أو مجموعات أحرف.

  3. التخصيص : توفير المرونة لتضمين أو استبعاد علامات ترقيم محددة بناءً على متطلبات مهمة معينة.

بايثون: تجريد علامات الترقيم

الطريقة الأولى: استخدام str.translate () و string.punctuation

import string

def remove_punctuation(text):
    return text.translate(str.maketrans("", "", string.punctuation))

example = "Hello, Nerds! How's it going?"
print(remove_punctuation(example))

تستخدم هذه الطريقة str.translate () جنبًا إلى جنب مع string.punctuation ، والذي يحتوي على قائمة برموز وعلامات الترقيم الشائعة. str.maketrans () جدول ترجمة يقوم بتعيين أحرف الترقيم إلى لا شيء ، مما يؤدي إلى إزالتها بشكل فعال من نص الإدخال.

الطريقة 2: استخدام list comprehension (string.punctuation)

import string

def remove_punctuation(text):
    return ''.join(c for c in text if c not in string.punctuation)

example = "Hello, Nerds! How's it going?"
print(remove_punctuation(example))

تستخدم هذه الطريقة قائمة شاملة ، حيث أن string.punctuation سيعطي جميع مجموعات علامات الترقيم لتصفية علامات الترقيم من نص الإدخال ثم ربط الأحرف المتبقية بسلسلة جديدة لتشكيل سلسلة الإخراج.

الطريقة الثالثة: استخدام وحدة إعادة (التعبيرات العادية)

import re
import string

def remove_punctuation(text):
    # Create a pattern that matches punctuation characters
    pattern = f"[{re.escape(string.punctuation)}]"
    # Substitute matched punctuation characters with an empty string
    return re.sub(pattern, "", text)

example = "Hello, Nerds! How's it going?"
print(remove_punctuation(example))

تستخدم هذه الطريقة re لإنشاء نمط يطابق أحرف الترقيم ، ثم يستبدلها بسلسلة فارغة. يوفر مزيدًا من المرونة لتخصيص النمط لمطابقة أحرف معينة أو مجموعات من الأحرف.

جافا سكريبت: تجريد علامات الترقيم

الطريقة الأولى: استخدام التعابير النمطية

function removePunctuation(text) {
  return text.replace(/[^\w\s]|_/g, "");
}

const example = "Hello, Nerds! How's it going?";
console.log(removePunctuation(example));

في هذه الطريقة ، نستخدم replace () بتعبير عادي يطابق أي حرف غير كلمة (باستثناء أحرف المسافات البيضاء) أو شرطات سفلية. ثم يتم استبدال هذه الأحرف المتطابقة بسلسلة فارغة.

الطريقة الثانية: استخدام Array.prototype.filter () و Array.prototype.join ()

function removePunctuation(text) {
  // Convert the input string to an array of characters
  const charArray = text.split("");
  // Define a regular expression pattern that matches punctuation characters
  const punctuationPattern = /[^\w\s]|_/g;

  // Filter the array to exclude punctuation characters
  const filteredArray = charArray.filter((char) => !punctuationPattern.test(char));
  // Join the filtered array back into a string
  return filteredArray.join("");
}

const example = "Hello, Nerds! How's it going?";
console.log(removePunctuation(example));

تقوم هذه الطريقة بتحويل سلسلة الإدخال إلى مصفوفة من الأحرف ، وتصفية علامات الترقيم باستخدام Array.prototype.filter () و RegExp.prototype.test () ، ثم تقوم بضم الأحرف المتبقية مرة أخرى إلى سلسلة باستخدام Array.prototype.join () . يشبه هذا الأسلوب طريقة فهم القائمة في Python ويسمح بمزيد من التحكم الدقيق في عملية التصفية.

وقائع الاستخدام في العالم الحقيقي

الحالة 1: تحليل المشاعر

يمكن أن يؤدي إزالة علامات الترقيم من البيانات النصية إلى تحسين أداء خوارزميات من خلال ضمان تحديد الكلمات ومقارنتها بدقة.

# Python
import string

def preprocess_text(text):
    # Remove punctuation and convert text to lowercase
    return ''.join(c for c in text if c not in string.punctuation).lower()

print(preprocess_text("Hello, Nerds! How's it going?"))
// JavaScript
function preprocessText(text) {
  // Remove punctuation and convert text to lowercase
  return text.replace(/[^\w\s]|_/g, "").toLowerCase();
}

const example = "I'm so happy, this is great!";
console.log(preprocessText(example));

الحالة 2: تجريف الويب

عند استخراج نص من مواقع الويب ، غالبًا ما يكون من الضروري إزالة الأحرف الدخيلة مثل علامات الترقيم قبل إجراء مزيد من المعالجة أو التحليل.

# Python
from bs4 import BeautifulSoup
import requests
import string

def extract_and_clean_text(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.content, "html.parser")
    raw_text = soup.get_text()
    return ''.join(c for c in raw_text if c not in string.punctuation)

print(extract_and_clean_text("https://www.scrapethissite.com/"))
// JavaScript
const axios = require("axios");
const cheerio = require("cheerio");

async function extractAndCleanText(url) {
  // Fetch the web page content
  const response = await axios.get(url);
  // Load the content into Cheerio
  const $ = cheerio.load(response.data);
  // Extract the text from the body element
  const rawText = $("body").text();
  // Remove punctuation from the extracted text
  return rawText.replace(/[^\w\s]|_/g, "");
}

const exampleUrl = "https://www.scrapethissite.com/";
extractAndCleanText(exampleUrl).then((cleanText) => console.log(cleanText));

الحالة 3: المعالجة المسبقة للبيانات

في مهام التعلم الآلي أو معالجة اللغة الطبيعية ، من الضروري معالجة البيانات النصية مسبقًا عن طريق إزالة علامات الترقيم والأحرف الأخرى غير ذات الصلة.

# Python
import pandas as pd
import string

def preprocess_dataframe(df, column_name):
    df[column_name] = df[column_name].apply(lambda x: ''.join(c for c in x if c not in string.punctuation))
    return df

data = {
    'text': ["Hello, Nerds!", "How's it going?", "This is a test."]
}
df = pd.DataFrame(data)
print(preprocess_dataframe(df, 'text'))
// JavaScript
const data = [
  { text: "Hello, Nerds!" },
  { text: "How's it going?" },
  { text: "This is a test." },
];

function preprocessData(data, columnName) {
  return data.map((item) => {
    item[columnName] = item[columnName].replace(/[^\w\s]|_/g, "");
    return item;
  });
}

console.log(preprocessData(data, "text"));

في هذا المثال ، نقوم بمعالجة البيانات النصية مسبقًا في إطار بيانات (Python) أو مجموعة من الكائنات ( JavaScript ) عن طريق إزالة علامات الترقيم من عمود محدد. هذه خطوة شائعة عند إعداد البيانات للتعلم الآلي أو مهام معالجة اللغة الطبيعية.

توضح نماذج التعليمات البرمجية الإضافية وحالات الاستخدام هذه مدى تنوع جميع الطرق المستخدمة في تجريد علامات الترقيم من السلاسل في كل من Python و JavaScript. يمكن أن يساعد فهم الميزات والمزايا والعيوب الفريدة لكل طريقة المطورين على اختيار أفضل نهج لمتطلباتهم الخاصة في سيناريوهات مختلفة في العالم الحقيقي ، مثل تحليل النص أو المعالجة المسبقة للبيانات أو تطبيقات تجريف الويب.

tiktok ، مواقع التواصل الاجتماعي ، وسائل الإعلام ، نص ، خاتمة

خاتمة

يعد تجريد علامات الترقيم من السلاسل جانبًا مهمًا من المعالجة المسبقة للنص في تطبيقات مختلفة ، مثل تحليل المشاعر ومعالجة اللغة الطبيعية وكشط الويب وتنظيف البيانات. تقدم كل من Python و JavaScript عدة طرق فعالة لإزالة علامات الترقيم من السلاسل ، ولكل منها ميزاتها الفريدة ومزاياها وعيوبها.

استكشفت هذه المقالة هذه الطرق المختلفة وقارنتها معًا ، وقدمت عينات من التعليمات البرمجية وحالات استخدام واقعية لإثبات قابليتها للتطبيق. من خلال فهم الفروق الدقيقة لكل طريقة وأدائها ، يمكن للمطورين اتخاذ قرارات مستنيرة بشأن أفضل نهج للاحتياجات المحددة لتطبيقاتهم. في النهاية ، يساهم إتقان هذه التقنيات في كفاءة ودقة معالجة النصوص وتحليلها عبر مجموعة واسعة من التطبيقات.

https://ahmedradwan.dev

تواصل معنا إذا كنت ترغب في الانضمام إلي وكتابة مقالات مع المهووسين 🙂


© 2024 · الطالب الذي يذاكر كثيرا المستوى التقنية

فئات

وسائل التواصل الاجتماعي

ابق على اتصال على وسائل التواصل الاجتماعي