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