Двухэтапный подход для многословных тегов
Вы можете объединить все твиты в один большой документ, а затем извлечь n наиболее интересные словосочетания из всей коллекции твитов. Затем вы можете вернуться и пометить каждый твит с коллокациями, которые происходят в нем. При таком подходе n будет общим количеством тегов с несколькими словами, которые будут сгенерированы для всего набора данных.
На первом этапе вы можете использовать код NLTK, размещенный здесь . Второй этап может быть выполнен с помощью простого цикла для всех твитов. Однако, если скорость имеет значение, вы можете использовать пилицен , чтобы быстро найти твиты, содержащие каждое словосочетание.
PMI уровня твита для тегов с одним словом
Как и предлагалось здесь , Для тегов с одним словом вы можете рассчитать точечную взаимную информацию каждого отдельного слова и самого твита, т.е.
PMI(term, tweet) = log [ P(term, tweet) / (P(term)*P(tweet))
Опять же, это примерно скажет вам, насколько менее (или более) вы удивлены, встретив термин в конкретном документе, а не встретив его в большей коллекции. Затем вы можете пометить твит несколькими терминами, которые имеют самый высокий PMI
с твитом.
Общие изменения для твитов
Некоторые изменения, которые вы, возможно, захотите внести при добавлении тегов в твиты:
Используйте слово или словосочетание в качестве тега для твита, только если оно встречается в пределах определенного числа или процента от других твитов . В противном случае PMI будет иметь тенденцию помечать твиты странными терминами, которые встречаются только в одном твите, но которые больше нигде не видны, например, орфографические ошибки и шум клавиатуры, такие как # @ $ # @ $% !.
Масштабировать количество тегов, используемых с длиной каждого твита. Вы можете извлечь 2 или 3 интересных тега для более длинных твитов. Но для более короткого твита из 2 слов вы, вероятно, не хотите использовать каждое отдельное слово и словосочетание, чтобы пометить его . Вероятно, стоит поэкспериментировать с различными отсечками, чтобы узнать, сколько тегов вы хотите извлечь с учетом длины твита.