onoi / tesa
一个简单的库,用于清理文本元素
0.1.0
2016-08-07 10:40 UTC
Requires
- php: >=5.3.2
- ext-mbstring: *
- wikimedia/cdb: ~1.0
- wikimedia/textcat: ~1.1
This package is auto-updated.
Last update: 2024-08-29 04:13:55 UTC
README
该库包含一系列辅助类,用于支持对任意长度的文本或字符串元素进行清理,旨在提高在查询执行期间搜索匹配的置信度,这是由 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
预期将成为在库外部使用时服务实例的唯一入口点IcuWordBoundaryTokenizer
在 ICU 扩展可用时是一个首选的分词器NGramTokenizer
在后端不提供显式的 ngram 分词器时提供,以提高 CJK 匹配的置信度StopwordAnalyzer
与一个LanguageDetector
一起提供,作为减少可能搜索索引中频繁的“噪声”词的歧义性的一种手段Synonymizer
目前只提供接口
贡献和支持
如果您想为该项目做出贡献,请订阅开发人员邮件列表,并查看 贡献指南。过去做出过贡献的人的名单可以在 这里 找到。
测试
该库提供单元测试,这些测试通常由 持续集成平台 运行。测试也可以通过从根目录使用 composer phpunit
命令手动执行。
发布说明
- 0.1.0 初始发布 (2016-08-07)
- 添加了支持
Tokenizer
、LanguageDetector
、Synonymizer
和StopwordAnalyzer
接口的SanitizerFactory
Tokenizer
、LanguageDetector
、Synonymizer
和StopwordAnalyzer
接口
致谢
Transliterator
使用与 http://jsperf.com/latinize 相同的变音符号转换表(除了德语的变音符号 ä、ü 和 ö)StopwordAnalyzer
使用的停用词来自不同的来源,每个json
文件标识其来源CdbStopwordAnalyzer
依赖于wikimedia/cdb
以避免使用外部数据库或缓存层(额外停用词可在 这里 获得)JaTinySegmenterTokenizer
基于 Taku Kudo 和他的 tiny_segmenter.js 的工作TextCatLanguageDetector
使用wikimedia/textcat
库来预测语言