• PHP:计算文件或数组中单词出现频率


    一:如果是小文件,可以一次性读入到数组中,使用方便的数组计数函数进行词频统计(假设文件中内容都是空格隔开的单词):

        <?php  
        $str = file_get_contents("/path/to/file.txt"); //get string from file  
        preg_match_all("/(w+[-]w+)|(w+)/",$str,$r); //place words into array $r - this includes hyphenated words  
        $words = array_count_values(array_map("strtolower",$r[0])); //create new array - with case-insensitive count  
        arsort($words); //order from high to low   
        print_r($words)  
    

     二:如果是大文件,读入内存就不合适了,可以采用如下方法:

        <?php  
        $filename = "/path/to/file.txt";  
        $handle = fopen($filename,"r");  
        if ($handle === false) {  
          exit;  
          }  
        $word = "";  
        while (false !== ($letter = fgetc($handle))) {  
          if ($letter == ' ') {  
            $results[$word]++;  
            $word = "";  
            }  
          else {  
            $word .= $letter;  
            }  
        }  
        fclose($handle);  
        print_r($results);  
    

    Linux命令经典面试题:统计文件中出现次数最多的前10个单词

    使用linux命令或者shell实现:文件words存放英文单词,格式为每行一个英文单词(单词可以重复),统计这个文件中出现次数最多的前10个单词。

    cat words.txt | sort | uniq -c | sort -k1,1nr | head -10

      主要考察对sort、uniq命令的使用,相关解释如下,命令及参数的详细说明请自行通过man查看,简单介绍下以上指令各部分的功能:

    sort:  对单词进行排序

    uniq -c:  显示唯一的行,并在每行行首加上本行在文件中出现的次数

    sort -k1,1nr:  按照第一个字段,数值排序,且为逆序

    head -10:  取前10行数据

     

     

  • 相关阅读:
    webdriver中的等待——主要讲解WebDriverWait()
    flask_sqlalchemy中的db.session.update()与db.sesssion.merge()方法的区别,db.session.query(Model)与Model.query()的区别
    Python-shutil模块
    python3-对拉钩网数据爬取及简单的数据分析
    设计模式的原则
    gcc 版本降级
    ubuntu 装机及装机以后干的事情
    ubuntu 美化
    python 抢火车票
    隔行扫描, 逐行扫描
  • 原文地址:https://www.cnblogs.com/Alight/p/4443304.html
Copyright © 2020-2023  润新知