از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
NLP ساده در پایتون با TextBlob: Tokenization
سرفصلهای مطلب
معرفی
مقدار داده های متنی روی اینترنت در دهه های گذشته به طور قابل توجهی افزایش یافته است. شکی نیست که پردازش این حجم از اطلاعات باید به صورت خودکار انجام شود 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