bigwhoop / sentence-breaker
句子边界歧义(SBD)或句子分割 - PHP 编写的库。
5.0.0
2023-07-21 08:00 UTC
Requires
- php: ^8.0
- ext-simplexml: *
Requires (Dev)
- fabpot/goutte: ^2
- friendsofphp/php-cs-fixer: ^3.22
- phpstan/phpstan: ^1.10
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9
README
句子边界歧义(SBD)或句子分割 - PHP 编写的库。
安装
composer require bigwhoop/sentence-breaker
使用
<?php
use Bigwhoop\SentenceBreaker\SentenceBreaker;
$breaker = new SentenceBreaker();
$breaker->addAbbreviations(['Dr', 'Prof']);
// returns a generator, the text is parsed lazily
$sentences = $breaker->split("Hello Dr. Jones! How are you? I'm fine, thanks!");
// get first
$sentences->current() // 'Hello Dr. Jones!'
// get all as array
iterator_to_array($sentences) // ['Hello Dr. Jones!', 'How are you?', "I'm fine, thanks!"]
规则
默认情况下会加载 rules/rules.ini
文件。其格式为一系列模式...
TOKEN [... TOKEN] = PROBABILITY
T_CAPITALIZED_WORD <T_PERIOD> T_WHITESPACE T_CAPITALIZED_WORD = 75
在 <
/ >
中括起来的标记定义了模式应用于哪个标记。上面的示例模式将应用于输入数据中找到的每个 T_PERIOD
标记。概率定义了标记之后句子边界的可能性。
因此,要使此模式匹配,输入文本需要包含类似以下内容:这是 Waldo。 他喜欢狗。。
可用的标记包括
提示: 您可以通过 $breaker->addRules()
添加自己的规则。
缩写提供者
在 data
目录中包含缩写的平面文件(英文),来自各种来源。它们可以按如下方式加载
use Bigwhoop\SentenceBreaker\Abbreviations\FlatFileProvider;
// Load legal.txt and biz.txt
$breaker->addAbbreviations(new FlatFileProvider('/path/to/data/directory', ['legal', 'biz']));
// Load all files
$breaker->addAbbreviations(new FlatFileProvider('/path/to/data/directory', ['*']));
为了快速方便,所有缩写都包含在 all.txt
文件中。您可以按如下方式加载它
$breaker->addAbbreviations(new FlatFileProvider('/path/to/data/directory', ['all']));
它是如何工作的?
将输入文本通过词法分析器处理。
在计算机科学中,词法分析是将字符序列转换为标记序列的过程,即有意义的字符字符串。
例如,他问:"电视上有什么?" On T.V.? 我不知道。真的!
将产生以下标记序列
"He" "asked:" T_QUOTED_STR "On" "T.V" T_PERIOD T_QUESTION_MARK
"I" "have" "no" "clue" T_PERIOD "Really" T_EXCLAMATION_POINT
然后,将此标记序列通过概率计算器处理,该计算器为每个标记计算它是句子边界的概率。计算器使用与每个标记匹配的规则。例如,如果 T_EXCLAMATION_POINT 后跟一个大写字符串,则它是句子边界的概率为 100%。
最终,将标记重新组装成句子。用户可以选择在开始新句子时应用哪个阈值。例如,检测到的边界概率必须大于或等于 50%。
待办事项
-
calculateCurrentTokenProbability
代码混乱。让我们将其拆分为多个 Rule 类。也许可以使用规则引擎。 - 为不同语言添加缩写支持。
贡献
# Check code style
vendor/bin/php-cs-fixer fix --diff --dry-run
# Fix code style
vendor/bin/php-cs-fixer fix --diff
# Run tests
vendor/bin/phpunit
# Run static analysis
vendor/bin/phpstan
贡献者
由 contrib.rocks 制作。
许可协议
MIT。见 LICENSE 文件。