在 PHP 中查找重复的单词而不指定单词本身

Posted

技术标签:

【中文标题】在 PHP 中查找重复的单词而不指定单词本身【英文标题】:Finding repeated words in PHP without specifying the word itself 【发布时间】:2012-12-11 17:42:07 【问题描述】:

我一直在为我想做的项目考虑一些事情,我不是高级用户,我只是在学习。不知道这是否可行:

假设我们有 100 个 html 文档,其中包含许多表格和文本。

问题一是:是否可以分析所有这些文本并找到重复的单词并计算它?

是的,可以使用某些函数,但问题是:如果我们不知道会找到的单词怎么办?也就是说,我们必须告诉代码一个词的含义。

例如,假设一个单词是七个字符的并集,想法是找到其他相似的模式并提及它。最好的方法是什么?

非常感谢您。

例子:

搜索:下一个短语的五个字符模式:

文字一:

“大海不破”

正文二:

“海洋是咸水体”

结果

Takes 1 
Break 1
water 1
Ocean 2

提前感谢您的帮助。

【问题讨论】:

从***.com/users/1642423/user1642423?tab=questions 开始并接受您之前问题的答案。 比你小我在做。 【参考方案1】:
function get_word_counts($phrases) 
   $counts = array();
    foreach ($phrases as $phrase) 
        $words = explode(' ', $phrase);
        foreach ($words as $word) 
          $word = preg_replace("#[^a-zA-Z\-]#", "", $word);
            $counts[$word] += 1;
        
    
    return $counts;


$phrases = array("It takes an ocean of water not to break!", "An ocean is a body of saline water, or so I am told.");

$counts = get_word_counts($phrases);
arsort($counts);
print_r($counts);

输出

Array
(
    [of] => 2
    [ocean] => 2
    [water] => 2
    [or] => 1
    [saline] => 1
    [body] => 1
    [so] => 1
    [I] => 1
    [told] => 1
    [a] => 1
    [am] => 1
    [An] => 1
    [an] => 1
    [takes] => 1
    [not] => 1
    [to] => 1
    [It] => 1
    [break] => 1
    [is] => 1
)

编辑 根据@Jack 的评论更新以处理基本标点符号。

【讨论】:

您可能想要修剪诸如!?等字符。 感谢@sberry 非常有帮助!【参考方案2】:

另一种使用内置函数的替代方法,也忽略短词:

   function get_word_counts($text) 
   
        $words = str_word_count($text, 1);
        foreach ($words as $k => $v) if (strlen($v) < 4) unset($words[$k]); // ignore short words
        $counts = array_count_values($words);
        return $counts;
    
$counts = get_word_counts($text);
arsort($counts);        
print_r($counts);

注意:这假设一个文本块,如果处理一组短语添加foreach ($phrases as $phrase)

【讨论】:

以上是关于在 PHP 中查找重复的单词而不指定单词本身的主要内容,如果未能解决你的问题,请参考以下文章

makefile:删除重复的单词而不进行排序

在sql表条目中查找重复单词[关闭]

如何从单词列表中查找 DF 中的匹配单词并在新列中返回匹配的单词 [重复]

编写一个字谜查找器(来自 txt 文件中的单词列表)[重复]

使用数组在字符串中查找特定单词(JavaScript)[重复]

查找并计算字符串中提到的单词(python 3)[重复]