ما يتحقق اختبار تورينج حقا

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

الآن حان الوقت لترتيب استخلاص المعلومات ، والحديث عن جهاز الروبوت واستخلاص النتائج.



قواعد اللعبة


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

  1. يمكن لكل مشارك متصل ببرنامج الروبوت أن يأخذ دور اللاعب الذي يجيب على الأسئلة ، أو أن يسأل القاضي هذه الأسئلة.
  2. إذا قرر أحد المشاركين أن يكون قاضيًا ، فسيختار البوت لاعبًا له بشكل عشوائي - إما بين اللاعبين البشريين أو يربط الروبوت. أي أنه في اللعبة يوجد دائمًا شخص يجيب ، والقاضي يطرح عليه الأسئلة فقط.
  3. إذا قرر أحد المشاركين أن يكون لاعبًا ، فإن البوت يبحث عنه بالمثل لإقران القاضي المشارك.
  4. تنقسم اللعبة إلى جولات من 5 أسئلة. في نهاية كل جولة ، يتخذ القاضي قرارًا يتواصل معه ، مع شخص أو مع آلة - هذه هي نهاية اللعبة. إذا لم يتمكن من اتخاذ القرار ، فيمكنه بدء الجولة التالية أو الاستسلام ، ووقف اللعبة.
  5. يلعب الروبوت دور الطفلة ميشا ، البالغة من العمر خمس سنوات. لكي لا يسهل المهمة على القاضي ، يوصى بأن يستجيب اللاعب أيضًا نيابة عن ميشا.


منذ الإطلاق وحتى وقت الكتابة ، تم لعب 256 مباراة (غريب بعض الشيء ، ولكنه حقيقي).

من بين هذه ، انتهت بنتيجة واضحة ، أي أن كلا الفريقين لعبوا حتى نهاية الجولة التالية (لم يلعب أحد أكثر من جولة واحدة) وقرر القاضي - 115 مباراة

  • حل الروبوت - 74
  • قرار "الرجل" - 41

كان هناك 26 قرارًا خاطئًا ، من بينها:

  • حل "روبوت" (في الواقع شخص) - 15
  • الحل البشري (في الواقع إنسان آلي) - 11

كما ترون ، في كثير من الأحيان يخطئ الشخص في أنه روبوت من الروبوت في شخص.

ونتيجة لذلك ، تم تحديد الروبوت بشكل صحيح في (74-15) / 115 = 51٪ من الألعاب ، وكان الروبوت خاطئًا لشخص في 11/115 = 9.5٪ من الألعاب ، أي يمكننا القول بثقة أن برنامج Misha bot لم يجتاز الاختبار.


على سبيل المقارنة ، في مسابقة عام 2012 ، في 29٪ من 150 محادثة ، أخذ القضاة Odessa bot Zhenya Gustman لشخص ، وفي 2014 ، 33٪ من القضاة بناءً على 300 مقابلة.

ما تحت الغطاء


البوت مكتوب بلغة بايثون ويتكون بشكل عام من ثلاث وحدات:

  • في الواقع روبوت مع محرك لعبة
  • مدير الروبوت
  • الروبوت

يتم تضمين الخوارزمية الرئيسية للعبة في فئة اللعبة ، التي تخزن معرف المشاركين وتنفذ آلة حالة بسيطة:

  • بداية اللعبة
  • في انتظار سؤال من القاضي
  • في انتظار رد اللاعب
  • في انتظار قرار القاضي
  • انتهت اللعبة


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

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

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

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

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

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

أولاً قمت بحشو هذا الملف النصي:

T: 
T:   
Q:   ?
Q:   ?
Q:   ?
Q:   ?
Q:  ?

T: 
Q:   ?

T:  
T: 
Q:  ?
Q:   ?
Q:   ?

T:  
T: , 
Q:  ?
Q:  ?

… . — , , --. . , . pymorphy2 kmike, YARN, XML SQLite — 22 , …

:

    def normalSynonyms(self,orig):
        r = self.morph.parse(orig)
        res = []
        for parse in r:
            word = parse.normal_form
            syns = self.yarn.synonyms(word)
            for g in syns:
                words = self.yarn.words(syns[g])
                res = res + words
        return res

.

getAnswer(self, text)

, . , - , . , .

:

  1. , . , .
  2. -, , , , . .


, «» , , — , . , , — .

" , , 12000 . «-» 300 . ."

, , , . , .


, , , , , .

, , , . , , .   - , . , , .

— , , . , .

. ,   , — - - . - , . , , « » — . , , .

, , , , - . , , , .


, -:


Raspberry Pi 3. SSD, , , .

, .


, , — . , , , , , , .

, , , " ?" ( «Computing Machinery and Intelligence»)   « ». , , — , . .

:
"    ,   « »   ,     .   , ,   - .   ,   , ,  , ."

- , , , , . , .


:
"     , ,  ,   .    ."

, , . , , , , , , — « [] ?», , .

:
"2018-10-23 13:01:53,385 186 Player2Judge , ?"

— , :





, , . , , ?

. « » ? R2-D2 C-3PO « »? «A.I.»? « »? « »? - ? , , , , - .

— , ? , , .

, R2-D2 -, , .

, , — . ( « » ) , , , , , , , .

, C-3PO , , , , . - , .

. , , :

  • , ;
  • , , , .

, —   . .

, . , « ?», (1950), , . « » , .

:
"… , , , , ; , , ."

Source: https://habr.com/ru/post/ar427259/


All Articles