我需要一个示例代码来帮助我通过apache tika工具包检测波斯语网页。
LanguageIdentifier identifier = new LanguageIdentifier("فارسی");
String language = identifier.getLanguage();
我已经下载了apache.tika jar文件并将它们添加到类路径中。但是这段代码给出了波斯语的错误,但它适用于英语。 如何将Farsi添加到tika的languageIdentifier包中?
答案 0 :(得分:9)
Tika尚未提供Farsi语言的语言档案。从版本1.0 27 languages are supported开箱即用:
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
在您的示例中,输入被误检测为li
(立陶宛语),距离为0.41,高于0.022的确定性阈值。有关LanguageIdentifier
的内部作品的详细信息,请参阅source code。
默认情况下无法识别波斯语(Persian, ISO 639-1 2-letter code fa
)。
如果您希望Tika识别另一种语言,您必须先创建语言档案。
为此,需要执行以下步骤:
查找您所用语言的文本语料库。我找到了Hamshahri Collection。这应该足够了。下载语料库或其中的一部分,并使用XML创建纯文本文件。
为语言标识符创建ngram文件。这可以使用TikaCLI:
完成 java -jar tika-app-1.0.jar --create-profile=fa -eUTF-8 fa-corpus.txt
这将是一个名为fa.ngp
的文件,其中包含n-gram。
配置Tika以便识别新语言。要么使用LanguageIdentifier.initProfiles()
以编程方式执行此操作,要么将名为tika.language.override.properties
的属性文件放入类路径中。确保ngram文件也在类路径中。
如果您现在运行Tika,它应该正确检测您的语言。
更新: 详细说明创建语言配置文件所需的步骤。