mirror of
https://github.com/Llewellynvdm/php-ml.git
synced 2025-01-24 15:48:24 +00:00
create whitespace tokenizer
This commit is contained in:
parent
5c67cfaeef
commit
fadd003169
15
src/Phpml/Tokenization/Tokenizer.php
Normal file
15
src/Phpml/Tokenization/Tokenizer.php
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare (strict_types = 1);
|
||||||
|
|
||||||
|
namespace Phpml\Tokenization;
|
||||||
|
|
||||||
|
interface Tokenizer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string $text
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function tokenize(string $text): array;
|
||||||
|
}
|
18
src/Phpml/Tokenization/WhitespaceTokenizer.php
Normal file
18
src/Phpml/Tokenization/WhitespaceTokenizer.php
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare (strict_types = 1);
|
||||||
|
|
||||||
|
namespace Phpml\Tokenization;
|
||||||
|
|
||||||
|
class WhitespaceTokenizer implements Tokenizer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param string $text
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function tokenize(string $text): array
|
||||||
|
{
|
||||||
|
return preg_split('/[\pZ\pC]+/u', $text, -1, PREG_SPLIT_NO_EMPTY);
|
||||||
|
}
|
||||||
|
}
|
40
tests/Phpml/Tokenization/WhitespaceTokenizerTest.php
Normal file
40
tests/Phpml/Tokenization/WhitespaceTokenizerTest.php
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare (strict_types = 1);
|
||||||
|
|
||||||
|
namespace tests\Tokenization;
|
||||||
|
|
||||||
|
use Phpml\Tokenization\WhitespaceTokenizer;
|
||||||
|
|
||||||
|
class WhitespaceTokenizerTest extends \PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
public function testTokenizationOnAscii()
|
||||||
|
{
|
||||||
|
$tokenizer = new WhitespaceTokenizer();
|
||||||
|
|
||||||
|
$text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||||||
|
Cras consectetur, dui et lobortis auctor.
|
||||||
|
Nulla vitae congue lorem.';
|
||||||
|
|
||||||
|
$tokens = ['Lorem', 'ipsum', 'dolor', 'sit', 'amet,', 'consectetur', 'adipiscing', 'elit.',
|
||||||
|
'Cras', 'consectetur,', 'dui', 'et', 'lobortis', 'auctor.',
|
||||||
|
'Nulla', 'vitae', 'congue', 'lorem.', ];
|
||||||
|
|
||||||
|
$this->assertEquals($tokens, $tokenizer->tokenize($text));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testTokenizationOnUtf8()
|
||||||
|
{
|
||||||
|
$tokenizer = new WhitespaceTokenizer();
|
||||||
|
|
||||||
|
$text = '鋍鞎 鳼 鞮鞢騉 袟袘觕, 炟砏 蒮 謺貙蹖 偢偣唲 蒛 箷箯緷 鑴鱱爧 覮轀,
|
||||||
|
剆坲 煘煓瑐 鬐鶤鶐 飹勫嫢 銪 餀 枲柊氠 鍎鞚韕 焲犈,
|
||||||
|
殍涾烰 齞齝囃 蹅輶 鄜, 孻憵 擙樲橚 藒襓謥 岯岪弨 蒮 廞徲 孻憵懥 趡趛踠 槏';
|
||||||
|
|
||||||
|
$tokens = ['鋍鞎', '鳼', '鞮鞢騉', '袟袘觕,', '炟砏', '蒮', '謺貙蹖', '偢偣唲', '蒛', '箷箯緷', '鑴鱱爧', '覮轀,',
|
||||||
|
'剆坲', '煘煓瑐', '鬐鶤鶐', '飹勫嫢', '銪', '餀', '枲柊氠', '鍎鞚韕', '焲犈,',
|
||||||
|
'殍涾烰', '齞齝囃', '蹅輶', '鄜,', '孻憵', '擙樲橚', '藒襓謥', '岯岪弨', '蒮', '廞徲', '孻憵懥', '趡趛踠', '槏', ];
|
||||||
|
|
||||||
|
$this->assertEquals($tokens, $tokenizer->tokenize($text));
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user