vanderlee / php-sentence

简单的文本句子分割和计数。支持至少英语、德语和荷兰语,可能还有更多。

1.0.8 2024-04-11 09:45 UTC

This package is auto-updated.

Last update: 2024-09-11 10:50:00 UTC


README

License Build Status Quality

版本 1.0.8

版权所有 © 2016-2024 Martijn van der Lee (@vanderlee),部分版权 © 2017 @marktaw。

适用于 MIT 开源许可证。

简介

PHP 自然语言句子分割(分割)和计数。句子边界歧义消除。

还处于早期阶段,但应支持大多数西方语言。如果您发现任何问题,请告诉我。

支持PHP 5.3及以上版本,因此您可以在旧服务器上使用它。

安装

需要 PHP 5.4 或更高版本。如果不需要更多新功能,则支持 PHP 5.3。

使用 Composer 安装

composer require vanderlee/php-sentence

方法

integer count(string $text)

计算文本中的句子数量。为了方便提供;这正好与从 split 返回的数组项数相同,因此如果您需要这两个结果,只需这样做即可。

array split(string $text, integer $flags = 0)

将文本分割成句子。

$flags 是零(0,默认值)或以下类常量

  • Sentence::SPLIT_TRIM:从每个返回句子的左右两侧修剪空白字符。

文档

您可以在此处找到由 ApiGen 生成的源代码文档:[ApiGen 文档](https://github.com/vanderlee/php-sentence/blob/HEAD/doc/)

示例

<?php

	// This is the test text we're going to use
	$text	= "Hello there, Mr. Smith. What're you doing today... Smith,"
			. " my friend?\n\nI hope it's good. This last sentence will"
			. " cost you $2.50! Just kidding :)";

	// Create a new instance
	$Sentence	= new \Sentence;

	// Split into array of sentences
	$sentences	= $Sentence->split($text);

	// Count the number of sentences
	$count		= $Sentence->count($text);

?>

工作原理

使用的方 法不是基于任何已建立或发布的方 法。尽管如此,它似乎效果不错。

该方法遵循一系列简单的步骤来分割和重新合并文本成完整的句子。您可以在代码中轻松检查这些步骤。

虽然分割可能有些不准确,尤其是在句子开头的缩写词往往与前面的句子合并。在大多数普通文本中,这应该不会造成问题。在任 何情况下,这都不太可能影响句子计数,除非在非常罕见的情况下。

应注意,此算法依赖于语法上相对正确的标点符号。请不要使用 L33t-5p3ak!!!!!1!1!11!eleven!!

规则

以下是一个大致的规则列表,用于分割句子。

  • 每个换行符都分隔句子。
  • 文本的末尾表示句子结束,除非通过适当的标点符号结束。
  • 句子必须至少有两个单词长,除非是换行符或文本末尾。
  • 空行不是句子。
  • 每个问号或感叹号或它们的组合都视为句子结束。
  • 单个句号视为句子结束,除非...
    • 它前面有一个单词,或者...
    • 它后面有一个单词。
  • 多个句号的序列不视为句子结束。