bigwhoop/sentence-breaker

句子边界歧义(SBD)或句子分割 - PHP 编写的库。

5.0.0 2023-07-21 08:00 UTC

This package is auto-updated.

Last update: 2024-09-21 11:14:06 UTC


README

Build Status

句子边界歧义(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 文件。