Tika todavía no incluye el perfil del idioma Farsi. Como en la versión 1.0 27 languages are supported fuera de la caja:
languages=be,ca,da,de,eo,et,el,en,es,fi,fr,gl,hu,is,it,lt,nl,no,pl,pt,ro,ru,sk,sl,sv,th,uk
En su ejemplo la entrada se configura de forma errónea como li
(Lituania) con una distancia de 0,41, que está por encima del umbral de certeza de 0,022. Consulte el source code para obtener más información sobre los trabajos internos de LanguageIdentifier
.
El idioma Farsi (Persian, ISO 639-1 2-letter code fa
) no está reconocido por defecto. Si desea que Tika reconozca otro idioma, primero debe crear un perfil de idioma.
Para ello, los siguientes pasos son necesarios:
Encuentra un corpus de texto para su idioma. Encontré el Hamshahri Collection. Esto debería ser suficiente. Descargue el corpus o partes del mismo y cree un archivo de texto sin formato del XML.
Cree un archivo ngram para el identificador de idioma. Esto se puede hacer usando TikaCLI:
java -jar tika-app-1.0.jar --create-profile=fa -eUTF-8 fa-corpus.txt
Este será un archivo llamado fa.ngp
que contiene los n-gramas.
Configure Tika para que reconozca el nuevo idioma. Haga esto programáticamente usando LanguageIdentifier.initProfiles()
o coloque un archivo de propiedad con el nombre tika.language.override.properties
en classpath. Asegúrese de que el archivo ngram esté también en la ruta de clase.
Si ahora ejecuta Tika, debería detectar correctamente su idioma.
Actualización: Detalla los pasos necesarios para crear un perfil de idioma.
¿Qué tipo de error? Por favor, publique stacktrace. – AlexR
es sorprendente, pero no tengo ningún error ahora pero el problema es que detecta incorrectamente. devuelve "lt" que significa idioma lituano en lugar del idioma persa (farsi) – aliakbarian
mi pregunta es ¿cómo tika detecta idiomas? con que archivos? por ejemplo, si usa palabras de finalización de cualquier idioma, ¿dónde puedo agregar las palabras de finalización del idioma farsi? – aliakbarian