2012-07-11 20 views
5

Tôi đang sử dụng ElasticSerach và tôi muốn thiết lập cơ bản cho tiếng Anh. Vì vậy, về cơ bản, máy bay chiến đấu trả về chiến đấu hoặc bất kỳ từ nào có chứa gốc chiến đấu.ElasticSearch Stemming

Tôi hơi bối rối về cách thực hiện điều này. Tôi đã đọc qua các máy phân tích, tokenizers và các bộ lọc và có nhiều thuật toán gốc có thể được sử dụng trong ElasticSearch. Tôi chỉ không chắc chắn sự kết hợp nào để sử dụng - bộ lọc quả cầu tuyết, thân cây gốc, thân cây hoặc bộ từ đồng nghĩa.

Ngoài ra, một ví dụ về ánh xạ sẽ thực sự hữu ích.

Trả lời

15

Hãy nhớ số difference between stemming and lemmatisation. Thuật toán gốc áp dụng một loạt các quy tắc (và/hoặc tra cứu từ điển, như trường hợp ví dụ như cho KStem) và không đảm bảo rằng kết quả sẽ là một 'gốc' lingustic thích hợp (nghĩa là bổ đề). Vì vậy, ví dụ, cả từ 'marinate' và 'marines' sẽ được chuyển thành 'marin' bởi Porter stemmer, được coi là khá 'tăng cường' - nó có xu hướng tạo ra cùng một gốc cho số lượng lớn các từ . Có nhiều người bảo thủ hơn, ví dụ như S-Stemmer, chỉ chuyển đổi số nhiều thành số ít (org.apache.lucene.analysis.en.EnglishMinimalStemFilter).

So sánh các phương pháp xuất phát được tìm thấy trong các tài liệu nghiên cứu dường như ủng hộ KStem là hiệu quả nhất cho văn bản tiếng Anh, nhưng sự lựa chọn thân cây phụ thuộc rất nhiều vào từ vựng của tài liệu của bạn. Bạn không nhằm mục đích tối ưu hóa hiệu năng gốc, mà là hiệu năng của công cụ tìm kiếm, vì vậy việc đo lường nó tách biệt với các phần tử khác của hệ thống của bạn (đặc biệt là mở rộng truy vấn) không phải là một ý tưởng hay trong thực tế.

Giải pháp tốt nhất là thử một số trình tạo gốc khác nhau có sẵn trong elasticsearch (một bản đồ ví dụ có thể được xem here) và quan sát độ chính xác và thu hồi kết quả. Nếu bạn không có một bộ kiểm tra truy vấn, thì đặt cược tốt nhất của bạn là thực hiện các truy vấn 'điển hình' và chú ý đến kết quả 'lạ' (tác động của phần gốc bị quá tải) hoặc kết quả 'tốt' bị bỏ qua (quá bảo thủ stemmer).

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