php单词出现频率,PHP计算文件或数组中单词出现频率
一:如果是小文件,可以一次性讀入到數組中,使用方便的數組計數函數進行詞頻統計(假設文件中內容都是空格隔開的單詞):
$str = file_get_contents("/path/to/file.txt"); //get string from file
preg_match_all("/\b(\w+[-]\w+)|(\w+)\b/",$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)
二:如果是大文件,讀入內存就不合適了,可以采用如下方法:
$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行數據
(責任編輯:最模板)
總結
以上是生活随笔為你收集整理的php单词出现频率,PHP计算文件或数组中单词出现频率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab如何创建table,MATL
- 下一篇: 局域网访问php forbidden,P