Una extensión PostgreSQL simple y simplista que proporciona una plantilla de diccionario de búsqueda de texto completo para el texto hebreo basado en HSpell.
El lenguaje hebreo se considera que es difícil realizar tareas de recuperación de documentos. Su rica morfología significa que las palabras tienen una gran cantidad de inflexiones por un lado, y la presencia generalizada de homógrafos conduce a la ambigüedad. Todo eso significa que los sistemas de búsqueda de texto completo tienden a sufrir un mal retiro de la caja cuando se trata de textos hebreos.
pg_hspell es una extensión PostgreSQL que intenta ayudar con tales tareas cuando se usa el subsistema de búsqueda de texto completo de la base de datos. Utiliza el diccionario y la información lingüística proporcionada por el Proyecto HSPell para proporcionar una plantilla de diccionario Postgres que lemmatiza las palabras hebreas como parte de una tubería de configuración.
Solo se tratan los tokens hebreos; Cualquier token que no contenga ninguna letra hebrea no se reconoce y se reenviará a cualquier diccionario siguiente en la configuración.
Se eliminan los tokens hebreos que aparecen en una lista de palabras de parada configurables.
Para los tokens que son entradas válidas en el diccionario de Hspell, todos los lemmas posibles se emiten como diferentes variantes.
Todas las demás fichas se emiten tal cual.
Un sistema GNU/Linux
PostgreSQL 9.6+: las versiones anteriores también pueden funcionar, pero de todos modos no son compatibles oficialmente
Libhspell, compilada con el indicador de configuración --enable-linginfo (los paquetes de distribución generalmente lo son)
Actualmente pg_hspell debe construirse a partir del código fuente. Asegúrese de tener archivos de soporte de desarrollo (encabezados, etc.) para PostgreSQL y Hspell disponibles.
Para construir e instalar, ejecute:
$ make install
Esto se desarrollará e instalará en la instalación de PostgreSQL determinada por la primera instancia de pg_config encontrada en la ruta actual. Para apuntar a una instalación específica (o una que no esté en la ruta):
$ make install PG_CONFIG=/path/to/pg_config
Para cargar la extensión en una base de datos, ejecute el siguiente comando SQL como un usuario adecuadamente permiso:
CREATE EXTENSION pg_hspell; Esto colocará en el esquema actual un diccionario de texto completo llamado hspell , que está configurado con una lista agrupada de palabras de parada hebrea comunes. Para crear un diccionario con una lista de palabras de parada diferente (o ninguna), haga algo como el siguiente comando SQL:
CREATE TEXT SEARCH DICTIONARY my_hspell_dict (
TEMPLATE = hspell,
[ STOPWORDS = my_stop_words_file ]
); Al igual que con todas las demás plantillas de diccionario de búsqueda de texto, la lista de palabras de parada debe ser un archivo guardado en el directorio $SHAREDIR/tsearch_data del servidor de la base de datos y tener una extensión .stop . El ejemplo anterior buscará $SHAREDIR/tsearch_data/my_stop_words_file.stop
El diccionario debe integrarse en una configuración de búsqueda de texto, como se describe en el manual de PostgreSQL. Esta extensión no proporciona ninguna configuración predefinida.
Como la plantilla de directorio hspell solo reconocerá tokens que contienen caracteres hebreos, solo tiene sentido establecer diccionarios basados en ella en mapeos para tokens de tipo word , hword y hword-part (suponiendo el analizador predeterminado).
Como se señaló anteriormente, cuando el diccionario de Hspell reconoce un token, todos los lemmas posibles se emiten (por ejemplo, se emiten para la palabra הרכבת - רכבת , הרכבה y הרכיב se emiten). Esto es beneficioso para el recuerdo, pero por supuesto puede dañar la precisión. En este momento, esta extensión no realiza ninguna desambiguación morfológica, y de todos modos esto requiere un contexto de oración, que el marco de búsqueda de texto completo de PostgreSQL realmente no hace que se use directamente en las plantillas de diccionario.
El filtrado de palabras de parada se aplica en tokens de entrada mismas. La ambigüedad de Stop Word es particularmente problemática con el hebreo (para ejemplos, vea esta publicación de blog), así que tenga en cuenta eso al crear una lista de palabras de parada, o considerando si desea usar una.
Hspell no puede aprovechar el texto punteado, y de hecho, tal texto incluso no puede representarse en la codificación ISO-8859-8, que es con lo que funciona Libhspell. Actualmente, los tokens que contienen NIQQuD, por lo tanto, no serán reconocidos por esta plantilla de diccionario.
Si se desea el texto punteado de procesamiento, NiqQuD debe ser despojado antes de pasar el texto a un diccionario pg_hspell . Esto se puede lograr creando una regla adecuada establecida para el módulo Unido. En el futuro, pg_hspell podría realizar esto directamente.
Tenga en cuenta que el analizador de búsqueda de texto predeterminado incluido con PostgreSQL no maneja correctamente los casos de esquina específicos para el hebreo donde los caracteres generalmente considerados son puntuación (es decir, apóstrofe y una marca de cita) no actúan como tales cuando se incrustan en una palabra. Dichos casos son comunes en los textos de la computadora hebrea en acrónimos y abreviaturas, que pueden no tocarse como se esperaba.
Por ejemplo:
postgres=# select * from ts_parse('default', $$ נתב"ג $$);
tokid | token
-------+-------
2 | נתב
12 | "
2 | ג
Esto no es algo específico para pg_hspell o dentro de su alcance para abordar. Si hay casos específicos que son particularmente molestos, se pueden trabajar con un diccionario de Tesauro. También puede considerar el analizador proporcionado por la extensión PG_ICU_PARSER, que lo maneja correctamente.
pg_hspell tiene licencia bajo la Licencia Pública de Mozilla 2.0. La lista de palabras de parada incluida se basa en una creada por Guy Saar y extraída de https://github.com/fergiemcdowall/stopword, lanzado bajo la licencia MIT.