gplx/mediawiki/extensions/SemanticMediaWiki/Tesa/tests/phpunit/Integration/JaTokenizerTest.php

116 lines
4.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace Onoi\Tesa\Tests\Integration;
use Onoi\Tesa\SanitizerFactory;
use PHPUnit\Framework\TestCase;
/**
* @group onoi-tesa
*
* @license GPL-2.0-or-later
* @since 0.1
*
* @author mwjames
*/
class JaTokenizerTest extends TestCase {
/**
* @dataProvider icuTextProvider
*/
public function testIcuWordBoundaryTokenizer( $text, $expected ) {
$sanitizerFactory = new SanitizerFactory();
$tokenier = $sanitizerFactory->newIcuWordBoundaryTokenizer(
$sanitizerFactory->newGenericRegExTokenizer()
);
if ( !$tokenier->isAvailable() ) {
$this->markTestSkipped( 'ICU extension is not available.' );
}
$this->assertEquals(
$expected,
$tokenier->tokenize( $text )
);
}
/**
* @dataProvider tinyTextProvider
*/
public function testJaTinySegmenterTokenizer( $text, $expected ) {
$sanitizerFactory = new SanitizerFactory();
$tokenier = $sanitizerFactory->newJaTinySegmenterTokenizer(
$sanitizerFactory->newPunctuationRegExTokenizer()
);
$this->assertEquals(
$expected,
$tokenier->tokenize( $text )
);
}
public function icuTextProvider() {
// https://github.com/NaturalNode/natural/blob/master/spec/tokenizer_ja_spec.js
$provider[] = [
"計算機科学における字句解析 (じくかいせき、英: Lexical Analysis) とは、ソースコードを構成する文字の並びを、トークン (token) の並びに変換することをいう。\n" .
"ここでいう「トークン」とは、意味を持つコードの最小単位のこと。字句解析を行うプログラムは、字句解析器 (lexical analyzer, 略称lexer) と呼ばれる。\n" .
"字句解析器はスキャナ (scanner) とトークナイザ (tokenizer) から構成される。\n",
//
[
'計算機', '科学', 'における', '字句', '解析', 'じ', 'く', 'かい',
'せき', '、', '英', 'Lexical', 'Analysis', 'と', 'は', '、', 'ソース', 'コード', 'を',
'構成', 'する', '文字', 'の', '並び', 'を', '、', 'トーク',
'ン', 'token', 'の', '並びに', '変換', 'する', 'こと', 'を',
'いう', '。', 'ここ', 'で', 'いう', '「', 'トーク', 'ン',
'」', 'と', 'は', '、', '意味', 'を', '持つ', 'コード',
'の', '最小', '単位', 'の', 'こと', '。', '字句', '解析',
'を', '行う', 'プログラム', 'は', '、', '字句', '解析', '器',
'lexical', 'analyzer', '略称', '',
'lexer', 'と', '呼ばれる', '。', '字句', '解析', '器', 'は',
'スキャナ', 'scanner', 'と', 'トーク', 'ナ', 'イザ', 'tokenizer', 'から',
'構成', 'さ', 'れる', '。'
]
];
return $provider;
}
public function tinyTextProvider() {
// https://github.com/NaturalNode/natural/blob/master/spec/tokenizer_ja_spec.js
/*
['計算', '機科', '学', 'に', 'おける', '字句', '解析',
'じくかい', 'せき', '英', 'Lexical', 'Analysis', 'と', 'は', 'ソースコード',
'を', '構成', 'する', '文字', 'の', '並び', 'を', 'トークン', 'token', 'の',
'並び', 'に', '変換', 'する', 'こと', 'を', 'いう', 'ここ', 'でいう', 'トークン',
'と', 'は', '意味', 'を', '持つ', 'コード', 'の', '最小', '単位', 'の', 'こと',
'字句', '解析', 'を', '行う', 'プログラム', 'は', '字句', '解析', '器', 'lexical',
'analyzer', '略称', 'lexer', 'と', '呼ば', 'れる', '字句', '解析', '器', 'は',
'スキャナ', 'scanner', 'と', 'トークナイザ', 'tokenizer', 'から', '構成', 'さ',
'れる']
*/
$provider[] = [
"計算機科学における字句解析 (じくかいせき、英: Lexical Analysis) とは、ソースコードを構成する文字の並びを、トークン (token) の並びに変換することをいう。\n" .
"ここでいう「トークン」とは、意味を持つコードの最小単位のこと。字句解析を行うプログラムは、字句解析器 (lexical analyzer, 略称lexer) と呼ばれる。\n" .
"字句解析器はスキャナ (scanner) とトークナイザ (tokenizer) から構成される。\n",
//
[
'計算', '機科', '学', 'に', 'おける', '字句', '解析', 'じくかい', 'せき', '英',
'Lexical', 'Analysis', 'と', 'は', 'ソースコード', 'を', '構成', 'する',
'文字', 'の', '並び', 'を', 'トークン', 'token', 'の', '並び', 'に', '変換',
'する', 'こと', 'をいう', 'ここ', 'でいう', 'トークン', 'と', 'は', '意味', 'を',
'持つ', 'コード', 'の', '最小', '単位', 'の', 'こと', '字句', '解析', 'を',
'行う', 'プログラム', 'は', '字句', '解析', '器', 'lexical', 'analyzer',
'略称', 'lexer', 'と', '呼ば', 'れる', '字句', '解析', '器', 'は', 'スキャナ', 'scanner',
'と', 'トークナイザ', 'tokenizer', 'から', '構成', 'さ', 'れる',
]
];
return $provider;
}
}