塞爾維亞語言工具是用於處理用塞爾維亞語言編寫的文本的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)。請參閱許可證文件以獲取更多信息。