Инструменты для получения намерений из статусов Twitter? - PullRequest
3 голосов
/ 14 августа 2010

Я рассматриваю проект, в котором содержание публикации дополняется соответствующими, общедоступными твитами от людей в этом районе.Но как я могу программно найти соответствующие твиты?Я знаю, что создание структуры, представляющей значение естественного языка, в значительной степени является святым Граалем НЛП, но, возможно, есть какой-то инструмент, который я могу использовать, чтобы хотя бы немного сузить его?Хештеги.Но это требует больше работы от имени пользователей.Я не очень знаком с Твиттером - используют ли большинство людей хэштеги (даже для небольших задач), или полагаться на них, чтобы отрезать большой сегмент данных?

Мне также было бы интересно захватить Facebookстатусы (конечно, с разрешения автора) и использование хештега довольно редко встречаются в Facebook.

Я мог бы использовать простой поиск по ключевым словам, чтобы грубо сузить поле, но для этого, скорее всего, потребуется вмешательство человека, чтобы определить, какойтвиты должны публиковаться вместе с контентом.

Идеи?Это было сделано раньше?

Ответы [ 3 ]

5 голосов
/ 20 августа 2010

Существует два простых способа найти твиты, имеющие отношение к вашему контенту. Первым было бы рассматривать это как контролируемую классификацию документов , в которой вы обучали бы классификатор аннотировать твиты с определенным заранее заданным набором меток тем. Затем вы можете использовать метки для выбора твитов, подходящих для любого контента, который вы будете увеличивать. Если вам не нравится использовать предопределенный набор тем, другой подход будет заключаться в том, чтобы просто набирать баллы по твитам в соответствии с их семантическим перекрытием с вашим контентом. Затем вы можете отобразить верхние n твиты с самым семантическим перекрытием.

Классификация контролируемых документов

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

твит: финал NBA потрясен ярлык: спорт
твит: Googlers теперь разрешено использовать Ruby! метка: программирование
твит: ланч ярлык: другое

Если вы хотите собирать данные об обучении без необходимости вручную маркировать твиты темами, вы можете использовать хэштеги для назначения меток тем твитам. Хэштеги могут совпадать с метками тем, или вы можете написать правила для отображения твитов с определенными хештегами на нужную метку. Например, всем твитам с тегами #NFL или #NBA можно присвоить метку sports.

Как только у вас есть твиты, помеченные по темам, вы можете использовать любое количество существующих пакетов программного обеспечения для обучения классификатора, который присваивает метки новым твитам. Несколько доступных пакетов включают в себя:

Семантическое перекрытие

Поиск твитов, используя их семантическое совпадение с вашим контентом, избавляет от необходимости иметь маркированный обучающий набор. Самый простой способ оценить семантическое перекрытие между вашим контентом и твитами, которые вы набираете, - это использовать модель векторного пространства . Для этого представьте свой документ и каждый твит в виде вектора с каждым измерением в векторе, соответствующем слову. Значение, присвоенное каждой позиции вектора, представляет, насколько важно это слово для значения документа. Один из способов оценить это - просто использовать количество раз, когда слово встречается в документе. Тем не менее, вы, вероятно, получите лучшие результаты, используя что-то вроде TF / IDF , что увеличивает редкие термины и уменьшает более распространенные.

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

Нет необходимости кодировать все это самостоятельно. Вы можете просто использовать пакет, такой как Classifier4J, который включает в себя класс VectorClassifier , который оценивает сходство документов, используя модель векторного пространства.

Лучшее семантическое перекрытие

Одна проблема, с которой вы можете столкнуться с моделями векторного пространства, использующими один термин на измерение, заключается в том, что они не справляются с обработкой разных слов, которые означают примерно одно и то же. Например, такая модель сказала бы, что нет никакого сходства между The small automobile и A little car.

Существуют более сложные среды моделирования, такие как скрытый семантический анализ (LSA) и скрытое распределение дирихле (LDA) , которые могут использоваться для построения более абстрактных представлений документов, сравниваемых друг с другом. Такие модели можно рассматривать как оценку документов, основанную не на простом совпадении слов, а скорее на пересечении основного значения слов.

Что касается программного обеспечения, пакет Semantic Vectors предоставляет масштабируемую LSA-подобную структуру для сходства документов. Для LDA вы можете использовать реализацию Дэвида Блея или Stanford Topic Modeling Toolbox.

0 голосов
/ 15 августа 2010

Проблема с NLP не в алгоритме (хотя это проблема), проблема в ресурсах. Есть несколько инструментов для мелкого разбора с открытым исходным кодом (это все, что вам нужно, чтобы получить намерение), которые вы можете использовать, но разбор тысяч или миллионов твитов обойдется вам в компьютерное время.

С другой стороны, как вы сказали, не у всех твитов есть хэштеги, и нет никаких обещаний, что они будут актуальны.

Возможно, вы можете использовать комбинацию поиска по ключевым словам, чтобы отфильтровать несколько возможностей (с наибольшей плотностью ключевых слов), а затем использовать более глубокий анализ данных, чтобы выбрать первые 1 или 2. Это позволит сохранить ресурсы компьютера на минимуме и Вы должны иметь возможность получать соответствующие твиты.

0 голосов
/ 15 августа 2010

Отличный вопрос.Я думаю, что для твиттера лучше всего использовать хэштеги, потому что в противном случае вам нужно создавать алгоритмы или находить существующие алгоритмы, которые анализируют язык и улучшают его с течением времени на основе ввода / обратной связи с пользователем.

Для Facebook вы можете сделать то, что Bing реализовал некоторое время назад.Как я освещал в этой статье здесь: http://www.socialtimes.com/2010/06/bing-adds-facebook-and-twitter-features-steps-up-social-services/

Я писал: Например, поиск «Финалы NBA» вернет содержимое фан-страницы из Facebook, включая сообщения с местной телестанции.Поэтому, если вы пытаетесь дополнить контент, связанный с NBA, вы можете выполнить поиск, аналогичный тому, который предлагает Bing - поиск общедоступного контента на фан-страницах, как пауки индексируют их для поисковых систем.Я не разработчик, поэтому я не уверен в тонкостях, но я знаю, что это можно сделать.

Также вы можете отображать популярные общие ссылки пользователей, которые публикуют для всех, будут агрегированы для всего контента, не относящегося к фанатам.Я не уверен, ограничено ли это публикацией «всем» и / или «популярностью», хотя я бы предположил, но вы можете проверить это дважды.

Надеюсь, это поможет

...