Como posso detectar páginas web farsi pela tika?

Eu preciso de um código de exemplo para me ajudar a detectar páginas da web em linguagem farsi pelo kit de ferramentas apache tika.

LanguageIdentifier identifier = new LanguageIdentifier("فارسی"); String language = identifier.getLanguage(); 

Eu fiz o download dos arquivos jar apache.tika e os adicionei ao classpath. mas este código dá erro para a linguagem farsi, mas funciona para o inglês. Como posso adicionar Farsi ao pacote languageIdentifier de tika?

Tika não é fornecido com um perfil de idioma para o idioma farsi ainda. A partir da versão 1.0, 27 idiomas são suportados fora da checkbox:

 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 

No seu exemplo, a input é detectada incorretamente como li (lituano) com uma distância de 0,41, que está acima do limite de certeza de 0,022. Veja o código fonte para mais informações sobre os trabalhos internos do LanguageIdentifier .

A linguagem farsi ( persa, código fa 2 letras ISO 639-1 ) não é reconhecida por padrão. Se você quiser que o Tika reconheça outro idioma, você deve primeiro criar um perfil de idioma.

Para isso, os seguintes passos são necessários:

  1. Encontre um corpus de texto para o seu idioma. Eu encontrei a coleção Hamshahri . Isso deve ser suficiente. Faça o download do corpus ou partes dele e crie um arquivo de texto simples a partir do XML.

  2. Crie um arquivo ngram para o identificador de idioma. Isso pode ser feito usando TikaCLI :

    java -jar tika-app-1.0.jar --create-profile=fa -eUTF-8 fa-corpus.txt Este será um arquivo chamado fa.ngp que contém os n-grams.

  3. Configure o Tika para que ele reconheça o novo idioma. Faça isso programaticamente usando LanguageIdentifier.initProfiles() ou coloque um arquivo de propriedades com o nome tika.language.override.properties no classpath. Certifique-se de que o arquivo ngram também esteja no caminho de class.

Se você agora executar o Tika, ele deve detectar corretamente o seu idioma.

Atualização: detalhou as etapas necessárias para criar um perfil de idioma.