鍍金池/ 教程/ Java/ TIKA語言檢測
TIKA圖形界面/GUI
TIKA架構(gòu)
TIKA提取XML文檔
TIKA語言檢測
TIKA參考API
TIKA環(huán)境配置
TIKA提取圖像文件
TIKA內(nèi)容提取
TIKA元數(shù)據(jù)提取
TIKA提取HTML文檔
TIKA提取ODF
TIKA文件格式
TIKA提取文本文檔
TIKA提取PDF
TIKA提取MP3文件
TIKA文件類型檢測
Tika教程
TIKA提取JAR文件
TIKA提取MS Office文件
TIKA提取.class文件
TIKA提取mp4文件

TIKA語言檢測

必要的語言檢測

對于基于它們寫在一個多語種網(wǎng)站的語言文件分類,語言檢測工具是必要的。這個工具應(yīng)該接受無語言注釋(元數(shù)據(jù))的文件,并通過檢測語言中添加這些信息在文檔的元數(shù)據(jù)。

算法性能分析語料庫

什么是語料庫?

為了檢測一個文檔的語言,語言信息被構(gòu)造和用已知的語言的信息進行比較。設(shè)置這些已知的語言文字被稱為語料庫。

語料庫是一種書面語言,解釋了語言用于實際生活中的文本的集合。

語料庫是從書本,成績單,而像其他的互聯(lián)網(wǎng)數(shù)據(jù)資源開發(fā)。語料庫的精度取決于我們使用幀性能分析算法。

什么是性能分析算法?

檢測語言的常用方法是使用字典。在給定的一段文本中使用的詞語將與詞典進行匹配。

在語言中常用的單詞的列表將是最簡單有效的語料庫用于檢測特定的語言,例如, a, an,在英文中。

使用Word設(shè)置為語料庫

使用字集,一個簡單的算法是框架找到兩個語料庫,其將等于的匹配單詞的頻率之間的差異的總和之間的距離。

此類算法有以下問題:

  • 因為匹配單詞的頻率非常少,則該算法不能有效地與幾個句子小文本工作。它需要大量的文字進行準(zhǔn)確匹配。

  • 它不能檢測到字邊界具有語言復(fù)合句,而那些具有類似空格或標(biāo)點符號無字分隔。

由于在使用字集作為語料庫這些困難,單個字符或字符組會被考慮。

使用字符集為主體

因為這是在一種語言中常用的字符是有限的數(shù)目,很容易應(yīng)用基于單詞的頻率,而不是字符的算法。這種算法的工作更為出色的情況下在一個或極少數(shù)語言中使用的特定的字符集。

此算法存在下列缺點:

  • 它是難以區(qū)分具有相似性質(zhì)的頻率兩種語言。

  • 沒有任何特定的工具或算法來具體確定的幫助下(如文集)所使用的多語言字符集的語言。

N-gram算法

上述的缺點就產(chǎn)生了利用給定長度的字符序列為分析語料的一種新方法。個字符的這樣的序列被稱為N-gram,在一般情況下,N表示該字符序列的長度。

  • N元算法是一種有效的方法來檢測語言,特別是在案件歐洲語言如英語的。

  • 該算法與短文正常工作。

  • 雖然有高級語言紋算法來檢測多個語言中具有更吸引人的特征的多語言文檔,Tika使用3-grams算法,因為它適合于大多數(shù)實際情況。

Tika語言檢測

在所有由ISO639-1標(biāo)準(zhǔn)的184標(biāo)準(zhǔn)語言,Tika可檢測18種語言。語言檢測Tika是通過使用LanguageIdentifier類的getLanguage()方法。此方法返回字符串格式的語言代號。下面給出由Tika檢測出的18語言代碼對的列表中:

da—Danish de—German et—Estonian el—Greek
en—English es—Spanish fi—Finnish fr—French
hu—Hungarian is—Icelandic it—Italian nl—Dutch
no—Norwegian pl—Polish pt—Portuguese ru—Russian
sv—Swedish th—Thai

實例化LanguageIdentifier類,則應(yīng)該將內(nèi)容傳遞的字符串格式將被提取,或LanguageProfile類對象。

LanguageIdentifier object=new LanguageIdentifier(“this is english”);

下面給出的是Tika語言檢測的示例程序。

import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.language.LanguageIdentifier;

import org.xml.sax.SAXException;

public class LanguageDetection {

   public static void main(String args[])throws IOException, SAXException, TikaException {

      LanguageIdentifier identifier = new LanguageIdentifier("this is english ");
      String language = identifier.getLanguage();
      System.out.println("Language of the given content is : " + language);
   }
}

將以上代碼保存為LanguageDetection.java并在命令提示符處使用以下命令運行它:

javac  LanguageDetection.java 
java  LanguageDetection 

它提供了以下的輸出:

Language of the given content is : en

語言檢測文檔

要檢測一個給定的文檔的語言,必須使用parse()方法來解析它。parse()方法解析處理程序?qū)ο螅@是傳遞給它的參數(shù)的內(nèi)容,并將其存儲。通過LanguageIdentifier類對象處理,構(gòu)造函數(shù)的字符串的格式如下圖所示:

parser.parse(inputstream, handler, metadata, context);
LanguageIdentifier object = new LanguageIdentifier(handler.toString());

下面給出的是一個演示如何檢測一個給定的文檔的語言完整的程序:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.apache.tika.language.*;

import org.xml.sax.SAXException;

public class DocumentLanguageDetection {

   public static void main(final String[] args上一篇:TIKA提取MP3文件下一篇:TIKA元數(shù)據(jù)提取