Отображать количество слов / облако тегов в пропорции

Это странно, так что наберитесь терпения, пока я пытаюсь объяснить.

Основная проблема: у меня массивная струна - она ​​может быть разной длины в зависимости от пользователь. Моя работа состоит в том, чтобы получить эту массивную строку в зависимости от пользователя, а затем отправить ее в другое программное обеспечение для создания облака тегов. Если бы жизнь была легкой для меня, я бы просто отправил все. Тем не мение, программное обеспечение облака тегов будет принимать только строку длиной 1000 слов, поэтому мне нужно немного поработать со строкой, чтобы отправить наиболее важные слова.

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

array(517) (
    "We" => integer 4
    "Five" => integer 1
    "Ten's" => integer 1
    "best" => integer 2
    "climbing" => integer 3
     (etc...)

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

Допустим, слово «яблоко» встречается 900 раз, а слово «кошка» - 100 раз. В результате облако слов будет состоять только из двух слов.

Моя идея состоит в том, чтобы каким-то образом выплюнуть слова в некотором соотношении с другими словами. Мои попытки до сих пор не увенчались успехом на разных наборах данных, где соотношение невелико - особенно когда много слов на «1», таким образом, делая GCD очень низким.

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

заранее спасибо.

1
задан jmccartie 21 October 2010 в 19:44
поделиться