塞尔维亚语言工具是用于处理用塞尔维亚语言编写的文本的PHP库。它的特征:
该库需要使用SQLite3,INTL和MBSTRING扩展名PHP 7.4或更高。
您可以通过作曲家安装软件包:
composer require turanjanin/serbian-language-tools为了使用库,您需要标记字符串。令牌化是将字符串分成一系列相关字符的过程。该库可以识别以下令牌:word,whitespace,uri(包括URL,主题标签和座椅),Interpunction,HTML和Emoticon。
可以通过使用命名构造函数创建Text类的新实例来实现令牌化:
use Turanjanin SerbianLanguageTools Text ;
$ text = Text:: fromString ( ' Zdravo svete, ovo je primer teksta! ' );文本对象现在将包含可以处理的各种令牌的数组。您可以将此对象用作任何其他PHP数组,因为它实现了ArrayAccess接口。
echo count ( $ text ) . "n" ; // 13
echo get_class ( $ text [ 1 ]). "n" ; // TuranjaninSerbianLanguageToolsTokensWhitespace
echo $ text [ 9 ] . "n" ; // primer塞尔维亚拉丁字母包括在ASCII编码表中找不到的几个特定字符。这些角色具有变音符号-J,,Š,Ž,dž,™通常在日常通信(社交媒体,电子邮件和SMS)中被省略,这主要是由于英语键盘布局的广泛使用。
人类读者可以很容易地理解这种退化的拉丁字母,但它对搜索引擎和自然语言处理构成了重大挑战。因此,该库具有一种算法,该算法允许使用塞尔维亚单词和短语的字典来自动恢复ASCII文本,以进行上下文歧义。
该算法检查所有Word令牌,并寻找恢复候选者 - 带有S,C,Z或DJ字符的单词。之后,采用以下两个步骤:
最常见的短语在文本内部搜索,如果发现单词,则用其音量等效替换。此步骤考虑了单词上下文,这使我们能够为一些较少使用的变化提供优势。例如,即使与单词sto (一百)相比, sto hiljada不会被što hiljada取代,即使što (为什么)的频率要大得多。
每个恢复候选者都在字典中查找,如果有已知的变化,则将令牌替换为RestoredWord (如果只有一个可能的变化)或MultipleRestoredWord (如果有更多可能的变体)。如果有一个以上的变化,则最高频率的变化将被标记为首选。
可以通过调用可调用类来进行变音氏恢复:
use Turanjanin SerbianLanguageTools Text ;
use Turanjanin SerbianLanguageTools Transformers DiacriticRestorer ;
$ text = Text:: fromString ( ' Cetiri cavke cuceci dzangrizavo cijucu u zeleznickoj skoli. ' );
echo ( new DiacriticRestorer )( $ text ); // Četiri čavke čučeći džangrizavo cijuču u železničkoj školi.该算法所需的字典存储在此库中包含的定制SQLite数据库中。您可以通过提供TuranjaninSerbianLanguageToolsDictionaryDictionary界面的自定义实现来扩展此数据库或使用不同的存储解决方案。
库支持西里尔,拉丁语和ASCII字母之间的文本音译。可以通过调用适当的引用类来执行音译:
use Turanjanin SerbianLanguageTools Text ;
use Turanjanin SerbianLanguageTools Transformers ToAsciiLatin ;
use Turanjanin SerbianLanguageTools Transformers ToCyrillic ;
use Turanjanin SerbianLanguageTools Transformers ToLatin ;
$ cyrillic = Text:: fromString ( ' Ово је ћирилични текст ' );
$ latin = Text:: fromString ( ' Primer latiničnog teksta ' );
echo ( new ToLatin )( $ cyrillic ); // Ovo je ćirilični tekst
echo ( new ToCyrillic )( $ latin ); // Пример латиничног текста
echo ( new ToAsciiLatin )( $ cyrillic ); // Ovo je cirilicni tekst如果您只需要拉丁语和西里尔字母之间的音译,请查看更简单的库-Turanjanin/serbian -Transliterator。
图书馆可用于检测文本是用塞尔维亚西里尔语还是拉丁字母写的:
use Turanjanin SerbianLanguageTools Text ;
Text:: fromString ( ' Ovo je latinica ' )-> isLatin (); // true
Text:: fromString ( ' Ovo je latinica ' )-> isCyrillic (); // false 麻省理工学院许可证(MIT)。请参阅许可证文件以获取更多信息。