【发布时间】:2018-09-08 09:24:04
【问题描述】:
我正在尝试创建一个函数,它可以发现文本中出现了多少次不同的单词。问题是,我想将相似的词(和昵称)捆绑在一起。
我有这个有趣的单词数组(我手动定义的):
$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 sat amet,consectetur TESTER elit。 sed 在 turpis dui。 Maecenas venenatis FOOBAR facilisis。 Quisque dictum, diam consequat mollis 测试,orci tellus aliquet nisl,BAR molestie FOO augue 在 est. 在 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 中制作这个函数。
【问题讨论】:
-
分解字符串并使用 in_array() 简单,只需要一个循环。并使用 array_count_values()
-
嗯.. 我必须分解示例文本并遍历它们,这是一个 for 循环。然后我必须, - 对于每个单词,遍历 $interesting_words-array 并使用
in_array()(除非我弄错了), - 这是两个 for 循环。这是很长的文本, - 所以如果我必须多次阅读 10000 个单词:count( $interesting_words ), - 那就是相当的计算。这真的是最好的方法吗? -
可能要通过words数组