Это странно, так что наберитесь терпения, пока я пытаюсь объяснить.
Основная проблема: у меня массивная строка - она может быть различной длины в зависимости от пользователя. Моя работа состоит в том, чтобы получить эту массивную строку в зависимости от пользователя, а затем отправить ее другому программному обеспечению для создания облака тегов. Если бы жизнь была легкой для меня, я мог бы просто отправить все это. Однако программное обеспечение облака тегов будет принимать только строку длиной 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 очень низким.
Я полагаю, что это простая математическая задача, я не могу разобраться, поэтому я обращаюсь к оракулу, который является стекопереработкой.
спасибо заранее.