سؤال

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

سؤالي الأول هو ... ما هو مشابه؟ أعداد الكلمات التي تتطابق، وعدد الكلمات المتتالية التي تتطابق؟

يمكن أن أرى كتابة محلل محلل يضع كل مستند إلى صفيف مع الكلمة والموقع ثم مقارنة معهم.

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

ومع ذلك، يبدو أنه مختلف إلى حد ما مما أحاول القيام به.

أي خيارات أو مؤشرات قد يكون الناس رائعون!

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

المحلول

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

قد يكون من المفيد طرح السؤال "لماذا". ماذا سيتم استخدام مقياس التشابه؟

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

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

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

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

وظيفة النازع هي مونج من خلال المستند وإنتاج المجموعة (أو القائمة، هل يجب طلبها؟) من القطع التي هي جوهر المستند: قد تكون هذه الكلمات أو الجمل الفردية والعبارات.

تتمثل مهمة المقارنة في تقييم التشابه المستندين "جوهر".

مثال بسيط: استخراج قائمة كلمات فريدة من الكلمات 8 أحرف أو أكثر من المستند. يمكن أن تكون المقارنة بعد ذلك وثيقتين متشابهة إذا كانت مجموعة واحدة تحتوي على أكثر من 75٪ من الآخرين.

نصائح أخرى

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

نهج واحد يمكنك استخدامه يسمى التشينج. تتضمن العملية قمزة جميع الكلمات في كلتا الوثيقتين على سبيل المثال.

D1 = {"An", "Example", "Document", "To", "Show", "Shingling"}
D2 = {"Another", "Example", "Document", "To", "Show", "Shingling", "but", "longer"}

ثم تأخذ مجموعة من التسلسلات الفرعية المتجاورة من طول النافذة N (تذكر عدم وجود مكرارات في مجموعة).

S(D1, 3) = {{"An", "Example", "Document"}, {"Example", "Document", "To"}, {"Document", "To", "Show"}, {"To", "Show", "Shingling"}}

S(D2, 3) = {{"Another", "Example", "Document"}, {"Example", "Document", "To"}, {"Document", "To", "Show"}, {"To", "Show", "Shingling"}, {"Show", "Shingling", "but"}, {"Shingling", "but", "longer"}}

ثم التشابه هو تصادف التقاطع مقسوم بأوراق الاتحاد. لذلك على مثالنا 3/7 = 43٪ مماثلة.

يمكن إجراء تقريب فعال باستخدام الرسومات (مجموعة فرعية من مجموعة القوباء المنطقية)، وتحديدها عشوائيا.

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

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

اعتمادا على المستند، يمكنك أولا استخراج الكلمات الرئيسية الأكثر أهمية أو الجمل الرئيسية من المستندات الطويلة لاستخراج جوهر النص (استخراج الكلمات الرئيسية "Google). ثم يمكنك العمل مع خوارزميات التشابه النصية (مثل خوارزمية الجيران K-nevear) لصيد مستندات مماثلة. المفتاح هو استخراج الأجزاء الرئيسية للنص.

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