سؤال

يحتاج الكثير منا إلى التعامل مع مدخلات المستخدم واستعلامات البحث والمواقف التي قد يحتوي فيها النص المُدخل على ألفاظ نابية أو لغة غير مرغوب فيها.في كثير من الأحيان هذا يحتاج إلى تصفية.

أين يمكن العثور على قائمة جيدة من الكلمات البذيئة بمختلف اللغات واللهجات؟

هل هناك واجهات برمجة تطبيقات متاحة للمصادر التي تحتوي على قوائم جيدة؟أو ربما واجهة برمجة التطبيقات التي تقول ببساطة "نعم، هذا نظيف" أو "لا، هذا قذر" مع بعض المعلمات؟

ما هي بعض الطرق الجيدة للقبض على الأشخاص الذين يحاولون خداع النظام، مثل a$$ أو azz أو a55؟

نقاط المكافأة إذا كنت تقدم حلولاً لـ PHP.:)

يحرر:الرد على الإجابات التي تقول ببساطة تجنب المشكلة البرمجية:

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

لذلك أنا أشير حقًا إلى طريقة لمعرفة ما إذا كان رمزًا واحدًا متسخًا أم لا ثم قم برفضه ببساطة.لن أزعج نفسي بمنع ظهور مشاعر مثل الإشارة المضحكة تمامًا "الزرافة ذات العنق الطويل".لا شيء يمكنك القيام به هناك.:)

هل كانت مفيدة؟

المحلول

مرشحات الفحش:فكرة سيئة أم ممارسة فكرة سيئة بشكل لا يصدق؟

كما أنه لا يمكن للمرء أن ينسى التاريخ الذي لا يوصف لـ SpeedChat في Toontown, ، حيث أدى استخدام "القائمة البيضاء للكلمات الآمنة" إلى قيام شاب يبلغ من العمر 14 عامًا بالتحايل عليها بسرعة من خلال:"أريد أن ألصق زرافتي ذات العنق الطويل فوق أرنبك الأبيض الرقيق."

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

يعد النظام الذي يزيل عدم الكشف عن هويته ويقدم المساءلة (وهو أمر يقوم به Stack Overflow بشكل جيد) مفيدًا أيضًا، خاصة من أجل المساعدة في مكافحة هدية جون غابرييل.

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

تحرير الرد على السؤال تحرير: شكرا على التوضيح بشأن ما تحاول القيام به.في هذه الحالة، إذا كنت تحاول فقط إجراء فلتر كلمات بسيط، فهناك طريقتان يمكنك من خلالهما القيام بذلك.الأول هو إنشاء تعبير عادي طويل واحد يحتوي على جميع العبارات المحظورة التي تريد فرض رقابة عليها، والقيام فقط بالبحث عن/استبدال التعبير العادي به.ريكس مثل:

$filterRegex = "(boogers|snot|poop|shucks|argh)"

وتشغيله على سلسلة الإدخال الخاصة بك باستخدام preg_match() لاختبار الجملة لتحقيق النجاح،

أو preg_replace() لإفراغهم.

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

للحصول على أمثلة إضافية لبرمجة PHP، راجع هذه الصفحة للحصول على فئة عامة متقدمة إلى حد ما لتصفية الكلمات التي تعمل على إخراج الحروف المركزية من الكلمات الخاضعة للرقابة، وهذا سؤال Stack Overflow السابق يحتوي أيضًا على مثال PHP (الجزء الرئيسي المهم هناك هو أسلوب الكلمات المصفاة المستند إلى SQL - يمكن الاستغناء عن معوض leet-speak إذا وجدت أنه غير ضروري).

وقمت بإضافة:"الحصول على قائمة الكلمات في المقام الأول هو السؤال الحقيقي." -- بالإضافة إلى بعض روابط Dansgaurdian السابقة، قد تجدها هذا مفيد.الرمز البريدي من 458 كلمة لتكون مفيدة.

نصائح أخرى

مع العلم أن هذا السؤال قديم إلى حد ما، لكنه سؤال شائع ...

هناك سبب وحاجة واضحة لمرشحات الألفاظ النابية (انظر دخول ويكيبيديا هنا)، ولكنها غالبًا ما تكون أقل من الدقة بنسبة 100% لأسباب مختلفة جدًا؛ سياق و دقة.

يعتمد الأمر (كليًا) على ما تحاول تحقيقه - في أبسط الأمور، ربما تحاول تغطية "سبع كلمات قذرة" وبعد ذلك بعض...تحتاج بعض الشركات إلى تصفية أبسط الألفاظ النابية:الكلمات البذيئة الأساسية أو عناوين URL أو حتى المعلومات الشخصية وما إلى ذلك، ولكن يحتاج الآخرون إلى منع تسمية الحساب غير المشروعة (Xbox Live مثال) أو أكثر من ذلك بكثير...

لا يحتوي المحتوى الذي ينشئه المستخدم على كلمات بذيئة محتملة فحسب، بل يمكن أن يحتوي أيضًا على إشارات مسيئة إلى:

  • الأفعال الجنسية
  • التوجه الجنسي
  • دِين
  • عِرق
  • إلخ...

وربما بلغات متعددة.لقد تطورت شترستوك قوائم الكلمات القذرة الأساسية في 10 لغات حتى الآن، لكنها لا تزال أساسية وموجهة بشكل كبير نحو احتياجات "وضع العلامات".هناك عدد من القوائم الأخرى المتاحة على شبكة الإنترنت.

أتفق مع الإجابة المقبولة بأنه ليس علمًا محددًا و مثل اللغة تتطور باستمرار تحدي ولكن حيث يكون معدل الصيد 90٪ أفضل من 0٪.يعتمد الأمر تمامًا على أهدافك - ما تحاول تحقيقه، ومستوى الدعم الذي تحصل عليه، ومدى أهمية إزالة الألفاظ النابية بأنواعها المختلفة.

عند إنشاء مرشح، عليك أن تأخذ في الاعتبار العناصر التالية وكيفية ارتباطها بمشروعك:

  • الكلمات / العبارات
  • المختصرات (FOAD/LMFAO وغيرها)
  • ايجابيات مزيفة (كلمات وأماكن وأسماء مثل "mishit" و"scunthorpe" و"titsworth")
  • عناوين URL (المواقع الإباحية هي هدف واضح)
  • المعلومات الشخصية (البريد الإلكتروني والعنوان والهاتف وما إلى ذلك - إن أمكن)
  • اختيار اللغة (عادةً اللغة الإنجليزية بشكل افتراضي)
  • الإشراف (كيف يمكنك، إن أمكن، التفاعل مع المحتوى الذي ينشئه المستخدم وما يمكنك فعله به)

يمكنك بسهولة إنشاء فلتر للألفاظ النابية يلتقط أكثر من 90% من الألفاظ النابية، لكنك لن تصل أبدًا إلى 100%.هذا غير ممكن.كلما اقتربت من الوصول إلى 100%، أصبح الأمر أصعب..بعد أن قمت ببناء محرك لغة نابية معقد في الماضي كان يتعامل مع أكثر من 500 ألف رسالة في الوقت الفعلي يوميًا، فإنني أقدم النصيحة التالية:

سيتضمن الفلتر الأساسي ما يلي:

  • بناء قائمة من الألفاظ النابية المعمول بها
  • تطوير أسلوب التعامل مع مشتقات الألفاظ

سيتضمن الملف المعقد إلى حد ما (بالإضافة إلى عامل التصفية الأساسي):

  • استخدام مطابقة الأنماط المعقدة للتعامل مع الاشتقاقات الموسعة (باستخدام التعبير العادي المتقدم)
  • اتفاق مع دعونا نتحدث (ل33ت)
  • اتفاق مع ايجابيات مزيفة

يتضمن المرشح المعقد عددًا مما يلي (بالإضافة إلى مرشح معتدل):

وأنا لا أعرف من أي مكتبات جيدة لهذا، ولكن مهما فعلت، تأكد من أن يخطئ في اتجاه السماح الاشياء من خلال. لقد تعاملت مع الأنظمة التي لن تسمح لي أن استخدام "mpassell" باعتباره اسم المستخدم، لأنه يحتوي على "الحمار" على أنه سلسلة فرعية. هذا هو وسيلة رائعة لتنفير المستخدمين!

وخلال مقابلة العمل من الألغام، الشركة CTO الذي أجري مقابلة لي حاولت من كلمة / اللعبة على شبكة الإنترنت كتبت في جاوة. من قائمة الكلمات من القاموس بأكمله أوكسفورد الإنكليزية، ما كان الكلمة الأولى التي جاءت إلى أن تفكر؟

وبطبيعة الحال، فإن الكلمة الأكثر كريهة في اللغة الإنجليزية.

وبطريقة ما، ما زلت حصلت على عرض عمل، ولكن بعد ذلك تعقب قائمة كلمة تجديف (لا <لأ href = "http://www.jivesoftware.com/jivespace/docs/DOC-1906" يختلط = "noreferrer "> على عكس هذا واحد ) وكتب السيناريو سريعة لتوليد قاموس جديد من دون كل الكلمات السيئة (حتى من دون الحاجة للنظر في القائمة).

لحالة معينة، وأعتقد أن المقارنة بين البحث على كلمات حقيقية يبدو وكأنه وسيلة للذهاب مع قائمة كلمة من هذا القبيل. أساليب بديلة / علامات الترقيم تتطلب المزيد من العمل قليلا، ولكن أشك للمستخدمين استخدام في كثير من الأحيان بما فيه الكفاية لتكون هذه القضية.

لن يكون نظام تصفية الألفاظ النابية مثاليًا أبدًا، حتى لو كان المبرمج واثقًا من نفسه ويواكب كل التطورات العارية

ومع ذلك، فإن أي قائمة من "الكلمات البذيئة" من المرجح أن يكون أداؤها أفضل من أي قائمة أخرى، نظرًا لأن المشكلة الأساسية هي فهم اللغة وهو أمر مستعصي إلى حد كبير مع التكنولوجيا الحالية

لذا فإن الحل العملي الوحيد هو ذو شقين:

  1. كن مستعدًا لتحديث قاموسك بشكل متكرر
  2. قم بتعيين محرر بشري لتصحيح النتائج الإيجابية الخاطئة (على سبيل المثال."clbuttic" بدلاً من "classic") والسلبيات الكاذبة (عفوا!غاب واحد!)

والطريقة الوحيدة لمنع إدخال المستخدم الهجومية هي منع جميع مدخلات المستخدم.

إذا كنت تصر على السماح إدخال المستخدم وتحتاج إلى مراجعة، ثم تدرج المشرفين البشري.

فيما يتعلق بالسؤال الفرعي "خداع النظام"، يمكنك التعامل مع ذلك عن طريق تسوية قائمة "الكلمات السيئة" والنص الذي أدخله المستخدم قبل إجراء البحث.على سبيل المثال، استخدم سلسلة من التعابير المنطقية (أو آر إذا كان PHP لديه) للتحويل [ض$5] إلى "ق"، [4@] إلى "a"، وما إلى ذلك، ثم قارن قائمة "الكلمات السيئة" التي تمت تسويتها بالنص الذي تمت تسويته.لاحظ أن التطبيع قد يؤدي إلى نتائج إيجابية كاذبة إضافية، على الرغم من أنني لا أستطيع التفكير في أي حالات فعلية في الوقت الحالي.

التحدي الأكبر هو التوصل إلى شيء من شأنه أن يسمح للناس بالاقتباس " القلم هو "أشد من السيف" بينما يحجب "p e n i s".

وحذار من قضايا التعريب: ما هو شتيمة بلغة واحدة قد تكون كلمة عادية تماما في آخر

وأحد الأمثلة الراهنة على ذلك: يستخدم موقع ئي باي نهج القاموس لتصفية "كلمات سيئة" من ردود الفعل. إذا حاولت إدخال الترجمة الألمانية من "كان هذه الصفقة المثالية" ( "داس الحرب eine perfekte Transaktion")، وايباي رفض ردود الفعل بسبب الكلمات السيئة.

لماذا؟ لأن "كان" الكلمة الألمانية لهو "الحرب"، و "الحرب" في القاموس موقع ئي باي لل"كلمات سيئة".

وفالحذر الحذر من قضايا التوطين.

إذا كنت تستطيع ان تفعل شيئا مثل بوكسيز / ستاكوفيرفلوو حيث يمكن للمستخدمين downvote / علامة محتوى فاحش ... القيام بذلك.

وبعد ذلك كل ما عليك القيام به هو مراجعة المستخدمين "مطيع"، ومنعها إذا ما كسر القواعد.

لقد تأخرت قليلاً عن الحفلة، ولكن لدي حل قد يكون مناسبًا لبعض الذين قرأوا هذا.إنه موجود في جافا سكريبت بدلاً من PHP، ولكن هناك سبب وجيه لذلك.

الكشف الكامل ، لقد كتبت هذا البرنامج المساعد ...

على أي حال.

النهج الذي اتبعته هو السماح للمستخدم بـ "الاشتراك" في تصفية الألفاظ النابية.بشكل أساسي، سيتم السماح بالألفاظ النابية بشكل افتراضي، ولكن إذا لم يرغب المستخدمون في قراءتها، فلا داعي لذلك.يساعد هذا أيضًا في حل مشكلة "l33t sp3@k".

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

ها هي الصفحة التجريبية
https://chaseflorell.github.io/jQuery.ProfanityFilter/demo/

<div id="foo">
    ass will fail but password will not
</div>

<script>
    // code:
    $('#foo').profanityFilter({
        customSwears: ['ass']
    });
</script>

نتيجة

*** سوف تفشل ولكن كلمة المرور لن تفشل

ولا. أنه يؤدي فقط إلى مشاكل. واحد تجربة شخصية clbuttic لدي مع مرشحات تجديف هي المرة حيث كنت ركلة / حظر من قناة IRC لبالذكر أن كنت "العنوان فوق الجسر الى هانكوك لبضع ساعات" أو شيء بهذا المعنى.

وأنا أتفق مع آخر HanClinto لأعلى في هذه المناقشة. أنا عموما استخدام تعبيرات عادية لسلسلة مباريات إدخال النص. وهذا هو جهد دون جدوى، كما، مثل التي ذكرتها في الأصل لديك لحساب صراحة على كل شكل خدعة كتابة شعبية على شبكة الإنترنت في قائمة "المحظورة".

وعلى الجانب علما، والبعض الآخر ويناقش أخلاقيات الرقابة، وأنا يجب أن نتفق على أن شكلا من الضروري على شبكة الإنترنت. بعض الناس ببساطة تتمتع نشر الابتذال لأنه يمكن أن يكون الهجوم على الفور إلى مجموعة كبيرة من الناس، ويتطلب على الإطلاق أي الفكر من جانب المؤلف.

وشكرا للأفكار.

وقواعد HanClinto!

بمجرد حصولك على جدول MYSQL جيد يضم بعض الكلمات السيئة التي تريد تصفيتها (لقد بدأت باستخدام أحد الروابط في هذا الموضوع)، يمكنك القيام بشيء مثل هذا:

$errors = array();  //Initialize error array (I use this with all my PHP form validations)

$SCREENNAME = mysql_real_escape_string($_POST['SCREENNAME']); //Escape the input data to prevent SQL injection when you query the profanity table.

$ProfanityCheckString = strtoupper($SCREENNAME); //Make the input string uppercase (so that 'BaDwOrD' is the same as 'BADWORD').  All your values in the profanity table will need to be UPPERCASE for this to work.

$ProfanityCheckString = preg_replace('/[_-]/','',$ProfanityCheckString); //I allow alphanumeric, underscores, and dashes...nothing else (I control this with PHP form validation).  Pull out non-alphanumeric characters so 'B-A-D-W-O-R-D' shows up as 'BADWORD'.

$ProfanityCheckString = preg_replace('/1/','I',$ProfanityCheckString); //Replace common numeric representations of letters so '84DW0RD' shows up as 'BADWORD'.

$ProfanityCheckString = preg_replace('/3/','E',$ProfanityCheckString);

$ProfanityCheckString = preg_replace('/4/','A',$ProfanityCheckString);

$ProfanityCheckString = preg_replace('/5/','S',$ProfanityCheckString);

$ProfanityCheckString = preg_replace('/6/','G',$ProfanityCheckString);

$ProfanityCheckString = preg_replace('/7/','T',$ProfanityCheckString);

$ProfanityCheckString = preg_replace('/8/','B',$ProfanityCheckString);

$ProfanityCheckString = preg_replace('/0/','O',$ProfanityCheckString); //Replace ZERO's with O's (Capital letter o's).

$ProfanityCheckString = preg_replace('/Z/','S',$ProfanityCheckString); //Replace Z's with S's, another common substitution.  Make sure you replace Z's with S's in your profanity database for this to work properly.  Same with all the numbers too--having S3X7 in your database won't work, since this code would render that string as 'SEXY'.  The profanity table should have the "rendered" version of the bad words.

$CheckProfanity = mysql_query("SELECT * FROM DATABASE.TABLE p WHERE p.WORD = '".$ProfanityCheckString."'");
if(mysql_num_rows($CheckProfanity) > 0) {$errors[] = 'Please select another Screen Name.';} //Check your profanity table for the scrubbed input.  You could get real crazy using LIKE and wildcards, but I only want a simple profanity filter.

if (count($errors) > 0) {foreach($errors as $error) {$errorString .= "<span class='PHPError'>$error</span><br /><br />";} echo $errorString;} //Echo any PHP errors that come out of the validation, including any profanity flagging.


//You can also use these lines to troubleshoot.
//echo $ProfanityCheckString;
//echo "<br />";
//echo mysql_error();
//echo "<br />";

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

أعتقد أنه يجب عليك أن تخطئ فيما يتعلق بالسماح للمستخدمين بالتسجيل، واستخدام البشر للتصفية والإضافة إلى جدول الألفاظ النابية كما هو مطلوب.على الرغم من أن الأمر كله يعتمد على تكلفة النتيجة الإيجابية الكاذبة (يتم وضع علامة على كلمة جيدة على أنها سيئة) مقابل التكلفة السلبية الكاذبة (تمرير الكلمة السيئة).يجب أن يحكم ذلك في النهاية مدى عدوانيتك أو تحفظك في استراتيجية التصفية الخاصة بك.

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

وأنا جمعت 2200 كلمات بذيئة في 12 لغة: عربي، ع، خدمات العملاء، دا، دي، وإي، وفاق، كرة القدم، فاي، الاب، مرحبا، هو جين تاو، و، جا، كو، NL، لا، رر، وحزب العمال، رو، اس، ال، TLH، آر، زكية.

والخلية تفريغ، وتتوفر JSON، XML أو خيارات CSV.

https://github.com/turalus/openDB

وكنت أقترح عليك لتنفيذ هذا SQL إلى DB الخاصة بك والتحقق في كل مرة عندما مدخلات المستخدم شيء.

وبصراحة، كنت السماح لهم الحصول على "خداع النظام" كلمات من وحظرها بدلا من ذلك، الذي هو مجرد لي. ولكنه أيضا يجعل البرمجة أسهل.

ما أريد القيام به هو تنفيذ مرشح التعابير المنطقية مثل ذلك: /[\s]dooby (doo?)[\s]/i أو أنها مسبوقة الكلمة على الآخرين، /[\s]doob(er|ed|est)[\s]/. ومن شأن هذه الكلمات منع تصفية مثل يخفف، وهي صالحة تماما، ولكن يتطلب أيضا معرفة المتغيرات الأخرى، واستكمال تصفية الفعلي إذا كنت تعلم واحدة جديدة. ومن الواضح أن هذه كلها أمثلة، ولكن عليك أن تقرر كيفية القيام بذلك بنفسك.

وأنا لست على وشك أن اكتب من كل الكلمات وأنا أعلم، وليس عندما لا أريد فعلا أن تعرف عليها.

أنا أتفق مع عدم جدوى الموضوع، ولكن إذا كان عليك أن يكون لديك مرشح، تحقق من Ning's خشب البقس:

Boxwood هو امتداد PHP للاستبدال السريع للكلمات المتعددة في جزء من النص.وهو يدعم المطابقة الحساسة لحالة الأحرف وغير الحساسة لحالة الأحرف.يتطلب أن يتم ترميز النص الذي يعمل عليه بـ UTF-8.

راجع أيضًا منشور المدونة هذا لمزيد من التفاصيل:

مع Boxwood، يمكنك جعل قائمة مصطلحات البحث الخاصة بك طويلة كما تريد - لا تصبح خوارزمية البحث والاستبدال أبطأ مع وجود المزيد من الكلمات في قائمة الكلمات التي يجب البحث عنها.إنه يعمل عن طريق إنشاء تجربة لجميع مصطلحات البحث ثم يقوم بمسح نص الموضوع الخاص بك مرة واحدة فقط، والتنقل بين عناصر التجربة ومقارنتها بالأحرف الموجودة في النص الخاص بك.وهو يدعم US-ASCII وUTF-8، والمطابقة الحساسة لحالة الأحرف أو غير الحساسة، ويحتوي على بعض منطق التحقق من حدود الكلمات المتمركز حول اللغة الإنجليزية.

وخلصت إلى أنه من أجل إنشاء مرشح جيد للألفاظ النابية، نحتاج إلى 3 مكونات رئيسية، أو على الأقل هذا ما سأفعله.هؤلاء هم:

  1. مرشح:خدمة خلفية تتحقق من القائمة السوداء أو القاموس أو شيء من هذا القبيل.
  2. عدم السماح بحساب مجهول
  3. بلغ عن سوء معاملة

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

أيضا في وقت متأخر من المباراة، ولكن القيام ببعض الأبحاث وتعثرت هنا.كما ذكر آخرون، يكاد يكون من المستحيل تقريبًا إذا تم تشغيله آليًا، ولكن إذا كان التصميم/المتطلبات الخاصة بك يمكن أن تتضمن في بعض الحالات (ولكن ليس طوال الوقت) تفاعلات بشرية لمراجعة ما إذا كانت بذيئة أم لا، فيمكنك التفكير في تعلم الآلة. https://docs.microsoft.com/en-us/azure/cognitive-services/content-moderator/text-moderation-api#profanity هو خياري الحالي الآن لعدة أسباب:

  • يدعم العديد من التعريب
  • يستمرون في تحديث قاعدة البيانات، لذلك لا أضطر إلى مواكبة أحدث اللغات العامية أو اللغات (مشكلة تتعلق بالصيانة)
  • عندما يكون هناك احتمال كبير (أي.90% أو أكثر) يمكنك إنكار ذلك بشكل عملي
  • يمكنك ملاحظة الفئة التي تسبب علامة قد تكون أو لا تكون بذيئة، ويمكنك مطالبة شخص ما بمراجعتها ليعلم أنها بذيئة أم لا.

بالنسبة لاحتياجاتي، كان/يعتمد على خدمة تجارية صديقة للعامة (حسنًا، ألعاب الفيديو) والتي قد يرى/سوف يرى المستخدمون الآخرون اسم المستخدم بها، لكن التصميم يتطلب أن يمر عبر مرشح الألفاظ النابية لرفض اسم المستخدم المسيء.الجزء المحزن في هذا هو أن مشكلة "clbuttic" الكلاسيكية ستحدث على الأرجح نظرًا لأن أسماء المستخدمين عادةً ما تكون عبارة عن كلمة واحدة (تصل إلى N من الأحرف) مكونة من كلمات متعددة متسلسلة أحيانًا ...مرة أخرى، لن تقوم الخدمة المعرفية لـ Microsoft بوضع علامة على "مساعدة" كـ Text.HasProfanity=true ولكنها قد تضع علامة على احتمالية عالية لإحدى الفئات.

كما يستفسر OP، ماذا عن "a$$"، إليك النتيجة عندما مررتها عبر الفلتر:enter image description here, ، كما ترون، فقد حددت أنها ليست دنيوية، ولكن هناك احتمال كبير بأنها كذلك، لذا ضع علامات على أنها توصيات للمراجعة (التفاعلات البشرية).

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

بالمناسبة، التكلفة/السعر لهذه الخدمة منخفض جدًا بالنسبة لغرضي (كم مرة يتم تغيير اسم المستخدم؟)، ولكن مرة أخرى، بالنسبة لـ OP، ربما يتطلب التصميم استعلامات أكثر كثافة وقد لا يكون مثاليًا للدفع/الاشتراك فيه خدمات ML، أو لا يمكن أن تحتوي على مراجعة/تفاعلات بشرية.كل هذا يتوقف على التصميم..ولكن إذا كان التصميم يناسب الفاتورة، فربما يكون هذا هو الحل الذي يقدمه OP.

إذا كنت مهتمًا، يمكنني إدراج السلبيات في التعليق في المستقبل.

لا.

لأن:

  • كلبوتيك
  • الألفاظ النابية ليست يا إلهي الشر
  • لا يمكن تعريف الألفاظ النابية بشكل فعال
  • من المحتمل أن معظم الناس لا يقدرون كونهم "محميين" من الألفاظ النابية

يحرر:وبينما أتفق مع المعلق الذي قال "الرقابة خاطئة"، فإن هذه ليست طبيعة هذه الإجابة.

تعتبر مرشحات الألفاظ النابية فكرة سيئة. والسبب هو أنك لا تستطيع التقاط كل كلمة بذيئة.إذا حاولت، سوف تحصل على نتائج إيجابية كاذبة.

اصطياد الكلمات

لنفترض فقط أنك تريد الحصول على كلمة F.الحق سهلة؟حسنا دعنا نري.

يمكنك حلقة من خلال سلسلة للعثور على "اللعنة". لسوء الحظ ، خدعة الناس في الوقت الحاضر.مرشح الألفاظ النابية لم يلتقط كلمة "فوك".

يمكن للمرء أن يحاول التحقق من وجود تهجئات ومتغيرات متعددة للكلمة، ولكن ذلك سيؤدي إلى إبطاء أداء التعليمات البرمجية الخاصة بك.للعثور على الكلمة F، عليك البحث عن "fuc"، "Fuc"، "fuk"، "Fuk"، "F***"، وما إلى ذلك.والقائمة تطول وتطول.

تجنب البراءة

حسنًا، ماذا عن جعلها غير حساسة لحالة الأحرف وتجاهل المسافات حتى تلتقط "F u C k"؟قد تبدو هذه فكرة جيدة، ولكن يمكن لأي شخص تجاوز مرشح الألفاظ النابية باستخدام "F.U.C.K."

أنت تتجاهل علامات الترقيم.

الآن هذه مشكلة حقيقية، لأن جملة مثل "جحيمo، هناك!" سيتم التقاطها كـ "الجحيم" و"Whمؤخرةيصل؟" تلتقط كـ "الحمار".

وهناك مجموعة من الكلمات التي يتعين عليك استبعادها من الفلتر، مثل "Consحلمة الثديution"، لأن هناك "حلمة" فيه.

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

لا تستخدم مرشحات الألفاظ النابية.من الصعب تطويرها، وهي بطيئة مثل الزحف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top