使用php查找故事中最重复的单词

时间:2014-04-02 01:15:32

标签: php

开发一个处理服务器端表单提交的PHP文档。嵌入式PHP脚本(在您的PHP文档中)首先识别出最有意义的"最有意义的#34;在提交的故事文本中出现次数最多的故事中的单词(注意:a,an,the,等等,不算作有意义的单词),然后使用&#等句子回复用户34;你的故事是关于“最有意义的词”'。

1 个答案:

答案 0 :(得分:2)

你需要将这个任务分解成可消化的部分。它根本不是很复杂;一旦你看到如何解决几个简单的组件,我认为你会发现它是相当基本的。

你需要:

  1. 迭代一个故事。
  2. 跟踪您已阅读的字词,
  3. 以及您阅读它们的次数,
  4. 但忽略单词列表。
  5. 输出最常见的事件。
  6. 那不是那么疯狂。

    首先,你如何迭代一个故事?嗯,这取决于语言。通常,您会找到一个'explode'类型函数,它会使用分隔符将长字符串分解为数组。例如,“嗨,我的名字是史蒂夫”,在PHP中爆炸如下:explode($string, ' ');将$ string转换为:

    array(
      0 => 'Hi,',
      1 => 'my',
      2 => 'name',
      3 => 'is',
      4 => 'Steve',
    )
    

    现在你可以这样说:

    foreach ($story as $word) {
      // start counting/comparing
    }
    

    要跟踪所有这些单词,您需要一个可以通过多种方式之一格式化的数组。也许是这样的,每个单词的关键词都是单词本身,其值是出现次数:

    $occurrences = array(
        'Hello,' => 1,
        'my' => 1
    );
    

    然后你需要一个数组来列出你不关心的单词:

    $ignoreWords = array(
        'and', 'a', 'the', 'etc', '...'
    );
    

    现在怎样?我不知道,比如:

    foreach ($story as $word) {
        if (in_array($word, $ignoreWords)) {
            continue;
        }
    
        if (isset($occurences[$word])) {
            $occurences[$word] += 1;
        } else {
            $occurences[$word] = 1;
        }
    }
    

    循环完成后,您只需要一些函数即可获得最高出现次数。您可以按值对$ occurrences数组进行排序并弹出第一个元素,或者您可以在PHP中使用像max()这样的函数。

    $highestValue = max($occurrences);
    

    则...

    $word = array_search($highestValue, $array);
    

    则...

    echo "The most important word in the story was {$word}.";
    

    我没有测试过这段代码,我知道几个问题区域(比如如果array_search得到多个结果会发生什么),但是你可能已经了解了如何将它们放在一起。如果我错过了一个更好的观点,我会道歉,但如果您要求提供有关SO的任务帮助,您需要提出更好的问题以获得更好的问题。祝你好运!