【发布时间】:2013-08-26 10:58:15
【问题描述】:
我需要从文章中反复删除某些停用词。目前我正在使用函数 str_replace 来实现这一点。作为第一个参数,我使用停止列表数组变量来删除任何出现的停止词。这很好用,除了它还会删除出现在单词中间的任何匹配项(即,如果停用词是“th”,它将从“the”、“then”等中删除“th”)。
现在,如果我使用纯文本提供参数,我可以在单词的两侧添加一个空格来纠正这种情况。但是,由于我使用的是变量数组,所以这不起作用。我也尝试使用连接运算符,但这似乎不是函数内的合法连接器。
当前代码如下所示:
$i = str_replace(" " . $swarray . " ", $string );
【问题讨论】:
-
“停用词”通常假定您想在此文本中进行搜索,并且并不真正关心实际文本本身。这个假设正确吗?在这种情况下,我会使用一种完全不同的方法,使用
strtok并在之后清除数组元素(或者......如果它们匹配,则根本不添加它们)。这比从一个大字符串中一个一个地切割子字符串要快很多倍。 -
嗯,是的,我想对文本进行搜索和做其他事情,就好像停用词不存在一样..
-
对于“其他事情”,您可能需要没有停用词的完整文本,但对于搜索,我会说将
strtok文本放入数组并丢弃停用词更有效.从大字符串中删除许多小片段会重复复制大量内存。
标签: php