roshan-research/hazm

خطا هنگام استفاده از Embedding

ali-totem opened this issue · 16 comments

سلام من حین استفاده از Embedding با خطای
NameError: name 'WordEmbedding' is not defined
روبرو میشم
یه کد ساده به صورت زیر زدم

from hazm import *
wordEmbedding = WordEmbedding(model_type = 'fasttext')

Python Version: 3.8.8

سلام.
نسخهٔ 0.9 هضم منتشر شده.
لطفاً با این نسخهٔ امتحان کنید.

با این نسخه هم من هم‌چنان این مشکل رو دارم. در ضمن طبق همون دستوری که گذاشته بودید مدل pos_tagger رو از داکیومنت گیت‌هاب (pretrained models) دانلود کردم و داخل پوشه resources در کنار ریشه پروژه گذاشتم، اما متاسفانه باز هم ارور no models named pos_tagger مشاهده می‌شه

من الان تست کردم خطایی وجود نداشت.
نسخهٔ 0.9 حداقل به پایتون 3.8 نیاز داره. از چه نسخه‌ای از پایتون و pip استفاده می‌کنید؟
مطمئن هستید با دستور pip install hazm بدون هیچ خطایی هضم رو نصب کردید؟
بعد از نصب با دستور pip show hazm ببینید مشخصات نسخهٔ 0.9 میاد یا نه؟
البته مدل pos_tagger اشتباه آپلود شده بود که الان تصحیح شد؛ ولی خب این مشکلاتی که بالا گزارش کردید دربارهٔ شناخت ماژول‌هاست که نباید اتفاق بیفته.

آقای کوکبی ورژن پایتون شما چند هست؟

ورژن پایتون من 3.8.10 هستش. بله دستور بدون خطا نصب می‌شه. الان pos_tagger درست شد.

آقای کوکبی ورژن پایتون شما چند هست؟

من کدهای بالا رو هم روی پایتون 3.8.0 تست کردم و هم روی 3.11.3. مشکلی وجود نداشت.

ورژن پایتون من 3.8.10 هستش. بله دستور بدون خطا نصب می‌شه. الان pos_tagger درست شد.

خطای WordEmbedding حل شد یا نه؟
البته شما اینجا مدل رو لود نکردید ولی این خطایی که می‌بینم به مدل ربط نداره.
اصلاً ماژول رو نشناخته و این عجیبه.

مشکل امبدینگ نه متاسفانه.
در حال حاضر دو تا مشکل دارم:
1)خطا در dependency parser
image

#273 (comment)

از داکیومنت گیت هاب مدل dependency parser رو مطابق تصویر دانلود کردم و فایل langModel.mco رو داخل پوشه resources گذاشتم. اما متاسفانه هنگام فراخوانی parser.parse با خطای زیر رو به رو می‌شم:
image

  1. برای لود مدل wordembedding طبق تصویر زیر باید عمل کنیم؟
image

در این صورت فایل cc.fa.300.bin رو از کجا باید دانلود کنیم و داخل پوشه resources بذاریم؟ هم چنین فایل dataset.txt رو از کجا باید دانلود کنیم؟

خطایی که مشاهده می‌شه:

image image image

فایل cc.fa.300.bin چون حجمش بالاست دنبال جای مناسبی برای آپلودش هستیم.
فعلاً از اینجا دانلود کنید مشکل امبیدینگ برطرف می‌شه:
https://dl.fbaipublicfiles.com/fasttext/vectors-crawl/cc.fa.300.bin.gz
بعد از دانلود فایل bin داخلش رو در فولدر resources‌ قرار بدید. مقداری خروجی رو با تأخیر می‌ده باید صبر کنید.

در مورد dependecy_parser کدی که روی سیستم شما خطا می‌ده رو برام بفرستید. چون اینجا من تست می‌کنم مشکلی نیست.
در مورد dataset.txt بررسی می‌کنم بهتون خبر می‌دم.

شما این‌ها رو روی کولب تست می‌کنید؟

فایل cc.fa.300.bin چون حجمش بالاست دنبال جای مناسبی برای آپلودش هستیم. فعلاً از اینجا دانلود کنید مشکل امبیدینگ برطرف می‌شه: https://dl.fbaipublicfiles.com/fasttext/vectors-crawl/cc.fa.300.bin.gz بعد از دانلود فایل bin داخلش رو در فولدر resources‌ قرار بدید. مقداری خروجی رو با تأخیر می‌ده باید صبر کنید.

در مورد dependecy_parser کدی که روی سیستم شما خطا می‌ده رو برام بفرستید. چون اینجا من تست می‌کنم مشکلی نیست. در مورد dataset.txt بررسی می‌کنم بهتون خبر می‌دم.

شما این‌ها رو روی کولب تست می‌کنید؟

parser = DependencyParser(tagger=tagger, lemmatizer=lemmatizer)
parser.parse(word_tokenize('زنگ‌ها برای که به صدا درمی‌آید؟')) این کد همونیه که داخل سایت روشن هست
روی ژوپیتر نوت‌بوک امتحان می‌کنم.

کد مربوط به tagger هم بذارید.
اسم مدل از postagger.model به pos_tagger.model تغییر پیدا کرده.
tagger = POSTagger(model='resources/pos_tagger.model')
ما این صفحه رو هنوز بروزرسانی نکردیم. مثال‌ها رو از داکیومنت‌ها و ردمی گیتهاب بردارید.
و اینکه کدها رو اول روی سیستم خودتون تست کنید؛ چون اینجوری ممکنه محدودیت‌ها و خطاهای مربوط به پلتفرم‌هایی مثل ژوپیتر نت بوک و کولب کاملاً گمراه‌کننده باشه.

کد مربوط به tagger هم بذارید. اسم مدل از postagger.model به pos_tagger.model تغییر پیدا کرده. tagger = POSTagger(model='resources/pos_tagger.model') ما این صفحه رو هنوز بروزرسانی نکردیم. مثال‌ها رو از داکیومنت‌ها و ردمی گیتهاب بردارید. و اینکه کدها رو اول روی سیستم خودتون تست کنید؛ چون اینجوری ممکنه محدودیت‌ها و خطاهای مربوط به پلتفرم‌هایی مثل ژوپیتر نت بوک و کولب کاملاً گمراه‌کننده باشه.

from hazm import *

tagger = POSTagger(model='resources/pos_tagger.model')
print(tagger.tag(word_tokenize('داریم کتاب می‌خونیم')))

فقط مشکل dependency parser بررسی نشد؟

ورژن پایتون من 3.8.10 هستش. بله دستور بدون خطا نصب می‌شه. الان pos_tagger درست شد.

خطای WordEmbedding حل شد یا نه؟ البته شما اینجا مدل رو لود نکردید ولی این خطایی که می‌بینم به مدل ربط نداره. اصلاً ماژول رو نشناخته و این عجیبه.

مشکل من برطرف شد
پایتون رو به 3.9 downgrade کردم و hazm رو upgrade کردم درست شد

ورژن پایتون من 3.8.10 هستش. بله دستور بدون خطا نصب می‌شه. الان pos_tagger درست شد.

خطای WordEmbedding حل شد یا نه؟ البته شما اینجا مدل رو لود نکردید ولی این خطایی که می‌بینم به مدل ربط نداره. اصلاً ماژول رو نشناخته و این عجیبه.

مشکل من برطرف شد پایتون رو به 3.9 downgrade کردم و hazm رو upgrade کردم درست شد

سلام میشه لطفا کدی که تونستید از embedding خروجی بگیرید رو بفرستید؟

مشکل امبدینگ نه متاسفانه. در حال حاضر دو تا مشکل دارم: 1)خطا در dependency parser image

#273 (comment)

از داکیومنت گیت هاب مدل dependency parser رو مطابق تصویر دانلود کردم و فایل langModel.mco رو داخل پوشه resources گذاشتم. اما متاسفانه هنگام فراخوانی parser.parse با خطای زیر رو به رو می‌شم: image

  1. برای لود مدل wordembedding طبق تصویر زیر باید عمل کنیم؟
image در این صورت فایل cc.fa.300.bin رو از کجا باید دانلود کنیم و داخل پوشه resources بذاریم؟ هم چنین فایل dataset.txt رو از کجا باید دانلود کنیم؟

خطایی که مشاهده می‌شه:

image image image

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

ورژن پایتون من 3.8.10 هستش. بله دستور بدون خطا نصب می‌شه. الان pos_tagger درست شد.

خطای WordEmbedding حل شد یا نه؟ البته شما اینجا مدل رو لود نکردید ولی این خطایی که می‌بینم به مدل ربط نداره. اصلاً ماژول رو نشناخته و این عجیبه.

مشکل من برطرف شد پایتون رو به 3.9 downgrade کردم و hazm رو upgrade کردم درست شد

سلام میشه لطفا کدی که تونستید از embedding خروجی بگیرید رو بفرستید؟

سلام

from hazm import *
wordEmbedding = WordEmbedding(model_type = 'fasttext')
wordEmbedding.load_model('resources/cc.fa.300.bin')
wordEmbedding.doesnt_match(['سلام' ,'درود' ,'خداحافظ' ,'پنجره'])

دقیقا کدی که تو سایت هست استفاده کردم

فکر کنم شما باید فایلی که دارید کد میزنید رو حتما save کنید و تو اون مسیر resources/cc.fa.300.bin رو قرار بدید

image