2012-01-28 25 views
5

Tôi cần một mã mẫu để giúp tôi phát hiện các trang web ngôn ngữ farsi bằng bộ công cụ apache tika.Tôi có thể phát hiện các trang web farsi bằng tika bằng cách nào?

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

Tôi đã tải xuống các tệp jar apache.tika và thêm chúng vào đường dẫn lớp. nhưng mã này đưa ra lỗi cho ngôn ngữ Farsi nhưng nó hoạt động cho tiếng Anh. làm cách nào để thêm Farsi vào gói languageIdentifier của tika?

+0

Lỗi nào? Xin vui lòng gửi stacktrace. – AlexR

+0

nó là đáng ngạc nhiên nhưng tôi không có bất kỳ lỗi nào bây giờ nhưng vấn đề là nó phát hiện không chính xác. nó trở lại "lt" có nghĩa là ngôn ngữ Lithuania thay vì ngôn ngữ Ba Tư (farsi) – aliakbarian

+0

câu hỏi của tôi là làm thế nào tika phát hiện ngôn ngữ? với những tập tin gì? ví dụ nếu nó sử dụng các từ dừng của bất kỳ ngôn ngữ nào tôi có thể thêm các từ dừng của ngôn ngữ farsi? – aliakbarian

Trả lời

9

Tika chưa gửi kèm hồ sơ ngôn ngữ cho ngôn ngữ Farsi. Tính đến phiên bản 1.0 27 languages are supported out of the box:

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 

Trong ví dụ của bạn đầu vào được misdetected như li (Lithuania) với khoảng cách 0,41, mà là ở trên ngưỡng chắc chắn của 0,022. Xem source code để biết thêm thông tin về các tác phẩm bên trong của LanguageIdentifier.

Ngôn ngữ Farsi (Persian, ISO 639-1 2-letter code fa) không được nhận dạng theo mặc định. Nếu bạn muốn Tika nhận ra ngôn ngữ khác, trước tiên bạn phải tạo một cấu hình ngôn ngữ.

Đối với điều này các bước sau đây là cần thiết:

  1. Tìm một corpus văn bản cho ngôn ngữ của bạn. Tôi tìm thấy số Hamshahri Collection. Điều này là đủ. Tải xuống kho dữ liệu hoặc các phần của nó và tạo một tệp văn bản thuần túy trong XML.

  2. Tạo tệp ngram cho từ định danh ngôn ngữ. Điều này có thể được thực hiện bằng cách sử dụng TikaCLI:

    java -jar tika-app-1.0.jar --create-profile=fa -eUTF-8 fa-corpus.txt Đây sẽ là tệp có tên là fa.ngp có chứa n-gram.

  3. Định cấu hình Tika để nó nhận ra ngôn ngữ mới. Làm điều này bằng cách lập trình sử dụng LanguageIdentifier.initProfiles() hoặc đặt một tệp thuộc tính với tên tika.language.override.properties vào đường dẫn lớp. Đảm bảo rằng tệp ngram cũng nằm trong classpath.

Nếu bây giờ bạn chạy Tika, nó sẽ phát hiện chính xác ngôn ngữ của bạn.

Cập nhật: Chi tiết các bước cần thiết để tạo hồ sơ ngôn ngữ.

+0

Tôi làm theo liên kết nhưng tôi không hiểu làm thế nào tôi có thể tạo hồ sơ ngôn ngữ. Bạn có thể giúp tôi được không? – aliakbarian

+0

trên thực tế. Tôi hỏi câu hỏi của tôi về tạo hồ sơ ngôn ngữ trong liên kết dưới đây: http://stackoverflow.com/questions/6227565/adding-language-profile-to-apache-tika – aliakbarian

+0

sau khi tìm đủ văn bản, tôi nên làm gì? – aliakbarian

Các vấn đề liên quan