وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

NLP ساده در پایتون با TextBlob: Tokenization

0 17
زمان لازم برای مطالعه: 4 دقیقه


معرفی

مقدار داده های متنی روی اینترنت در دهه های گذشته به طور قابل توجهی افزایش یافته است. شکی نیست که پردازش این حجم از اطلاعات باید به صورت خودکار انجام شود TextBlob پکیج یکی از روش های نسبتاً ساده برای انجام است NLP – پردازش زبان طبیعی.

این یک API ساده برای غواصی در وظایف رایج پردازش زبان طبیعی (NLP) مانند برچسب گذاری بخشی از گفتار، استخراج عبارت اسمی، نشانه گذاری، تجزیه و تحلیل احساسات، طبقه بندی، ترجمه و موارد دیگر ارائه می دهد.

هیچ پیش نیاز فنی خاصی برای استفاده از این کتابخانه مورد نیاز نیست. به عنوان مثال، TextBlob برای هر دو پایتون 2 و 3 قابل استفاده است. در صورتی که هیچ اطلاعات متنی در دسترس ندارید، TextBlob مجموعه های لازم را از NLTK پایگاه داده

در حال نصب TextBlob

بیایید با نصب TextBlob و NLTK Corpora شروع کنیم:

$ pip install -U textblob
$ python -m textblob.download_corpora

توجه داشته باشید: این process به دلیل تعداد زیادی از الگوریتم‌ها و مجموعه‌هایی که این کتابخانه دارد، ممکن است کمی طول بکشد.

Tokenization چیست؟

قبل از اینکه عمیق تر به حوزه NLP بروید، باید بتوانید این اصطلاحات کلیدی را نیز بشناسید:

  • مجموعه نوشته ها (یا corpora به صورت جمع) – صرفاً مجموعه خاصی از داده های زبان (مثلاً متون) است. برای مثال، Corpora معمولاً برای آموزش مدل‌های مختلف طبقه‌بندی متن یا تحلیل احساسات استفاده می‌شود.

  • رمز – یک رشته نهایی است که از متن اصلی جدا شده است یا به عبارت دیگر خروجی توکن سازی است.

خود توکن سازی چیست؟

توکن سازی یا تقسیم بندی کلمات ساده است process جدا کردن جملات یا کلمات از مجموعه به واحدهای کوچک، یعنی نشانه ها.

نمونه ای از این موضوع می تواند جمله زیر باشد:

در اینجا، جمله ورودی نشانه گذاری می شود روی اساس فاصله بین کلمات همچنین می توانید کاراکترهای یک کلمه را نشانه گذاری کنید (مثلاً سیب از جانب سیب) یا جملاتی را از یک متن جدا کنید.

Tokenization یکی از مراحل اساسی و حیاتی پردازش زبان است. این ماده متنی بدون ساختار را به داده تبدیل می کند. این می‌تواند بیشتر در توسعه مدل‌های مختلف ترجمه ماشینی، بهینه‌سازی موتورهای جستجو یا سوالات مختلف تجاری اعمال شود.

پیاده سازی توکن سازی در کد

اول از همه، لازم است که یک TextBlob شیء کنید و یک پیکره نمونه تعریف کنید که بعداً توکنیزه خواهد شد. مثلاً سعی کنیم بخشی از شعر را نشانه گذاری کنیم اگر نوشته شده توسط R. Kipling:

from textblob import TextBlob


corpus = '''If you can force your heart and nerve and sinew to serve your turn long after they are gone. And so hold روی when there is nothing in you except the Will which says to them: 'Hold روی!'
'''

پس از ایجاد شی، باید به عنوان آرگومان به آن ارسال شود TextBlob سازنده:

blob_object = TextBlob(corpus)

پس از ساخت، می توانیم عملیات مختلفی را انجام دهیم روی این blob_object. از قبل شامل مجموعه ما است که تا حدی طبقه بندی شده است.

توکن سازی کلمه

در نهایت، برای به دست آوردن کلمات نشانه گذاری شده، به سادگی آن را بازیابی می کنیم words نسبت به ایجاد شده blob_object. این به ما یک لیست حاوی Word اشیایی که رفتار بسیار مشابهی دارند str اشیاء:

from textblob import TextBlob

corpus = '''If you can force your heart and nerve and sinew to serve your turn long after they are gone. And so hold روی when there is nothing in you except the Will which says to them: 'Hold روی!'
'''

blob_object = TextBlob(corpus)


corpus_words = blob_object.words

print(corpus_words)

print(len(corpus_words))

دستورات خروجی باید موارد زیر را به شما بدهد:

('If', 'you', 'can', 'force', 'your', 'heart', 'and', 'nerve', 'and', 'sinew', 'to', 'serve', 'your', 'turn', 'long', 'after', 'they', 'are', 'gone', 'and', 'so', 'hold', 'روی', 'when', 'there', 'is', 'nothing', 'in', 'you', 'except', 'the', 'Will', 'which', 'says', 'to', 'them', 'Hold', 'روی')
38

شایان ذکر است که این رویکرد استفاده از کلمات را نشانه گذاری می کند SPACE به عنوان شخصیت تعیین کننده می توانیم این جداکننده را مثلاً به a تغییر دهیم TAB:

from textblob import TextBlob
from nltk.tokenize import TabTokenizer

corpus = '''If you can force your heart and nerve and sinew to serve your turn long after they are gone. 	And so hold روی when there is nothing in you except the Will which says to them: 'Hold روی!'
'''

tokenizer = TabTokenizer()
blob_object = TextBlob(corpus, tokenizer = tokenizer)


corpus_words = blob_object.tokens

print(corpus_words)

توجه داشته باشید که ما یک را اضافه کرده ایم TAB بعد از اولین جمله اینجا چگونه، مجموعه کلمات چیزی شبیه به این است:

('If you can force your heart and nerve and sinew to serve your turn long after they are gone.','And so hold روی when there is nothing in you except the Will which says to them: 'Hold روی!')

nltk.tokenize شامل سایر گزینه های توکن سازی نیز می باشد. به طور پیش فرض از آن استفاده می کند SpaceTokenizer که نیازی به تعریف صریح آن ندارید، اما می توانید. به غیر از این دو، حاوی نشانه های مفیدی مانند LineTokenizer، BlankLineTokenizer و WordPunctTokenizer.

یک لیست کامل را می توان در آنها یافت مستندات.

نشانه گذاری جمله

نشانه گذاری کردن روی یک جمله در سطح، ما از همان استفاده خواهیم کرد blob_object. این بار به جای words ویژگی، ما از آن استفاده خواهیم کرد sentences صفت. این یک لیست از Sentence اشیاء:

from textblob import TextBlob

corpus = '''If you can force your heart and nerve and sinew to serve your turn long after they are gone. And so hold روی when there is nothing in you except the Will which says to them: 'Hold روی!'
'''

blob_object = TextBlob(corpus)


corpus_sentence = blob_object.sentences

print(corpus_sentence)

print(len(corpus_sentence))

خروجی:

(Sentence("If you can force your heart and nerve and sinew to serve your turn long after they are gone"), Sentence("And so hold روی when there is nothing in you except the Will which says to them: 'Hold روی!"))
2

نتیجه

Tokenization یک مرحله بسیار مهم پیش پردازش داده در NLP است و شامل تجزیه متن به قطعات کوچکتر به نام توکن است. این نشانه ها می توانند کلمات، جملات یا کاراکترهای جداگانه در متن اصلی باشند.

TextBlob یک کتابخانه عالی برای ورود به NLP است زیرا یک API ساده ارائه می دهد که به کاربران امکان می دهد به سرعت به انجام وظایف NLP بپردازند.

در این مقاله، ما تنها یکی از وظایف NLP را مورد بحث قرار دادیم TextBlob به این موضوع می پردازد، اما در سری بعدی، نگاهی خواهیم داشت به چگونگی حل مسائل پیچیده تر، مانند برخورد با عطف کلمات، شکل های جمع و مفرد کلمات و موارد دیگر.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-15 23:22:05

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید