Sanaz Khalili
Sanaz Khalili
خواندن ۲ دقیقه·۱ سال پیش

Text analyzer in elasticsearch

به نام خدا

یک پردازشی است که داده های متنی بدون ساختار مثل متن ایمیل یا توضیح یک محصول را در ساختاری قالب بندی می کند که این کار، عملیات جستجو را راحت تر می سازد. Analysis با استفاده از tokenization امکان سرچ را در کل متن میسر می کند. هر متن را به قسمت های کوچکی که به آن توکن می گویند می شکند. در بیشتر موارد این توکن فقط یک کلمه است. اما در این جستجو عبارتی مثل fox با foxes زمانی که سرچ شود، مطابقت داده نمی شود و بر نمی گردد. یا کلمه ای مثل quick و Quick در سرچ یکسان در نظر گرفته نمی شوند.

برای این که این مشکل حل شود از normalize کردن استفاده می کنیم. Text analysis برای اجرا، از analyzer ها استفاده می کند. analyzer ها یک سری قوانین اند که بر کل فرایند حاکم هستند. الستیک یک آنالایز پیش فرض به نام standard analyzer دارد.

ساختار یک آنالایزر:

هر دو نوع آنالایزر( custome یا built-in ) شامل 3 قسمت سطح پایین تر زیر است:

1- character filters

2- tokenizers

3- token filters

بخش character filter:

در این بخش متن اصلی را به عنوان یم stream از کاراکترها دریافت می کند و با کم، تغییر یا زیادکردن کاراکترها می توان آن ها را به stream دیگری تبدیل کند. مثلا تبدیل یک سری عدد فارسی به انگلیسی. یک آنالایزر می تواند هر تعداد character filter داشته باشد.(حتی اصلا نداشته باشد.)

بخش Tokenizer:

این قسمت، استریمی از کاراکترها را دریافت می کند و آن را به توکن هایی می شکند که معمولا توکن ها تک کلمه ها هستند. tokenizer مسئول نگهداری موقعیت و ترتیب ترم هاست. هر آنالایزر دقیقا یک Tokenizer دارد.

بخش Token filters:

یک token filters، استریمی از توکن ها را دریافت می کند و ممکن است به آن توکن هایی اضافه، کم یا تغییر دهد. یک آنالایزر می تواند هر تعداد Token filters داشته باشد.(حتی اصلا نداشته باشد.)

تحلیل متن یا text analysis در دو زمان انجام می شود:

زمان index

هنگامی که یک index ایجاد می شود، هر مقدار فیلد متنی آنالیز می شود.

زمان search یا query

هنگام اجرای جستجوی full-text در یک فیلد متنی.



تحلیل متنelasticsearch
https://github.com/sanazkhalili - https://www.kaggle.com/skhalili
شاید از این پست‌ها خوشتان بیاید