генерация тегов из небольшого текстового содержимого (например, твитов) - PullRequest
14 голосов
/ 04 мая 2010

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

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

С этим ограничением (работающим с небольшим набором текстов), как я могу генерировать теги?

Привет

Ответы [ 2 ]

14 голосов
/ 04 мая 2010

Двухэтапный подход для многословных тегов

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

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

PMI уровня твита для тегов с одним словом

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

PMI(term, tweet) = log [ P(term, tweet) / (P(term)*P(tweet)) 

Опять же, это примерно скажет вам, насколько менее (или более) вы удивлены, встретив термин в конкретном документе, а не встретив его в большей коллекции. Затем вы можете пометить твит несколькими терминами, которые имеют самый высокий PMI с твитом.

Общие изменения для твитов

Некоторые изменения, которые вы, возможно, захотите внести при добавлении тегов в твиты:

  • Используйте слово или словосочетание в качестве тега для твита, только если оно встречается в пределах определенного числа или процента от других твитов . В противном случае PMI будет иметь тенденцию помечать твиты странными терминами, которые встречаются только в одном твите, но которые больше нигде не видны, например, орфографические ошибки и шум клавиатуры, такие как # @ $ # @ $% !.

  • Масштабировать количество тегов, используемых с длиной каждого твита. Вы можете извлечь 2 или 3 интересных тега для более длинных твитов. Но для более короткого твита из 2 слов вы, вероятно, не хотите использовать каждое отдельное слово и словосочетание, чтобы пометить его . Вероятно, стоит поэкспериментировать с различными отсечками, чтобы узнать, сколько тегов вы хотите извлечь с учетом длины твита.

0 голосов
/ 28 июля 2012

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

...