المواضيع الشائعة على تويتر:الجمع بين هجاء مختلفة

StackOverflow https://stackoverflow.com/questions/1203497

  •  05-07-2019
  •  | 
  •  

سؤال

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

"أمير نصف الدم"/"أمير نصف الدم"

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

Twitter's Trending Topics Admin

لديك اسم الموضوع على اليسار وطرق التهجئة المختلفة على اليمين.هل تعتقد أن هذا يتم يدويًا أم تلقائيًا؟هل من الممكن القيام بذلك تلقائيا؟اذا نعم:كيف؟

آمل أن تتمكن من مساعدتي.شكرا لك مقدما!

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

المحلول 2

سأحاول الإجابة على سؤالي بناءً على تعليق Broken Link (شكرًا لك على هذا):


لقد قمت باستخراج عبارات تتكون من كلمة واحدة إلى ثلاث كلمات من قاعدة بيانات المستندات الخاصة بك.ومن هذه العبارات الزائدة العبارات التالية:

  • الأمير نصف الدم
  • الأمير نصف الدم
  • الأمير نصف الدم

لكل عبارة، تقوم بإزالة كافة الأحرف الخاصة والمسافات الفارغة وجعل السلسلة صغيرة:

عبارة $ = 'أمير نصف الدم';$phrase = preg_replace('/[^a-z]/i', '', $phrase);$phrase = strtolower($phrase);// النتيجة هي "أمير نصف الدم"

عند الانتهاء من ذلك، فإن جميع العبارات الثلاث (انظر أعلاه) لها تهجئة واحدة مشتركة:

  • الأمير نصف الدم => الأمير نصف الدم
  • الأمير نصف الدم => الأمير نصف الدم
  • الأمير نصف الدم => الأمير نصف الدم

إذن "نصف الأمير" هي العبارة الأصلية.يمكنك إدراج كل من العبارة العادية والعبارة الأصلية في قاعدة البيانات الخاصة بك.

لإظهار "مسؤول المواضيع الشائعة" مثل تويتر، عليك القيام بما يلي:

// first select the top 10 parent phrases
$sql1 = "SELECT parentPhrase, COUNT(*) as cnt FROM phrases GROUP BY parentPhrase ORDER BY cnt DESC LIMIT 0, 10";
$sql2 = mysql_query($sql1);
while ($sql3 = mysql_fetch_assoc($sql2)) {
    $parentPhrase = $sql3['parentPhrase'];
    $childPhrases = array(); // set up an array for the child phrases
    $fifthPart = round($sql3['cnt']*0.2);
    // now select all child phrases which make 20% of the parent phrase or more
    $sql4 = "SELECT phrase FROM phrases WHERE parentPhrase = '".$sql3['parentPhrase']."' GROUP BY phrase HAVING COUNT(*) >= ".$fifthPart;
    $sql5 = mysql_query($sql4);
    while ($sql6 = mysql_fetch_assoc($sql5)) {
        $childPhrases[] = $sql3['phrase'];
    }
    // now you have the parent phrase which is on the left side of the arrow in $parentPhrase
    // and all child phrases which are on the right side of the arrow in $childPhrases
}

هل هذا ما فكرت فيه يا "الرابط المكسور"؟هل سينجح هذا؟

نصائح أخرى

وماذا تريد في الأساس هو إيجاد التشابه href="https://stackoverflow.com/questions/1034622/how-can-i-measure-the-similarity-between-2-strings"> .

وأعتقد خوارزمية SOUNDEX هو ما كنت أبحث عنه. ويمكن استخدامه لمقارنة السلاسل على أساس كيف أنها سليمة. أو كما يصف ويكي:

<اقتباس فقرة>   

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

و:

<اقتباس فقرة>   

وتستخدم هذه الخوارزمية [تحرير: وهذا هو، "تصنيف" كلمات بكتاب وثلاثة أرقام]، كل من "روبرت" و "روبرت" إرجاع نفس السلسلة "R163" في حين أن "روبين" غلة "R150". "اشكرافت" غلة "A261".

وهناك أيضا وLevenshtein المسافة .

وحظا سعيدا.

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

http://norvig.com/spell-correct.html

و"anderstornvig" ذكر Levenshtein / تحرير المسافة، التي هي فكرة عظيمة ولكن ليس من المناسب تماما لأن بعض التباديل هي أكثر أهمية من التباديل أخرى. يبدو أن المشكلة أن الذي نستخدمه الكثير من المعرفة مجال معين عندما كنا تحديد الاختلافات "الكبير"، والتي هي "تافهة". على سبيل المثال، ونحن نعلم أن اصلة في "الامير نصف الدم" مهمة جدا ولكن العدد في "فايرفوكس 3" مهم جدا.

لهذا السبب، قد تنظر في تخصيص مقياس بسيط مثل Levenshtein. إضافة المعلمات التي تمكنك من تخصيص ما أنواع الاختلافات الهامة وأنواع هي غير مهم.

وعلى وجه الخصوص، Levenshtein بحساب عدد "التحرير" (أي، الإدراج والحذف، واستبدال) المطلوبة لتحويل سلسلة إلى أخرى. على نحو فعال، ووزنه كل تحرير نفسه. هل يمكن أن يكتب التنفيذ أن أوزان بعض التعديلات بشكل مختلف. على سبيل المثال، تغيير "-" إلى "" يجب أن يكون الوزن المنخفض جدا (تشير إلى الأهمية المحدودة). تغيير "3" إلى "2"، عندما يكون عدد وحدها، ينبغي أن يكون لها وزن مرتفع جدا (تشير إلى أهمية عالية).

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

وبهذه الطريقة، يمكنك تدريب الخوارزمية باستخدام المعرفة الخاص بالنطاق.

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

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

إن المكان الذي تحتاج فيه حقًا إلى تدخل إنساني هو عندما تكون هناك ألقاب شائعة.مثل مايكل جاكسون، MJ، مايكل، الخ.أو ماكدونالدز، ماك دي، ميكي دي، إلخ.ومن ثم مع التقنية، لديك Visual Studio، VS2008، VS، وما إلى ذلك.أو StackOverflow، SO، وما إلى ذلك.ثم C#، C-Sharp، C#.NET كلها متشابهة، لكن C وC++ مختلفان.

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

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

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

قراءة مفيدة واضحة حول هذا الموضوع من ويكي:

حظ سعيد.

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

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