onoi/tesa

一个简单的库,用于清理文本元素

0.1.0 2016-08-07 10:40 UTC

This package is auto-updated.

Last update: 2024-08-29 04:13:55 UTC


README

Build Status Code Coverage Scrutinizer Code Quality Latest Stable Version Packagist download count Dependency Status

该库包含一系列辅助类,用于支持对任意长度的文本或字符串元素进行清理,旨在提高在查询执行期间搜索匹配的置信度,这是由 Semantic MediaWiki 项目所要求的,并且是独立部署的。

要求

  • PHP 5.3 / HHVM 3.5 或更高版本
  • 建议启用 ICU 扩展

安装

此库的推荐安装方法是将以下依赖项添加到您的 composer.json 文件中。

{
	"require": {
		"onoi/tesa": "~0.1"
	}
}

用法

use Onoi\Tesa\SanitizerFactory;
use Onoi\Tesa\Transliterator;
use Onoi\Tesa\Sanitizer;

$sanitizerFactory = new SanitizerFactory();

$sanitizer = $sanitizerFactory->newSanitizer( 'A string that contains ...' );

$sanitizer->reduceLengthTo( 200 );
$sanitizer->toLowercase();

$sanitizer->replace(
	array( "'", "http://", "https://", "mailto:", "tel:" ),
	array( '' )
);

$sanitizer->setOption( Sanitizer::MIN_LENGTH, 4 );
$sanitizer->setOption( Sanitizer::WHITELIST, array( 'that' ) );

$sanitizer->applyTransliteration(
	Transliterator::DIACRITICS | Transliterator::GREEK
);

$text = $sanitizer->sanitizeWith(
	$sanitizerFactory->newGenericTokenizer(),
	$sanitizerFactory->newNullStopwordAnalyzer(),
	$sanitizerFactory->newNullSynonymizer()
);
  • SanitizerFactory 预期将成为在库外部使用时服务实例的唯一入口点
  • IcuWordBoundaryTokenizerICU 扩展可用时是一个首选的分词器
  • NGramTokenizer 在后端不提供显式的 ngram 分词器时提供,以提高 CJK 匹配的置信度
  • StopwordAnalyzer 与一个 LanguageDetector 一起提供,作为减少可能搜索索引中频繁的“噪声”词的歧义性的一种手段
  • Synonymizer 目前只提供接口

贡献和支持

如果您想为该项目做出贡献,请订阅开发人员邮件列表,并查看 贡献指南。过去做出过贡献的人的名单可以在 这里 找到。

测试

该库提供单元测试,这些测试通常由 持续集成平台 运行。测试也可以通过从根目录使用 composer phpunit 命令手动执行。

发布说明

  • 0.1.0 初始发布 (2016-08-07)
  • 添加了支持 TokenizerLanguageDetectorSynonymizerStopwordAnalyzer 接口的 SanitizerFactory
  • TokenizerLanguageDetectorSynonymizerStopwordAnalyzer 接口

致谢

  • Transliterator 使用与 http://jsperf.com/latinize 相同的变音符号转换表(除了德语的变音符号 ä、ü 和 ö)
  • StopwordAnalyzer 使用的停用词来自不同的来源,每个 json 文件标识其来源
  • CdbStopwordAnalyzer 依赖于 wikimedia/cdb 以避免使用外部数据库或缓存层(额外停用词可在 这里 获得)
  • JaTinySegmenterTokenizer 基于 Taku Kudo 和他的 tiny_segmenter.js 的工作
  • TextCatLanguageDetector 使用 wikimedia/textcat 库来预测语言

许可证

GNU 通用公共许可证 2.0 或更高版本.