Как распознать конкретного пользователя в длинном многопользовательском журнале интернет-чата? - PullRequest
3 голосов
/ 07 июля 2011

Вот конкурс онлайн-программирования, который мы планируем провести.

Какие могут быть возможные подходы к решению той же проблемы?

Из случайного журнала IRC (Internet Relay Chat) небольшой процент псевдонимов пользователей будет случайно удален. Код участника должен быть в состоянии заполнить пропущенные ники пользователя. Другими словами, это событие требует от вас разработки интеллектуальной программы, которая может выяснить, «кто мог бы сказать, что».

Можно предположить, что все общение будет вестись на современном английском языке с пунктуацией или без нее.

Например -

Оригинальный чат: ... <user1>: Hey! <user2>: Hello! Where are you from, user1? <user3>: Can anybody help me out with Gnome installation? <user1>: India. user3, do you have the X Windows System installed? <user2>: Cool. What is Gnome, user3? <user3>: I don’t know. How do I check? <user3>: Its a desktop environment, user2. <user2>: Oh yeah! Just googled. <user1>: Type “startx” on the command line. Login as root and type “apt-get install gnome”. <user3>: Thanks! <user5>: I’m root, obey me! <user2>: Huh?! <user3>: user2, you better start using Linux! ...

Участнику будет предоставлено только следующее.

Журнал чата с удаленными никами:

..

: Эй! : Привет! Откуда вы, user1? : Кто-нибудь может мне помочь с установкой Gnome? : Индия. user3, у вас установлена ​​система X Windows? : Круто. Что такое Gnome, user3? <%%%> : я не знаю. Как я могу проверить? <%%%>: Это среда рабочего стола, user2. : О да! Просто гуглил. : введите «startx» в командной строке. Войдите в систему как пользователь root и введите «apt-get install gnome». : Спасибо! <%%%> : Я root, подчиняйся мне! <%%%> : А ?! : user2, вам лучше начать использовать Linux! ...

Задача кода участника - заменить "<%%%> s" соответствующими никами пользователя. В неоднозначных случаях, таких как случайный комментарий в приведенном выше примере (который мог бы сказать любой другой пользователь!), Код должен указывать то же самое.

Ответы [ 2 ]

3 голосов
/ 07 июля 2011

Мне приходят на ум две вещи: авторство и разочарование в чате .Это не совсем то, что вы описываете, но они оба довольно близки.

Авторство - проблема определения того, кто из известных авторов написал конкретный документ.Классическая авторская атрибуция обычно используется для больших разделов текста (например, пьес, романов, речей), но люди пытаются сделать то же самое на более коротких образцах текста из интернет-источников.Хорошей ссылкой, вероятно, является что-нибудь, написанное Моше Коппелем с «авторством» в названии, например недавняя статья «Авторство в дикой природе» .Обычный подход к этой задаче включает использование типичных подходов к классификации документов, то есть использования функций набора слов и классификатора машинного обучения, для набора того, что обычно считается стоп-словами (например, как, или, и т. Д.).Проблема здесь заключается в том, что вся эта работа относится к документам и не учитывает диалоговую природу данных IRC.

Разрыв чата - это проблема идентификации ряда последовательных «разговоров» из данных чата.Это довольно сложная проблема, поскольку вам часто нужно использовать контекст разговора, чтобы узнать, кто на кого отвечает.Я полагаю, что такой подход был бы важен и для этой задачи.Например, если анонимное сообщение является частью разговора, это ограничивает круг авторов людьми в беседе.Я действительно знаю об этом только из статьи Эльснера и Чарниака Расцветающий чат .Их раздел «связанная работа» является хорошим обзором области.

0 голосов
/ 07 июля 2011

Одним из возможных решений было бы взять идею «спам-фильтра» Наивного байесовского классификатора и посмотреть, какие слова обычно используют разные ники.Классифицируйте сообщения, в соответствии с которыми пользователь использует слова «больше всего похожи» на слова, отправленные неизвестным пользователем.Недостатком этого было бы то, что если бы они использовали новые слова, которые вы раньше не видели (что весьма вероятно), то вам нужно было бы понять контекстную информацию более высокого уровня.

...