سؤال

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

في OBJ-C لدي

NSString *tokens = [text componentsSeparatedByString:@" "];

ثم أحلق كل رمز لمعرفة ما إذا كان هناك أي من الكلمات الرئيسية (لدي حوالي 400 في قائمة) موجودة داخل كل رمز.

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

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

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

المحلول

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

NSMutableCharacterSet *separators = [NSMutableCharacterSet punctuationCharacterSet];

[separators formUnionWithCharacterSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

NSArray *words = [bigString componentsSeparatedByCharactersInSet:separators];

مصدر: http://www.tech-recipes.com/rx/3418/cocoa-explode-break-nsstring-into-individual-words/

نصائح أخرى

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

لدى جيف مقالة مثيرة للاهتمام يجب مراعاتها قبل الشروع في مثل هذا الرمز:

http://www.codinghorror.com/blog/2008/10/obscenity-filters-bad-idea-or-

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

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

شيئين:

  • لن تعمل FSA بالضرورة اعتمادًا على مدى ذكاءك أن يكون المرشح
  • Regex بطيئة للغاية بشكل عام اعتمادًا على عدد تريد تشغيلها
  • 400 كلمة منخفضة إلى حد ما ، اعتمادًا على احتياجاتك و Langauges
  • هناك عدد من الحالات الصعبة للغاية التي يجب توخي الحذر عند التصفية ، وخاصة تضمين كلمات مثل "تفترض"

تقوم شركتي ، inversoft ، ببناء حل تصفية تجاري وهو ذكي للغاية. لا يستخدم Regex أو FSA ، ولكنه يحتوي على تقنية معالجة سريعة الخطية مصممة مخصصة تجعلها سريعة ودقيقة للغاية (4000+ رسالة في الثانية). كما أن لديها أكثر من 600 كلمة إنجليزية في عدد من الفئات بما في ذلك العامية ، والهزلة العرقية ، والمخدرات ، والعصابة ، والديني ، إلخ.

إذا كنت تبحث عن حل ذكي يدرك السياق مع الدعم ، فيجب عليك التحقق من Clean Speak من inversoft. يجب أن يكون تثبيته في OBJ-C بسيطًا باستخدام خدمة الويب XML.

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