از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
NLP ساده در پایتون با TextBlob: تشخیص N-Grams
سرفصلهای مطلب
معرفی
رشد مداوم داده ها روی اینترنت تقاضا برای ابزارهایی را ایجاد می کند که process اطلاعات متنی
علاوه بر این، بسیار مهم است که این ابزار تجزیه و تحلیل متن بتواند راه حل هایی را برای وظایف NLP سطح پایین و بالا مانند شمارش بسامدهای کلمات، محاسبه تجزیه و تحلیل احساسات متون یا تشخیص الگوها در روابط بین کلمات اجرا کند.
TextBlob یک کتابخانه سبک وزن عالی برای طیف گسترده ای از وظایف NLP است.
در این آموزش کمی روشن می کنیم روش انجام تشخیص N-Grams در پایتون با استفاده از TextBlob.
N-Gram چیست؟
N-گرم یک دنباله پیوسته از N عنصر را از یک مجموعه معین از متون نشان می دهد. به طور کلی، چنین مواردی لزوماً برای رشته های کلمات نیستند، بسته به اینکه می توانند واج، هجا یا حروف باشند. روی آنچه را که می خواهید انجام دهید
با این حال، در پردازش زبان طبیعی بیشتر به N-gram ها به عنوان رشته های کلمات اشاره می شود، جایی که n مخفف تعداد کلماتی است که شما به دنبال آن هستید.
معمولاً انواع N-گرم های زیر متمایز می شوند:
-
یونیگرام – یک N-gram با یک رشته در داخل (مثلاً می تواند یک کلمه منحصر به فرد باشد – یوتیوب یا TikTok از یک جمله داده شده به عنوان مثال یوتیوب در حال راه اندازی یک فرمت ویدیویی کوتاه جدید است که بسیار شبیه به TikTok به نظر می رسد).
-
2 گرم یا بیگرام – معمولاً ترکیبی از دو رشته یا کلمه که در یک سند ظاهر می شود: ویدیوی کوتاه یا فرمت ویدیویی احتمالاً نتیجه جستجوی بیگرام ها در مجموعه خاصی از متون خواهد بود (و نه فرمت ویدیو، فرم کوتاه ویدیویی همانطور که ترتیب کلمات ثابت می ماند).
-
3 گرم یا تریگرام – یک N-گرم حاوی حداکثر سه عنصر که با هم پردازش می شوند (مثلاً فرمت ویدئویی کوتاه یا ویدیوی کوتاه جدید) و غیره.
N-grams کاربرد اصلی خود را در منطقه ای از مدل های زبان احتمالی یافت. همانطور که احتمال مورد بعدی را در یک دنباله کلمه تخمین می زنند.
این رویکرد برای مدلسازی زبان، یک رابطه تنگاتنگ بین موقعیت هر عنصر در یک رشته، محاسبه وقوع کلمه بعدی با توجه به کلمه قبلی را فرض میکند. به طور خاص، مدل N-gram احتمال را به صورت زیر تعیین می کند – N-1
.
به عنوان مثال، یک مدل تریگرام (با N = 3) کلمه بعدی را در یک رشته بر اساس پیش بینی می کند. روی دو کلمه قبل به عنوان N-1 = 2
.
از دیگر موارد اجرای مدلهای N-grams در صنعت میتوان به تشخیص سرقت ادبی اشاره کرد که در آن N-gramهای بهدستآمده از دو متن مختلف با یکدیگر مقایسه میشوند تا میزان تشابه اسناد تحلیلشده مشخص شود.
تشخیص N-gram در پایتون با استفاده از TextBlob
تجزیه و تحلیل یک جمله
برای شروع شناسایی N-gram در پایتون، ابتدا باید بسته TexBlob را نصب کنید.
توجه داشته باشید: این کتابخانه برای پایتون 2 و پایتون 3 قابل اجرا است.
ما همچنین می خواهیم مجموعه متنی مورد نیاز را برای کار با آن دانلود کنیم:
$ pip install -U textblob
$ python -m textblob.download_corpora
پس از تنظیم محیط، آماده بارگیری بسته و محاسبه N-gram در یک جمله نمونه هستید. در ابتدا به N-gram در نقل قول M. Mullenweg نگاه خواهیم کرد: فناوری زمانی بهترین است که مردم را دور هم جمع کند.
بیا شروع کنیم:
from textblob import TextBlob
sentence = "Technology is best when it brings people together"
ما ایجاد کرده ایم sentence
رشته ای که شامل جمله ای است که می خواهیم تحلیل کنیم. سپس آن رشته را به TextBlob
سازنده، تزریق آن به TextBlob
به عنوان مثال ما عملیات را اجرا خواهیم کرد روی:
ngram_object = TextBlob(sentence)
اکنون، تشخیص N-gram را اجرا می کنیم. برای شروع، بیایید تشخیص ۲ گرمی را انجام دهیم. این در لیست آرگومان the مشخص شده است ngrams()
فراخوانی تابع:
ngrams = ngram_object.ngrams(n=2)
print(ngrams)
این ngrams()
تابع لیستی از چند تایی از را برمی گرداند n کلمات متوالی در جمله ما، یک مدل بیگرام مجموعه رشته های زیر را به ما می دهد:
(WordList(('Technology', 'is')),
WordList(('is', 'best')),
WordList(('best', 'when')),
WordList(('when', 'it')),
WordList(('it', 'brings')),
WordList(('brings', 'people')),
WordList(('people', 'together')))
تجزیه و تحلیل اسناد
با وجود ماهیت ساده این کتابخانه پایتون، TextBlob همچنین طیف وسیعی از ویژگی های پیشرفته را برای تجزیه و تحلیل فراهم می کند. اغلب اوقات، ما با جملات تکی برای تشخیص N-gram کار نمی کنیم. کار با اسناد، مقالات یا مجموعههای بزرگتر بسیار رایجتر است.
در مثال بعدی ما استفاده خواهیم کرد یک مقاله از پورتال خبری CNBC در مورد بیل گیتس.
بیایید یک سند متنی ایجاد کنیم و آن را چیزی در امتداد خطوط بنامیم Input.txt
برای تحلیل بعدی:
import sys
corpus = open("Input.txt").read()
سپس، طبق معمول، a را نمونه می کنیم TextBlob
به عنوان مثال، با عبور از corpus
به سازنده، و اجرا کنید ngrams()
تابع:
ngram_object = TextBlob(corpus)
trigrams = ngram_object.ngrams(n=3)
print(trigrams)
این اراده print از تریگرام های محتوایی که ارائه کرده ایم. با این حال، توجه داشته باشید که خروجی ممکن است بسته به آن متفاوت باشد روی رویکردی که برای کنترل علائم نگارشی اعمال می کنید:
(WordList(('Bill', 'Gates', 'says')),
WordList(('Gates', 'says', 'that')),
WordList(('says', 'that', 'antitrust')),
WordList(('that', 'antitrust', 'regulators')),
WordList(('antitrust', 'regulators', 'should'))
<...>)
در مقایسه، تجزیه و تحلیل Bigram برای مقاله داده شده لیست متفاوتی را در اختیار ما قرار می دهد:
ngram_object = TextBlob(corpus)
Bigram = ngram_object.ngrams(n=)
print(Bigram)
قطعه ای از خروجی:
(WordList(('Bill', 'Gates')),
WordList(('Gates', 'says')),
WordList(('says', 'that')),
WordList(('that', 'antitrust')),
WordList(('antitrust', 'regulators'))
<...>)
نتیجه
تشخیص N-Gram یک کار ساده و رایج در بسیاری از پروژه های NLP است. در این مقاله به بررسی آن پرداختیم روش انجام تشخیص N-Gram در پایتون با استفاده از TextBlob.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-14 06:47:04