Serbian Language Tools es una biblioteca PHP para tratar con texto escrito en idioma serbio. Cuenta:
Esta biblioteca requiere PHP 7.4 o más con las extensiones SQLITE3, INTL y MBSSTRING.
Puede instalar el paquete a través del compositor:
composer require turanjanin/serbian-language-toolsPara usar la biblioteca, debe tokenizar la cadena. La tokenización es un proceso de división de la cadena en una serie de caracteres relacionados. Esta biblioteca puede reconocer los siguientes tokens: Word, Whitespace, URI (que incluye URL, hashtags y At-Mentions), interpunción, HTML y emoticon.
La tokenización se puede lograr creando una nueva instancia de clase Text utilizando el constructor nombrado:
use Turanjanin SerbianLanguageTools Text ;
$ text = Text:: fromString ( ' Zdravo svete, ovo je primer teksta! ' ); El objeto de texto ahora contendrá una matriz de varios tokens que se pueden procesar. Puede usar este objeto como cualquier otra matriz PHP, ya que implementa la interfaz ArrayAccess .
echo count ( $ text ) . "n" ; // 13
echo get_class ( $ text [ 1 ]). "n" ; // TuranjaninSerbianLanguageToolsTokensWhitespace
echo $ text [ 9 ] . "n" ; // primerEl alfabeto latino serbio incluye un par de caracteres específicos que no se encuentran en la tabla de codificación ASCII. Estos personajes cuentan con diacríticos: č, ć, š, ž, dž, đ, que a menudo se omiten en la comunicación cotidiana (redes sociales, correos electrónicos y SMS), principalmente debido al uso generalizado de los diseños de teclado en inglés.
Los lectores humanos pueden entender fácilmente este alfabeto latino degradado, pero plantea un desafío significativo para los motores de búsqueda y el procesamiento del lenguaje natural. Por lo tanto, esta biblioteca presenta un algoritmo que permite la restauración automatizada del texto ASCII mediante el uso de un diccionario de palabras y frases serbias para la desambiguación del contexto.
El algoritmo inspecciona todos los tokens Word y busca candidatos de restauración: las palabras con caracteres S, C, Z o DJ. Después de eso, se aplican los siguientes dos pasos:
Las frases más comunes se buscan dentro del texto y, si se encuentran, las palabras se reemplazan con sus equivalentes diacríticos. Este paso tiene en cuenta el contexto de las palabras, lo que nos permite dar ventaja a algunas variaciones menos utilizadas. Por ejemplo, sto hiljada no será reemplazado por što hiljada , a pesar de que la forma što (por qué) tiene una frecuencia mucho mayor en comparación con Word sto (cien) .
Cada candidato de restauración se ve en el diccionario y, si hay variaciones conocidas, el token se reemplaza con RestoredWord (si solo hay una variación posible) o MultipleRestoredWord (si hay más variaciones posibles). En el caso de más de una variación, el que tiene la frecuencia más alta se marcará como se prefiere.
La restauración diacrítica se puede realizar llamando a la clase invocable:
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. El diccionario necesario para este algoritmo se almacena en una base de datos SQLite personalizada que se incluye con esta biblioteca. Puede extender esta base de datos o utilizar una solución de almacenamiento diferente al proporcionar una implementación personalizada de la interfaz TuranjaninSerbianLanguageToolsDictionaryDictionary .
La biblioteca admite la transliteración del texto entre alfabetos cirílicos, latinos y ASCII. La transliteración se puede realizar llamando a la clase invocable apropiada:
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 tekstSi solo necesita transliteración entre los alfabetos latinos y cirílicos, eche un vistazo a la biblioteca más simple: turanjanina/transliterador serbio.
La biblioteca se puede usar para detectar si el texto se escribe en el alfabeto de cirílico o latín serbio:
use Turanjanin SerbianLanguageTools Text ;
Text:: fromString ( ' Ovo je latinica ' )-> isLatin (); // true
Text:: fromString ( ' Ovo je latinica ' )-> isCyrillic (); // false La licencia MIT (MIT). Consulte el archivo de licencia para obtener más información.