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:
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.
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.
Đị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ữ.
Lỗi nào? Xin vui lòng gửi stacktrace. – AlexR
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
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