Как я могу найти наиболее часто используемую комбинацию из 2 слов в блоке текста? - PullRequest
1 голос
/ 12 февраля 2011

Как я могу узнать, какие два наиболее распространенных слова, которые я использовал сразу после друг друга, взяты из блока текста?Другими словами, есть ли в сети или в автономном режиме инструмент (или код), где я могу копировать и вставлять текст, и он выводит мою наиболее часто используемую частоту двух слов, такую ​​как:

От наиболее часто используемых до наименее:

"кот" 2,9% ", она сказала, что" 1,8% "пошли в" 1,2%

Спасибо

Ответы [ 2 ]

2 голосов
/ 12 февраля 2011
  1. Разделите текст на две пары слов (используйте substr и strpos , чтобы помочь вам)

    • найдите второй индекс пробела, используя strpos, а затем подстроку между началом и вторым индексом пробела, чтобы получить пару двух слов.
  2. Добавьте каждую пару на карту или набор (пара будет являться ключом) и установите значение (если оно уже существует на карте, увеличьте значение
  3. После того, как вы проанализировали полный текст, рассчитайте проценты на основе размера карты / набора и значения для каждой пары.
1 голос
/ 12 февраля 2011

Это было весело, но я немного подумал, это должно помочь вам начать и не должно быть вашим ответом.

Это в основном группировка слов по 2, их индексация в массив и увеличениевремя там найдено, и, наконец, в процентах:)

$data = 'In the first centuries of typesetting, quotations were distinguished merely by indicating the speaker, and this can still be seen in some editions of the Bible. During the Renaissance, quotations were distinguished by setting in a typeface contrasting with the main body text (often Italic type with roman, or the other way round). Block quotations were set this way at full size and full measure.
Quotation marks were first cut in type during the middle of the sixteenth century, and were used copiously by some printers by the seventeenth. In Baroque and Romantic-period books, they could be repeated at the beginning of every line of a long quotation. When this practice was abandoned, the empty margin remained, leaving an indented block quotation';

//Clean The Data from un required chars!
$data = preg_replace("/[^\w]/"," ",$data);

$segments = explode(" ",$data);
$indexes = array();

for($i=0;$i<count($segments);$i++)
{
   if($i == 0)
   {
      continue;
   }

   if(trim($segments[$i - 1]) != "" && trim($segments[$i]) != "")
   {
      $key = trim($segments[$i - 1]) . " " . trim($segments[$i]);
      if(array_key_exists($key,$indexes))
      {
          $indexes[$key]["count"]++;
      }else
      {
          $indexes[$key] = array(
              'count' => 1,
              'words' => $key
          );
      }
   }
}

//Change to the percentage:
$total_double_words = count($segments);
foreach($indexes as $id => $set)
{
    $indexes[$id]['percentage'] = number_format((($set['count']/ $total_double_words) * 100),2) . "%";
}

var_dump($indexes);

Вы можете увидеть это в прямом эфире здесь: http://codepad.org/rcwpddW8

...