تجزیه گر یا پارسر متون و تشخیص زبان با آپاچی تیکا (Apache Tika)

آپاچی تیکا:

آپاچی تیکا يکي از پروژه‌هاي متن باز Apache است که کلاسي براي شناسايي زبان متون دارد. Tika براي استخراج متن اصلی از فایل های متنی و تجزیه کردن قسمت های مختلف فایل با توجه به متا دیتای آن کاربرد دارد. تیکا برای تعيين زبان (که در مبحث تشخیص نوع زبان به آن پرداخته شد) يک متن، ميزان فاصله بازنمايي آن متن را با بازنمايي زبان‌هاي موجود در سيستم تعيين مي‌کند و زباني که کمترين فاصله را با متن موجود دارد، در صورت رسيدن به يک اطمينان نسبي از زبان شناسايي شده، آن زبان را بر مي‌گرداند. فاصله بين متن موجود و زبان‌هاي مختلف برمبناي فاصله اقليدسيِ بسامد نسبي n-gramهاي (يعني نسبت بسامد هر n-gram به مجموع بسامد n-gramهاي موجود) واقع در بازنمايي متن و بازنمايي زبان، محاسبه مي‌شود. جويشگر متن‌باز Nutch نيز براي شناسايي زبان صفحات از Tika استفاده مي‌کند.

آپاچی تیکا
آپاچی تیکا

ابزار ابزاری Apache Tika ™ می تواند متادیتا و متن را از بیش از هزار نوع فایل مختلف (مانند PPT، XLS و PDF) شناسایی و استخراج کند. همه این انواع فایل ها را می توان از طریق یک رابط واحد تجزیه کرد، که Tika برای نمایه سازی موتورهای جستجو، تجزیه و تحلیل محتوا، ترجمه و غیره مفید است. شما می توانید آخرین نسخه را در صفحه دانلود پیدا کنید. لطفا برای دریافت اطلاعات بیشتر در مورد نحوه شروع استفاده از Tika صفحه شروع به کار را مشاهده کنید.

صفحات پارس و آشکارساز اصلی رابطهای Tika و نحوه کار آنها را توضیح می دهند. اگر شما علاقه مند به مشارکت در Tika هستید، لطفا به صفحه Contributing مراجعه کنید یا یک ایمیل به لیست توسعه Tika ارسال کنید.

Tika یک پروژه از بنیاد نرمافزار آپاچی است و قبلا یک زیر پروژه آپاچی لوسیان بود.

Tika  براي شناسايي زبان سندها از يک فايل tika.language.properties استفاده مي‌کند که شامل اسامي دو حرفي زبان‌ها بر مبناي استاندارد ISO 639 است. بر مبناي اين فايل، مجموعه‌اي از فايل‌هاي Language Profile مربوط به زبان‌هاي اشاره شده در tika.language.properties از حافظه جانبي خوانده مي‌شوند و براي ساخت pofileهاي زباني مورد استفاده توسط Tika به کار گرفته مي‌شوند. نام فايل هاي Language Profile به شکل <Language>.ngp است و شامل مجموعه‌اي از n-gramهاي حرفي به همراه فراواني آن‌ها براي يک زبان است. بخشي از فايل en.ngp که مربوط به زبان انگليسي است در ادامه آورده شده است.

# See the License for the specific language governing permissions and

# limitations under the License.

_th 154732

the 117027

he_ 95427

on_ 52529

ion 52199

_in 48458

_of 47302

_to 46961

 

با مقايسه‌ي اين n-gramها و n-gramهاي استخراج شده از متن يک صفحه HTML مورد بررسي، ميزان شباهت زبان متن صفحه با هر يک از زبان‌هاي موجود در Tika تعيين مي‌شود. بر اساس يک مقدار از پيش تعيين شده براي ReasonablyCertain بودن براي زبان تشخيص داده شده، زبان شناسايي شده يا مقدار null بازگردانده مي‌شود.

کلاس LanguageIdentifier در Tika براي تعيين زبان متن، ميزان فاصله content profile آن متن را (که مشابه با Language Profile يک زبان است) با Language Profile زبان‌هاي موجود در Tika تعيين مي‌کند و زباني که کمترين فاصله را با متن موجود دارد، در صورت رسيدن به يک اطمينان نسبي از  زبان شناسايي شده، برمي‌گرداند. فاصله بين متن موجود و زبان‌هاي مختلف برمبناي فاصله اقليدسيِ بسامد نسبي n-gramهاي (يعني نسبت بسامد هر n-gram به مجموع بسامد n-gramهاي موجود) واقع در profile متن و profile زبان، محاسبه مي‌شود.

قطعه کد زیر نحوه استفاده از کتاب خانه آپاچی تیکا را به جهت استخراج متن اصلی از یک سند متنی مثل فایل Office نشان میدهد.

public static String parseToPlainText(String filePath) {
//If Your document contained more than 100000 characters, Set writeLimit to (-1) For receive the full text of the document.

BodyContentHandler handler = new BodyContentHandler(-1);
AutoDetectParser parser = new AutoDetectParser();
Metadata metadata = new Metadata();
try (FileInputStream stream = new FileInputStream(filePath)){
parser.parse(stream, handler, metadata);
return handler.toString();
} catch (org.xml.sax.SAXException | IOException | TikaException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage(), "Exception in: MyTikaParser-parsToPlainText()", JOptionPane.ERROR_MESSAGE);
}
return null;
}

قطعه کد زیر نحوه استفاده از کتاب خانه آپاچی تیکا را به منظور شناسایی زبان مورد استفاده در یک سند متنی مثل فایل Office نشان میدهد. که البته برای تشخیص زبان فارسی بهبودی روی این قطعه کد انجام شده است. چرا که کتاب خانه tika در تشخیص نوع زبان بین زبان فارسی و عربی به خوبی عمل نمیکند.

public static String identifyLanguage(String text) {
LanguageIdentifier identifier = new LanguageIdentifier(text);
if (identifier.getLanguage().equalsIgnoreCase("fa")){
if (text.contains("گ") || text.contains("چ") || text.contains("پ") || text.contains("ژ"))
{ return "fa"; }
else
{ return "ar"; }
}else
{
return identifier.getLanguage();
}
}

 

منبع:

https://tika.apache.org/

آدرس کانال تلگرام سایت بیگ دیتا:

t.me/bigdata_channel

آدرس کانال سروش ما:
https://sapp.ir/bigdata_channel

جهت دیدن سرفصل های دوره های آموزشی بر روی اینجا کلیک کنید.

 

Visits: 1550

همچنین ببینید

پايگاه داده کاساندرا

پايگاه داده کاساندرا، روش نصب و بررسی نقاط ضعف و قوت

پايگاه داده کاساندرا یک سیستم انبار‌ه داده ی توزیع‌شده و کاملاً متن باز و رایگان …

قابلیت Allow Filtering در پایگاه داده ی کاساندرا

قابلیت پالایش داده ها یا Allow Filtering در پایگاه داده ی کاساندرا

امروزه تولید کننده های  پایگاه داده های غیر  رابطه ای (nosql) در حال تلاش برای …

دیدگاهتان را بنویسید