Я начинающий программист НЛП на PHP.
Я просто хочу поговорить об удалении стоп-слов.
это моя практика:
У меня есть следующее объявление переменной $words = "he's the young man";
а затем я удаляю общие слова, как это
$common_words = $this->common_words();
$ncwords = preg_replace('/\b('.implode('|',$common_words).')\b/','',$data);
// I have save the array common_words in another function
и я взорвать мои не общие слова
$a_ncwords=explode(" ", $ncwords);
Но когда я печатаю $a_ncwords
, вот так print_r($a_ncwords);
Я получаю такой результат:
Array ( [0] => [1] => [2] => young [3] => man )
почему index[0]
а также index[1]
значения массива null?
Удалите пустые элементы массива.
Чтобы успокоить тех, кто сказал, что не ответил на ваш вопрос:
Ваше preg_replace заменяет слова на null, и когда вы взрываетесь, потому что ваше регулярное выражение выключено, эти нулевые значения создаются в вашем массиве $a_ncwords
когда ты explode
,
$a_ncwords = array_filter($a_ncwords);
Потому что вы заменяете слова пустой строкой. Элементы массива все еще существуют, теперь они просто пусты.
Вы должны удалить их из массива, если они пусты. Вы можете сделать это так:
array_filter($ncwords, function($item) { return !is_null($item); });