<?php
/**
* SeekQuarry/Yioop --
* Open Source Pure PHP Search Engine, Crawler, and Indexer
*
* Copyright (C) 2009 - 2026 Chris Pollett chris@pollett.org
*
* LICENSE:
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* @author Snigdha Rao Parvatneni
* @license https://www.gnu.org/licenses/ GPL3
* @link https://www.seekquarry.com/
* @copyright 2009 - 2026
* @filesource
*/
namespace seekquarry\yioop\locale\bn\resources;
/**
* Bengali specific tokenization code. Typically, tokenizer.php
* either contains a stemmer for the language in question or
* it specifies how many characters in a char gram
*
* @author Chris Pollett
*/
class Tokenizer
{
/**
* A list of frequently occurring terms for this locale which should
* be excluded from certain kinds of queries. This is also used
* for language detection
* @var array
*/
public static $stop_words = ['āĻšāĻŋāϏāĻžāĻŦā§', 'āĻāĻŽāĻŋ', 'āϤāĻžāϰ', 'āϝā§', 'āϤāĻŋāύāĻŋ', 'āĻāĻŋāϞ',
'āĻāύā§āϝ', 'āĻāĻĒāϰ', 'āĻšāϝāĻŧ', 'āϏāĻā§āĻā§', 'āϤāĻžāϰāĻž', 'āĻšāϤā§', 'āĻ', 'āĻāĻ', 'āĻāĻā§', 'āĻāĻ',
'āĻĨā§āĻā§', 'āĻĻā§āĻŦāĻžāϰāĻž', 'āĻāϰāĻŽ', 'āĻļāĻŦā§āĻĻ', 'āĻāĻŋāύā§āϤā§', 'āĻāĻŋ', 'āĻāĻŋāĻā§', 'āĻšāϝāĻŧ', 'āĻāĻāĻž', 'āĻāĻĒāύāĻŋ',
'āĻŦāĻž', 'āĻāĻŋāϞ', 'āĻĻā§', 'āĻāϰ', 'āĻĨā§āĻā§', 'āĻāĻŦāĻ', 'āĻāĻāĻāĻŋ', 'āĻŽāϧā§āϝā§', 'āĻāĻŽāϰāĻž', 'āĻāϰāϤā§',
'āĻĒāĻžāϰā§āύ', 'āĻāĻāĻ', 'āĻ
āύā§āϝāĻžāύā§āϝ', 'āĻāĻŋāϞ', 'āϝāĻž', 'āĻāĻŋ', 'āϤāĻžāĻĻā§āϰ', 'āϏāĻŽāϝāĻŧ', 'āϝāĻĻāĻŋ',
'āĻ
āĻāĻŋāϞāĻžāώ', 'āĻāĻŋāĻāĻžāĻŦā§', 'āϤāĻŋāύāĻŋ āĻŦāϞā§āύ,', 'āĻāĻāĻāĻŋ', 'āĻĒā§āϰāϤāĻŋāĻāĻŋ', 'āĻŦāϞā§āύ', 'āύāĻž', 'āϏā§āĻ',
'āϤāĻŋāύ', 'āĻāĻžāύ', 'āĻŦāĻžāϝāĻŧā§', 'āĻāĻžāϞ', 'āĻāĻāĻžāĻĄāĻŧāĻžāĻ', 'āĻā§āϞāĻž', 'āĻā§āĻ', 'āĻļā§āώ', 'āĻāϰāĻž', 'āĻšā§āĻŽ',
'āĻĒāĻĄāĻŧāĻž', 'āĻšāĻžāϤ', 'āĻĒā§āϰā§āĻ', 'āĻŦāĻĄāĻŧ', 'āĻŦāĻžāύāĻžāύ', 'āϝā§āĻ āĻāϰāĻž', 'āĻāĻŽāύāĻāĻŋ', 'āĻāĻŽāĻŋ', 'āĻāĻāĻžāύā§',
'āĻ
āĻŦāĻļā§āϝāĻ', 'āĻŦāĻĄāĻŧ', 'āĻāĻā§āĻ', 'āĻāĻŽāύ', 'āĻ
āύā§āϏāϰāĻŖ āĻāϰāĻž', 'āĻāĻāύ', 'āĻā§āύ', 'āĻāĻŋāĻā§āĻāĻžāϏāĻž',
'āĻĒā§āϰā§āώ', 'āĻĒāϰāĻŋāĻŦāϰā§āϤāύ', 'āĻāĻŋāϝāĻŧā§āĻāĻŋāϞāĻžāĻŽ', 'āĻāϞā§', 'āϧāϰāύā§āϰ', 'āĻŦāύā§āϧ', 'āĻĒā§āϰāϝāĻŧā§āĻāύ', 'āĻāϰ',
'āĻāĻŦāĻŋ', 'āĻā§āώā§āĻāĻž', 'āĻāĻŽāĻžāĻĻā§āϰ', 'āĻāĻŦāĻžāϰ', 'āĻĒāĻļā§', 'āĻŦāĻŋāύā§āĻĻā§', 'āĻŽāĻž', 'āĻŦāĻŋāĻļā§āĻŦā§āϰ', 'āĻāĻžāĻāĻžāĻāĻžāĻāĻŋ',
'āύāĻŋāϰā§āĻŽāĻžāĻŖ', 'āϏā§āĻŦ', 'āĻĒā§āĻĨāĻŋāĻŦā§', 'āĻŦāĻžāĻŦāĻž'];
/**
* How many characters in a char gram for this locale
* @var int
*/
public static $char_gram_len = 5;
/**
* Removes the stop words from the page (used for Word Cloud generation
* and language detection)
*
* @param mixed $data either a string or an array of string to remove
* stop words from
* @return mixed $data with no stop words
*/
public static function stopwordsRemover($data)
{
static $pattern = "";
if (empty($pattern)) {
$pattern = '/\b(' . implode('|', self::$stop_words) . ')\b/u';
}
$data = preg_replace($pattern, '', $data);
return $data;
}
}