php - 文本中单词的出现次数(以及相似词)

标签 php laravel

我正在尝试制作一个函数,它会发现文本中出现了多少次不同的词。问题是,我想将相似的词(和昵称)捆绑在一起。

我有一组有趣的词(我手动定义的):

$interesting_words = [
  'test' => [
    'number_of_occurances' => 0,
    'connected_words' => [
        'TEST',
        'TESTER',
        'TESTING'
      ]
    ],
  'foobar' => [
    'number_of_occurances' => 0,
    'connected_words' => [
        'FOO',
        'FOOBAR',
        'BAR'
      ]
    ]
]

示例文本。

Lorem ipsum TEST sit amet, consectetur TESTER elit. Sed in turpis dui. Maecenas venenatis FOOBAR facilisis. Quisque dictum, diam consequat mollis TESTING, orci tellus aliquet nisl, BAR molestie FOO augue at est. In TESTING vehicula lectus. Curabitur ac varius ligula. Pellentesque orci urdna.

期望的输出。

Number of occurances for 'test': 4
Number of occurances for 'foobar': 3

有没有 1.000.000 个 for 循环的聪明方法?

我正在 Laravel 中制作函数,如果有帮助的话。

最佳答案

您可以使用 str_word_count && array_count_values, 来获取所有单词的出现次数,并使用 strtolower 来使搜索不区分大小写,同时只计算出现次数:

$words=array_count_values(str_word_count(strtolower($str),1));
foreach($interesting_words as $index=>&$details){
    foreach($details['connected_words'] as $key=>$similar){
        $details['number_of_occurances'] += $words[strtolower($similar)];
    }
}           
print_r($interesting_words );

输出:

Array
(
    [test] => Array
        (
            [number_of_occurances] => 4
            [connected_words] => Array
                (
                    [0] => TEST
                    [1] => TESTER
                    [2] => TESTING
                )

        )

    [foobar] => Array
        (
            [number_of_occurances] => 3
            [connected_words] => Array
                (
                    [0] => FOO
                    [1] => FOOBAR
                    [2] => BAR
                )

        )

)

关于php - 文本中单词的出现次数(以及相似词),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52233864/

相关文章:

php - 将我的本地开发服务器运行为 http ://local. dev/test-laravel/的 artisan 命令是什么?

php - Laravel 身份验证在 Laravel 5.3 中无法正常工作

PHP password_hash() : Are password hashes portable between systems?

php - 为不同条目选择最新条目

javascript - 下载文件时禁止打开弹出窗口

php - MySQL获取上述两个日期变量之间/之上的记录

php - Laravel - 方法分页不存在

php - 如何在 Symfony 4 控制台命令中获取应用程序根路径

php - MySQL PDO UNION 查询,查找结果来自的表

php - 尝试获取非对象 Laravel 的属性 'password'