در مقالات قبل به مقایسه ویژگیهای کتابخانهها و ابزارهای پردازش زبان طبیعی اشاره شد. سپس شش کتابخانه محبوب پردازش متن معرفی و نمونه کد آنها قرار داده شد. بخشهای دیگر این مقاله:
در جدول زیر بطور خلاصه لیست کتابخانهها و جعبه ابزارهای معروف و رایگان پردازش متن، ویژگیهای مهم آنها و ابزارهای پیادهسازی شده در هریک را گردآوری کردیم.
ذکر چند نکته درباره این جدول را لازم میدانیم. ستون دوم سال تولید و سالی که آخرین نسخه ابزار (بروزرسانی) در آن ارائه شده است را نشان میدهد. در ستون ششم، تعداد ستارهی داده شده به پروژه مربوط به هر کتابخانه در گیتهاب (یا پرستارهترین پروژه مرتبط با آنها) را به عنوان سنجه میزان محبوبیت درنظر گرفتیم. همچنین از شاخص تعداد سوالات پرسیده شده در StackoverFlow (درباره هر کتابخانه)، به عنوان مبنای میزان استفاده و جامعه بهرهبردار آن کتابخانه استفاده شده است. ستون هفدهم به پشتیبانی از زبان فارسی هر کتابخانه (همه یا بعضی از ابزارهای آن) اختصاص داده شده است. این اطلاعات و ارقام در تاریخ 15 اسفند 97 جمعآوری شدند.
در این بخش به معرفی چند جعبه ابزار پردازش متن محبوب و کاربردی دیگر میپردازیم.
کتابخانه Polyglot،یکی از کتابخانههای پرطرفدار پردازش متن در زبان پایتون هست. با وجود پشتیبانی ضعیف و عدم بروزرسانی این کتابخانه، بدلیل پشتیبانی از زبانهای طبیعی متعدد (بین 16 الی 169 زبان در ابزارهای مختلف) از جمله فارسی، از محبوبیت خوبی بین پژوهشگران برخوردار است.
نصب و راهاندازی:
pip install -U polyglot pip install pyicu # or install using .whl file from "https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyicu" pip install pycld2 pip install morfessor
سپس باید مدلهای مورد نیاز خود را دانلود کنید. برای اطلاع از مدلهای موجود از شبه کد زیر استفاده نمایید:
import polyglot from polyglot.downloader import downloader # supported language for special nlp task: print(downloader.supported_languages_table(task="ner2")) # supported tools (tasks) for special language: print(downloader.supported_tasks(lang="fa"))
برای دانلود مدلهای polyglot دو روش وجود دارد:
1- دانلود مستقیم (در کنسول):
polyglot download --help polyglot download morph2.fa polyglot download embeddings2.fa polyglot download embeddings2.en polyglot download ner2.fa polyglot download sentiment2.fa polyglot download transliteration2.fa
2- دانلود درون سورس کد:
import polyglot from polyglot.downloader import downloader #downloader.download_dir = r"E:\polyglot" downloader.download("morph2.fa") downloader.download("embeddings2.fa") downloader.download("embeddings2.en") downloader.download("ner2.fa") downloader.download("sentiment2.fa") downloader.download("transliteration2.fa")
چنانچه از سیستم عامل ویندوز استفاده میکنید، هنگام استفاده از این کتابخانه احتمالاً با خطاهایی مواجه میشوید. برای حل آنها دستورالعمل ذیل را انجام بدهید:
نمونه کد استفاده از ابزارهای مختلف این کتابخانه:
import polyglot from polyglot.text import Text, Word blob = u"سلام! به سامانه متن کاوی فارسی یار خوش آمدید. ارائه دهنده بهترین ابزارهای متن کاوی فارسی در ایران." text = Text(blob) # , hint_language_code='fa' print("Language Detected: Code={}, Name={}\n".format(text.language.code, text.language.name)) print(text.sentences) print(text.tokens) print(text.morphemes) print(text.entities) print(" ".join(map(str,text.transliterate("en")))) print("{:<16}{}".format("Word", "Polarity")+"\n"+"-"*30) for w in text.words[-10:]: print("{:<16}{:>2}".format(w, w.polarity))
خروجی این کد (به ترتیب خروجی ابزارهای تشخیص زبان، تقطیع جملات، تقطیع کلمات، تحلیل لغوی و بنواژهیابی، شناسایی موجودیتهای نامی، ترجمه و نهایتاً شناسایی لغاتی حسی):
Language Detected: Code=fa, Name=فارسی [Sentence("سلام!"), Sentence("به سامانه متن کاوی فارسی یار خوش آمدید."), Sentence("ارائه دهنده بهترین ابزارهای متن کاوی فارسی در ایران.")] ['سلام', '!', 'به', 'سامانه', 'متن', 'کاوی', 'فارسی', 'یار', 'خوش', 'آمدید', '.', 'ارائه', 'دهنده', 'بهترین', 'ابزارهای', 'متن', 'کاوی', 'فارسی', 'در', 'ایران', '.'] ['سلام', '!', ' به سامانه متن کاوی فارسی یار ', 'خوش', ' آمدید. ارائه دهنده بهترین ', 'ابزار', 'های', ' متن کاوی فارسی در ', 'ایران', '.'] [I-LOC(['ایران'])] slam bh samanh mtn kavi farsi iar josh amdid araeh dhendh bhtrin abzarhai mtn kavi farsi dr airan Word Polarity ------------------------------ ارائه 0 دهنده 0 بهترین 0 ابزارهای 0 متن 0 کاوی 0 فارسی 0 در 0 ایران 0 . 0
همانطور که مشاهده میکنید، دقت خروجی polyglot برای زبان فارسی رضایتبخش نیست!
کتابخانه gensim، یکی از محبوبترین و بهترین ابزارهای مدلسازی موضوع (topic modelling) و بازنمایی متن (تبدیل متن به بردار) است. در این کتابخانه اغلب روشهای مشهور تعبیه کلمات (word embedding) و بازنمایی کلمات (Word Representation) در زبان پایتون پیادهسازی شده و بخوبی بروزرسانی و پشتیبانی میشوند. شما برای پیشپردازش متن بهتر است از کتابخانههای دیگر مانند NLTK یا SpaCy استفاده نموده و در تحلیلهای بعدی (مانند استخراج کلمات کلیدی یا موضوعات درون متن) از این کتابخانه استفاده نمایید.
نصب و راهاندازی:
pip install -U gensim
نمونه کد مدلسازی موضوعی متن:
import gensim from pprint import pprint # pretty-printer documents = [u"سلام! به سامانه متن کاوی فارسی یار خوش آمدید.", " ارائه دهنده بهترین ابزارهای متن کاوی فارسی در ایران."] stoplist = set(u'و را که به با برای از ها های ی می نمی این آن است هست نیست باشد شد کرد '.split()) texts = [[word for word in document.lower().split() if word not in stoplist] for document in documents] dictionary = gensim.corpora.Dictionary(texts) bow_corpus = [dictionary.doc2bow(doc) for doc in texts] ##Then the dictionary and corpus can be used to train using LDA lda_model = gensim.models.ldamodel.LdaModel(bow_corpus, num_topics = 2, id2word = dictionary, passes = 10) pprint(lda_model.print_topics(2, 5)) print('------------------------------------') lsi_model = gensim.models.lsimodel.LsiModel(corpus=bow_corpus, id2word=dictionary, num_topics=2) pprint(lsi_model.print_topics(2, 5))
خروجی:
[(0, '0.105*"متن" + 0.104*"کاوی" + 0.104*"فارسی" + 0.063*"ارائه" + ''0.063*"ابزارهای"'), (1, '0.073*"خوش" + 0.073*"آمدید." + 0.073*"یار" + 0.072*"سلام!" + ''0.072*"سامانه"')] ------------------------------------ [(0, '0.415*"متن" + 0.415*"کاوی" + 0.415*"فارسی" + 0.225*"بهترین" + ''0.225*"ارائه"'), (1, '0.327*"آمدید." + 0.327*"سلام!" + 0.327*"یار" + 0.327*"سامانه" + ''0.327*"خوش"')]
کتابخانه NLP Curator، شامل ابزارهای کاملی از پردازش زبان طبیعی است که در دانشگاه ایلینوی آمریکا بوسیله زبان جاوا توسعه داده شده است. البته API آن به زبان پایتون نیز تهیه شده است.
نصب و راهاندازی (API زبان پایتون):
دستورات لازم برای نصب:
pip install cython pip install ccg_nlpy
برای از نصب و استفاده از این کتابخانه باید به چند نکته توجه داشته باشید:
python -m ccg_nlpy download pip install -U jnius # add "C:\Program Files\Java\jdk1.XXXX\jre\bin\client" or "C:\Program Files\Java\jdk1.XXXX\jre\bin\server" to your Path of Windows environment
نمونه کد استفاده از API پایتون:
############ for remote (online) running ############# #from ccg_nlpy import remote_pipeline #pipeline = remote_pipeline.RemotePipeline() ############ for local (offline) running ############# from ccg_nlpy import local_pipeline pipeline = local_pipeline.LocalPipeline() doc = pipeline.doc("Hello, how are you. I am doing fine") print(doc.get_lemma) print(doc.get_pos)
خروجی:
LEMMA view: (hello Hello) (, ,) (how how) (be are) (you you) (. .) (i I) (be am) (do doing) (fine fine) POS view: (UH Hello) (, ,) (WRB how) (VBP are) (PRP you) (. .) (PRP I) (VBP am) (VBG doing) (JJ fine)
استفاده از این مقاله با ذکر منبع "سامانه متن کاوی فارسییار - text-mining.ir"، بلامانع است.