文字列からノイズ ワードを削除しようとしています。適切なアルゴリズムであると思われるものを持っていますが、問題が発生しています。preg_replace を実行する前に、アポストロフィ (') 以外のすべての句読点を削除します。私はこのpreg_replaceを通してそれを入れました:
$content = preg_replace('/\b('.implode('|', self::$noiseWords).')\b/','',$content);
実際にその ' 文字を持っている単語を除いて、これはうまく機能します。preg_replace はそれを境界文字として扱っているようです。これは私にとって問題です。
これを回避する方法はありますか?おそらく別の解決策ですか?
ありがとう!
これが私が使用している例です:
$content = strtolower(strip_tags($content));
$content = preg_replace("/(?!['])\p{P}/u", "", $content);// remove punctuation
echo $content;// i've added striptags for editing as well should still workyep it doesnbsp
$content = preg_replace("/\b(?<')(".implode('|', self::$noiseWords).")(?!')\b/",'',$content);
$contentArray = explode(" ", $content);
print_r($contentArray);
3 行目には、preg_replace の直前にある $content のコメントが表示されます。
私の NoiseWords 配列がどのように見えるかはご想像いただけると思いますが、ここに示すのはほんの一部です。
$noiseWords = array("a", "able","about","above","abroad","according","accordingly","across",
"actually","adj","after","afterwards","again",......)